2个不稳定版本
0.2.0 | 2024年3月13日 |
---|---|
0.1.0 | 2024年3月12日 |
#1298 in 文本处理
275KB
3.5K SLoC
MOrPh-rS
Мопс — 俄语形态分析器。
主要功能
- 将词还原为基本形式。
- 词的语法特征:获取关于词的语法信息。
- 处理与OpenCorpora兼容的词典。
- ✨性能✨:解析速度是PyMorphy2的数十倍。
使用示例
创建词典
初始化形态分析器需要OpenCorpora词典,该词典在网站上提供,输出目录(将保存二进制数据),以及指定语言(目前只有俄语)。
let dict = MorphAnalyzer::create(dictionary, db, language).unwrap();
let morph = MorphAnalyzer::init(dict).unwrap();
解析
let morph = MorphAnalyzer::open(dict_path).unwrap();
let stali = morph.parse("стали").unwrap();
println!("{stali}");
规范化
let morph = MorphAnalyzer::open(dict_path).unwrap();
let stali = morph.normalize("стали").unwrap();
println!("{stali}");
将词变形为所需形式。
let morph = MorphAnalyzer::open(dict_path).unwrap();
let stali = morph.inflect_forms("стали", grams![Gender::Feminine]).unwrap();
println!("{stali:?}");
let morph = MorphAnalyzer::open(dict_path).unwrap();
let stali = morph.parse("стали").unwrap().0[5]; // индекс соответствует глаголу "стать"
let stali = morph.inflect_parsed(stali, grams![Gender::Feminine]).unwrap();
println!("{stali:?}");
将词变形为所有形式。
可以将词还原为所有形式,考虑到词干之间的联系。例如,стать -> стал, стала, стали, ставший, ставшая, ставшие и т.д。
性能消耗高的功能。如果有必要在文本中搜索所有形式,最好在应用程序开始时调用该功能。
let morph = MorphAnalyzer::open(dict_path).unwrap();
let stali = morph.declension("стали").unwrap();
println!("{stali:?}");
let morph = MorphAnalyzer::open(dict_path).unwrap();
let stali = morph.parse("стали").unwrap().0[5]; // индекс соответствует глаголу "стать"
let stali = morph.declension_parsed(stali).unwrap();
println!("{stali:?}");
性能
负载测试结果可以在benchmarks.md中找到。那里还有与PyMorphy2
的比较测试结果。
开发计划
- 根据后缀预测非词典词的语法特征。
- 处理带连字符的词。
- 变形非词典词。
许可
本代码根据Kribrum-NC许可分发,该许可基于Apache License Version 2.0
。
感谢
- 感谢Крибрум的指南,使得这项工作可以开源。
- 感谢PyMorhpy2的开发者,他们的作品为Mop斯的开发提供了灵感。
- 感谢OpenCorpora的制作者,他们创建的词典是Mop斯默认使用的。
- 感谢Nikita Patsakula小组组长提供咨询和积极审查。
依赖项
~10–20MB
~272K SLoC