中文 NLP(6)-- stanford 训练词性标注模型

在 第一节发布的样本中,修改类 StanfordPOSTagger 如下,增加训练模型文件方法:

# 词性标注
class StanfordPOSTagger(StanfordCoreNLP):
    ... 以上代码略,增加如下方法

    # 生成训练配置文件命令
    def __buildprop(self):
        self.propline = 'java -mx1g -cp "' + self.jarpath + '" ' + self.classfier + ' -genprops'

    def genpropfile(self,propath):
        self.__buildprop()
        propfile = os.popen(self.propline,'r').read()
        self.savefile(propath,propfile)
        print "保存词性标注训练配置文件在", propath

    # 生成训练命令
    def __buildtrain(self,propath):
        self.trainline = 'java -mx4g -cp "' + self.jarpath + '" ' + self.classfier + ' -props "' + propath + '"'

    def trainmodel(self,propath):
        self.__buildtrain(propath)
        os.system(self.trainline)
        print "模型训练完成,保存在", propath ," model 配置"

训练脚本如下:

# -*- coding:utf-8 -*-
import sys,os
reload(sys)
sys.setdefaultencoding("utf-8")
curdir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(curdir)
from nltk import Tree

# stanford 中文词性标注
from stanford_postagger.stanford import StanfordPOSTagger
root = os.path.join(curdir,"stanford_corenlp/")
modelpath = os.path.join(root,"models","pos-tagger","chinese-distsim","chinese-distsim.tagger")
st = StanfordPOSTagger(root,modelpath)

# 训练词性标注,生成配置文件
propspath = "my.tagger.props"
st.genpropfile(propspath)  # 生成配置文件,更改里面的配置

更改配置文件 my.tagger.props 如下:

中文 NLP(6)-- stanford 训练词性标注模型_第1张图片

训练文件 train.txt 内容如下

在_P 包含_VV 问题_NN 的_DEC 所有_DT 解_VV 的_DEC 解空间_NN 树_NN 中_LC ,_PU 按照_P 深度优先_NN 搜索_NN 的_DEC 策略_NN ,_PU
从_P 根节点_NN 出发_VV 深度_JJ 探索_NN 解空间_NN 树_NN 。_PU

然后执行训练代码,生成训练文件

st.trainmodel("my.tagger.props")   # 根据配置文件的配置项生成训练模型

# 使用模型文件
st = StanfordPOSTagger(root,"my.model.tagger") # my.model.tagger 就是训练的模型文件

 

你可能感兴趣的:(NLP)