训练Part-of-speech Tagger
在example/training中有spaCy提供的几个模型训练样例,直接拷贝一个train_tagger.py到spaCy的根目录,然后修改代码中的训练语料,修改为中文训练语料:
TAG_MAP = {
'N': {'pos': 'NOUN'},
'V': {'pos': 'VERB'},
'J': {'pos': 'ADJ'}
}
……
TRAIN_DATA = [
("我喜欢红苹果", {'tags': ['N', 'V', 'J', 'N']}),
("吃蓝色汉堡", {'tags': ['V', 'J', 'N']})
]
可以看到在样例中的TAG_MAP只设置了三个词性名词,动词,形容词。这个只需按照Universal POS tags 添加设定就好。
TAG_MAP简单说明:
'N': {'pos': 'NOUN'} 其中’N’:要标注的词性名称,可以自定义。{'pos': 'NOUN'},UP tags中的标准词性POS。
TRAIB_DATA简单说明:
例句:我喜欢红苹果。
例句首先通过结巴进行分词,分词结果为:我 喜欢 红 苹果。接下来就要为各分词标注词性:("我喜欢红苹果", {'tags': ['N', 'V', 'J', 'N']})。
运行
python train_tagger.py -mzh_model -o zh_model
test_text = "我喜欢黑色衬衫。"
输出结果为:
Tags [('我', 'N', 'NOUN'), ('喜欢', 'V', 'VERB'), ('黑色', 'J', 'ADJ'), ('衬衫', 'N', 'NOUN')]
在zh_model目录中可以看到生成了tagger目录,目录结构如下:
zh_model
└──tagger
├──cfg
├──model
└──tag_map
到此,中文的tagger模型就训练完成了,对于精度提升,需要准备至少几百条标注语料才能达到一定的好结果,准备好语料后重新运行训练代码即可。
文中完整代码可参考 https://github.com/jeusgao/spaCy-new-language-test-Chinese
网友评论