2012-04-29 14 views
13

Tôi cần một mô-đun python tốt để tạo các tài liệu văn bản gốc trong giai đoạn tiền xử lý.Cần một mô-đun python để tạo các tài liệu văn bản

Tôi thấy điều này một

http://pypi.python.org/pypi/PyStemmer/1.0.1

nhưng tôi không thể tìm thấy tài liệu int vào liên kết được cung cấp.

Tôi có ai biết nơi để tìm tài liệu hoặc bất kỳ thuật toán gốc tốt nào khác vui lòng trợ giúp.

Trả lời

25

Bạn có thể muốn thử NLTK

>>> from nltk import PorterStemmer 
>>> PorterStemmer().stem('complications') 
+0

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

+1

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

5

Python bắt nguồn mô-đun có triển khai các thuật toán bắt nguồn khác nhau như Porter, Porter2, Paice-vỏ trấu, và Lovins. http://pypi.python.org/pypi/stemming/1.0

>> from stemming.porter2 import stem 
    >> stem("factionally") 
    faction 
+0

Hãy nhận biết rằng đây là một thực thi python tinh khiết và thực hiện chậm hơn quy mô hơn những thứ như PyStemmer được wrappers cho thực hiện C nhanh chóng –

2

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'] 
+4

-1: Đối tượng của stemmers không phải là để tìm từ gốc (hoặc lemmatization, mà nltk cũng có một mô-đun cho), nhưng thay vì tìm một phiên bản rút ngắn của từ mà các đoạn mã khác cũng sẽ rút ngắn. Nó không quan trọng nếu gốc không tìm thấy từ gốc; miễn là 'gốc (' vô nghĩa ') == gốc (' vô nghĩa ')! = gốc (' chuối ') ', nó ổn. –

0

Các gensim package cho mô hình chủ đề đi kèm với một thuật toán Porter Stemmer:

>>> from gensim import parsing 
>>> gensim.parsing.stem_text("trying writing nonsense") 
'try write nonsens' 

Các PorterStemmer là lựa chọn duy nhất bắt nguồn thực hiện trong gensim. Một lưu ý phụ: Tôi có thể hình dung (mà không cần tham khảo thêm) rằng hầu hết các mô-đun liên quan đến khai thác văn bản đều có triển khai riêng cho các quy trình xử lý trước đơn giản như loại bỏ gốc, xóa trắng và xóa từ dừng của Porter.

Các vấn đề liên quan