Таблица поиска не работает в данных обучения Rasa NLU

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

## intent: frequency
* what is the frequency of [region](field)?
* what's the frequency of[region](field)?
* frequency of [region](field)?
* [region](field)s frequency?
* [region](field) frequency?
* frequency [region](field)?

## lookup: field
* price
* phone type
* region

Итак, когда я ввожу текст «Какая частота региона?» Я получаю результат

{'intent': {'name': 'frequency', 'confidence': 0.9517087936401367},
'entities': [{'start': 17, 'end': 23, 'value': 'region', 
'entity': 'field', 'confidence': 0.9427971487440825, 
'extractor': 'CRFEntityExtractor'}], 'text': 'What is the frequency of region?'}

но когда я ввожу текст «Какая периодичность цена?» Я получаю результат

{'intent': {'name': 'frequency', 'confidence': 0.9276150465011597},
'entities': [], 'text': 'What is the frequency of price?'}

person AMG    schedule 14.05.2019    source источник


Ответы (2)


Согласно документации RasaNLU, для того, чтобы поиск работал, вам необходимо включить несколько примеров из таблицы поиска.

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

## intent: frequency
* what is the frequency of [region](field)?
* what is the frequency of [city](field)?
* what is the frequency of [work](field)?
* what's the frequency of [phone type](field)?
* what is the frequency of [phone type](field)?
* frequency of [region](field)?
* frequency of [phone type](field)?
* [region](field)s frequency?
* [region](field) frequency?
* frequency [region](field)?

Теперь, когда я попробовал все примеры, которые вы упомянули, они работали, хотя «цена» не была включена в набор данных, но были покрыты все шаблоны.

Enter a message: What is the frequency of price?
{
  "intent": {
    "name": "frequency",
    "confidence": 0.966820478439331
  },
  "entities": [
    {
      "start": 25,
      "end": 30,
      "value": "price",
      "entity": "field",
      "confidence": 0.7227365687405007,
      "extractor": "CRFEntityExtractor"
    }
  ]
}

Я рекомендую использовать https://github.com/rodrigopivi/Chatito для создания простого набора данных. проще для вас и автоматически генерировать синонимы и т. д.

Кроме того, на всякий случай, если вы не знаете, вы также можете использовать файлы, чтобы указывать на большие поисковые запросы, такие как

## lookup:city
  data/lookups/city_lookup.txt

person riz    schedule 14.05.2019
comment
Если мы дадим файл для поиска, нам все равно нужно будет добавлять примеры для каждого поиска? - person AMG; 14.05.2019
comment
Файлы - это просто альтернатива списку, поэтому функциональность такая же, но она полезна, когда у вас есть большие поиски. Я использовал поиск для города и штата, и добавления нескольких примеров достаточно, чтобы rasa выполнила свою работу. - person riz; 14.05.2019
comment
Я пробовал, и кажется, что если нет хотя бы одного примера поиска, он его не обнаружит. В этом случае таблицы поиска становятся бесполезными, поскольку нам все равно нужно записать пример для каждого другого значения сущности. - person AMG; 15.05.2019
comment
Примеры с моими городами и штатами работали довольно хорошо ... в таблице поиска более 3 тыс. Городов, и мне нужно добавить только 10-20 примеров ... кажется, это не так уж и бесполезно ... - person riz; 15.05.2019
comment
Какой конвейер вы используете тензорный поток или пространственный? Это может сработать, потому что вы используете простор. Я использую тензорный поток, и он, похоже, не работает. - person AMG; 16.05.2019
comment
Я использую supervised_embeddings, поэтому не думаю, что это связано с предварительно обученным учеником. Поиск в основном предназначен для supervised_embeddings, потому что, если вы используете spacy, он автоматически поймет город и штат, но предоставит вам оба в одной и той же переменной местоположения. Таким образом, нет разницы между Нью-Йорком и Нью-Йорком, когда я использовал spacy, поэтому я возвращаюсь к supervised_embeddings и использую поисковые запросы и доступный в Интернете город и штат JSON (позже преобразованные в текстовые файлы), чтобы все заработало. - person riz; 17.05.2019
comment
Используя стандартную конфигурацию (из коробки), таблицы поиска rasa начали давать результаты, когда я включил несколько примеров с использованием сущностей в поиске (только небольшая часть всей таблицы), например, какова частота, и для нескольких разных case ex. '' частота с тем же намерением. - person peter.cyc; 24.12.2019

используйте следующий конвейер в config.yml

трубопровод:

  • имя: WhitespaceTokenizer
  • имя: RegexFeaturizer
  • имя: CRFEntityExtractor
  • имя: LexicalSyntacticFeaturizer
  • имя: CountVectorsFeaturizer
  • name: CountVectorsFeaturizer Analyzer: char_wb min_ngram: 1 max_ngram: 4
  • имя: DIETClassifier entity_recognition: Ложные эпохи: 100
  • имя: EntitySynonymMapper
  • имя: ResponseSelector эпох: 100
person dinesh gaonkar    schedule 18.08.2020