Giter Club home page Giter Club logo

chatbot's Introduction

Вопросно-ответная диалоговая система (чатбот)

Краткое описание

Чатбот позволяет вести беседы примерно такого вида:

диалог с чатботом в телеграмме

Запуск чатбота в Telegram

Для запуска бота в Телеграме нужно зарегистрировать его у @botfather и получить токен.

Затем загружаем докер-образ и запускаем сервис такой командой:

docker run -it inkoziev/chatbot_v4 bash -c "/chatbot/scripts/tg_bot.sh"

После старта появится приглашение ввода токена и выбора профиля бота.

Архитектура бота

В состав нейросимвольного пайплайна входят следующие модели и программные компоненты:

  1. интерпретатор на базе ruT5 для восстановления полного текста реплики в контексте диалога, исправления ошибок, нормализации - см. карточку модели на huggingface.

  2. textual knowledge retriever - модель с архитектурой sentence transformer для подбора релевантных фактов в базе знаний и переписывания истории диалога, см. карточку модели на huggingface.

  3. chitchat & reasoner на базе ruGPT для формирования текста ответа по найденному в базе знаний факту и заданному вопросу - см. карточку модели на huggingface.

  4. детектор перефразировок на базе rubert-tiny для определения синонимичности двух предложений - см карточку модели на huggingface.

  5. scripting engine - правила и сценарии для изменения и дополнения работы вышеперечисленных моделей.

Кастомизация чатбота, константы профиля

Используемая база знаний (в текущей реализации - plain text файл с фактами) указывается в профиле, который загружается при старте экземпляра бота. В скрипте tg_bot.sh можно увидеть указание на тестовый профиль profile_1.json, позволяющий боту отвечать на простые вопросы. В нем в качестве базы знаний указан файл profile_facts_1.dat. Формат этого файла описан в шапке файла.

Среди разных фактов там можно увидеть запись:

меня зовут $name_nomn

Конструкция $name_nomn означает, что в строку при загрузке чатбота будет подставлена константа с именем name_nomn, определенная в файле profile_1.json в разделе constants:

	"constants": {
		"gender": "ЖЕН",
		"name_nomn": "Вика"
	}

Так как имя бота может встречаться в нескольких местах, то удобнее задать имя в одном файле профиля.

Когда чатбот обрабатывает вопрос "Как тебя зовут?", он определяет, что факт меня зовут Вика релевантен для ответа на заданный вопрос, и далее запускает процедуру построения ответа с помощью генеративной модели читчата. Само имя "Вика" нигде не "зашито" в языковых моделях. Поэтому для его смены не нужно переобучать нейросетки, а достаточно отредактировать данную запись.

Вторая константа с именем "gender" определяет грамматический род для бота, в данном случае женский. В том же файле фактов можно найти такую запись:

Я $chooseAdjByGender(нужен, нужна), чтобы отвечать на вопросы посетителей чата

Конструкция $chooseAdjByGender(нужен, нужна) позволяет выбрать одно из перечисленных слов, фильтруя их по константе грамматического рода. Таким образом, реплики бота становятся более релевантными "биологической" природе бота.

Правила для управления диалогом

С помощью правил можно изменять или дополнять реплики, генерируемые нейропайплайном.

На данный момент движок поддерживает 2 типа правил.

greedy - эти правила срабатывают до генеративных моделей и в случае успешного применения полностью их заменяют.

smalltalk - эти правила запускаются параллельно генеративным моделям, порождаемые ими варианты реплики взвешиваются на уместность в текущем контексте вместе с репликами, сгенерированными читчатом.

Примеры этих правил можно увидеть в файле profile_rules_1.yaml.

Самое простое правило выглядит примерно так:

    - rule:
        name: "тестовое stateful правило с реакцией на фразу ку-ку"
        if:
            h: "* (куку/ку-ку) *"
        then:
            say:
                phrases:
                    - "[(ну/да,/ага,)] ку-ку!"

Строка после тега h: описывает требование к реплике человека-собеседника. Описание представляет из себя выражение регулярной грамматики, похожей на обычные регулярные выражения, но работающей со словами. В данном примере символ * означает произвольно длинную цепочку любых слов. Выражение (куку/ку-ку) описывает альтернативы, каждый допустимый вариант отделяется от других символом /. Вариантов может быть сколько угодно много, любой вариант может быть в свою очередь паттерном. Глубина вложения паттернов не ограничивается.

Среди других полезных конструкций в этих паттернах:

[subpattern] - опциональность патерна

начал* - проверка начала слова, обратите внимание на отсутствие пробела перед *

*снуть - проверка окончания слова.

Ответные реплики перечислены в секции phrases. Каждая реплика описывается шаблоном, в котором можно задавать вариативные фрагменты:

[подшаблон] - подшаблон будет с равной вероятность раскрыт или выкинут

(вариант1/вариант2) - с равной вероятностью будет выбран один из вариантов вариант1, вариант2 и т.д.

Обратите внимание, что правила работают с раскрытыми репликами собеседника, в которых подставлены анафоры, заполнены эллипсисы и т.д.

Датасеты

Некоторые данные, которые я собирал для обучения моделей в этом чатботе, доступны публично:

inkoziev/arithmetic - арифметические школьные задачи.

inkoziev/paraphrases - перефразировки коротких предложений и диалоговых реплик.

chatbot's People

Contributors

koziev avatar rfcontracts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatbot's Issues

pypy

Планируете ли перейти на pypy?

Возможно ли подключить к PHP

Здравствуйте. Возможно ли подключить поставить библиотеку на хостинг использую PHP? И настроить API взаимодействие? Есть ли какая-нибудь документация или инструкция для этого?

web-служба для общения по API c сервисом бота

привет!

подскажи пожалуйста

  1. есть ли возможно запустить бота в режим веб-сервиса, чтобы можно было извне присылать запросы с текстом сообщения и получить в ответ в какой-то форме (json) ответы бота?
  2. если есть, то как это запускать из текущей версии master? какие там есть параметры?
  3. можно хотябы один пример запроса написать, чтобы от него я уже понимал логику и строил свои (самый простой тип "привет")

Как обучить модель понимать новые факты?

Крутой бот, точнее это вопросно-ответная система. В процессе тестов нашел нсколько багов системных, например:
1)
Вопрос: у тебя есть конфета?
понимается моделью как "У меня нет коньков" - ошибка. В данном случае модель должна была ответить "нет информации", как делает в других случаях. Как это исправить?

Вопрос: дай покататься лыжи
понимается как "вызвать скорую" - почему так, как исправить?

Поиск по базе фактов показал, что фраза "вызвать скорую находится только в /data/ orders.txt, а различные варианты фраз со словом "лыжи" во многих файлах, не ясно, как исходя из анализа релевантности https://github.com/Koziev/chatbot/blob/master/README.relevance.md получился ответ.
Как переобучить модель, отвязать ее от неверного ответа?
Как я понимаю, нужно дописать факты в файлы и переобучить сетку? Могли бы указать полный путь, где и что изменять?

(P.S. на самом деле накачивать фактами файлы это ведь тоже самое что на правилах бота делать. Мне кажется правильнее было бы делать несколько классов вопросов, например "из чего сделано -слот-" из на месте -слот- делать анализ семантики на основе скажем НКРЯ http://ruscorpora.ru/corpora-sem.html - тем самым отсекая скажем всю технику от еды. После этого ответ на вопрос про технику можно делать сначала универсальным: "танк сделан из -металла, пушек, гусениц-" а дополнять уже фактами из Википедии распарсенными.)


H:> у тебя есть конфета?
2019-05-03 11:42:18,430 Question to process=у меня есть конфета ?
2019-05-03 11:42:18,868 Best premise is "У меня нет коньков" with relevancy=0.985838135691
2019-05-03 11:42:19,505 model_selector=0

B:> нет
H:> а что у тебя есть?
2019-05-03 11:42:34,456 Question to process=а что у меня есть ?
2019-05-03 11:42:34,887 Best premise is "У меня есть лыжи" with relevancy=0.958263324015
2019-05-03 11:42:34,895 model_selector=1

B:> лыжи
H:> дай покататься лыжи
2019-05-03 11:42:49,643 Closest order is "вызвать скорую" with similarity=0.799867285573
2019-05-03 11:42:49,644 Phrase "дай покататься лыжи" is interpreted as "вызвать скорую"
2019-05-03 11:42:49,644 Process order "вызвать скорую"

B:> Выполняю команду "вызвать скорую"

API

How to do api or something to connect this chatbot to API?

Команды

Приветствую. Мне очень нравится ваш проект. Могли бы вы сделать команды, то есть человек написал "открой xxxxx", и выполнился код?

Ошибка при работе с телеграм ботом

telegram.ext.dispatcher - Processing Update: {'update_id': 123, 'message': {'message_id': 618, 'date': 1612791283, 'chat': {'id': 286010947, 'type': 'private', 'username': 'username', 'first_name': 'name'}, 'text': 'привет', 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 286010947, 'first_name': 'Sergey', 'is_bot': False, 'username': 'DevMentor', 'language_code': 'ru'}}}
2021-02-08 13:34:39 ERROR root - 'CallbackContext' object has no attribute 'message'

В файле telegram_bot.py вы используете библиотеку telegram.ext на 20 и 32 строчке в фукнцию прокидывается 2 переменные, но в новой версии библиотеки там немного по другому.

Пример из документации:
def echo(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)

from telegram.ext import MessageHandler, Filters
echo_handler = MessageHandler(Filters.text & (~Filters.command), echo)
dispatcher.add_handler(echo_handler)

У вас примерно так:
def echo(bot, update):
...
bot.send_message(chat_id=update.message.chat_id, text=answer)

поэтому в вашем варианте он в объекте update не видит атрибута message.

Не найдены скрипты flask_bot.sh и tg_bot.sh при компиляции из исходника

При попытке компилировать docker-ом исходник выбивает ошибку что flask_bot.sh и tg_bot.sh отсутствует. Если важно, использую Ubuntu 20.04.

Доп. информация: пробовал компилировать на отдельном железе с Ubuntu 20.04 (без видеокарты) и на основном ПК (Windows 11 и WSL2).

Ошибка No module named 'bot.simple_facts_storage'

joo@joo-tf:~/Документы/LocalRepository/chatbot-0.0.0.13-alpha/scripts$ sh console_bot.sh
Traceback (most recent call last):
File "../PyModels/console_chatbot.py", line 11, in
from bot.profile_facts_reader import ProfileFactsReader
File "/home/joo/Документы/LocalRepository/chatbot-0.0.0.13-alpha/PyModels/bot/profile_facts_reader.py", line 7, in
from bot.simple_facts_storage import SimpleFactsStorage
ModuleNotFoundError: No module named 'bot.simple_facts_storage'

Файла нет.
Оффтоп: в прошлых версиях у меня были проблемы с импортом многих модулей, пришлось вручную проставить точки from . , чтобы импорты сработали, не писал ишью об этом, думал что-то у меня не так с импортами, хотя питон должен это понимать

Сборка образа

Здравствуйте. Объясните мне, пожалуйста, как самостоятельно собрать docker образ. Поскольку я docker на "Вы" все мои попытки были неудачными. Пробовал собрать на Ubuntu 18.04.

SolarixGrammarEngineNET

Здравствуйте, а

  1. SolarixGrammarEngineNET.GrammarEngine2
  2. SolarixGrammarEngineNET.SyntaxTreeNode

доступна только в платном режиме

OSError

При запуске возникает ошибка: OSError: Unable to open file (unable to open file: name = 'tmp/wordchar2vector.model', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

Что делать? Запускаю я на Raspberry Pi 4B

Сборка #2

Это опять я XD

Собираю, все сделал, вылазит ошибка

for r in self.cur.execute('SELECT id_tagsets FROM word_tagsets WHERE word=:word', {'word': word}):
sqlite3.OperationalError: no such table: word_tagsets

Есть версия .db файла поновее? Намного поновее?

Где взять w2v.kv

Ошибка
FileNotFoundError: [Errno 2] No such file or directory: '../tmp\w2v.kv'

Пытался сам его собрать, честно, ошибки, ошибки, еще раз ошибки, качал докер, пытался запустить, получал Illegal instruction.
Ковырял файлы, искал, нашел всё кроме этого файла.

Можете скинуть плиз?

Ошибка при запуске через Docker

Запускаю через "docker run -ti -e PYTHONIOENCODING=utf-8 chatbot"
Выдаёт ошибку: "./console_bot.sh: line 3: 9 Illegal instruction (core dumped) PYTHONPATH=.. python3 ../ruchatbot/frontend/console_chatbot.py --profile ../data/profile_1.json --data_folder ../data --models_folder ../tmp --w2v_folder ../tmp --tmp_folder ../tmp"

OS: Ubuntu 21.04 x86_64

Недостающиейся файлы

Доброго времени суток, подскажите пожалуйста где можно найти следующие файлы:
---> corpora/Corpus/ (все файлы из этой директории)
---> nonrelevant_premise_questions.txt (хотябы пример я пока создал пустышку но что там должно быть пока не понимаю)
---> contradictions.txt
---> qa_multy
---> united_corpora.dat
---> morpheval_corpus_solarix.full.dat

Ошибка при ответе Давай

Здравствуйте!
Установил чат-бот на AstraLinux.
В ответ на фразу

В:> Привет, давай познакомимся
Н:> Давай

получил ошибку (смотрите скрин тут):
https://yadi.sk/i/GpX4a66_GyRvRQ

Чат-бот нашёл ответ, но вызвало ошибку что то и работа его завершилась.

Используется ли нейросеть для генерации ответа?

Подскажите, не нашел, есть ли нейросеть типа AttentionSeq2Seq для генерации ответа по диалогу? В датасетах же вроде нет именно длинных диалогов, в коде много всего, может не нашел.
Почему спрашиваю, вот чел использует ваши датасеты и нейросеть:
https://github.com/Desklop/Voice_ChatBot

Не пересобирается Dockerfile

Добрый день!

Без проблем удалось запустить Вашего бота из docker-образа последнего релиза. Однако, хочется добавить в Dockerfile ряд собственных инструкций: запустить бота на GPU, попробовать подключить библиотеку deeppavlov с моделями odqa, и т.п.

При попытке просто собрать образ из докерфайла который лежит в репозитории(ничего не изменяя), получаю трэйсбэк:

Traceback (most recent call last):
  File "../ruchatbot/frontend/console_chatbot.py", line 11, in <module>
    from ruchatbot.bot.bot_profile import BotProfile
  File "/chatbot/ruchatbot/__init__.py", line 1, in <module>
    from .qa_machine import create_qa_bot
  File "/chatbot/ruchatbot/qa_machine.py", line 13, in <module>
    from .bot.simple_answering_machine import SimpleAnsweringMachine
  File "/chatbot/ruchatbot/bot/simple_answering_machine.py", line 18, in <module>
    from ruchatbot.bot.answer_builder import AnswerBuilder
  File "/chatbot/ruchatbot/bot/answer_builder.py", line 18, in <module>
    from ruchatbot.bot.xgb_yes_no_model import XGB_YesNoModel
ModuleNotFoundError: No module named 'ruchatbot.bot.xgb_yes_no_model'

Не могли бы Вы поправить, чтобы образ можно было собрать самостоятельно? Или подсказать, как решить проблему?
Спасибо.

No module named 'ruchatbot.bot.saying_phrase'

Пытаюсь использовать репозиторий из-под Windows. В модуле нет папки layers и вот этого скрипта 'ruchatbot.bot.saying_phrase', не могу нигде его найти. Что мне делать, чтобы исправить ошибку?

Запуск через Docker

Здравствуйте, при запуске через докер выдает такую ошибку, можете подсказать в чем проблема?

python_1 | Using TensorFlow backend.
python_1 | 2019-04-02 14:29:12,889 Loading lexicon from ../data/ru_word2lemma.tsv.gz
python_1 | 2019-04-02 14:29:14,176 Lexicon loaded: 88527 lemmas, 288259 wordforms
python_1 | Killed
chatbotdocker_python_1 exited with code 137

Работа Flask бота

Добрый день! Какой надо отправить http запрос чтобы получить ответ от бота? Помогите написать скрипт!

При запуске возникает еще ошибка

./console_bot.sh
Using TensorFlow backend.
[LightGBM] [Fatal] Tree model should contain num_cat field
Traceback (most recent call last):
File "../PyModels/console_chatbot.py", line 40, in
bot.load_models(models_folder, w2v_folder)
File "/home/ssn/WORK/Koziev/chatbot-master/PyModels/bot/simple_answering_machine.py", line 74, in load_models
self.relevancy_detector.load(models_folder)
File "/home/ssn/WORK/Koziev/chatbot-master/PyModels/bot/lgb_relevancy_detector.py", line 29, in load
self.lgb_relevancy = lightgbm.Booster(model_file=os.path.join(models_folder, os.path.basename(model_config['model_filename'])))
File "/home/ssn/.local/lib/python2.7/site-packages/lightgbm/basic.py", line 1499, in init
ctypes.byref(self.handle)))
File "/home/ssn/.local/lib/python2.7/site-packages/lightgbm/basic.py", line 44, in _safe_call
raise LightGBMError(decode_string(_LIB.LGBM_GetLastError()))
lightgbm.basic.LightGBMError: Tree model should contain num_cat field

ошибка в релизе 0.0.0.2

Запускаю а он выдает ошибку:

2019-04-03 10:44:44,523 Loading Wordchar2VectorModel model files
2019-04-03 10:44:45,881 Loading wordchar2vector from ../tmp/wordchar2vector.dat
2019-04-03 10:44:45,882 loading projection weights from ../tmp/wordchar2vector.dat
2019-04-03 10:44:45,883 {'kw': {}, 'mode': 'rb', 'uri': u'../tmp/wordchar2vector.dat'}
Traceback (most recent call last):
File "../PyModels/console_chatbot.py", line 46, in
machine.load_models(models_folder, w2v_folder)
File "/chatbot/PyModels/bot/simple_answering_machine.py", line 117, in load_models
self.word_embeddings.load_wc2v_model(self.wordchar2vector_path)
File "/chatbot/PyModels/bot/word_embeddings.py", line 35, in load_wc2v_model
self.wc2v = gensim.models.KeyedVectors.load_word2vec_format(wc2v_path, binary=False)
File "/usr/local/lib/python2.7/dist-packages/gensim/models/keyedvectors.py", line 1476, in load_word2vec_format
limit=limit, datatype=datatype)
File "/usr/local/lib/python2.7/dist-packages/gensim/models/utils_any2vec.py", line 344, in _load_word2vec_format
vocab_size, vector_size = (int(x) for x in header.split()) # throws for invalid file format
File "/usr/local/lib/python2.7/dist-packages/gensim/models/utils_any2vec.py", line 344, in
vocab_size, vector_size = (int(x) for x in header.split()) # throws for invalid file format
ValueError: invalid literal for int() with base 10: 'version'

Dockerfile

Здравствуйте, а можете выложить dockerfile? хотел пересобрать с поправками

docker run 6 Killed

При docker run -ti -e PYTHONIOENCODING=utf-8 chatbot (последние строки:)
2020-04-29 14:45:01 INFO root - Loading generative grammar dictionaries from "../tmp/generative_grammar_dictionaries.bin"
2020-04-29 14:45:09 INFO root - Loading lexicon from ../data/ru_word2lemma.tsv.gz
2020-04-29 14:45:11 INFO root - Lexicon loaded: 98007 lemmas, 407207 wordforms
./console_bot.sh: line 2: 6 Killed PYTHONPATH=.. python3 ../ruchatbot/frontend/console_chatbot.py --profile ../data/profile_1.json --debugging --data_folder ../data --models_folder ../tmp --w2v_folder ../tmp --tmp_folder ../tmp
С чем это связано и как исправить?

Исключение на однословном вопросе

0.0.2.9-alpha

Answering machine is running on Linux-4.19.76-linuxkit-x86_64-with-debian-10.3 py=3.6

B:> Привет
H:> тест?
2020-05-03 21:05:23 INFO     SimpleAnsweringMachine  - push_phrase interlocutor="test" phrase="тест?"
2020-05-03 21:05:23 DEBUG    SimpleAnsweringMachine  - intent="прочее"
/usr/local/lib/python3.6/site-packages/lightgbm/basic.py:546: UserWarning: Converting data to scipy sparse matrix.
  warnings.warn('Converting data to scipy sparse matrix.')
2020-05-03 21:05:23 DEBUG    SimpleAnsweringMachine  - Processing as question: "тест ?"
2020-05-03 21:05:24 DEBUG    root  - Text matched in rule: input_text="привет", best_etalon="привет", best_sim=0.971447
2020-05-03 21:05:25 DEBUG    root  - Text matched in rule: input_text="тест ?", best_etalon="тест тест", best_sim=0.992137
2020-05-03 21:05:25 DEBUG    root  - ScriptingRuleIf "rule_builder[болтовня_979]"
2020-05-03 21:05:25 INFO     SimpleAnsweringMachine  - say "люблю тесты"

B:> люблю тесты
H:> тест?
2020-05-03 21:05:30 INFO     SimpleAnsweringMachine  - push_phrase interlocutor="test" phrase="тест?"
Traceback (most recent call last):
  File "../ruchatbot/frontend/console_chatbot.py", line 160, in <module>
    main()
  File "../ruchatbot/frontend/console_chatbot.py", line 156, in main
    bot.push_phrase(user_id, question)
  File "/chatbot/ruchatbot/bot/bot_personality.py", line 63, in push_phrase
    force_question_answering=self.force_question_answering)
  File "/chatbot/ruchatbot/bot/simple_answering_machine.py", line 849, in push_phrase
    interpreted_phrase = self.interpret_phrase(bot, session, question, internal_issuer)
  File "/chatbot/ruchatbot/bot/simple_answering_machine.py", line 273, in interpret_phrase
    phrase = self.interpreter.interpret(context_phrases, self.text_utils, self.replica_grammar)
  File "/chatbot/ruchatbot/bot/nn_interpreter_new2.py", line 136, in interpret
    assert(len(phrases) == 2)
AssertionError

Как видно валится на попытке задать односложный вопрос на втором шаге, внизу свалившийся ассерт.

KeyError: 'смена_темы'

На реплику "ну хватит об этом" ошибка:

B:> Спасибо за хорошую оценку
H:> ну хватит об этом
2020-03-19 17:51:39 INFO     SimpleAnsweringMachine  - push_phrase interlocutor="test" phrase="ну хватит об этом"
2020-03-19 17:51:39 DEBUG    SimpleAnsweringMachine  - intent="смена_темы"
2020-03-19 17:51:39 DEBUG    SimpleAnsweringMachine  - Processing as assertion: "ну хватит об этом"
2020-03-19 17:51:41 DEBUG    root  - ScriptingRuleIf "реакция на предложение сменить тему разговора"
Traceback (most recent call last):
  File "../ruchatbot/frontend/console_chatbot.py", line 160, in <module>
    main()
  File "../ruchatbot/frontend/console_chatbot.py", line 156, in main
    bot.push_phrase(user_id, question)
  File "/home/joo/Docs/LocalRepository/chatbot-0.0.2.8-alpha/ruchatbot/bot/bot_personality.py", line 63, in push_phrase
    force_question_answering=self.force_question_answering)
  File "/home/joo/Docs/LocalRepository/chatbot-0.0.2.8-alpha/ruchatbot/bot/simple_answering_machine.py", line 880, in push_phrase
    interpreted_phrase)
  File "/home/joo/Docs/LocalRepository/chatbot-0.0.2.8-alpha/ruchatbot/bot/simple_answering_machine.py", line 658, in apply_insteadof_rule
    rule_result = rule.execute(bot, session, interlocutor, interpreted_phrase, self)
  File "/home/joo/Docs/LocalRepository/chatbot-0.0.2.8-alpha/ruchatbot/bot/scripting_rule.py", line 75, in execute
    condition_check, answering_engine.text_utils)
  File "/home/joo/Docs/LocalRepository/chatbot-0.0.2.8-alpha/ruchatbot/bot/actors.py", line 325, in do_action
    bot.run_form(self, session, interlocutor, interpreted_phrase)
  File "/home/joo/Docs/LocalRepository/chatbot-0.0.2.8-alpha/ruchatbot/bot/bot_personality.py", line 96, in run_form
    raise KeyError(form_actor.form_name)
KeyError: 'смена_темы'

Ошибка запуска контейнера

yaroslav.koval@MacBook-Pro-Yaroslav Downloads % uname -a
Darwin MacBook-Pro-Yaroslav.local 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; root:xnu-7195.141.2~5/RELEASE_ARM64_T8101 arm64
yaroslav.koval@MacBook-Pro-Yaroslav Downloads % sw_vers
ProductName:	macOS
ProductVersion:	11.5.1
BuildVersion:	20G80
yaroslav.koval@MacBook-Pro-Yaroslav Downloads % docker run -it chatbot bash -c "/chatbot/scripts/tg_bot.sh"
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
2021-07-29 13:17:37.691959: F tensorflow/core/lib/monitoring/sampler.cc:42] Check failed: bucket_limits_[i] > bucket_limits_[i - 1] (0 vs. 10)
qemu: uncaught target signal 6 (Aborted) - core dumped
/chatbot/scripts/tg_bot.sh: line 1:     9 Aborted                 CUDA_VISIBLE_DEVICES=-1 PYTHONPATH=.. python3 ../ruchatbot/frontend/telegram_bot.py --data_folder ../data --models_folder ../tmp --w2v_folder ../tmp --tmp_folder ../tmp
yaroslav.koval@MacBook-Pro-Yaroslav Downloads % 

ImportError: cannot import name 'chitchat_url'

ImportError: cannot import name 'chitchat_url'

Вот такая ошибка вылазит при запуске web морды бота) Возникает в flask_service_bot.py на 14 строчке. Прошу поправить ;) БОТ СУПЕР! Еще бы оптимизировать и вообще ИИ)

Еще обнаружил ошибку при запуске телеграм версии)
Вот ошибка: ERROR root - 'CallbackContext' object has no attribute 'message'

can not train wordchar2vector.py

Здравствуйте!
я хотел поробывать вашего бота. и ппри попытке собрать его при запуски тренировки я получил ошибку:

There are 396001 known words
max_word_len=29
train set contains 276865 words
val set contains 119136 words
Traceback (most recent call last):
  File "wordchar2vector.py", line 103, in <module>
    trainer.train(input_path, tmp_dir, nb_samples)
  File "A:\Temp\chatbot-master\PyModels\trainers\wordchar2vector_trainer.py", line 249, in train
    index2char = dict([(i, c) for c, i in char2index.iteritems()])
AttributeError: 'dict' object has no attribute 'iteritems'

я запускал скрипт с параметрами:
python wordchar2vector.py --train 1 --i ../tmp/known_words.txt --o ../tmp/wordchar2vector.dat --model_dir ../tmp --arch_type rnn --tunable_char_embeddings 0 --char_dims 0 --batch_size 250 --dims 56

Нет файла в папке data

Привет.
При запуске возниакет ошибка

./console_bot.sh
Using TensorFlow backend.
Traceback (most recent call last):
File "../PyModels/console_chatbot.py", line 35, in
text_utils.load_dictionaries(data_folder)
File "/home/ssn/WORK/Koziev/chatbot-master/PyModels/bot/text_utils.py", line 31, in load_dictionaries
self.lexicon.load(word2lemmas_path)
File "/home/ssn/WORK/Koziev/chatbot-master/PyModels/bot/word2lemmas.py", line 22, in load
with gzip.open(path, 'r') as rdr:
File "/usr/lib/python2.7/gzip.py", line 34, in open
return GzipFile(filename, mode, compresslevel)
File "/usr/lib/python2.7/gzip.py", line 94, in init
fileobj = self.myfileobj = builtin.open(filename, mode or 'rb')
IOError: [Errno 2] No such file or directory: '../data/ru_word2lemma.tsv.gz'

Как исправить?
С уважением
Сергей

При запуске не подгружаются словари в бинарном виде

Добрый вечер.
В скриптах имеются активные ссылки на папки с данными, которых нет в скачиваемом с github архиве. Например, /home/eek/polygon/w2v/w2v.CBOW=0_WIN=5_DIM=32.txt.
При загрузке возникает также возникает ошибка при поиске двоичных файлов w2v.CBOW=0_WIN=5_DIM=32.bin.
Из-за этого выполнение программы прерывается и на экран диалога не выходит.
Как можно получить недостающие данные: (а) от Вас? (б) создавая модели тренировкой? (с) по другому?
С уважением

Ошибка.

ValueError: Layer #2 (named "AttentionDecoder" in the current model) was found to correspond to layer AttentionDecoder in the save file. However the new layer AttentionDecoder expects 22 weights, but the saved weights have 21 elements.

Сборка

Хочу собрать чат бота самому. При сборке выдает lstat /var/lib/docker/tmp/buildkit-mount782212983/tmp/rugpt_chitchat: no such file or directory. Я понимаю что нет директории. Где найти полный код для сборки. Спасибо!

Не запоминает мое имя

H:> Как меня зовут?

B:> не могу ответить, так как нет данных
H:> Меня зовут Ярослав

B:> Добрый день, Вячеслав
H:> ДУРА, я Ярослав

B:> Ой, мне такие слова не нравятся
H:> Как меня зовут?

B:> яшав
H:> Чего?

B:> Чтобы творить добро

Запуск бота на Flask выдает ошибки

При запуске flask_service_bot.py возникали всякие проблемы с путями:

Traceback (most recent call last):
  File "flask_service_bot.py", line 87, in <module>
    init_chatbot()
  File "flask_service_bot.py", line 40, in init_chatbot
    machine.load_models(w2v_folder, models_folder) # models_folder, w2v_folder было @joomler 10.09.2019
TypeError: load_models() missing 1 required positional argument: 'w2v_folder'

исправил это, строка 40 добавлением data_folder:
machine.load_models(data_folder, models_folder, w2v_folder)

также, строка 67, убрал .. :
parser.add_argument('--tmp_folder', type=str, default='/tmp')

После этого фласк запустил сервер, подгрузил приветствие, но после ввода текст и отправки вышла ошибка:

`

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__

return self.wsgi_app(environ, start_response)

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app

response = self.handle_exception(e)

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception

reraise(exc_type, exc_value, tb)

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise

raise value

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app

response = self.full_dispatch_request()

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request

rv = self.handle_user_exception(e)

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception

reraise(exc_type, exc_value, tb)

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise

raise value

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request

rv = self.dispatch_request()

File "/home/joo/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request

return self.view_functions[rule.endpoint](**req.view_args)

File "/home/joo/Документы/LocalRepository/chatbot-koziev-master/PyModels/bot_service/routes.py", line 60, in index

bot.push_phrase(user_id, utterance)

File "/home/joo/Документы/LocalRepository/chatbot-koziev-master/PyModels/bot/bot_personality.py", line 42, in push_phrase

self.engine.push_phrase(self, user_id, question)

File "/home/joo/Документы/LocalRepository/chatbot-koziev-master/PyModels/bot/simple_answering_machine.py", line 291, in push_phrase

interpreted_phrase = self.interpret_phrase(bot, session, question)

File "/home/joo/Документы/LocalRepository/chatbot-koziev-master/PyModels/bot/simple_answering_machine.py", line 208, in interpret_phrase

self.word_embeddings):

File "/home/joo/Документы/LocalRepository/chatbot-koziev-master/PyModels/bot/nn_req_interpretation.py", line 59, in require_interpretation

y_pred = self.model.predict(x=X_batch, verbose=0)

File "/home/joo/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 1164, in predict

self._make_predict_function()

File "/home/joo/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 554, in _make_predict_function

**kwargs)

File "/home/joo/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py", line 2744, in function

return Function(inputs, outputs, updates=updates, **kwargs)

File "/home/joo/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py", line 2546, in __init__

with tf.control_dependencies(self.outputs):

File "/home/joo/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 5004, in control_dependencies

return get_default_graph().control_dependencies(control_inputs)

File "/home/joo/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 4543, in control_dependencies

c = self.as_graph_element(c)

File "/home/joo/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3490, in as_graph_element

return self._as_graph_element_locked(obj, allow_tensor, allow_operation)

File "/home/joo/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3569, in _as_graph_element_locked

raise ValueError("Tensor %s is not an element of this graph." % obj)

ValueError: Tensor Tensor("output_1/Softmax:0", shape=(?, 2), dtype=float32) is not an element of this graph.

`

Ничего не трогал в моделях, поэтому тут что-то с фласком, не так подгружает что-то

Ошибка UnicodeDecodeError

Использую python 3.6, Windows 10.

При запуске "console_chatbot.py" возникает ошибка в связи с отсутствием файла "generative_grammar_dictionaries.bin".

Как поняла, .bin файл генерируется в "generative_grammar_engine.py", но при его запуске вылетает ошибка к строке 551 в "generative_grammar_engine.py": UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

Подскажите, пожалуйста, как это можно исправить?

И ещё хотела узнать, какой текстовый корпус на 10 Гб вы использовали для модели встраивания слов в векторное пространство?

Спасибо

Спасибо за проделанную работу. :) Не представляю, сколько часов было на это потрачено

Код тренера GPT

Доброго дня! Можете скинуть код тренера rugpt. И ссылку на датасет

Telegram

Как запустить телеграм бота? Или эта опция сейчас недоступна?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.