Як я можу отримати міру смислової подібності слів?


20

Який найкращий спосіб з’ясувати смислову схожість слів? Word2Vec добре, але не ідеально:

# Using the 840B word Common Crawl GloVe vectors with gensim:

# 'hot' is closer to 'cold' than 'warm'
In [7]: model.similarity('hot', 'cold')
Out[7]: 0.59720456121072973

In [8]: model.similarity('hot', 'warm')
Out[8]: 0.56784095376659627

# Cold is much closer to 'hot' than 'popular'
In [9]: model.similarity('hot', 'popular')
Out[9]: 0.33708479049537632

Методи Wordnet NLTK, здається, просто здаються:

In [25]: print wn.synset('hot.a.01').path_similarity(wn.synset('warm.a.01'))
None

Які ще варіанти?


1
Чи можете ви сказати, чому word2vec не ідеальний? Word2vec розроблений для того, щоб зафіксувати смислову схожість слів, то чому це не ідеально?
SHASHANK GUPTA

3
Так, саме тому я подав приклади у питанні. Ще раз зазначу: "гарячий" і "холодний" є антонімами, але вони більш схожі (за словами word2vec), ніж "гарячі" та "теплі", які набагато ближче до синонімів. "Гаряче" також може означати "популярне" (наприклад, "гарячий предмет"), але знову "гаряче" та "холодне" ближче один до одного, ніж "гаряче та" популярне ". Отже, word2vec не є ідеальним, оскільки він містить антоніми (які є семантичними протилежностями) як більш схожі, ніж синоніми (семантично рівнозначні).
Томас Джонсон,

Відповіді:


11

Word2vec не фіксує подібності на основі антонімів та синонімів. Word2vec надав би більшу схожість, якщо два слова мають однаковий контекст. Наприклад, Каліфорнія - _____. Порожню можна заповнити як гарячою, так і холодною, отже подібність буде вищою. Ця концепція називається парадигматичними відносинами.

Якщо вам цікаво зафіксувати такі відносини, як гіперніми, гіпоніми, синоніми, антоніми, вам доведеться використовувати будь-який захід подібності до wordnet. На основі wordnet існує багато заходів подібності. Ви можете перевірити це посилання http://ws4jdemo.appspot.com/


7

У текстових аналітичних інструментах для семантичної подібності вони розробили алгоритм, щоб знайти подібність між двома реченнями. Але якщо ви уважно читаєте, вони знаходять схожість слова в матриці і сумуються разом, щоб з’ясувати схожість між реченнями. Отже, це може бути знімок, щоб перевірити схожість слова.

Також у SimLex-999: Оцінка семантичних моделей з (справжньою) оцінкою схожості , вони пояснюють різницю між собою, associationі similarityце, мабуть, також причина вашого спостереження. Наприклад, кава та чашка. Вони не схожі, але асоціативні. Тому просто врахування подібності дало б інший результат. Автори пропонують різні моделі для їх оцінки.


Перервана посилання, "Інструменти аналітики тексту для смислової подібності".
xtian

2

Word2vec - хороша відправна точка для більшості сценаріїв. Це робить захоплення семантики шляхом прогнозування за допомогою методу CBOW. Це дозволяє переклади (як найбільш повторений приклад, який я можу навести тут ще раз), V (король) - V (королева) ~~ V (чоловіки) - V (жінки) тощо.

То в чому проблема? Питання полягає у двозначності сенсу слова. Кожен раз, коли саме слово має два різних значення у двох різних контекстах, вектор слова, як правило, далеко від будь-якого контексту. Python ~ Boa (обидві змії) та Python - Java (обидві мови програмування).

Будь-яка альтернатива?

Для дуже специфічної мети "синонімів", якщо ви хочете, Wordnet було б ідеальним місцем. Він фіксує явне співвідношення двох слів, а не неявне відношення на основі використання та подій.

Wordnet в основному розробляється як словник - там, де Word2vec видобувається за допомогою використання.


0

У контексті вільної граматики я вважаю, що насправді неможливо визначити близькість слів. Що ви можете зробити, це використовувати лексиконні вектори, а потім, якщо слово близьке за значеннями між двома лексиконами, то значення має бути близьким.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.