Bagaimana saya bisa mendapatkan kesamaan kata-kata semantik?

20

Apa cara terbaik untuk mengetahui kemiripan semantik kata-kata? Word2Vec baik-baik saja, tetapi tidak ideal:

# 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

Metode Wordnet NLTK tampaknya menyerah begitu saja:

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

Apa pilihan lain?

Thomas Johnson
sumber
1
Bisakah Anda tahu mengapa word2vec tidak ideal? Word2vec dirancang untuk menangkap kesamaan kata-kata semantik, lalu mengapa itu tidak ideal?
SHASHANK GUPTA
3
Ya, itu sebabnya saya memberikan contoh dalam pertanyaan. Untuk mengulangi: 'panas' dan 'dingin' adalah antonim, tetapi mereka lebih mirip (menurut word2vec) daripada 'panas' dan 'hangat' yang jauh lebih dekat dengan sinonim. 'Panas' juga dapat berarti 'populer' (misalnya, "item panas") tetapi sekali lagi "panas" dan "dingin" lebih dekat satu sama lain daripada "panas dan" populer ". Jadi word2vec tidak ideal karena skor antonim (yang merupakan lawan semantik) lebih mirip daripada sinonim (yang setara secara semantik)
Thomas Johnson

Jawaban:

11

Word2vec tidak menangkap kesamaan berdasarkan antonim dan sinonim. Word2vec akan memberikan kesamaan yang lebih tinggi jika kedua kata tersebut memiliki konteks yang sama. Misalnya Cuaca di California adalah _____. Kosong bisa diisi oleh panas dan dingin maka kesamaannya akan lebih tinggi. Konsep ini disebut hubungan Paradigmatic.

Jika Anda tertarik untuk menangkap relasi seperti hypernym, hiponim, sinonim, antonim, Anda harus menggunakan ukuran kesamaan berdasarkan wordnet. Ada banyak ukuran kesamaan berdasarkan wordnet. Anda dapat memeriksa tautan ini http://ws4jdemo.appspot.com/

Trideep Rath
sumber
7

Dalam Text Analytic Tools for Semantic Similarity , mereka mengembangkan algoritma untuk menemukan kesamaan antara 2 kalimat. Tetapi jika Anda membaca dengan seksama, mereka menemukan kesamaan kata dalam matriks dan dijumlahkan bersama untuk mengetahui kesamaan antara kalimat. Jadi, ini mungkin kesempatan untuk memeriksa kesamaan kata.

Juga di SimLex-999: Mengevaluasi Model Semantik Dengan Estimasi Kesamaan (Asli) , mereka menjelaskan perbedaan antara associationdan similarityyang mungkin merupakan alasan untuk pengamatan Anda juga. Misalnya, kopi dan cangkir. Mereka tidak serupa tetapi mereka asosiatif. Jadi hanya mempertimbangkan kesamaan akan memberikan hasil yang berbeda. Para penulis menyarankan berbagai model untuk memperkirakannya.

Hima Varsha
sumber
Tautan Patah, "Alat Analisis Teks untuk Kesamaan Semantik".
xtian
2

Word2vec adalah titik awal yang baik untuk sebagian besar skenario. Ini tidak capture semantik dengan cara prediksi menggunakan metode CBOW. Ini memungkinkan terjemahan (seperti contoh paling berulang yang bisa saya taruh di sini lagi), V (Raja) - V (Ratu) ~~ V (laki-laki) - V (perempuan) dan sebagainya.

Jadi apa masalahnya? Masalahnya terletak pada ambiguitas arti kata. Setiap kali kata itu sendiri memiliki dua makna yang berbeda dalam dua konteks yang berbeda, vektor kata akan cenderung benar-benar jauh dari konteks mana pun. Python ~ Boa (keduanya ular) dan Python - Jawa (keduanya bahasa pemrograman) ..

Ada alternatif?

Untuk tujuan yang sangat spesifik dari "sinonim" jika Anda menginginkan Wordnet akan menjadi tempat yang ideal. Ini menangkap hubungan eksplisit dari dua kata daripada hubungan implisit berdasarkan penggunaan dan kemunculannya.

Wordnet sebagian besar dibuat sebagai kamus - di mana sebagai word2vec ditambang oleh penggunaan.

Dipan Mehta
sumber
0

Dalam konteks tata bahasa gratis, saya pikir sangat tidak mungkin untuk menentukan kedekatan kata-kata. Yang bisa Anda lakukan adalah menggunakan vektor leksikon dan kemudian jika sebuah kata memiliki nilai yang dekat antara dua leksikon maka nilainya harus dekat.

Josh
sumber