Как уменьшить семантически похожие слова? - PullRequest
0 голосов
/ 03 сентября 2018

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

Я хотел бы объединить похожие слова, скажем, «команда» и «порядок» в «команда». Я пытался использовать word2vec, но он не проверяет семантическое сходство слов (он выдает хорошее сходство для яблока и применяется, поскольку четыре символа в словах одинаковы). И когда я пытаюсь использовать подобие wup, это дает хороший показатель сходства, если слова имеют совпадающие синонимы, результаты которых не столь впечатляющие.

Какой может быть лучший подход для сокращения семантически похожих слов, чтобы избавиться от избыточных данных и объединить похожие данные?

1 Ответ

0 голосов
/ 03 сентября 2018

Я полагаю, что один из вариантов здесь использует WordNet . Он дает вам список синонимов для слова, так что вы можете объединить их вместе, если вы знаете его часть речи.

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

Также хотелось бы отметить, что для Word2vec орфография не имеет значения и вообще не учитывается, алгоритм учитывает только одновременное использование. Я полагаю, вы можете смешивать это с FastText . Однако должны быть некоторые проблемы с вашей моделью. Потому что в стандартном наборе вложений расстояние между этими понятиями должно быть большим. MUSE FastText Сходство между «яблоком» и «применить» составляет всего 0,15, что довольно мало.

Я использую функцию Генсима

model.similarity("apply", "apple")

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

...