Python版本的茎干算法
bulstem的Python项目详细描述
bulstempy:一个针对保加利亚人的BulStem-屈折词干生成器的Python重新实现
简介
这是延髓词干算法的Python版本。它遵循中介绍的算法
Nakov, P. BulStem: Design and evaluation of inflectional stemmer for Bulgarian. In Workshop on
Balkan Language Resources and Tools (Balkan Conference in Informatics).
有关算法的主页,请参见http://people.ischool.berkeley.edu/~nakov/bulstem/。另外,请查看原始的paper以获取更多详细信息和示例。在
实施
与其他可用的实现相反,这个实现使用Trie而不是Dictionary/Hashtable/,以便找到可以应用于令牌的最长可能的规则。在
基本算法步骤:
- 找出记号中第一个元音的位置。在
- 以相反的顺序遍历字符串,直到有匹配的后缀,或者向下到第一个元音的位置(在步骤中找到)来查找可能的最长规则。1) 一。在
- 在词干后缀前面加上非词干前缀(步骤。2) 一。在
安装
此库与Python>;=3.6兼容。在
克隆存储库并运行:
有pip
^{pr2}$测试
项目中包括一组测试,在tests folder下。 测试套装可按如下方式运行:
pip install -e ".[testing]"
pip install -r requirements-test.txt
python -m unittest
使用
该库使用一组用于词干分析的规则。规则可以作为列表传递给BulStemmer
构造函数,也可以作为文件的路径。在
对于这两个选项,规则的格式如下:
word ==> stem ==> freq
包中包含一组预定义的规则,可以直接使用。词干规则可以找到here。(示例:Reading the rules from an external file)
手动加载规则
frombulstem.stemimportBulStemmerstemmer=BulStemmer(["ой ==> о 10"],min_freq=0,left_context=2)stemmer.stem('порой')# Excepted output: 1. 'поро'
BulStemmer
构造函数参数:
rules
-Iterable包含规则的字符串。在min_freq
-词干生成时要使用的规则的最小频率。在left_context
-不以词干为词干的前缀的大小。在
从外部文件读取规则
frombulstem.stemimportBulStemmer# Pre-defined names of rule setsPRE_DEFINED_RULES=['stem-context-1','stem-context-2','stem-context-3']# Excepted output:# 1 втор# 2 втори# 3 вториятfori,rules_nameinenumerate(PRE_DEFINED_RULES,start=1):stemmer=BulStemmer.from_file(rules_name,min_freq=2,left_context=i)print(i,stemmer.stem('вторият'))stemmer=BulStemmer.from_file('stem_rules_context_2_utf8.txt',min_freq=2,left_context=i)stemmer.stem('вторият')# Excepted output: 1. 'втори'stemmer.stem('вероятен')# Excepted output: 1. 'вероят'
BulStemmer.from_file
参数:
path
-规则文件的路径(或预定义的名称),格式如下:word==>;stem===>;freqmin_freq
-词干生成时要使用的规则的最小频率。在left_context
-不以词干为词干的前缀的大小。在
其他实现
Perl (Original), Java (JDK 1.4), Ruby, C#, Python2, GATE plugin (Java)
许可证
有关许可证信息,请参见LICENSE。在
- 项目
标签: