克林贡NLP工具包
yajwiz的Python项目详细描述
yajwI'是一个Klingon NLP工具包,包括基本的标记化、形态分析和词性标记。在
它大量使用boQwI’ dictionary。在
安装
yajwI需要python3.8或更新版本。在
它可以从PyPI安装:
pip install yajwiz
标记化
这个库包含非常简单的标记化。在
^{pr2}$形态分析
yajwiz.analyze函数解析一个单词并返回一个可能的解析列表和大量额外信息。在
>>> yajwiz.analyze("yInwI'") [ { 'WORD': "yInwI'", 'POS': 'N', 'XPOS': 'N', 'PARTS': ['yIn:n', "-wI':n:suff"], 'LEMMA': 'yIn', 'SUFFIX': {'N4': "-wI'"}, 'XPOS_GSUFF': 'N', 'UNGRAMMATICAL': True }, { 'WORD': "yInwI'", 'POS': 'V', 'XPOS': 'VT', 'PARTS': ['yIn:v:t_c', "-wI':v:suff"], 'LEMMA': 'yIn', 'SUFFIX': {'V9': "-wI'"}, 'XPOS_GSUFF': "VT.wI'" } ]
目前,分析器非常宽容,允许使用错误的复数和所有格后缀(例如,yInwI'而不是yInwIj)。它将尝试用'UNGRAMMATICAL': True标记这类错误。它检测到以下错误:
- 当名词不是人称名词时,使用-pu',-wI',-li'等
- 当名词不是身体部分时使用-Du'
- 使用-vIS而不使用-taH
- 使用带有非法动词前缀的-lu'
- 使用前缀表示宾语的不及物动词
- 使用-ghach而不使用任何其他动词后缀
还有一个更简单的函数yajwiz.split_to_morphemes,它返回一组字符串元组(通常集中只有一个元组):
>>> yajwiz.split_to_morphemes("yInwI'") {('yIn', "-wI'")}
词类列表
XPOS | Explanation |
---|---|
VS | Stative verb |
VT | Transitive verb |
VI | Intransitive verb |
VA | Transitive and intransitive verb |
V? | Verb with unknown transitivity |
NL | Person noun |
NB | Body part noun |
PRON | Pronoun (including ‘Iv and nuq: it is a noun that can function as a copula) |
NUM | Number |
N | Other noun |
ADV | Adverb |
EXCL | Exclamation |
CONJ | Conjunction |
QUES | Question word (other than ‘Iv and nuq) |
UNK | Unknown |
CONLL-U文件和POS标记器
CONLL-U文件是一种常用的存储注释语言数据的数据格式。在
yajwI'可以生成充满形态信息的CONLL-U文件(它不支持依赖解析)。在
下面是一个示例脚本,它首先在没有经过训练的POS标记器的情况下解析文本, 然后用它训练POS标记器,最后用标记器解析文本并将结果保存到CONLL-U文件中。在
importyajwizwithopen("prose-corpus.txt","r")asf:text=f.read()conllu=yajwiz.text_to_conllu(text)tagger=yajwiz.Tagger()tagger.train(yajwiz.conllu_to_tagged_list(conllu))conllu=yajwiz.text_to_conllu(text,tagger)withopen("prose-corpus.conllu","w")asf:f.write(conllu)
如果没有经过培训的词性标注者,模糊的单词将不带标记:
# Hegh neH chav qoH. 1 Hegh _ _ _ _ _ _ _ _ 2 neH _ _ _ _ _ _ _ _ 3 chav _ _ _ _ _ _ _ _ 4 qoH qoH NOUN N _ _ _ _ _ 5 . . PUNCT PUNCT _ _ _ _ _ # qanchoHpa' qoH, Hegh qoH. 1 qanchoHpa' qan VERB V?.pa' Person=3|ObjPerson=3,0 _ _ _ SuffixV3=-choH|SuffixV9=-pa' 2 qoH qoH NOUN N _ _ _ _ _ 3 , , PUNCT PUNCT _ _ _ _ _ 4 Hegh _ _ _ _ _ _ _ _ 5 qoH qoH NOUN N _ _ _ _ _ 6 . . PUNCT PUNCT _ _ _ _ _
在训练了标记器之后,它将采取“最佳猜测”来决定位置
# Hegh neH chav qoH. 1 Hegh Hegh VERB VT Person=3|ObjPerson=3,0 _ _ _ _ 2 neH neH ADV ADV _ _ _ _ _ 3 chav chav VERB VT Person=3|ObjPerson=3,0 _ _ _ _ 4 qoH qoH NOUN N _ _ _ _ _ 5 . . PUNCT PUNCT _ _ _ _ _ # qanchoHpa' qoH, Hegh qoH. 1 qanchoHpa' qan VERB V?.pa' Person=3|ObjPerson=3,0 _ _ _ SuffixV3=-choH|SuffixV9=-pa' 2 qoH qoH NOUN N _ _ _ _ _ 3 , , PUNCT PUNCT _ _ _ _ _ 4 Hegh Hegh VERB VT Person=3|ObjPerson=3,0 _ _ _ _ 5 qoH qoH NOUN N _ _ _ _ _ 6 . . PUNCT PUNCT _ _ _ _ _
在这个例子中,tagger犯了一个错误:它将第一个Hegh归类为VT,尽管它应该是N。我没有正确标记的语料库,因此目前无法评估tagger。:(
版权所有
yajwiz(c)2020年Iikka Hauhio
这个程序a包含在Apache许可证2.0下授权的boQwI’ dictionary(data.json)。在
Python文件也在apachelicense2.0下获得许可。有关详细信息,请参阅许可证文件。在
- 项目
标签: