Das Korpus enthält Fragen und Antworten, die auf der Website Insurance Library gesammelt wurden.
Nach unserem besten Wissen handelte es sich zum Zeitpunkt der Veröffentlichung dieses Datensatzes im Jahr 2017 um das erste offene QA-Korpus im Versicherungsbereich:
Der Inhalt dieses Korpus wird von realen Benutzern erstellt und hochwertige Antworten werden von Fachleuten mit fundiertem Fachwissen bereitgestellt. Es handelt sich also um einen Korpus von echtem Wert, nicht um ein Spielzeug.
Im obigen Artikel wird der Korpus für die Antwortauswahlaufgabe verwendet. Andererseits sind auch andere Verwendungen dieses Korpus möglich. Beispielsweise ermöglicht unabhängiges Lernen durch Lesen und Verstehen von Antworten, beobachtendes Lernen usw. dem System, endlich eigene Antworten auf ungesehene Fragen zu finden.
Der Datensatz ist in zwei Teile unterteilt: „Frage-Antwort-Korpus“ und „Frage-Antwort-Paar-Korpus“. Der Frage- und Antwortkorpus wird ohne weitere Bearbeitung aus den englischen Originaldaten übersetzt. Das Frage-und-Antwort-Korpus basiert auf dem Frage-und-Antwort-Korpus mit Wortsegmentierung, Label-Entfernung und Label-Hinzufügung. Daher kann „Frage- und Antwortkorpus“ direkt mit maschinellen Lernaufgaben verbunden werden. Wenn Sie mit dem Datenformat oder dem Wortsegmentierungseffekt nicht zufrieden sind, können Sie den „Frage- und Antwortkorpus“ direkt mit anderen Methoden verarbeiten, um Daten zu erhalten, die zum Trainieren des Modells verwendet werden können.
pip install -U insuranceqa_data
Rufen Sie den Zertifikatsspeicher auf, kaufen Sie das Zertifikat, geben Sie nach dem Kauf [Zertifikat – Details] ein und klicken Sie auf [Zertifikatsidentität kopieren].
Legen Sie dann die Umgebungsvariable INSQA_DL_LICENSE
fest, beispielsweise über das Befehlszeilenterminal:
# 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 '
Führen Sie abschließend den folgenden Befehl aus, um den Datendownload abzuschließen.
python -c " import insuranceqa_data; insuranceqa_data.download_corpus() "
Daten werden in zwei Typen unterteilt: POOL-Format und PAIR-Format. Unter diesen eignet sich das PAIR-Format besser für Trainingsmodelle für maschinelles Lernen.
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' ]))
- | Frage | Antwort | Wortschatz (Englisch) |
---|---|---|---|
Zug | 12.889 | 21.325 | 107.889 |
verifizieren | 2.000 | 3354 | 16.931 |
prüfen | 2.000 | 3308 | 16.815 |
Zu jedem Datenelement gehören Chinesisch und Englisch der Frage, positive Beispiele der Antwort und negative Beispiele der Antwort. Es muss mindestens ein positives Beispiel für den Fall vorliegen, im Wesentlichen die Punkte 1–5 , bei denen es sich allesamt um richtige Antworten handelt. Es gibt 200 Negativbeispiele für Antworten. Die Negativbeispiele werden anhand von Suchmethoden erstellt, sodass sie mit der Frage in Zusammenhang stehen, aber nicht die richtige Antwort sind.
{
"INDEX": {
"zh": "中文",
"en": "英文",
"domain": "保险种类",
"answers": [""] # 答案正例列表
"negatives": [""] # 答案负例列表
},
more ...
}
Schulung: corpus/pool/train.json.gz
Validierung: corpus/pool/valid.json.gz
Test: corpus/pool/test.json.gz
Antwort: corpus/pool/answers.json
hat insgesamt 27.413 Antworten und das Datenformat ist 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
Der Korpus wird mit gzip komprimiert, um die Größe zu reduzieren, und auf die Daten kann mit Befehlen wie zmore, zless, zcat und zgrep zugegriffen werden.
zmore pool/test.txt.gz
Unter Verwendung von „Frage- und Antwortdaten“ müssen Sie noch viel Arbeit leisten, um in das Modell des maschinellen Lernens einzutreten, z. B. Wortsegmentierung, Entfernen von Stoppwörtern, Entfernen von Satzzeichen und Hinzufügen von Beschriftungs-Tags. Daher können wir die Verarbeitung auf der Grundlage von „Frage- und Antwortdaten“ fortsetzen, aber bei Aufgaben wie der Wortsegmentierung können wir verschiedene Wortsegmentierungstools verwenden, was sich auf das Modelltraining auswirkt. Um die Daten schnell verfügbar zu machen, stellt Insuranceqa-corpus-zh einen Datensatz mit HanLP-Wortsegmentierung, De-Labeling, De-Stopp und Hinzufügen von Labels zur Verfügung. Dieser Datensatz basiert vollständig auf „Frage- und Antwortdaten“.
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
enthält word2id
(Dikt, von Wort zu ID), id2word
(Dikt, von ID zu Wort), tf
(Dikt, Worthäufigkeitsstatistik) und total
(Gesamtzahl der Wörter). Unter diesen ist die Kennung nicht registrierter Wörter UNKNOWN
und die ID nicht registrierter Wörter ist 0.
Die Datenformate von train_data
, test_data
und valid_data
sind gleich. qid
ist die Frage-ID, question
ist die Frage, utterance
ist die Antwort. Wenn label
[1,0]
bedeutet dies, dass die Antwort die richtige Antwort ist, [0,1]
bedeutet, dass die Antwort nicht die richtige Antwort ist, also utterance
enthält die Daten positiver und negativer Beispiele. Jede Frage enthält 10 negative Beispiele und 1 positives Beispiel.
train_data
enthält 12.889 Fragen, 141779
Daten, positive Beispiele: negative Beispiele = 1:10 test_data
enthält 2.000 Fragen, 22000
Daten, positive Beispiele: negative Beispiele = 1:10 valid_data
enthält 2.000 Fragen, 22000
Daten, positive Beispiele: Negatives Beispiel = 1: 10
Satzlänge:
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
Sie können dieses Korpus mit dem folgenden Open-Source-Code verwenden
deep-qa-1: Basismodell
InsuranceQA TensorFlow: CNN mit TensorFlow
n-grams-get-started: N-Gramm-Modell
word2vec-get-started: Wortvektormodell
Aussage 1: Insuranceqa-corpus-zh
Dieser Datensatz wurde mithilfe von Translation InsuranceQA generiert und der Code wird unter der Chunsong Public License, Version 1.0, veröffentlicht. Die Daten dienen ausschließlich Forschungszwecken und müssen bei der Veröffentlichung in Medien, Zeitschriften, Magazinen oder Blogs zitiert und angesprochen werden.
InsuranceQA Corpus, Chatopera Inc., https://github.com/chatopera/insuranceqa-corpus-zh, 07 27, 2017
Alle aus dem Insuranceqa-Corpus abgeleiteten Daten müssen ebenfalls offen sein und einen Inhalt aufweisen, der mit „Erklärung 1“ und „Erklärung 2“ übereinstimmt.
Aussage 2: InsuranceQA
Dieser Datensatz wird ausschließlich zu Forschungszwecken bereitgestellt. Wenn Sie etwas veröffentlichen, das diese Daten verwendet, zitieren Sie bitte unseren Artikel: Applying Deep Learning to Answer Selection: A Study and An Open Task. Minwei Feng, Bing Xiang, Michael R. Glass, Lidan Wang, Bowen Zhou @ 2015