이 말뭉치에는 보험 라이브러리 웹사이트에서 수집한 질문과 답변이 포함되어 있습니다.
우리가 아는 한, 이 데이터세트가 공개된 당시인 2017년에는 보험 분야 최초의 공개 QA 코퍼스였습니다.
본 코퍼스의 콘텐츠는 실제 사용자가 생성한 것이며, 깊은 도메인 지식을 갖춘 전문가가 고품질 답변을 제공합니다. 따라서 이것은 장난감이 아닌 실제 가치를 지닌 말뭉치입니다.
위 논문에서는 응답 선택 작업에 코퍼스를 사용했습니다. 반면에 이 말뭉치의 다른 용도도 가능합니다. 예를 들어, 답을 읽고 이해하는 자율 학습, 관찰 학습 등을 통해 시스템은 보이지 않는 질문에 대한 답을 최종적으로 스스로 도출할 수 있습니다.
데이터 세트는 "질문 및 답변 코퍼스"와 "질문 및 답변 쌍 코퍼스"의 두 부분으로 나뉩니다. 질문과 답변 코퍼스는 별도의 처리 없이 원본 영어 데이터를 번역한 것입니다. 문답 코퍼스는 문답 코퍼스를 기반으로 하며 단어 분할, 레이블 해제 및 중지를 수행하고 레이블을 추가합니다. 따라서 '질문답변 코퍼스'는 머신러닝 작업과 직접적으로 연결될 수 있다. 데이터 형식이나 단어 분할 효과가 만족스럽지 않은 경우 다른 방법을 직접 사용하여 "질문 및 답변 코퍼스"를 처리하여 모델 학습에 사용할 수 있는 데이터를 얻을 수 있습니다.
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 형식의 두 가지 유형으로 나뉩니다. 그중 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-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
(dict, 단어에서 id로), id2word
(dict, id에서 단어로), tf
(dict, 단어 빈도 통계) 및 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-그램 모델
word2vec-get-started: 단어 벡터 모델
명령문 1: Insuranceqa-corpus-zh
이 데이터 세트는 번역 InsuranceQA를 사용하여 생성되었으며 코드는 Chunsong Public License 버전 1.0에 따라 공개됩니다. 데이터는 연구 목적으로만 사용되며 미디어, 저널, 잡지 또는 블로그에 게시될 때 인용되고 언급되어야 합니다.
InsuranceQA Corpus, Chatopera Inc., https://github.com/chatopera/insuranceqa-corpus-zh, 07 27, 2017
Insuranceqa-corpus에서 파생된 모든 데이터도 공개되어야 하며 "설명 1" 및 "설명 2"와 일치하는 콘텐츠를 선언해야 합니다.
진술 2: 보험QA
이 데이터 세트는 연구 목적으로만 제공됩니다. 이러한 데이터를 사용하여 무엇이든 출판하는 경우 당사의 논문인 Applying Deep Learning to Answer Selection: A Study and An Open Task를 인용해 주세요. Minwei Feng, Bing Xiang, Michael R. Glass, Lidan Wang, Bowen Zhou @ 2015