Kelimelerin anlambilimsel benzerliğini nasıl ölçebilirim?


20

Kelimelerin anlambilimsel benzerliğini bulmanın en iyi yolu nedir? Word2Vec iyidir, ancak ideal değildir:

# 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

NLTK'nin Wordnet yöntemleri sadece pes ediyor gibi görünüyor:

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

Diğer seçenekler nelerdir?


1
Word2vec'in neden ideal olmadığını söyleyebilir misiniz? Word2vec kelimelerin anlamsal benzerliğini yakalamak için tasarlanmıştır, o zaman neden ideal değil?
SHASHANK GUPTA

3
Evet, bu yüzden sorudaki örnekleri verdim. Tekrarlamak gerekirse: 'sıcak' ve 'soğuk' zıttır, ancak eşanlamlılara çok daha yakın olan 'sıcak' ve 'sıcak'dan daha benzerdir (word2vec'e göre). 'Sıcak' aynı zamanda 'popüler' (ör. "Sıcak ürün") anlamına gelebilir, ancak yine de "sıcak" ve "soğuk" birbirlerine "sıcak ve" popüler "olanlardan daha yakındır. (anlamsal karşıtlardır) (eş anlamsal olarak eşdeğerdir) eş anlamlılarına benzer
Thomas Johnson

O zaman daha uygun bir gömme yöntemi kullanın: Antonym için Eşanlamlı Ayrımı
Emre

Yanıtlar:


11

Word2vec, zıt anlamlılara ve eş anlamlılara dayalı benzerlik yakalamaz. İki sözcüğün benzer bağlamı varsa, Word2vec daha yüksek benzerlik sağlar. California'daki hava _____ idi. Boşluk hem sıcak hem de soğuk olarak doldurulabilir, bu nedenle benzerlik daha yüksek olacaktır. Bu kavrama Paradigmatik ilişkiler denir.

Eğer hipernim, hiponim, eşanlamlı, zıt anlamlı ilişkiyi yakalamak istiyorsanız, herhangi bir wordnet tabanlı benzerlik ölçüsü kullanmanız gerekir. Wordnet'e dayalı birçok benzerlik önlemi vardır. Bu bağlantıyı http://ws4jdemo.appspot.com/ kontrol edebilirsiniz.


7

In Semantik Benzerlik Metin Analitik Araçlar , onlar 2 cümle arasındaki benzerliği bulmak için bir algoritma geliştirdi. Fakat yakından okursanız, kelimenin bir matristeki benzerliğini bulurlar ve cümleler arasındaki benzerliği bulmak için bir araya gelirler. Yani, kelime benzerliğini kontrol etmek bir çekim olabilir.

Ayrıca SimLex-999: Anlambilimsel Modellerin (Orijinal) Benzerlik Tahminiyle Değerlendirilmesi , gözleminiz arasındaki associationve similaritymuhtemelen sebebi arasındaki farkı açıklar . Örneğin, kahve ve bir fincan. Benzer değiller fakat çağrışımsallar. Yani sadece benzerliği düşünmek farklı bir sonuç verecektir. Yazarlar bunları tahmin etmek için çeşitli modeller önermektedir.


Bozuk Bağlantı, "Anlamsal Benzerlik için Metin Analitik Araçları".
xtian

2

Word2vec çoğu senaryo için iyi bir başlangıç ​​noktasıdır. Bu does CBOW yöntemi kullanılarak tahmin yoluyla yakalama anlambilim. Çevirilere izin verir (buraya tekrar koyabileceğim en çok örnek olarak), V (Kral) - V (Kraliçe) ~~ V (erkek) - V (kadın) vb.

Peki sorun ne? Mesele kelime anlamı belirsizliğindedir. Kelimenin kendisi iki farklı bağlamda iki farklı anlama sahip olduğunda, vektör kelimesi her iki bağlamdan da gerçekten uzak olma eğilimindedir. Python ~ Boa (her ikisi de yılan) ve Python - Java (her iki programlama dili).

Alternatif var mı?

İsterseniz "eş anlamlı" çok özel bir amaç için Wordnet ideal bir yer olurdu. Kullanım ve olaylara dayalı örtük ilişki yerine iki kelimenin açık ilişkisini yakalar.

Wordnet çoğunlukla sözlük olarak hazırlanır - burada word2vec kullanımı tarafından çıkarılır.


0

Bağlamdan bağımsız bir gramerde, kelimelerin yakınlığını belirlemek gerçekten imkansızdır. Yapabileceğiniz şey, sözlük vektörlerini kullanmaktır ve daha sonra bir sözcük iki sözlük arasındaki değerlere yakınsa, değer yakın olmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.