मैं एनएलटीके का उपयोग करके एक शब्द और प्रत्येक शब्द के बीच समानता प्राप्त करने के लिए देख रहा हूं।एनएलटीके टोकनयुक्त वाक्य को synset प्रारूप में परिवर्तित करें
एनएलटीके नीचे दिखाए गए दो विशिष्ट शब्दों के बीच समानता प्राप्त कर सकता है। इस विधि के लिए आवश्यक है कि शब्द का एक विशिष्ट संदर्भ दिया गया है, इस मामले में यह 'dog.n.01' है जहां कुत्ता एक संज्ञा है और हम पहली (01) एनएलटीके परिभाषा का उपयोग करना चाहते हैं।
dog = wordnet.synset('dog.n.01')
cat = wordnet.synset('cat.n.01')
print dog.path_similarity(cat)
>> 0.2
समस्या यह है कि मुझे वाक्य में प्रत्येक शब्द से भाषण जानकारी का हिस्सा प्राप्त करने की आवश्यकता है। एनएलटीके पैकेज में नीचे दिए गए अनुसार वाक्य में प्रत्येक शब्द के लिए भाषण के हिस्सों को प्राप्त करने की क्षमता है। हालांकि, इन भाषण भागों ('एनएन', 'वीबी', 'पीआरपी' ...) प्रारूप के साथ मेल नहीं खाते हैं जो synset पैरामीटर के रूप में लेता है।
text = word_tokenize("They refuse to permit us to obtain the refuse permit")
pos_tag(text)
>> [('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'), ('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')]
एनएलटीके में pos_tag() परिणामों से synset प्रारूपित डेटा प्राप्त करना संभव है? synset से मेरा dog.n.01
मुझे यह 'लेस्क' उदाहरण मिला, लेकिन आपका कोड बेहतर परिणाम देता है, मुझे आश्चर्य है कि यह क्यों है (केवल उत्सुक): http://www.nltk.org/ howto/wsd.html –
लेस्क वास्तव में अच्छी तरह से काम नहीं करता है। एकमात्र कारण जिसके लिए यह कोड बेहतर काम कर सकता है क्योंकि यह पहला सिंकसेट प्राप्त करता है। वर्डनेट में synsets आवृत्ति द्वारा आदेश दिया जाता है। दूसरे शब्दों में, यदि हम संदर्भ को ध्यान में रखते हैं तो पहला synset सबसे संभावित है। – bogs