Избегайте синонимов в массиве, сгенерированном с помощью AutoTag (алгоритм тегов текста) - PullRequest
0 голосов
/ 26 сентября 2019

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

Для этой цели я использую пакет алгоритмизм - npm.Это дает мне слова, которые чаще всего повторяются в моем тексте.

Пакет работает довольно хорошо, но все же у меня есть 2 проблемы:

(1) Я получаю массив тегов, как показано ниже:

[«интегрировать», «интеграция», «политика», «разговор», «демонстрация», «тест»]

Здесь «интегрировать» и «интеграция» имеют одинаковые значениясмысл.Я хочу избежать «интегрирования» здесь.

(2) Процесс идентифицирует теги, используя слова, которые повторяются чаще всего.В моем входном абзаце есть такие слова, как «цена», «стоимость», «оплата» и т. Д., Но поскольку это не точное совпадение, я не получаю тег «стоимость» или что-то подобное.

Улучшение любой из этих логик поможет мне с этой задачей.


Я уже пробовал много библиотек для синонимов, существительных, глаголов и т. Д. Но, похоже, это не сработало.Давайте упомянем пакеты, которые я уже пробовал:

thesaurus-com

схожесть предложений

схожесть строк

compomise

wordnet

node-snowball

datamuse


Я также попытался установить порог и сопоставить слова «интегрировать» и «интеграция», он удаляет «интегрировать»', но также влияет на некоторые другие мои теги, которые должны быть там.


Заранее спасибо

1 Ответ

2 голосов
/ 26 сентября 2019

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

В вашем случае «Интеграция» и «Интеграция» не являютсяпохоже на все .Они даже не синонимы.Один - глагол, другой - существительное, другой - действие, другой - ситуация.

То, что они делают, это то, что они имеют общий семантический корень -> идею объединения вещей в одно, integra .

Нет доступных инструментов (на данный момент), чтобы сделать это.Вы можете использовать множество разных инструментов.

Вы упомянули Wordnet и сказали, что он не работает.Тем не менее, это, вероятно, лучшая ставка для вашей проблемы.Собственное объяснение Wordnet показывает, как это полезно в вашей ситуации:

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

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

Теперь относительно ваших первоначальных «интегрировать» и «интегрировать», если вы действительно хотитесгруппируйте их вместе, добавьте еще одну эвристику, которая использует стеммер для объединения слов, основанных на основе слова (не гарантируется, что он будет работать 100% времени, поскольку это зависит от правил стеммера).

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