Tất cả những stemmers đã được thảo luận ở đây là thuật toán Stemmer, vì thế họ luôn có thể tạo ra kết quả bất ngờ như
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'
Để có được một cách chính xác những từ gốc một cần một cuốn từ điển dựa Stemmer như vậy như Hunspell Stemmer.Here là một thực hiện python của nó trong link sau đây. Mã mẫu tại đây
>>> 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']
Không phải PorterStemmer được phát triển vào những năm 1980? Chắc chắn có một lựa chọn nâng cao hơn? – kalu
Bạn chính xác rằng có những gốc khác. Từ phần xem trước của phần [Xử lý ngôn ngữ tự nhiên với Python trên cuống] (http://www.nltk.org/book3/ch03.html#stemmers), chúng thực hiện so sánh đơn giản giữa Lancaster với Porter và sau đó nói "Bắt nguồn không phải là một Porter Stemmer là một lựa chọn tốt nếu bạn đang lập chỉ mục một số văn bản và muốn hỗ trợ tìm kiếm bằng cách sử dụng các dạng thay thế của từ ngữ. " – ditkin