ฉันจะวัดความคล้ายคลึงของคำได้อย่างไร


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 ไม่ได้จับความคล้ายคลึงกันตาม antonyms และคำพ้องความหมาย Word2vec จะให้ความคล้ายคลึงกันมากขึ้นหากทั้งสองคำมีบริบทที่คล้ายกัน เช่นสภาพอากาศในแคลิฟอร์เนียคือ _____ ช่องว่างสามารถเติมได้ทั้งร้อนและเย็นดังนั้นความคล้ายคลึงจะสูงขึ้น แนวคิดนี้เรียกว่าความสัมพันธ์แบบกระบวนทัศน์

หากคุณสนใจที่จะจับความสัมพันธ์เช่น hypernyms, hyponyms, antonyms, antonym คุณจะต้องใช้การวัดความคล้ายคลึงกันของ wordnet ใด ๆ มีมาตรการความคล้ายคลึงกันจำนวนมากขึ้นอยู่กับ wordnet คุณสามารถตรวจสอบลิงค์นี้ได้ที่http://ws4jdemo.appspot.com/


7

ในเครื่องมือวิเคราะห์ข้อความสำหรับ Semantic คล้ายคลึงกันพวกเขาพัฒนาอัลกอริทึมเพื่อค้นหาความคล้ายคลึงกันระหว่าง 2 ประโยค แต่ถ้าคุณอ่านอย่างใกล้ชิดพวกเขาพบความคล้ายคลึงกันของคำในเมทริกซ์และผลรวมเข้าด้วยกันเพื่อค้นหาความคล้ายคลึงกันระหว่างประโยค ดังนั้นอาจเป็นช็อตเพื่อตรวจสอบความคล้ายคลึงกันของคำ

นอกจากนี้ในSimLex-999: การประเมินแบบจำลองความหมายด้วยการประมาณความคล้ายคลึงกัน (ของแท้)พวกเขาอธิบายความแตกต่างระหว่างassociationและsimilarityซึ่งอาจเป็นเหตุผลสำหรับการสังเกตของคุณเช่นกัน ตัวอย่างเช่นกาแฟและถ้วย พวกมันไม่เหมือนกัน แต่พวกมันเชื่อมโยงกัน ดังนั้นเมื่อพิจารณาถึงความคล้ายคลึงกันจะให้ผลลัพธ์ที่แตกต่าง ผู้เขียนแนะนำแบบจำลองต่างๆเพื่อประมาณค่า


ลิงก์เสีย "เครื่องมือวิเคราะห์ข้อความเพื่อความคล้ายคลึงกันทางความหมาย"
— xtian

2

Word2vec เป็นจุดเริ่มต้นที่ดีสำหรับสถานการณ์ส่วนใหญ่ มันไม่ความหมายโดยวิธีการจับภาพของการทำนายโดยใช้วิธีการ CBOW มันช่วยให้การแปล (เป็นตัวอย่างซ้ำที่สุดที่ฉันสามารถใส่ที่นี่อีกครั้ง), V (ราชา) - V (ราชินี) ~~ V (ชาย) - V (หญิง) และอื่น ๆ

แล้วปัญหาคืออะไร ปัญหาอยู่ในความรู้สึกคลุมเครือของคำ เมื่อใดก็ตามที่คำนั้นมีความหมายที่แตกต่างกันสองอย่างในบริบทที่ต่างกันสองคำเวกเตอร์จะมีแนวโน้มที่จะห่างจากบริบทใด Python ~ Boa (ทั้งงู) และ Python - Java (ทั้งภาษาโปรแกรม) ..

ทางเลือกใด ๆ

สำหรับจุดประสงค์เฉพาะของ "คำพ้องความหมาย" ถ้าคุณต้องการให้Wordnetเป็นสถานที่ในอุดมคติ มันรวบรวมความสัมพันธ์ที่ชัดเจนของสองคำมากกว่าความสัมพันธ์โดยนัยขึ้นอยู่กับการใช้งานและการเกิดขึ้น

Wordnet ถูกสร้างขึ้นเป็นพจนานุกรมเป็นส่วนใหญ่ซึ่ง word2vec ถูกขุดโดยการใช้งาน


0

ในไวยากรณ์ที่ไม่มีบริบทฉันคิดว่ามันเป็นไปไม่ได้จริง ๆ ที่จะกำหนดความใกล้เคียงของคำ สิ่งที่คุณสามารถทำได้คือใช้พาหะของคำศัพท์และถ้าคำนั้นอยู่ใกล้กับค่าระหว่าง lexicons สองตัวค่านั้นควรจะปิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.