2013-07-16 36 views
6

Làm thế nào để sử dụng các chức năng của NLTK cho tiếng Ba Tư?NLTK for Persian

Ví dụ: 'concordance'. Khi tôi sử dụng 'concordance', câu trả lời là 'không match', tuy nhiên có tham số của concordance trong văn bản của tôi.

đầu vào rất đơn giản .nó chứa "hello سلام". Khi tham số 'concordance' là 'hello' câu trả lời là đúng, nhưng, nếu nó 'سلام' câu trả lời là 'không phù hợp'. đầu ra cho tôi là 'Hiển thị 1 trong số 1 kết quả phù hợp'.

import nltk 
    from urllib import urlopen 
    url = "file:///home/.../1.html" 
    raw = urlopen(url).read() 
    raw = nltk.clean_html(raw) 
    tokens = nltk.word_tokenize(raw) 
    tokens = tokens[:12] 
    text = nltk.Text(tokens) 
    print text.concordance('سلام') 
+2

Bạn có thể đưa ra ví dụ mã tối thiểu và ví dụ đầu vào tối thiểu về những gì bạn đã thử và những gì bạn dự kiến ​​sẽ xảy ra? – jogojapan

Trả lời

19

Khuyến khích mạnh mẽ python thư viện Ba Tư cho NLP: https://github.com/sobhe/hazm

Cách sử dụng:

>>> from __future__ import unicode_literals 

>>> from hazm import Normalizer 
>>> normalizer = Normalizer() 
>>> normalizer.normalize('اصلاح نويسه ها و استفاده از نیم‌فاصله پردازش را آسان مي كند') 
'اصلاح نویسه‌ها و استفاده از نیم‌فاصله پردازش را آسان می‌کند' 

>>> from hazm import sent_tokenize, word_tokenize 
>>> sent_tokenize('ما هم برای وصل کردن آمدیم! ولی برای پردازش، جدا بهتر نیست؟') 
['ما هم برای وصل کردن آمدیم!', 'ولی برای پردازش، جدا بهتر نیست؟'] 
>>> word_tokenize('ولی برای پردازش، جدا بهتر نیست؟') 
['ولی', 'برای', 'پردازش', '،', 'جدا', 'بهتر', 'نیست', '؟'] 

>>> from hazm import Stemmer, Lemmatizer 
>>> stemmer = Stemmer() 
>>> stemmer.stem('کتاب‌ها') 
'کتاب' 
>>> lemmatizer = Lemmatizer() 
>>> lemmatizer.lemmatize('می‌روم') 
'رفت#رو' 

>>> from hazm import POSTagger 
>>> tagger = POSTagger() 
>>> tagger.tag(word_tokenize('ما بسیار کتاب می‌خوانیم')) 
[('ما', 'PR'), ('بسیار', 'ADV'), ('کتاب', 'N'), ('می‌خوانیم', 'V')] 

>>> from hazm import DependencyParser 
>>> parser = DependencyParser(tagger=POSTagger()) 
>>> parser.parse(word_tokenize('زنگ‌ها برای که به صدا درمی‌آید؟')) 
<DependencyGraph with 8 nodes> 
+0

bất cứ điều gì tương tự cho C#? –

+1

Họ cũng có một cổng C# không chính thức. Tôi đã không thử nó mặc dù: https://github.com/mojtaba-khallash/NHazm – Mohsen

0

Thực ra, tôi đã sử dụng hazm trong các cửa sổ, và tôi có thể cài đặt HAzm, nhưng khi tôi chạy mã này :

from __future__ import unicode_literals 
from hazm import * 
I have such Error: 

from hazm import x 
    File "C:\Python34\lib\site-packages\hazm\__init__.py", line 13, in <module> 
    from .SequenceTagger import SequenceTagger, IOBTagger 
    File "C:\Python34\lib\site-packages\hazm\SequenceTagger.py", line 6, in <module> 
    from wapiti import Model 
ImportError: No module named 'wapiti' 
+0

Bạn nên chỉnh sửa này để nó được định dạng chính xác – nbryans

+0

Bạn cần một gói python gọi là Wapiti cho Hazm để làm việc. Vấn đề là biên dịch Wapiti trên các cửa sổ không phải là dễ dàng ... Nó sẽ không biên dịch với Visual C và thậm chí MingW – wmac