论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
网络技术
>
网络技术
>
中文自然语言处理工具hanlp隐马角色标注详解
回复
« 返回列表
hadoop小学生
精灵王
注册日期
2018-09-13
发帖数
160
QQ
3234520070
火币
360枚
粉丝
0
关注
0
加关注
写私信
打招呼
阅读:
3303
回复:
0
中文自然语言处理工具hanlp隐马角色标注详解
楼主
#
更多
只看楼主
倒序阅读
发布于:2019-02-13 15:01
保存
100%
100%
[]
1
本文旨在介绍如何利用
hanlp
训练
分词
模型,包括语料格式、语料预处理、训练接口、输出格式等。 目前HanLP内置的训练接口是针对一阶HMM-NGram设计的,另外附带了通用的语料加载工具,可以通过少量代码导出供其他训练工具使用的特定格式(如CRF++)。
语料格式
输入语料格式为人民日报分词语料库格式。该格式并没有明确的规范,但总体满足以下几点:
1、
单词与词性之间使用
“/”分割,如华尔街/nsf,且任何单词都必须有词性,包括标点等。
2、
单词与单词之间使用空格分割,如美国
/nsf 华尔街/nsf 股市/n。
3、
支持用
[]将多个单词合并为一个复合词,如[纽约/nsf 时报/n]/nz,复合词也必须遵守1和2两点规范。
你可以参考
OpenCorpus/pku98/199801.txt(作者并无版权,请勿询问)。
语料预处理
语料预处理指的是将语料加载到
内存
中,根据需要增删改其中部分词语的一个过程。
在
HanLP中,这是通过CorpusLoader.walk实现的:
CorpusLoader.walk("path/to/your/corpus", new CorpusLoader.Handler()
{
@Override
public void handle(Document document)
{
System.out.println(document);
}
});
其中,
document对象就是加载到内存的文档,对应某一个文本文件。用户可以通过document.getSimpleSentenceList等接口获取文档中的句子列表,每个句子都是单词的链表,具体参数请参考source.jar,不再赘述。而Handler是一个处理逻辑(lambda函数),在此可以编写自己的预处理代码。
·
crf分词
采用BMES标注集,从人民日报转换到CRF训练语料的完整预处理代码请参考com.hankcs.test.model.TestCRF#testPrepareCRFTrainingCorpus。
·
若不使用上述预处理代码则请注意:由于在
HanLP实现的CRF分词解码算法中,数词被转换为M,英文被转换为W;所以在训练CRF分词之前,需要用相同的逻辑预处理语料。转换代码请参考:com.hankcs.test.model.TestCRF#compile
训练
HMM-NGram分词模型
HMM-NGram在HanLP中特意被处理为文本形式,方便用户理解、修改HMM-NGram模型(习惯上称为词典,但这并不代表它不是模型)。此处的训练就是为了得到分词所需的全部模型,而训练,只需一两行代码:
final
NatureDictionaryMaker dictionaryMaker
=
new
NatureDictionaryMaker();
CorpusLoader
.
walk(
"path/to/your/corpus"
,
new
CorpusLoader.Handler()
{
@Override
public
void
handle(Document document)
{
dictionaryMaker
.
compute(CorpusUtil
.
convert2CompatibleList(document
.
getSimpleSentenceList(
true
)));
}
});
dictionaryMaker
.
saveTxtTo(
"data/test/CoreNatureDictionary"
);
其中,
document.getComplexSentenceList()代表获取复合词句子列表(即复合词原样输出),用户可以将其替换为CorpusUtil.convert2CompatibleList(document.getSimpleSentenceList(true))来将复合词拆分为单个词语。
输出格式
训练后一共得出
3个文件:
1、
CoreNatureDictionary.txt:单词词性词典
2、
CoreNatureDictionary.ngram.txt:二元接续词典
3、
CoreNatureDictionary.tr.txt:词性转移矩阵
接下来用户可以通过替换配置文件中的
CoreDictionaryPath来使用新训练的词典。
喜欢
0
评分
0
最新喜欢:
DKHadoop用着还不错!
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢