Size: a a a

Natural Language Processing

2020 May 21

SS

Sergey Shulga in Natural Language Processing
Сергей Устьянцев
вообще можно Наташу на этой задаче попробовать, скорей всего затащит
проверил, работает на простых ФИО, но в некоторых случаях ладно бы ничего не выдавала, но выдает не правильные маркеры. Пример: "Ковалю Сергею Александровичу"  -выдает {'first': 'Сергей', 'last': 'Александрович'} Что очевидно неправильно.
источник

СУ

Сергей Устьянцев... in Natural Language Processing
CNN+CRF
источник

SS

Sergey Shulga in Natural Language Processing
мда, скорее всего ner-парсер по PER косячит, первый спан ловит не с первого символа
источник

PG

Prohor Gladkikh in Natural Language Processing
как вариант, разделить на три слова и скормить классификатору по очереди. классификатор обучить на каком-то словаре. классификатор, например: n-gram по символам + cnn
источник

YB

Yuri Baburov in Natural Language Processing
Sergey Shulga
проверил, работает на простых ФИО, но в некоторых случаях ладно бы ничего не выдавала, но выдает не правильные маркеры. Пример: "Ковалю Сергею Александровичу"  -выдает {'first': 'Сергей', 'last': 'Александрович'} Что очевидно неправильно.
нет, неочевидно, есть фамилия Александрович .
источник

YB

Yuri Baburov in Natural Language Processing
библиотека считает фразу "Ковалю Сергею Александровичу" эквивалентом фразы "Говорю Сергею Петрову"
источник

KS

Konstantin Smith in Natural Language Processing
Проверка ФИО - нетривиальная задача, мне её приходилось решать пару лет назад для контроля ввода ФИО. И здесь в чистом виде никакое NER не поможет для получения хорошего качества. Даже для "русских" ФИО встречаются типа "Иванова Анна Мария Луиза Ивановна", не говоря уж о восточных арабесках. Ну и возможны ошибки в словах. Я из Pullenti использовал класс PersonItemToken для получения последовательности токенов, а далее поверх этого реализовывал разные эвристические правила. Удалось добиться хорошего качества "99.9%" на большой выборке реальных данных ввода.
источник

SS

Sergey Shulga in Natural Language Processing
Konstantin Smith
Проверка ФИО - нетривиальная задача, мне её приходилось решать пару лет назад для контроля ввода ФИО. И здесь в чистом виде никакое NER не поможет для получения хорошего качества. Даже для "русских" ФИО встречаются типа "Иванова Анна Мария Луиза Ивановна", не говоря уж о восточных арабесках. Ну и возможны ошибки в словах. Я из Pullenti использовал класс PersonItemToken для получения последовательности токенов, а далее поверх этого реализовывал разные эвристические правила. Удалось добиться хорошего качества "99.9%" на большой выборке реальных данных ввода.
Уже засел за pullenti, буду заново велосипед изобретать.
источник

SS

Sergey Shulga in Natural Language Processing
У меня ФИО со всей России
источник

KS

Konstantin Smith in Natural Language Processing
Sergey Shulga
Уже засел за pullenti, буду заново велосипед изобретать.
Если не получится - обращайтесь.
источник

SS

Sergey Shulga in Natural Language Processing
Konstantin Smith
Если не получится - обращайтесь.
Спасибо! Сначала сам покапаюсь, если будут тормоза, обязательно обращусь
источник

R

Rishi in Natural Language Processing
Could not find it there
источник

А

Александр in Natural Language Processing
Rishi
Could not find it there
What about kaggle datasets?
источник

R

Rishi in Natural Language Processing
Александр
What about kaggle datasets?
Difficult to find there too.
источник
2020 May 22

D(

David (ddale) Dale in Natural Language Processing
Всем приветики!
Поделитесь, пожалуйста, кто какие диалоговые менеджеры использует для goal-oriented ботов?

За время работы в Алисе я привык к примерно следующему стеку (он неплохо описан в посте авторства Бори Янгеля):

- Запрос пользователя, как он есть;
- Разобранный запрос с выделенным интентом, слотами и сущностями - то, что лингвисты называют semantic frame
- "Состояние диалога", или форма, в виде мешка переменных. Помимо слотов из запроса, там есть слоты, унаследованные из предыдущего диалога, притянутые из профиля пользователя или из внешних источников;
- ???
- Интерфейс, посылающий запросы в ручки тех сервисов, которые собственно и делают вашего бота полезным, и передающий их ответы в бота;
- Профит.

И вот что именно должно быть на месте знаков вопроса - не очевидно.
В Алисе в большинстве сценариев используется нехитрый dialog manager, который или сразу выдаёт ответ, определяемый текущим интентом, или дозапрашивает необходимые слоты (типа "куда вы хотите поехать?").

Проблема в том, что иногда для заполнения слота нужно выполнить отдельную цепочку действий. В Алисе, например, может состояться такой диалог:
- Вызови такси
- Куда вы хотите поехать?
- Домой
- А где находится дом?
- Красная площадь 1
- Ваш адрес - Красная площадь дом один, верно?
- Да
- Заказываю от адреса 3-я улица Строителей дом 25 до адреса Красная площадь дом 1, стоимость 350 рублей...

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

И теперь собственно вопрос: как вы управляете задачами бота, когда их становится больше, чем одна?
Если вы пользуетесь готовым фреймворком для этого, будет клёво, если поделитесь текстом/видосом, где он разбирается.
Если вы накодили какой-то свой удачный велосипед, будет особенно любопытно послушать рассказ про его принципы 🙂
источник

NS

Nikolay Shmyrev in Natural Language Processing
David (ddale) Dale
Всем приветики!
Поделитесь, пожалуйста, кто какие диалоговые менеджеры использует для goal-oriented ботов?

За время работы в Алисе я привык к примерно следующему стеку (он неплохо описан в посте авторства Бори Янгеля):

- Запрос пользователя, как он есть;
- Разобранный запрос с выделенным интентом, слотами и сущностями - то, что лингвисты называют semantic frame
- "Состояние диалога", или форма, в виде мешка переменных. Помимо слотов из запроса, там есть слоты, унаследованные из предыдущего диалога, притянутые из профиля пользователя или из внешних источников;
- ???
- Интерфейс, посылающий запросы в ручки тех сервисов, которые собственно и делают вашего бота полезным, и передающий их ответы в бота;
- Профит.

И вот что именно должно быть на месте знаков вопроса - не очевидно.
В Алисе в большинстве сценариев используется нехитрый dialog manager, который или сразу выдаёт ответ, определяемый текущим интентом, или дозапрашивает необходимые слоты (типа "куда вы хотите поехать?").

Проблема в том, что иногда для заполнения слота нужно выполнить отдельную цепочку действий. В Алисе, например, может состояться такой диалог:
- Вызови такси
- Куда вы хотите поехать?
- Домой
- А где находится дом?
- Красная площадь 1
- Ваш адрес - Красная площадь дом один, верно?
- Да
- Заказываю от адреса 3-я улица Строителей дом 25 до адреса Красная площадь дом 1, стоимость 350 рублей...

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

И теперь собственно вопрос: как вы управляете задачами бота, когда их становится больше, чем одна?
Если вы пользуетесь готовым фреймворком для этого, будет клёво, если поделитесь текстом/видосом, где он разбирается.
Если вы накодили какой-то свой удачный велосипед, будет особенно любопытно послушать рассказ про его принципы 🙂
rasa, не?
источник

D(

David (ddale) Dale in Natural Language Processing
Nikolay Shmyrev
rasa, не?
Rasa как вариант :)
На какие конкретные расовские policies вы рекомендуете обратить внимание для работы с вложенными и множественными задачами?
Может быть, есть какие-нибудь сочные примерчики?
источник

NS

Nikolay Shmyrev in Natural Language Processing
David (ddale) Dale
Rasa как вариант :)
На какие конкретные расовские policies вы рекомендуете обратить внимание для работы с вложенными и множественными задачами?
Может быть, есть какие-нибудь сочные примерчики?
источник

D(

David (ddale) Dale in Natural Language Processing
Интересно, спасибо :)
источник

AA

Aleksey Aleksey in Natural Language Processing
Здравствуйте. Ещё не особо разобрался как вытаскивать именованные сущности.
В новой версии natasha, я так понял нужно использовать MorphVocab, но если его использовать, то выбираются не только имена, но и остальные ненужные слова.
Как сделать, чтобы были только имена?
источник