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

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

  • 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 может обнаруживать сущности (_13 _, _ 14 _, _ 15_), он обнаруживает их в обычных предложениях, таких как

  • what is the sales org for fpc 1234

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

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

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

  • Список сущностей действительно длинный, чтобы обучать сущности, а не использовать сущности.
  • We can't hard code to find the occurrence of a entity twice as it may fail like here:
    • give me sales org for fpc 12234 for IS?
    • ME,IS не повторяются дважды и не могут использоваться для создания правила.
  • The issue is not with LUIS but entity extraction in general. I'm looking at POS tagging as well but that needs the entity to be present in capital letter to identify it as a Noun, which may not be the case always.
    • Also have just tried out the POS tagging using Spacy. Below are the results.
    • какая сбытовая организация расширила до fpc 1234 для TO? - TO классифицируется как предлог (что на самом деле и есть).  введите описание изображения здесь
    • что такое сбытовая организация для fpc 1234 с областью действия IS? - IS классифицируется как глагол  введите описание изображения здесь

person Vijay    schedule 11.06.2019    source источник
comment
Это НЛП для чат-бота или что-то еще?   -  person Kyle Delaney    schedule 11.06.2019
comment
Да, это для чат-бота!   -  person Vijay    schedule 11.06.2019
comment
Вы надеетесь, что LUIS правильно идентифицирует объекты с учетом использования заглавных букв или просто исходя из грамматического контекста в предложении? Насколько я понимаю, LUIS игнорирует заглавные буквы.   -  person Kyle Delaney    schedule 11.06.2019
comment
LUIS теперь идентифицирует сущности, но загвоздка в том, что они являются списковыми сущностями, а LUIS обеспечивает точное совпадение. Было бы хорошо, если бы LUIS мог идентифицировать объект из грамматического контекста. Да, также, как вы сказали, LUIS игнорирует заглавные буквы. Мы можем обработать вопрос в серверной части, чтобы понять сущность, но я ищу правильный подход.   -  person Vijay    schedule 12.06.2019


Ответы (2)


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

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

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

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

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

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

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

введите здесь описание изображения

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

person Kyle Delaney    schedule 13.06.2019
comment
Спасибо, @Kyle Delaney. Вот что я сделал. Сущности должны были быть машинно обученными. Мы постарались собрать как можно больше образцов и теперь смогли добиться хорошей производительности. Также спасибо за предложение по ролям. Мне нужно попробовать. Принимаю ответ :) - person Vijay; 14.06.2019
comment
Что я именно сделал, так это то, что я создал новую простую сущность и обучил высказывание, помеченное новой сущностью, сказать «область действия». Затем я использовал существующий объект списка, чтобы сравнить, совпадают ли значения, полученные от объекта списка, со значением, полученным от нового объекта области. Если да, то вперед. Если нет, снова попросите пользователя ввести область действия. По мере продвижения варианта использования к тестированию, а затем к производству, мы надеемся, что у нас будет больше вариаций высказываний для обучения и меньше сбоев. - person Vijay; 14.06.2019

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

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

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

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

person chrishmorris    schedule 11.06.2019
comment
Да @chrishmorris. Имена, которые нам нужно идентифицировать, всегда являются отдельными токенами. Но проблема в том, что у нас недостаточно данных для обучения нейронной сети. Мы думали об использовании NER spacy путем обучения с любыми образцами, которые мы сейчас используем, но я сомневаюсь в его эффективности с учетом единственного токена, который необходимо извлечь. - person Vijay; 11.06.2019