# Hazm - 波斯语NLP工具箱 [![](https://img.shields.io/twitter/follow/roshan_ai?label=follow)](https://twitter.com/roshan_ai)
评价
模块名称 | |
---|---|
DependencyParser | 85.6% |
POSTagger | 98.8% |
Chunker | 93.4% |
Lemmatizer | 89.9% |
度量标准 | 值 | |
---|---|---|
SpacyPOSTagger | 精度 | 0.99250 |
召回 | 0.99249 | |
F1分数 | 0.99249 | |
EZ Detection in SpacyPOSTagger | 精度 | 0.99301 |
召回 | 0.99297 | |
F1分数 | 0.99298 | |
SpacyChunker | 准确率 | 96.53% |
F-测度 | 95.00% | |
召回 | 95.17% | |
精度 | 94.83% | |
SpacyDependencyParser | TOK 准确率 | 99.06 |
UAS | 92.30 | |
LAS | 89.15 | |
SENT 精度 | 98.84 | |
SENT 召回 | 99.38 | |
SENT F-测度 | 99.11 |
简介
Hazm 是一个用于处理波斯语文本的Python库。它提供了各种用于分析、处理和理解波斯语文本的功能。你可以使用Hazm进行文本归一化、句子和单词的标记、词形还原、词性标注、依存关系识别、创建单词和句子的嵌入表示,或读取流行的波斯语语料库。
特性
- 归一化: 将文本转换为标准形式,如去除元音符号、校正空格等。
- 标记: 将文本分割成句子和单词。
- 词形还原: 将单词还原到它们的基形式。
- 词性标注: 为每个单词分配一个词性。
- 依存解析: 识别单词之间的句法关系。
- 嵌入: 创建单词和句子的向量表示。
- 波斯语语料库阅读: 使用现成的脚本和最少的代码轻松读取流行的波斯语语料库。
安装
要安装最新版本的Hazm,在终端中运行以下命令:
pip install hazm
或者,你可以从GitHub安装最新更新(此版本可能不稳定且有漏洞):
pip install git+https://github.com/roshan-research/hazm.git
预训练模型
最后,如果你想使用我们的预训练模型,可以从以下链接下载:
模块名称 | 大小 |
---|---|
下载词嵌入 | ~ 5 GB |
下载句嵌入 | ~ 1 GB |
下载词性标注器 | ~ 18 MB |
下载依存解析器 | ~ 15 MB |
下载分块器 | ~ 4 MB |
下载spacy_pos_tagger_parsbertpostagger | ~ 630 MB |
下载spacy_pos_tagger_parsbertpostagger_Trained_on_95% | ~ 630 MB |
下载spacy_chunker_uncased_bert | ~ 650 MB |
下载spacy_chunker_parsbert | ~ 630 MB |
下载spacy_dependency_parser | ~ 630 MB |
使用方法
>>> from hazm import *
>>> normalizer = Normalizer()
>>> normalizer.normalize('اصلاح نويسه ها و استفاده از نیمفاصله پردازش را آسان مي كند')
'اصلاح نویسهها و استفاده از نیمفاصله پردازش را آسان میکند'
>>> sent_tokenize('ما هم برای وصل کردن آمدیم! ولی برای پردازش، جدا بهتر نیست؟')
['ما هم برای وصل کردن آمدیم!', 'ولی برای پردازش، جدا بهتر نیست?']
>>> word_tokenize('ولی برای پردازش، جدا بهتر نیست؟')
['ولی', 'برای', 'پردازش', ',', '独立', '更好', '不是', '?']
stemmer = Stemmer() stemmer.stem('کتابها') 'کتاب' lemmatizer = Lemmatizer() lemmatizer.lemmatize('میروم') 'رفت#رو'
tagger = POSTagger(model='pos_tagger.model') tagger.tag(word_tokenize('ما بسیار کتاب میخوانیم')) [('ما', 'PRO'), ('بسیار', 'ADV'), ('کتاب', 'N'), ('میخوانیم', 'V')]
spacy_posTagger = SpacyPOSTagger(model_path = 'MODELPATH') spacy_posTagger.tag(tokens = ['من', 'به', 'مدرسه', 'ایران', 'رفته_بودم', '.']) [('من', 'PRON'), ('به', 'ADP'), ('مدرسه', 'NOUN,EZ'), ('ایران', 'NOUN'), ('رفته_بودم', 'VERB'), ('.', 'PUNCT')]
posTagger = POSTagger(model = 'pos_tagger.model', universal_tag = False) posTagger.tag(tokens = ['من', 'به', 'مدرسه', 'ایران', 'رفته_بودم', '.']) [('من', 'PRON'), ('به', 'ADP'), ('مدرسه', 'NOUN'), ('ایران', 'NOUN'), ('رفته_بودم', 'VERB'), ('.', 'PUNCT')]
chunker = Chunker(model='chunker.model') tagged = tagger.tag(word_tokenize('کتاب خواندن را دوست داریم')) tree2brackets(chunker.parse(tagged)) '[کتاب خواندن NP] [را POSTP] [دوست داریم VP]'
spacy_chunker = SpacyChunker(model_path = 'model_path') tree = spacy_chunker.parse(sentence = [('نامه', 'NOUN,EZ'), ('ایشان', 'PRON'), ('را', 'ADP'), ('دریافت', 'NOUN'), ('داشتم', 'VERB'), ('.', 'PUNCT')]) print(tree) (S (NP نامه/NOUN,EZ ایشان/PRON) (POSTP را/ADP) (VP دریافت/NOUN داشتم/VERB) ./PUNCT)
word_embedding = WordEmbedding(model_type = 'fasttext', model_path = 'word2vec.bin') word_embedding.doesnt_match(['سلام' ,'درود' ,'خداحافظ' ,'پنجره']) 'پنجره' word_embedding.doesnt_match(['ساعت' ,'پلنگ' ,'شیر']) 'ساعت'
parser = DependencyParser(tagger=tagger, lemmatizer=lemmatizer) parser.parse(word_tokenize('زنگها برای که به صدا درمیآید؟')) <DependencyGraph with 8 nodes>
spacy_parser = SpacyDependencyParser(tagger=tagger, lemmatizer=lemmatizer) spacy_parser.parse_sents([word_tokenize('زنگها برای که به صدا درمیآید؟')])
ner = HazmNER(model_path='ner/model-best') ner.predict_entity('حمله سایبری به سامانه سوخت در دولت سیزدهم برای بار دوم اتفاق افتاد، حادثهای که در سال 1400 هم به وقوع پیوست اما رفع این مشکل بیش از یک هفته زمان برد، در حالی که آذر امسال پس از این حمله همه پمپبنزینها در کمتر از 24 ساعت فعالیت خود را از سر گرفتند.') ner.predict( [ 'ریو در ایران توسط شرکت سایپا از سال 1384 تا سال 1391 تولید شد', 'به جز ایالات متحده ، این خودرو در اروپا ، آمریکای جنوبی و آسیا هم فروش بالایی داشته است', 'این گاه شمار با قدمتی کمتر از دویست سال ، از جدیدترین گاه شمار های رایج به شمار می رود' ] )
## 文档
访问 https://roshan-ai.ir/hazm/docs 查看完整文档。
## Hazm 的其他语言版本
**免责声明:** 这些移植版本不是由 Roshan 开发或维护的。它们可能没有与原始 Hazm 相同的功能或质量。
- [**JHazm**](https://github.com/mojtaba-khallash/JHazm): Hazm 的 Java 移植版本
- [**NHazm**](https://github.com/mojtaba-khallash/NHazm): Hazm 的 C# 移植版本
## 贡献
我们欢迎并感谢任何对该仓库的贡献,例如错误报告、功能请求、代码改进、文档更新等。提交贡献时请遵循[贡献指南](./CONTRIBUTION.md)。你可以打开一个 issue,fork 该仓库,编写代码,创建一个 pull 请求,然后等待审查和反馈。感谢你对该仓库的兴趣和支持!
## 致谢
### 代码贡献者
![Alt](https://repobeats.axiom.co/api/embed/ae42bda158791645d143c3e3c7f19d8a68d06d08.svg "Repobeats analytics image")
<a href="https://github.com/roshan-research/hazm/graphs/contributors">
<img src="https://contrib.rocks/image?repo=roshan-research/hazm" />
</a>
### 其他贡献者
- 感谢 [Virastyar](http://virastyar.ir/) 项目提供的波斯语词库。
[![Star History Chart](https://api.star-history.com/svg?repos=roshan-research/hazm&type=Date)](https://star-history.com/#roshan-research/hazm&Date)