Skip to content
Python library for digesting Persian text.
Branch: master
Clone or download

Latest commit

maanijou Add Degarbayan interface (#176)
* Add degarbayan corpuse reader

* Add degarbayan module to tests file

* Fix indentation
Latest commit cdf1d64 Feb 1, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
corpora Add Degarbayan interface (#176) Feb 1, 2020
docs Update index.html Dec 24, 2019
hazm Add Degarbayan interface (#176) Feb 1, 2020
resources move wiki extractor script to source Oct 2, 2017
.gitignore add wininst build Oct 12, 2018
.travis.yml Update .travis.yml Dec 24, 2019
LICENSE Initial commit Oct 29, 2013 Update Dec 24, 2019 don't join rare words in normalizer Sep 30, 2017 Update Dec 24, 2019 Add Degarbayan interface (#176) Feb 1, 2020


Python library for digesting Persian text.

  • Text cleaning
  • Sentence and word tokenizer
  • Word lemmatizer
  • POS tagger
  • Shallow parser
  • Dependency parser
  • Interfaces for Persian corpora
  • NLTK compatible
  • Python 2.7, 3.4, 3.5 and 3.6 support
  • Build Status


>>> from __future__ import unicode_literals
>>> from hazm import *

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

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

>>> stemmer = Stemmer()
>>> stemmer.stem('کتاب‌ها')
>>> lemmatizer = Lemmatizer()
>>> lemmatizer.lemmatize('می‌روم')

>>> tagger = POSTagger(model='resources/postagger.model')
>>> tagger.tag(word_tokenize('ما بسیار کتاب می‌خوانیم'))
[('ما', 'PRO'), ('بسیار', 'ADV'), ('کتاب', 'N'), ('می‌خوانیم', 'V')]

>>> chunker = Chunker(model='resources/chunker.model')
>>> tagged = tagger.tag(word_tokenize('کتاب خواندن را دوست داریم'))
>>> tree2brackets(chunker.parse(tagged))
'[کتاب خواندن NP] [را POSTP] [دوست داریم VP]'

>>> parser = DependencyParser(tagger=tagger, lemmatizer=lemmatizer)
>>> parser.parse(word_tokenize('زنگ‌ها برای که به صدا درمی‌آید؟'))
<DependencyGraph with 8 nodes>


The latest stabe verson of Hazm can be installed through pip:

pip install hazm

But for testing or using Hazm with the latest updates you may use:

pip install --upgrade

We have also trained tagger and parser models. You may put these models in the resources folder of your project.


Note: These are not official versions of hazm, not uptodate on functionality and are not supported by Sobhe.

  • JHazm: A Java port of Hazm
  • NHazm: A C# port of Hazm


You can’t perform that action at this time.