このコーパスには、Web サイトの Insurance Library から収集された質問と回答が含まれています。
私たちの知る限り、2017 年にこのデータセットがリリースされた時点では、これは保険分野における最初のオープン QA コーパスでした。
このコーパスの内容は実際のユーザーによって作成されており、専門分野の深い知識を持つ専門家によって質の高い回答が提供されます。 したがって、これはおもちゃではなく、真の価値のあるコーパスです。
上記の論文では、応答選択タスクにコーパスが使用されています。 一方、このコーパスの他の用途も可能です。 たとえば、答えを読んで理解することによる自主的な学習や観察学習などにより、システムは最終的に、目に見えない質問に対して独自の答えを見つけることができます。
データセットは「質問と回答のコーパス」と「質問と回答のペアのコーパス」の 2 つの部分に分かれています。質疑応答コーパスは、英語のオリジナルデータをそのまま翻訳したものです。質問と回答のコーパスは、質問と回答のコーパスに基づいて、単語の分割、ラベルの削除、およびラベルの追加が行われます。したがって、「質疑応答コーパス」は機械学習タスクに直接接続することができます。データ形式や単語のセグメンテーション効果に満足できない場合は、他の方法を直接使用して「質問と回答のコーパス」を処理し、モデルのトレーニングに使用できるデータを取得できます。
pip install -U insuranceqa_data
証明書ストアに入り、証明書を購入し、購入後[証明書 - 詳細]を入力し、[証明書IDのコピー]をクリックします。
次に、コマンド ライン ターミナルを使用するなどして、環境変数INSQA_DL_LICENSE
を設定します。
# Linux / macOS
export INSQA_DL_LICENSE=YOUR_LICENSE
# # e.g. if your license id is `FOOBAR`, run `export INSQA_DL_LICENSE=FOOBAR`
# Windows
# # 1/2 Command Prompt
set INSQA_DL_LICENSE=YOUR_LICENSE
# # 2/2 PowerShell
$env :INSQA_DL_LICENSE= ' YOUR_LICENSE '
最後に以下のコマンドを実行するとデータのダウンロードが完了します。
python -c " import insuranceqa_data; insuranceqa_data.download_corpus() "
データは POOL 形式と PAIR 形式の 2 種類に分けられます。このうち、PAIR形式は機械学習の学習モデルに適しています。
import insuranceqa_data as insuranceqa
train_data = insuranceqa . load_pool_train () # 训练集
test_data = insuranceqa . load_pool_test () # 测试集
valid_data = insuranceqa . load_pool_valid () # 验证集
# valid_data, test_data and train_data share the same properties
for x in train_data : # 打印数据
print ( 'index %s value: %s ++$++ %s ++$++ %s' %
( x , train_data [ x ][ 'zh' ], train_data [ x ][ 'en' ], train_data [ x ][ 'answers' ], train_data [ x ][ 'negatives' ]))
answers_data = insuranceqa . load_pool_answers ()
for x in answers_data : # 答案数据
print ( 'index %s: %s ++$++ %s' % ( x , answers_data [ x ][ 'zh' ], answers_data [ x ][ 'en' ]))
- | 質問 | 答え | 語彙(英語) |
---|---|---|---|
電車 | 12,889 | 21,325 | 107,889 |
確認する | 2,000 | 3354 | 16,931 |
テスト | 2,000 | 3308 | 16,815 |
各データには、中国語と英語の質問、肯定的な回答例、否定的な回答例が含まれています。ケースの肯定的な例が少なくとも 1 つ必要です。基本的に項目1 ~ 5はすべて正解です。否定的な回答例は200 件あります。否定的な回答例は、質問に基づいて検索方法を使用して作成されているため、質問に関連していますが、正解ではありません。
{
"INDEX": {
"zh": "中文",
"en": "英文",
"domain": "保险种类",
"answers": [""] # 答案正例列表
"negatives": [""] # 答案负例列表
},
more ...
}
トレーニング: corpus/pool/train.json.gz
検証: corpus/pool/valid.json.gz
テスト: corpus/pool/test.json.gz
回答: corpus/pool/answers.json
合計 27,413 件の回答があり、データ形式はjson
です。
{
"INDEX": {
"zh": "中文",
"en": "英文"
},
more ...
}
格式 INDEX ++$++ 保险种类 ++$++ 中文 ++$++ 英文
corpus/pool/train.txt.gz
、 corpus/pool/valid.txt.gz
、 corpus/pool/test.txt.gz
。
格式 INDEX ++$++ 中文 ++$++ 英文
corpus/pool/answers.txt.gz
コーパスは gzip を使用して圧縮されてサイズが削減され、データには zmore、zless、zcat、zgrep などのコマンドを使用してアクセスできます。
zmore pool/test.txt.gz
「質問と回答のデータ」を使用する場合でも、機械学習モデルに入るには、単語の分割、ストップワードの削除、句読点の削除、ラベルタグの追加など、多くの作業を行う必要があります。したがって、「質問と回答のデータ」に基づいて処理を続けることができますが、単語分割などのタスクでは、別の単語分割ツールを使用できるため、モデルのトレーニングに影響を及ぼします。データを迅速に利用できるようにするために、insuranceqa-corpus-zh は、HanLP 単語分割、ラベル解除、停止解除、およびラベルの追加を使用したデータ セットを提供します。このデータ セットは完全に「質問と回答のデータ」に基づいています。
import insuranceqa_data as insuranceqa
train_data = insuranceqa . load_pairs_train ()
test_data = insuranceqa . load_pairs_test ()
valid_data = insuranceqa . load_pairs_valid ()
# valid_data, test_data and train_data share the same properties
for x in test_data :
print ( 'index %s value: %s ++$++ %s ++$++ %s' %
( x [ 'qid' ], x [ 'question' ], x [ 'utterance' ], x [ 'label' ]))
vocab_data = insuranceqa . load_pairs_vocab ()
vocab_data [ 'word2id' ][ 'UNKNOWN' ]
vocab_data [ 'id2word' ][ 0 ]
vocab_data [ 'tf' ]
vocab_data [ 'total' ]
vocab_data
には、 word2id
(辞書、単語から ID)、 id2word
(辞書、ID から単語)、 tf
(辞書、単語頻度統計)、およびtotal
(単語の総数) が含まれます。 このうち、未登録の単語の識別子はUNKNOWN
、未登録の単語の ID は 0 です。
train_data
、 test_data
、 valid_data
のデータ形式は同じです。 qid
は質問 ID、 question
は質問、 utterance
応答です。 label
が[1,0]
応答は正解であることを意味し、 [0,1]
応答が不正解であることを意味しますutterance
肯定的な例と否定的な例のデータが含まれています。各質問には 10 個の否定的な例と 1 つの肯定的な例が含まれています。
train_data
には 12,889 個の質問、 141779
のデータ、正の例が含まれます: 負の例 = 1:10 test_data
は 2,000 の質問、 22000
データ、正の例が含まれます: 負の例 = 1:10 valid_data
には 2,000 の質問、 22000
データ、正の例が含まれます: 負の例 = 1: 10
文の長さ:
max len of valid question : 31, average: 5(max)
max len of valid utterance: 878(max), average: 165(max)
max len of test question : 33, average: 5
max len of test utterance: 878, average: 161
max len of train question : 42(max), average: 5
max len of train utterance: 878, average: 162
vocab size: 24997
このコーパスは次のオープンソース コードで使用できます。
deep-qa-1: ベースライン モデル
InsuranceQA TensorFlow: TensorFlow を使用した CNN
n-grams-get-started: N-gram モデル
word2vec-get-started: 単語ベクトル モデル
ステートメント 1:insuranceqa-corpus-zh
このデータ セットは翻訳保険 QA を使用して生成され、コードは Chunsong Public License バージョン 1.0 に基づいてリリースされています。データは研究目的のみに使用され、メディア、ジャーナル、雑誌、またはブログに掲載される場合は引用し、対処する必要があります。
InsuranceQA Corpus, Chatopera Inc., https://github.com/chatopera/insuranceqa-corpus-zh, 07 27, 2017
InsuranceQA コーパスから派生したデータもオープンである必要があり、「ステートメント 1」および「ステートメント 2」と一致する内容を宣言する必要があります。
ステートメント 2: 保険QA
このデータセットは研究目的のみに提供されています。これらのデータを使用して何かを出版する場合は、論文「ディープラーニングを回答選択に適用する: 研究と未解決のタスク」を引用してください。ミンウェイ・フォン、ビン・シャン、マイケル・R・グラス、リーダン・ワン、ボーウェン・ジョウ @ 2015