का उपयोग करके सामान्य समानार्थी और भाषण प्रसंस्करण का हिस्सा मैं एक वाक्य में शब्दों के लिए एक सामान्य समानार्थी पहचानकर्ता बनाने की कोशिश कर रहा हूं जो महत्वपूर्ण हैं (यानी "ए" या "द" नहीं), और मैं प्राकृतिक भाषा का उपयोग कर रहा हूं इसके लिए अजगर में टूलकिट (nltk)। मेरी समस्या यह है कि nltk में समानार्थी खोजक को इसके समानार्थी से जुड़ने के लिए भाषण तर्क का एक भाग की आवश्यकता होती है। इसके लिए मैंने कोशिश की थी कि एनएलटीके में मौजूद भाषण टैगर के सरलीकृत हिस्से का उपयोग किया जाए, और फिर इस तर्क को समानार्थी खोजकर्ता में पास करने के लिए पहले अक्षर को कम करें, हालांकि यह काम नहीं कर रहा है।एनएलटीके
def synonyms(Sentence):
Keywords = []
Equivalence = WordNetLemmatizer()
Stemmer = stem.SnowballStemmer('english')
for word in Sentence:
word = Equivalence.lemmatize(word)
words = nltk.word_tokenize(Sentence.lower())
text = nltk.Text(words)
tags = nltk.pos_tag(text)
simplified_tags = [(word, simplify_wsj_tag(tag)) for word, tag in tags]
for tag in simplified_tags:
print tag
grammar_letter = tag[1][0].lower()
if grammar_letter != 'd':
Call = tag[0].strip() + "." + grammar_letter.strip() + ".01"
print Call
Word_Set = wordnet.synset(Call)
paths = Word_Set.lemma_names
for path in paths:
Keywords.append(Stemmer.stem(path))
return Keywords
इस कोड मैं वर्तमान से काम कर रहा हूँ है, और के रूप में आप मैं पहली बार इनपुट lemmatizing हूँ मैं लंबे समय में होगा मैचों की संख्या कम करने के लिए देख सकते हैं (मैं के दसियों पर इस चलाने की योजना हजारों वाक्य), और सिद्धांत रूप में मैं इस प्रभाव को आगे बढ़ाने के लिए इस शब्द को याद कर रहा हूं और मेरे द्वारा उत्पन्न अनावश्यक शब्दों की संख्या को कम करता हूं, हालांकि यह विधि लगभग हमेशा नीचे दिए गए फॉर्म के रूप में त्रुटियों को वापस लाती है:
Traceback (most recent call last):
File "C:\Python27\test.py", line 45, in <module>
synonyms('spray reddish attack force')
File "C:\Python27\test.py", line 39, in synonyms
Word_Set = wordnet.synset(Call)
File "C:\Python27\lib\site-packages\nltk\corpus\reader\wordnet.py", line 1016, in synset
raise WordNetError(message % (lemma, pos))
WordNetError: no lemma 'reddish' with part of speech 'n'
मेरे पास इस डेटा पर अधिक नियंत्रण नहीं है, और यह बस मेरे कॉर्पस को साफ करना वास्तव में एक विकल्प नहीं है। इस समाधान को हल करने के बारे में कोई विचार?
मैंने कुछ और शोध किया और मेरे पास एक आशाजनक लीड है, लेकिन मुझे अभी भी यकीन नहीं है कि मैं इसे कैसे कार्यान्वित कर सकता हूं। किसी न पाए गए, या गलत तरीके से असाइन किए गए शब्द के मामले में, मैं शब्द को निकटतम सही ढंग से वर्गीकृत अन्य कीवर्ड से जोड़ने के लिए समानता मीट्रिक (लीकॉक चोडोरो, वू-पामर इत्यादि) का उपयोग करना चाहता हूं। शायद एक संपादन दूरी माप के संयोजन के साथ, लेकिन फिर से मैं इस पर किसी भी तरह के दस्तावेज नहीं मिला है।
मैं इस कोड को थोड़ी देर के लिए काम करने की कोशिश कर रहा हूं, और ऐसा लगता है कि यह त्रुटियों से भरा हुआ है। एक के लिए, "worndet" एनएलटीके का हिस्सा नहीं है, और पैकेज संगठन थोड़ा सा स्थानांतरित हो गया है। – aendrew
क्षमा करें, यह कोड 11 महीने पुराना है। हां, nltk थोड़ा बदल गया, पुराने के स्थान पर nltk के नए संस्करण के लिए एक बदले और कामकाजी संस्करण को पोस्ट किया। –
यह भी ध्यान देने योग्य है कि वर्डनेट लुकअप वास्तव में काफी धीमी हैं और सिद्धांत में एक उपप्रजाति को सौंपा जाना चाहिए। यदि आप इसे थोड़ा और साफ करना चाहते हैं और इसे बेहतर उपयोगिता बनाना चाहते हैं तो मुझे बताएं और मैं इसके लिए गिथब पर एक गलती खोल सकता हूं और आपको इसकी प्रतिलिपि बना सकता हूं। –