Извлечь информацию из предложения
Я создаю простой чат-бот. Я хочу получить информацию из ответа пользователя. Пример сценария:
Bot : Hi, what is your name?
User: My name is Edwin.
Я хочу извлечь имя Эдвин из предложения. Тем не менее, пользователь может ответить по-разному, например,
User: Edwin is my name.
User: I am Edwin.
User: Edwin.
Я пытался положиться на отношения зависимости между словами, но результат не очень хорошо.
Любая идея о том, какую технику я мог бы использовать для решения этой проблемы?
4 ответа
Прежде всего, я думаю, что полное определение имени очень тяжело настроить. Если вы хотите, чтобы ваш бот мог определять имя примерно в 99% случаев, у вас есть работа. И я полагаю, что определение имени - это только начало ваших планов...
Тем не менее, вот первые идеи, которые пришли мне в голову:
- Имена, грамматически говоря, существительные. Поэтому, если можно выполнить грамматический анализ предложения, можно найти несколько кандидатов на имя.
- Имена должны начинаться с заглавной буквы, хотя в чате это, скорее всего, не соблюдается, поэтому может оказаться бесполезным... Однако, если кто-то встречает слово, начинающееся с заглавной буквы, это может быть чей-то название (хотя это может быть название места...).
- Шаблоны, которые вы могли бы разумно представить, представляя себя, не так многочисленны, поэтому вы могли бы их "жестко закодировать", конечно же, с небольшой терпимостью к опечаткам.
- Если вы ожидаете фактическое имя, вы можете использовать базу данных, содержащую огромное количество имен, но весело провести время с гавайскими или китайскими именами. Тем не менее, это выглядит как жизнеспособное решение в случае европейских имен.
Однако я не специалист по ИИ, и я с нетерпением жду возможности увидеть другие предложения.
Есть много альтернатив, кроме 2-х моделей:
На основе обучения НЛП; использует HTTP для интеграции / доставки:
на основе сопоставления с образцом; использует интерпретатор (нужна собственная реализация или мост от другой реализации)
- Rivescript - доступен интерпретатор Python
- ChatScript - нужен C++ мост / взаимодействие
- AIML - доступен интерпретатор Python
Это не обширный список текущих опций.
Обнаружение имен может быть сложным, если учесть такие вещи, как "Мое имя не важно", "Мое имя очень длинное" и т. Д.
Вот скрипт общедоступного домена в Self, который пытается разобрать имя, вы можете адаптировать его к python, он также делает некоторые безумные вещи, такие как поиск слов в Wiktionary, чтобы увидеть, классифицируются ли они как имена,