НЛП: Сегментация предложения по намерению - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь найти решение для разделения предложений по намерениям.Поскольку в одном предложении может быть несколько намерений, я хотел бы разделить фрагмент текста на короткие предложения по намерениям.

Например: для разделения «Отправьте электронное письмо на собрание моей команды сегодня и приложите файл расписания».«в« Отправьте электронное письмо моей встрече сегодня », и приложите файл расписания.ИЛИ «Я хочу яблоко и апельсин, и я опоздаю сегодня вечером» на «Я хочу яблоко и апельсин», «и я опоздаю сегодня вечером».

Я проверил разбиение на фрагменты и токенизацию предложений,Я думаю, что чанкинг может быть отправной точкой, но он не дает близкого подхода.Может кто-нибудь дать мне какое-нибудь предложение?Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

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

Например, предполагая, что у нас есть 4 намерения с несколькими обучающими высказываниями, вы можете сгенерировать обучающий текст для сегментатора предложений, выбрав случайным образом число предложений «s_num», которое представляет, сколько намерений / предложений будет включено вэто обучающее высказывание, затем в соответствии с этим числом случайным образом выберите количество предложений "s_num" и сложите их вместе, создавая обучающий экземпляр для сегментера.

Метки могут быть следующими:

"Это предложение с намерением1 и это предложение с намерением2" ["Начало", "О", "О", "О", "END "," O "," Start "," O "," O "," O "," END "]

0 голосов
/ 14 июня 2018

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

Вы можете решить эту проблему, внедрив классификатор One-Vs-Rest .Это подготовит классификатор для каждой метки, но метки не являются взаимоисключающими.По сути, это означает, что у каждого ярлыка будет свой собственный классификатор, и каждый из них, учитывая предложение, будет решать, подходит ли его ярлык или нет.Если две метки являются подходящими, тогда назначаются две метки.

По моему опыту, если вы векторизуете простой TFIDF и некоторую простую предварительную обработку ранее, а затем используете какой-то классический классификатор, вы уже можете получить довольно хорошие результаты, если у вас естьхорошие тренировочные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...