? Используя интересный китайский корпус qingyun, китайский чат-робот, написанный @Doragd: Snowman:
Хоть она и не идеальна :muscle:, но и не так уж хороша :paw_prints:
Но она была закодирована мной:sparkling_heart:, так что
Надеюсь, каждый сможет дать больше звезд, чтобы поддержать этого новичка в НЛП и его друзей?
Этот проект на самом деле является подмодулем разработки курса разработки программного обеспечения. Наша цель — разработать интеллектуальную систему обработки билетов для обслуживания клиентов.
Фактический рабочий процесс интеллектуальной системы заказов на обслуживание клиентов таков: когда человек задает вопрос системе, система сначала ищет в базе знаний, чтобы увидеть, есть ли соответствующий вопрос. Если да, она возвращает ответ на вопрос. Если человек на данный момент не удовлетворен, он или она может напрямую отправить заказ на работу. Если его нет в базе знаний, этот чат-бот вызывается для автоматического ответа.
Сценарий обслуживания этой системы аналогичен системе обслуживания клиентов 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
В этот момент для входной строки лучший вопрос и ответ сначала сопоставляются в базе знаний и возвращаются. Если его не удается найти, вызывается чат-бот для автоматической генерации ответа.
База знаний здесь представляет собой сборник из 100 часто задаваемых вопросов и ответов, собранных на основе официальных документов Tencent Cloud и предназначенных только для тестирования!
$ 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
Приведенная выше команда указывает путь для загрузки обученной модели и следует ли использовать базу знаний.
Название корпуса | Количество корпусов | Пояснения к источникам корпуса | Характеристики корпуса | Образец корпуса | Было ли оно причастно |
---|---|---|---|---|---|
Цинъюнь (корпус Цинъюнь) | 10 Вт | Группа общения чат-бота | Относительно хороший, жизненный | В: Кажется, ты очень любишь деньги. А: Правда? Тогда ты почти у цели | нет |
$ python train_eval.py train [--options]
Часть количественной оценки еще не написана. Она должна измеряться по недоумению. В настоящее время она может только генерировать предложения и вручную оценивать качество.
$ python train_eval.py eval [--options]