Как rasa_nlu использует lookup_tables для извлечения сущности? - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь разработать чат-бота, используя rasa nlu и rasa core. Но я не получаю ссылку, как rasa_nlu использует lookup_tables для извлечения сущности. Я уже прошел (http://blog.rasa.com/improving-entity-extraction/) ссылка, но не получил ее. Как использовать lookup_table для извлечения сущности?

1 Ответ

0 голосов
/ 08 ноября 2018

Требования

Если вы хотите использовать справочные таблицы, убедитесь, что:

  • у вас есть компоненты intent_entity_featurizer_regex и ner_crf в вашем NLU-конвейере
  • объекты, которым вы хотите соответствовать, имеют четко определенный и узкий охват
    • такие объекты, как названия продуктов питания, названия компаний, марки автомобилей, вряд ли появятся в тех контекстах, в которых вы не хотите им соответствовать. Следовательно, справочные таблицы являются хорошим вариантом их использования.
    • объекты, подобные объектам (например, «машина», «дом», «бумага»), появляются в разных контекстах, в которых вы вообще не хотите их сопоставлять. Поэтому использование справочных таблиц может даже привести к худшим результатам.

В ваших тренировочных данных

Для того, чтобы использовать справочные таблицы, вы можете определить их непосредственно в данных обучения, например ::

## intent:check_balance
- what is my balance <!-- no entity -->
- Could I pay in [yen](currency)?  <!-- entity matched by lookup table -->

## lookup:currency   <!-- lookup table list -->
- Yen
- USD
- Euro

Или вы можете написать их в текстовом файле:

Yen
USD
Euro

А затем включите путь к текстовому файлу в данные о тренировках:

## intent:check_balance
   ... like before

## lookup:food
    <path to your look up table text file>.txt

Принимая данные типа Могу ли я заплатить в евро? , Rasa NLU затем устанавливает значение слота currency в Euro.

Как они работают

Отдельные элементы в таблице поиска добавляются в регулярное выражение (регулярное выражение), которое применяется к сообщениям, которые ваши пользователи отправляют в бот. Однако таблицы поиска не работают, если ваш пользователь вставляет опечатки, например, запись справочной таблицы Pesos не будет соответствовать Peesos. Чтобы также сопоставить эти случаи, вы можете попробовать нечеткое сопоставление, которое описано в статье блога, которую вы связали. Убедитесь, что ваши таблицы поиска не стали слишком большими, поскольку Rasa NLU должна проверять каждое предложение, соответствует ли оно одной из записей вашей таблицы поиска.

Возможно, документация Rasa NLU также может вам помочь.

...