इन सभी stemmers कि यहाँ चर्चा की गई है एल्गोरिथम स्टेमर कर रहे हैं, इसलिए वे हमेशा इस तरह के
के रूप में अप्रत्याशित परिणाम उत्पन्न कर सकते
In [3]: from nltk.stem.porter import *
In [4]: stemmer = PorterStemmer()
In [5]: stemmer.stem('identified')
Out[5]: u'identifi'
In [6]: stemmer.stem('nonsensical')
Out[6]: u'nonsens'
सही ढंग से जड़ शब्द एक एक शब्दकोश आधारित स्टेमर इस तरह की जरूरत प्राप्त करने के लिए Hunspell Stemmer के रूप में। यहां link में इसका एक अजगर कार्यान्वयन है। उदाहरण कोड यहां है
>>> import hunspell
>>> hobj = hunspell.HunSpell('/usr/share/myspell/en_US.dic', '/usr/share/myspell/en_US.aff')
>>> hobj.spell('spookie')
False
>>> hobj.suggest('spookie')
['spookier', 'spookiness', 'spooky', 'spook', 'spoonbill']
>>> hobj.spell('spooky')
True
>>> hobj.analyze('linked')
[' st:link fl:D']
>>> hobj.stem('linked')
['link']
1 9 80 के दशक में पोर्टरस्टेमर विकसित नहीं हुआ था? निश्चित रूप से एक और उन्नत विकल्प है? – kalu
आप सही हैं कि अन्य स्टेमर्स हैं। [स्टेमर्स पर पायथन अनुभाग के साथ [प्राकृतिक भाषा प्रसंस्करण] के पूर्वावलोकन से (http://www.nltk.org/book3/ch03.html#stemmers) वे लंकास्टर से पोर्टर की एक साधारण तुलना करते हैं और फिर "स्टेमिंग नहीं है एक अच्छी तरह से परिभाषित प्रक्रिया है, और हम आम तौर पर उस स्टेमर को चुनते हैं जो हमारे मन में सबसे अच्छी तरह से उपयुक्त है। पोर्टर स्टेमर एक अच्छा विकल्प है यदि आप कुछ ग्रंथों को अनुक्रमणित कर रहे हैं और शब्दों के वैकल्पिक रूपों का उपयोग करके खोज का समर्थन करना चाहते हैं। " – ditkin