как извлечь сущность с RASA NLU, которая не является соседними словами

https://github.com/RasaHQ/rasa_nlu/issues/1468#issue-370187480

Версия Rasa NLU: 0.13.6

Операционная система (windows, osx, ...): windows

Содержимое файла конфигурации модели: yml

language: "en"

pipeline:
- name: tokenizer_whitespace
- name: intent_entity_featurizer_regex
- name: ner_crf
- name: ner_synonyms
- name: intent_featurizer_count_vectors
- name: intent_classifier_tensorflow_embedding
  intent_tokenization_flag: true
  intent_split_symbol: "+"
path: ./models/nlu
data: ./data/training_nlu.json

Проблема:

как извлечь сущность. которые не являются соседними словами. ниже приведен пример:

Мне нужно обучить свой NLU понимать общественные недовольства, такие как УЛИЧНЫЙ СВЕТ, УЛИЦА НА УЛИЦЕ, УЛИЧНОЕ ОСВЕЩЕНИЕ ДНЯ

Мое значение объекта - УЛИЧНЫЙ СВЕТ, это означает, что человек хочет сообщить, что уличный фонарь не работает. он / она сделает это в формате ниже.

Уличный фонарь рядом с клиникой доктора Васанта Шетти, WH Hanumanthappa Layout, Ulsoor Road, Bangalore 42, слился в течение недели.

Сам по себе уличный фонарь не является сущностью или слитный не является моей сущностью. уличные фонари слились - это синоним. Можно ли научить НЛУ извлекать из этого предложения уличный фонарь. если да, то как.

Если нет, то единственное решение - разделить Street Light и объединить его как разные объекты? но из приведенного выше предложения можно извлечь объединенный уличный фонарь, потому что он может извлекать объекты, в которых несколько слов в нем и tokenizer_whitespace просто разбиваются на пробел.

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

вот еще пример по той же проблеме:

Пример 1:

Мусор не вывозился за последние 10 дней, требуется немедленная очистка.

здесь я могу выбрать Не выбран мусор, это проблема. Я могу обучить свой NLU извлекать этот именованный объект с помощью ner_crf с помощью приведенного ниже обучающего фрагмента { "text": "Garbage not picked from past 10 days,need immediate attention for clearance", "intent": "inform_grevience", "entities": [ { "start": 20, "end": 38, "value": "Garbage not picked", "entity": "issue" } ] }

Пример 2:

Мусор рядом с 10-й магистралью не собирался за последние 10 дней, требуются немедленные действия.

другой гражданин сообщает об одной и той же проблеме, но по другому приговору.

Могу ли я извлечь мусор, не выбранный из примера 2, с помощью ner_crf?


person user2834309    schedule 15.10.2018    source источник


Ответы (1)


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

Таким образом, вы можете тренировать каждый из ваших примеров как совершенно разные намерения (исключая сущности для простоты):

## intent:streetLightOut
- The Street light adjacent to Dr Vasanth Shetty's Clinic , WH Hanumanthappa     Layout, Ulsoor Road, Bangalore 42 is out.
- I'd like to report a street light that is burnt out
- street light out

## intent:streetLightAlwaysOn
- The Street light adjacent to Dr Vasanth Shetty's Clinic , WH Hanumanthappa     Layout, Ulsoor Road, Bangalore 42 is always on.
- I'd like to report a street light that never turns off
- street light on constantly

## intent:potholeInStreet
- There's a pothole at the intersection of 10th and main
- pothole
- pothole on 11th street near Wal-Mart

В качестве альтернативы, поскольку вы используете тензорный поток, вы можете использовать намерения heirarcachal:

## intent:streetLight+out
- The Street light adjacent to Dr Vasanth Shetty's Clinic , WH Hanumanthappa Layout, Ulsoor Road, Bangalore 42 is out.
- I'd like to report a street light that is burnt out
- street light out

## intent:streetLight+alwaysOn
- The Street light adjacent to Dr Vasanth Shetty's Clinic , WH Hanumanthappa     Layout, Ulsoor Road, Bangalore 42 is always on.
- I'd like to report a street light that never turns off
- street light on constantly

## intent:potHole
- There's a pothole at the intersection of 10th and main
- pothole
- pothole on 11th street near Wal-Mart

Моя основная причина, по которой я предлагаю эти подходы, заключается в том, что сущности в Rasa очень позиционированы, и слово не имеет большого значения (и не включает словарные векторы). Поскольку все проблемы с уличным освещением, вероятно, включают эти слова или похожие слова, кажется, что само слово имеет наибольшую ценность.

В этом сообщении блога есть информация о TensforFlow и иерархических намерениях: https://medium.com/rasa-blog/supervised-word-vectors-from-scratch-in-rasa-nlu-6daf794efcd8

person Caleb Keller    schedule 15.10.2018