Извлечь информацию из предложения

Я создаю простой чат-бот. Я хочу получить информацию из ответа пользователя. Пример сценария:

Bot : Hi, what is your name?
User: My name is Edwin.

Я хочу извлечь имя Эдвин из предложения. Тем не менее, пользователь может ответить по-разному, например,

User: Edwin is my name.
User: I am Edwin.
User: Edwin. 

Я пытался положиться на отношения зависимости между словами, но результат не очень хорошо.

Любая идея о том, какую технику я мог бы использовать для решения этой проблемы?

4 ответа

Прежде всего, я думаю, что полное определение имени очень тяжело настроить. Если вы хотите, чтобы ваш бот мог определять имя примерно в 99% случаев, у вас есть работа. И я полагаю, что определение имени - это только начало ваших планов...

Тем не менее, вот первые идеи, которые пришли мне в голову:

  • Имена, грамматически говоря, существительные. Поэтому, если можно выполнить грамматический анализ предложения, можно найти несколько кандидатов на имя.
  • Имена должны начинаться с заглавной буквы, хотя в чате это, скорее всего, не соблюдается, поэтому может оказаться бесполезным... Однако, если кто-то встречает слово, начинающееся с заглавной буквы, это может быть чей-то название (хотя это может быть название места...).
  • Шаблоны, которые вы могли бы разумно представить, представляя себя, не так многочисленны, поэтому вы могли бы их "жестко закодировать", конечно же, с небольшой терпимостью к опечаткам.
  • Если вы ожидаете фактическое имя, вы можете использовать базу данных, содержащую огромное количество имен, но весело провести время с гавайскими или китайскими именами. Тем не менее, это выглядит как жизнеспособное решение в случае европейских имен.

Однако я не специалист по ИИ, и я с нетерпением жду возможности увидеть другие предложения.

Я бы предложил использовать NER:

Вы можете поиграть с этим сами: http://nlp.cogcomp.org/

Есть много альтернатив, кроме 2-х моделей:

  • На основе обучения НЛП; использует HTTP для интеграции / доставки:

  • на основе сопоставления с образцом; использует интерпретатор (нужна собственная реализация или мост от другой реализации)

    • Rivescript - доступен интерпретатор Python
    • ChatScript - нужен C++ мост / взаимодействие
    • AIML - доступен интерпретатор Python

Это не обширный список текущих опций.

Обнаружение имен может быть сложным, если учесть такие вещи, как "Мое имя не важно", "Мое имя очень длинное" и т. Д.

Вот скрипт общедоступного домена в Self, который пытается разобрать имя, вы можете адаптировать его к python, он также делает некоторые безумные вещи, такие как поиск слов в Wiktionary, чтобы увидеть, классифицируются ли они как имена,

https://www.botlibre.com/script?id=525804

Другие вопросы по тегам