обнаружение сущностей - столкновение сущностей с английскими словами - PullRequest
2 голосов
/ 11 июня 2019

У меня есть несколько предложений, как показано ниже

  • what is the sales org for fpc 1234 for IS?
  • give me sales org for fpc 12234 for IS?
  • give me sales org for fpc 12234 with scope ME?

В приведенных выше предложениях сущность, которую я ищу, это IS, IS и ME соответственно. Эти сущности включают IS, ME, AN, AM, которые являются общими при построении предложения на английском языке. Я использую LUIS для обнаружения сущностей и поддержания сущностей в виде списочной сущности. Проблема в том, что, хотя LUIS способен обнаруживать сущности (IS, AN, AM), он обнаруживает их по обычным предложениям, таким как

  • what is the sales org for fpc 1234

В приведенном выше предложении у нас нет никакой сущности, но сущность IS выбрана.

Как мы обнаруживаем сущности, только если они адресованы на самом деле, а не являются частью конструкции предложения.

Несколько замечаний:

  • Список сущностей очень длинный, чтобы обучать сущности, а не использовать сущности
  • Мы не можем жестко написать код, чтобы найти вхождение сущности дважды, так как она может потерпеть неудачу, как здесь:
    • give me sales org for fpc 12234 for IS?
    • ME,IS не встречаются дважды и не могут использоваться для создания правила.
  • Проблема не в LUIS, а в извлечении сущности в целом. Я также смотрю на тегирование POS, но для этого нужно, чтобы сущность присутствовала заглавной буквой, чтобы идентифицировать ее как существительное, что может быть не всегда.
    • Также только что попробовал пометить POS с помощью Spacy. Ниже приведены результаты.
    • какая организация продаж была расширена до 1234 для ТО? - TO классифицируется как предлог (который на самом деле.) enter image description here
    • что такое организация продаж для fpc 1234 с областью применения IS? - IS классифицируется как глагол enter image description here

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Вы, вероятно, выяснили, что не-обученные сущности не идеальны в вашем случае, потому что они не учитывают контекст. Я думаю, у вас есть несколько вариантов.

Вариант 1: Простые сущности

Я только что проверил, добавив три ваших высказывания в намерение с именем "Sales org", а затем создал простую сущность с именем "Scope". Я пометил IS, IS и ME на концах этих высказываний как объект Scope. Тогда LUIS смог правильно определить «есть» как сущность, но не «я», когда я проверял «дать мне торговую организацию для fpc 12234 за это?»

После вызова LUIS ваш бот-код может затем проверить распознанную сущность, чтобы убедиться, что она находится в списке допустимых значений.

Вариант 2: роли

Если вы все еще хотите использовать объект списка, вы все равно можете сделать так, чтобы LUIS предоставил вам контекстную информацию об объекте, используя роли .

Я только что проверил, создав сущность с именем "ScopeName" с вашими четырьмя значениями IS, ME, AN и AM. Затем я создал две роли для этой сущности: «область действия» и «ложь». Затем я пометил сущности в высказываниях «Организации продаж» следующим образом:

enter image description here

Если вы сделаете это, LUIS все равно распознает IS, ME, AN и AM, когда они находятся в тех частях предложения, где вы не хотите, чтобы они были распознаны, но вы будете знать, что игнорировать их в код вашего бота, потому что им будет назначена роль «falsePositive».

1 голос
/ 11 июня 2019

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

Достаточно ли у вас кураторских данных для обучения нейронной сети? LSTM, возможно, удастся узнать достаточно о грамматике, фактически используемой в этих предложениях, чтобы успешно выполнить NER.

В приведенных вами примерах имена для поиска представляют собой один токен. Если это типично, это облегчит работу.

Комментарий ниже говорит о том, что данных недостаточно для обучения нейронной сети. Несколько приведенных примеров очень стереотипны. Можно ли обучить наивного байесовского классификатора, используя предыдущий и следующий токен в качестве предикторов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...