【问题标题】:NLTK for PersianNLTK 波斯语
【发布时间】:2013-07-16 19:04:15
【问题描述】:

如何在波斯语中使用 NLTK 的功能?

例如:“索引”。当我使用'concordance'时,答案是'not match',但是我的文本中有concordance的参数。

输入非常简单。它包含“hello سلام”。当“concordance”的参数为“hello”时,答案是正确的,但是,如果是“سلام”,则答案是“不匹配”。预期的输出对我来说是“显示 1 个匹配项中的 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('سلام')

【问题讨论】:

  • 你能给出一个最小的代码示例和最小的输入示例,说明你尝试了什么以及你期望会发生什么?

标签: python nlp nltk


【解决方案1】:

强烈推荐用于 NLP 的 python 波斯库:https://github.com/sobhe/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>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多