2013-07-16 3 views
6

Comment utiliser les fonctions de NLTK pour le persan?NLTK pour persan

Par exemple: 'concordance'. Quand j'utilise la 'concordance', la réponse est 'ne correspond pas', cependant il y a le paramètre de concordance dans mon texte.

l'entrée est très simple .it contient de "bonjour سلام". Lorsque le paramètre de 'concordance' est 'bonjour' la réponse est correcte, mais, si c'est 'سلام' la réponse est 'ne correspond pas'. La sortie pour moi est 'Affichage de 1 sur 1'.

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

Pouvez-vous donner un exemple de code minimal et un exemple d'entrée minimal de ce que vous avez essayé, et que vous vous attendiez à arriver? – jogojapan

Répondre

19

python fortement recommandé bibliothèque persan PNL: https://github.com/sobhe/hazm

Utilisation:

>>> 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

quelque chose de similaire pour C#? –

+1

Ils ont également un port C# non officiel. Je ne l'ai pas essayé cependant: https://github.com/mojtaba-khallash/NHazm – Mohsen

0

En fait, je l'ai utilisé Hazm dans les fenêtres, et je pourrais installer Hazm, mais quand je lance ce code :

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

Vous devriez éditer ceci pour qu'il soit formaté correctement – nbryans

+0

Vous avez besoin d'un paquet de python appelé Wapiti pour que le Hazm fonctionne. Le problème est que compiler Wapiti sur Windows n'est pas si simple ... Il ne compilera pas avec Visual C et même MingW – wmac