中文自然语言处理工具hanlp隐马角色标注详解
本文旨在介绍如何利用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来使用新训练的词典。
中文自然语言处理工具hanlp隐马角色标注详解的更多相关文章
- 中文自然语言处理工具HanLP源码包的下载使用记录
中文自然语言处理工具HanLP源码包的下载使用记录 这篇文章主要分享的是hanlp自然语言处理源码的下载,数据集的下载,以及将让源代码中的demo能够跑通.Hanlp安装包的下载以及安装其实之前就已经 ...
- 开源自然语言处理工具包hanlp中CRF分词实现详解
CRF简介 CRF是序列标注场景中常用的模型,比HMM能利用更多的特征,比MEMM更能抵抗标记偏置的问题. [gerative-discriminative.png] CRF训练 这类耗时的任务,还 ...
- 【HanLP】HanLP中文自然语言处理工具实例演练
HanLP中文自然语言处理工具实例演练 作者:白宁超 2016年11月25日13:45:13 摘要:HanLP是hankcs个人完成一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环 ...
- Python中调用自然语言处理工具HanLP手记
手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...
- HanLP分词命名实体提取详解
HanLP分词命名实体提取详解 分享一篇大神的关于hanlp分词命名实体提取的经验文章,文章中分享的内容略有一段时间(使用的hanlp版本比较老),最新一版的hanlp已经出来了,也可以去看看新版 ...
- R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...
- HanLP中人名识别分析详解
HanLP中人名识别分析详解 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: l ·名字识别的问题 #387 l ·机 ...
- 基于OpenCL的深度学习工具:AMD MLP及其使用详解
基于OpenCL的深度学习工具:AMD MLP及其使用详解 http://www.csdn.net/article/2015-08-05/2825390 发表于2015-08-05 16:33| 59 ...
- 抓包工具:tcpdump抓包命令详解
抓包工具:tcpdump抓包命令详解 简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以 ...
随机推荐
- 终止TTask.Run启动的线程
unit Unit15; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syste ...
- python day08作业
- 3--Python入门--Python数据集合类型--元组
在基础数据类型的基础上,Python有6中数据集合的类型: 列表list,最常用的数据类型,以[]为标识 元组tuple,和list很相似,但是不能二次赋值,用()标识 集合set,和list类似,但 ...
- 服务器中运行sql,然后保存到文件中
mysql -h (ip地址) -u (用户名) (密码) (sql) >/tmp/aaa.sql
- HDU 6060 17多校3 RXD and dividing(树+dfs)
Problem Description RXD has a tree T, with the size of n. Each edge has a cost.Define f(S) as the th ...
- 当超强台风“山竹”即将冲进南海,Power BI 你怎么看?
这个周末“山竹 ”强势来袭!很多人的目光都在关注暴力水果“山竹”,这个号称70年最强最大风力超17级 台风“山竹”今天就已经在小悦家窗台肆虐咆哮了一天了!不知其他的小伙伴们是不是好好的一个周末就只能被 ...
- 关于DDOS的主动与智能防御
- 善守者藏于九地之下 - - 狡兔九窟 - 一.分配足够多的网关服务器 让用户总一个终点,可以进入游戏.多分配,动态分配,定期更新 二.用户分组分级 分组可以根据用户的生成时间, 在线时 ...
- 【转载】 大龄码农那些事——也谈996.ICU
原文地址: https://www.cnblogs.com/helloyaren/p/10657414.html 请扫码关注!!! 您的关注将是您做的最正确的事情!!! 大龄码农那些事专注分享大龄码农 ...
- AMM调整为ASMM命令(关闭memory_target自动管理方式)
客户生产系统,AIX oracle 11.2.0.4 数据库版本,2节点RAC. 操作系统内存,均为125G,调整前,使用oracle memory_target自动调整分配方式,memory_max ...
- Buildroot stress-ng Linux系统压力测试
/********************************************************************** * Buildroot stress-ng Linux系 ...