Le corpus contient des questions et réponses collectées sur le site Insurance Library.
À notre connaissance, au moment de la publication de cet ensemble de données, en 2017, il s'agissait du premier corpus ouvert d'assurance qualité dans le domaine de l'assurance :
Le contenu de ce corpus est généré par des utilisateurs du monde réel et des réponses de haute qualité sont fournies par des professionnels possédant une connaissance approfondie du domaine. Il s’agit donc d’un corpus de valeur réelle et non d’un jouet.
Dans l’article ci-dessus, le corpus est utilisé pour la tâche de sélection des réponses. En revanche, d’autres utilisations de ce corpus sont également possibles. Par exemple, l’apprentissage indépendant par la lecture et la compréhension des réponses, l’apprentissage par observation, etc. permet au système de trouver enfin ses propres réponses à des questions inédites.
L'ensemble de données est divisé en deux parties : « corpus de questions et réponses » et « corpus de paires de questions et réponses ». Le corpus de questions et réponses est traduit à partir des données anglaises originales sans autre traitement. Le corpus de questions et réponses est basé sur le corpus de questions et réponses. Il effectue également la segmentation des mots, le désétiquetage et l'arrêt, et ajoute des étiquettes. Par conséquent, le « corpus de questions et réponses » peut être directement connecté aux tâches d’apprentissage automatique. Si vous n'êtes pas satisfait du format des données ou de l'effet de segmentation des mots, vous pouvez directement utiliser d'autres méthodes pour traiter le « corpus de questions et réponses » afin d'obtenir des données pouvant être utilisées pour entraîner le modèle.
pip install -U insuranceqa_data
Accédez au magasin de certificats, achetez le certificat, saisissez [Certificat - Détails] après l'achat, puis cliquez sur [Copier l'identité du certificat].
Ensuite, définissez la variable d'environnement INSQA_DL_LICENSE
, par exemple en utilisant le terminal de ligne de commande :
# 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 '
Enfin, exécutez la commande suivante pour terminer le téléchargement des données.
python -c " import insuranceqa_data; insuranceqa_data.download_corpus() "
Les données sont divisées en deux types : format POOL ; format PAIR. Parmi eux, le format PAIR est plus adapté aux modèles de formation en machine learning.
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' ]))
- | question | Répondre | Vocabulaire (anglais) |
---|---|---|---|
former | 12 889 | 21 325 | 107 889 |
vérifier | 2 000 | 3354 | 16 931 |
test | 2 000 | 3308 | 16 815 |
Chaque élément de données comprend le chinois et l'anglais de la question, des exemples positifs de la réponse et des exemples négatifs de la réponse. Il doit y avoir au moins un exemple positif du cas, essentiellement les éléments 1 à 5 , qui sont tous des réponses correctes. Il existe 200 exemples négatifs de réponses. Les exemples négatifs sont créés en fonction de la question à l'aide de méthodes de recherche, ils sont donc liés à la question, mais ils ne constituent pas la bonne réponse.
{
"INDEX": {
"zh": "中文",
"en": "英文",
"domain": "保险种类",
"answers": [""] # 答案正例列表
"negatives": [""] # 答案负例列表
},
more ...
}
Formation : corpus/pool/train.json.gz
Validation : corpus/pool/valid.json.gz
Test : corpus/pool/test.json.gz
Réponse : corpus/pool/answers.json
a un total de 27 413 réponses, et le format des données est 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
Le corpus est compressé à l'aide de gzip pour réduire la taille, et les données sont accessibles à l'aide de commandes telles que zmore, zless, zcat et zgrep.
zmore pool/test.txt.gz
En utilisant les « données de questions et réponses », vous devez encore faire beaucoup de travail pour entrer dans le modèle d'apprentissage automatique, comme la segmentation des mots, la suppression des mots vides, la suppression des signes de ponctuation et l'ajout de balises d'étiquette. Par conséquent, nous pouvons continuer le traitement sur la base des « données de questions et réponses », mais dans des tâches telles que la segmentation de mots, nous pouvons utiliser différents outils de segmentation de mots, ce qui a un impact sur la formation du modèle. Afin de rendre les données disponibles rapidement, Insuranceqa-corpus-zh fournit un ensemble de données utilisant la segmentation de mots HanLP, le désétiquetage, le désarrêt et l'ajout d'étiquettes. Cet ensemble de données est entièrement basé sur des « données de questions et réponses ».
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
contient word2id
(dict, du mot à l'identifiant), id2word
(dict, de l'identifiant au mot), tf
(dict, statistiques de fréquence des mots) et total
(nombre total de mots). Parmi eux, l'identifiant des mots non enregistrés est UNKNOWN
et l'identifiant des mots non enregistrés est 0.
Les formats de données de train_data
, test_data
et valid_data
sont les mêmes. qid
est l'identifiant de la question, question
est la question, utterance
est la réponse, si label
est [1,0]
cela signifie que la réponse est la bonne réponse, [0,1]
signifie que la réponse n'est pas la bonne réponse, donc utterance
contient les données d’exemples positifs et négatifs. Chaque question contient 10 exemples négatifs et 1 exemple positif.
train_data
contient 12 889 questions, 141779
données, exemples positifs : exemples négatifs = 1:10 test_data
contient 2 000 questions, 22000
données, exemples positifs : exemples négatifs = 1:10 valid_data
contient 2 000 questions, 22000
données, exemples positifs : Exemple négatif = 1 : 10
Durée de la phrase :
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
Vous pouvez utiliser ce corpus avec le code open source suivant
deep-qa-1 : modèle de base
InsuranceQA TensorFlow : CNN avec TensorFlow
n-grams-get-started : modèle N-gram
word2vec-get-started : modèle vectoriel de mots
Déclaration 1 : assuranceqa-corpus-zh
Cet ensemble de données a été généré à l'aide de Translation InsuranceQA et le code est publié sous la licence publique Chunsong, version 1.0. Les données sont uniquement destinées à des fins de recherche et doivent être citées et traitées lors de leur publication dans un média, une revue, un magazine ou un blog.
InsuranceQA Corpus, Chatopera Inc., https://github.com/chatopera/insuranceqa-corpus-zh, 07 27, 2017
Toutes les données dérivées du corpus Insuranceqa doivent également être ouvertes et doivent déclarer un contenu cohérent avec la « Déclaration 1 » et la « Déclaration 2 ».
Énoncé 2 : assuranceQA
Cet ensemble de données est fourni uniquement à des fins de recherche. Si vous publiez quelque chose en utilisant ces données, veuillez citer notre article : Appliquer le Deep Learning à la sélection de réponses : une étude et une tâche ouverte. Minwei Feng, Bing Xiang, Michael R. Glass, Lidan Wang, Bowen Zhou @ 2015