2013-07-16 11 views
6

Come utilizzare le funzioni di NLTK per persiano?NLTK per persiano

Ad esempio: "concordanza". Quando uso 'concordance', la risposta è 'not match', tuttavia c'è il parametro di concordanza nel mio testo.

l'input è molto semplice .it contiene "ciao سلام". Quando parametro di 'concordanza' è 'ciao' la risposta è corretta, ma, se è 'سلام' la risposta è 'non corrisponde'.il previsto l'output per me è "Visualizzazione di 1 di 1 corrispondenze".

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

Puoi fornire un esempio di codice minimo e un esempio di input minimo di ciò che hai provato, e che ti aspettavi che succedesse? – jogojapan

risposta

19

Fortemente consigliato Python Library persiana per NLP: https://github.com/sobhe/hazm

Usage: Hazm

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

qualcosa di simile per C#? –

+1

Hanno anche una porta C# non ufficiale. Non l'ho provato però: https://github.com/mojtaba-khallash/NHazm – Mohsen

0

In realtà, ho usato in finestre, e ho potuto installare Hazm, ma quando ho eseguito questo codice :

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

È necessario modificare questo in modo che sia formattato correttamente – nbryans

+0

È necessario un pacchetto Python chiamato Wapiti per il Hazm per funzionare. Il problema è che compilare Wapiti su Windows non è così facile ... Non verrà compilato con Visual C e nemmeno con MingW – wmac