Эта неделя началась с некоторой нервозности, так как вторая оценка GSoC была не за горами. Рада, что смогла пройти! На следующем этапе я просто хочу быть строгим и пунктуальным в своих сроках.

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

Is it safe to take Atovaquone?

Мне нужно получить название «Атоваквон» и сохранить его в переменной «медицина». Этот процесс называется Извлечение сущностей. Итак, что же нам делать дальше?

Как я упоминал в предыдущем блоге, я использовал структуру RASA для предварительной обработки диалогов, а затем для последующего обучения модели. Такие вещи, как извлечение сущностей, извлечение намерений и т. Д., Обрабатываются RASA NLU. Вся эта предварительная обработка не выполняется за один шаг. Вместо этого у нас есть конвейер для этого. То есть выход одного компонента становится входом другого. Конвейер по умолчанию таков:

pipeline:
- name: "nlp_spacy"
- name: "tokenizer_spacy"
- name: "intent_entity_featurizer_regex"
- name: "intent_featurizer_spacy"
- name: "ner_crf"
- name: "ner_synonyms"
- name: "intent_classifier_sklearn"

Как видите, он использует Spacy для токенизации, описания намерений и т. д. и Scikit-Learn для классификации намерений. Для извлечения сущностей используется crfsuitener_crf» в приведенной выше конфигурации). Известно, что это хорошо работает для пользовательских сущностей. Но в моем случае результаты были не столь удовлетворительными. То есть, даже если тестовый диалог пропустил один символ из обучающего диалога, он не смог извлечь сущности. Это намекало на потребность в большем количестве диалогов. В моем случае это был невозможный вариант.

Я обнаружил, что MITIE хорошо работает с сущностями. Итак, текущая конфигурация — «MITIE + Scikit-Learn».

pipeline:
- name: "nlp_mitie"
  model: "total_word_feature_extractor.dat"
- name: "tokenizer_mitie"
- name: "ner_mitie"
- name: "ner_synonyms"
- name: "intent_entity_featurizer_regex"
- name: "intent_featurizer_mitie"
- name: "intent_classifier_sklearn"

Другой альтернативой может быть использование MITIE для всего процесса, но обучение модели даже из 50 строк становится медленным!

Итак, у нас есть конвейер, хорошо извлекающий намерения и сущности. Благодаря инфраструктуре RASA, которая делает такие конфигурации проще простого!

Я вернусь на следующей неделе с более крутыми вещами, которые я делаю. Быть в курсе. :)