? @Doragd가 작성한 중국어 채팅 로봇인 흥미로운 중국어 말뭉치 qingyun을 사용합니다.
비록 그녀가 그렇게 완벽하지는 않지만 :근육:, 그렇게 훌륭하지는 않지만 :paw_prints:
하지만 그녀는 내가 직접 코딩했어요:sparkling_heart:, 그래서
이 NLP 초보자와 그의 친구들을 지원하기 위해 모두가 더 많은 별을 줄 수 있기를 바랍니다 .
이 프로젝트는 실제로 소프트웨어 엔지니어링 과정 설계의 하위 모듈입니다. 우리의 목표는 지능형 고객 서비스 티켓 처리 시스템을 개발하는 것입니다.
지능형 고객 서비스 작업 주문 시스템의 실제 작업 흐름은 다음과 같습니다. 사람이 시스템에 질문을 하면 시스템은 먼저 지식 기반을 검색하여 관련 질문이 있는지 확인하고 질문에 대한 답변을 반환합니다. 현재 만족스럽지 않은 경우 직접 작업 주문을 제출할 수 있습니다. 지식베이스에 존재하지 않는 경우, 자동 응답을 위해 이 챗봇을 호출합니다.
이 시스템의 서비스 시나리오는 Tencent Cloud의 고객 서비스 시스템과 유사합니다. 고객은 주로 관련 문제(클라우드 서버, 도메인 이름 등)를 상담하기 위해 방문하므로 지식 베이스도 상담 및 문제 해결(질문, 답변) 모음입니다. 클라우드 서버, 도메인 이름 등에 대해.
시스템의 프런트엔드 인터페이스와 프런트엔드 및 백엔드 메시지 상호작용은 주로 React+Django를 사용하여 다른 동급생 @adjlyadv가 완료합니다.
@Doragd는 지식 기반을 확보하고 챗봇을 작성, 교육 및 테스트하는 일을 담당합니다. 이 레포의 내용도 이에 관한 것입니다.
│ .gitignore
│ config.py #模型配置参数
│ corpus.pth #已经过处理的数据集
│ dataload.py #dataloader
│ datapreprocess.py #数据预处理
│ LICENSE
│ main.py
│ model.py
│ README.md
│ requirements.txt
│ train_eval.py #训练和验证,测试
│
├─checkpoints
│ chatbot_0509_1437 #已经训练好的模型
│
├─clean_chat_corpus
│ qingyun.tsv #语料库
│
├─QA_data
│ QA.db #知识库
│ QA_test.py #使用知识库时调用
│ stop_words.txt #停用词
│ __init__.py
│
└─utils
beamsearch.py #to do 未完工
greedysearch.py #贪婪搜索,用于测试
__init__.py
종속성 설치
$ pip install -r requirements.txt
$ python datapreprocess.py
Corpus.pth를 생성하기 위한 전처리 ( corpus.pth는 여기에 업로드되어 있으므로 이 단계는 생략 가능 )
수정 가능한 매개변수:
# datapreprocess.py
corpus_file = 'clean_chat_corpus/qingyun.tsv' #未处理的对话数据集
max_voc_length = 10000 #字典最大长度
min_word_appear = 10 #加入字典的词的词频最小值
max_sentence_length = 50 #最大句子长度
save_path = 'corpus.pth' #已处理的对话数据集保存路径
지식베이스를 사용할 경우에는 use_QA_first=True
이때 입력 문자열에 대해서는 먼저 지식베이스에서 가장 적합한 질문과 답변을 매칭하여 반환합니다. 찾을 수 없는 경우 챗봇을 호출하여 자동으로 답변을 생성합니다.
여기에 있는 지식 베이스는 Tencent Cloud 공식 문서에서 수집한 100가지 자주 묻는 질문과 답변 모음입니다. 테스트용입니다!
$ python main.py chat --use_QA_first=True
코스 설계상의 필요로 인해 Tencent Cloud의 질문과 답변 쌍을 추가했지만 채팅 로봇 프로젝트와는 관련이 없으므로 일반적으로 use_QA_first=False
사용 시 이 매개변수의 기본값은 True
입니다.
$ python main.py chat --use_QA_first=False
$ python main.py chat
exit
, quit
또는 q
입력합니다. config.py
파일에 설명
새 매개변수를 전달해야 하는 경우 명령줄에서 다음 형식으로 매개변수를 전달하기만 하면 됩니다.
$ python main.py chat --model_ckpt= ' checkpoints/chatbot_0509_1437 ' --use_QA_first=False
위 명령은 학습된 모델을 로드할 경로와 지식 베이스 사용 여부를 나타냅니다.
코퍼스 이름 | 말뭉치 수 | 말뭉치 소스 설명 | 코퍼스 특성 | 코퍼스 샘플 | 분사되었는지 여부 |
---|---|---|---|---|---|
qingyun (칭윤 말뭉치) | 10W | 챗봇 커뮤니케이션 그룹 | 비교적 양호, 생활 친화적 | Q. 돈을 굉장히 좋아하시는 것 같더라고요. A: 아, 정말요? 그럼 거의 다 왔네요 | 아니요 |
$ python train_eval.py train [--options]
정량적 평가 부분은 아직 작성되지 않았습니다. Perplexity로 측정해야 합니다. 현재는 문장을 생성하고 품질을 수동으로 평가할 수만 있습니다.
$ python train_eval.py eval [--options]