基于snownlp的二次训练

1、snownlp是一个处理中文的类库,有中文分词、词性标注、情感分析、文本分类、拼音、繁简、提取关键词摘要等功能。下载后可以直接用,不用训练。

2.能重新训练的模块有seg(分析词性)、sentiments(情感分析)、tag、normal、

以sentiments模块为例:


    sentiments目录下有5个文件,其中init是程序,neg和pos分别是消极和积极语料库(也就是用来训练的数据集)sentiment.marshal.3和sentiment.marshal是训练保存的模型。(python2保存的是sentiment.marshal;python3保存的是sentiment.marshal.3)

替换语料集(数据集)

首先要找到能够替换数据集的语料集,数据格式要与原来相同,编码方式为utf-8。

训练

        找到函数接口(一般都在同级文件中)

init文件:

train()是训练函数、save是保存模型所用的函数

            外部调用函数进行训练

其中train.positive.txt和train.negative.txt为替换的数据集,new.marshal为训练保存的模型。

运行这段代码,成功后找到保存的模型(保存模型的位置是可以自定义的)

应用新模型

方式一:将新模型名称改为和原来模型名称一致,复制到sentiments目录下替换原来的

方式二:改变读取模型的路径,同在init文件中操作

记得原路径要注释!!

检验模型是否替换成功

用同一个例子应用sentiments方法,看原模型和新模型算出来的积极的概率(训练集不同,训练出两个相同模型的概率很小)概率不同则上述操作成功,如果概率不变,极有可能出现了误操作。





下面讲一个seg与tag模块的小方法


这是我找到的词性数据集,需要将里面的BC两列内容转化为txt文件(还有格式要求:每个具体例子之间有空格)

代码实现如下:

第一个为表格路径,第二个为表单名,第三个为目标保存路径(均可自定义),运行代码,查看保存的文件。其中值得注意的是txt编码方式需要转换为utf-8。

你可能感兴趣的:(基于snownlp的二次训练)