В случае, если команда не найдена среди возможных, запускается попытка предсказания. Благодаря этому команду "Ирина погода" можно вызвать даже словами "Ирина скажи какая сейчас погода".
Минусы:
При замене команды на предсказанную теряются постфиксы команды. То есть если сказать "Ирина пожалуйста поставь таймер на 1 минуту" будет заменено на "Ирина поставь таймер" с дефолтными 5 минутами.
Помогает обрезать лишние сказанные слова в команде, но на словоформы не реагирует. "Ирина как с погодой" не будет распознано.
В этой реализации self.data_set, содержащий словарь всех доступных команд, строится как словарь {'погода': 'погода'}, т.е. дублируются значения. Не знаю, как это упростить.
Это просто концепт, не претендующий на реальное использование. Но у себя пожалуй буду это использовать, потому что так меньше мороки с запоминанием команд, какое-нибудь слово да сработает.
Сделано на основе наработок из видео Крендель - Голосовой ассистент на python c искусственным интеллектом и машинным обучением (доступно в репозитории https://github.com/PythonHubStudio/Offline-Voice-Assistant-with-Machine-Learning-on-python)
В случае, если команда не найдена среди возможных, запускается попытка предсказания. Благодаря этому команду "Ирина погода" можно вызвать даже словами "Ирина скажи какая сейчас погода".
Минусы:
{'погода': 'погода'}
, т.е. дублируются значения. Не знаю, как это упростить.Это просто концепт, не претендующий на реальное использование. Но у себя пожалуй буду это использовать, потому что так меньше мороки с запоминанием команд, какое-нибудь слово да сработает.