? @Doragd が作成した中国語チャット ロボット、興味深い中国語コーパス qingyun を使用しています: Snowman:
たとえ彼女がそこまで完璧ではないとしても :muscle: 、それほど素晴らしいわけでもない :paw_prints:
しかし、彼女は私自身によってコード化されました:sparkling_heart:、
この NLP 初心者とその友人たちをサポートするために、皆さんも星をもっとあげていただけませんか?
このプロジェクトは、実際にはソフトウェア エンジニアリング コース設計のサブモジュールです。私たちの目標は、インテリジェントな顧客サービス チケット処理システムを開発することです。
インテリジェントな顧客サービス作業指示システムの実際のワークフローは次のとおりです。ユーザーがシステムに質問すると、システムはまずナレッジ ベースを検索して関連する質問があるかどうかを確認し、存在する場合は質問に対する回答を返します。この時点で満足できない場合は、作業指示を直接送信できます。ナレッジベースに存在しない場合は、このチャットボットが呼び出されて自動応答されます。
このシステムのサービス シナリオは Tencent Cloud のカスタマー サービス システムと似ており、顧客は主に関連する問題 (クラウド サーバー、ドメイン名など) を相談しに来るため、ナレッジ ベースは相談とトラブルシューティング (質問、回答) のコレクションでもあります。クラウドサーバー、ドメイン名などについて。
システムのフロントエンド インターフェイスとフロントエンドとバックエンドのメッセージのやり取りは、別のクラスメート @adjlyadv によって、主に React+Django を使用して行われます。
@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
上記のコマンドは、トレーニングされたモデルをロードするパスと、ナレッジ ベースを使用するかどうかを示します。
コーパス名 | コーパスの数 | コーパスソースの説明 | コーパスの特徴 | コーパスサンプル | 分詞化されているかどうか |
---|---|---|---|---|---|
青雲 (青雲コーパス) | 10W | チャットボットコミュニケーショングループ | 比較的良好、生活に優しい | Q: お金が大好きのようですね A: そうですか。そうすれば、もうすぐそこです | いいえ |
$ python train_eval.py train [--options]
定量的な評価部分はまだ書かれておらず、現時点では文章を生成して品質を評価することしかできません。
$ python train_eval.py eval [--options]