Попытка определить товары по тексту при использовании словаря

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

Текст = меня интересует galxy s8

Упоминает продукт samsung galaxy s8

Но обратите внимание на разницу в написании.

Я реализовал следующие подходы: 1 - макс. Токенизированные названия продуктов и текст пользователей (я разделяю слова по пунктуации и цифрам, так что s8 будет токенизироваться на 's' и '8'. Затем я проверил каждый токен в тексте пользователя чтобы узнать, есть ли это в моем словаре, с damerau levenshtein distance ‹= 1, чтобы учесть вариации в написании. Как только я обнаружил последовательность токенов, которые действительно существуют в словаре, я выполняю поиск продукта, который соответствует запросу, проверяя damerau levenshtein расстояние на каждом токене. Это дало плохие результаты. В основном потому, что последовательность токенов, которые существуют в словаре, не обязательно представляют продукт. Например, поскольку текст является максимальным, токенизированные числа могут быть найдены в словаре, и как такие даты обнаруживаются как продукты.

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

3- я вручную пометил 270 предложений и обучил распознаватель именованных сущностей меткам («О» и «Продукт»). Я разделил данные на 80% обучение и 20% тест. Обратите внимание, что я не использовал список продуктов как часть функций. Результаты были в порядке .. не очень хорошо

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

Если я найду лучшую альтернативу тем, о которых я уже упоминал, я добавлю ее в этот пост. А пока я открыт для предложений


person Malek ch    schedule 07.02.2018    source источник


Ответы (1)


Вы можете разделить проблему на две части.

1) Проведите проверку орфографии с использованием словаря известных названий продуктов (это не задача НЛП, и должны быть руководства о том, как выполнить проверку орфографии).

2) После того, как вы выполнили предварительную обработку (проверку орфографии), используйте свой алгоритм NER

Это должно повысить вашу точность.

person Adnan S    schedule 07.02.2018
comment
Stanford CoreNLP имеет regexNER для ситуаций, когда у вас есть список объектов для сопоставления - person Sam H.; 11.02.2018