本文旨在介绍如何利用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 自然语言处理入门"的学习资料中,我们可以期待涵盖一系列基础到进阶的NLP概念和技术。这里我们将深入探讨其中的关键知识点。 首先,Python-3.8.10-amd64.exe是一个Python编程环境的安装程序,Python是NLP...
HanLP,全称为“哈工大讯飞自然语言处理工具包”,是由一系列先进的模型和算法构建的Java库,旨在推动NLP技术在实际生产环境中的广泛应用。本文将深入探讨HanLP的功能、特性以及其在分词领域的应用。 首先,HanLP的...
**Python-自然语言处理工具包HanLP的Python接口** 在Python的世界里,自然语言处理(NLP)是一项关键任务,涉及文本分析、语义理解、情感分析等多个领域。HanLP,由厦门汉云科技有限公司开发,是一款高效、易用的...
该项目是一个基于Python和Java的HanLP自然语言处理工具设计源码,总共有593个文件,其中包括422个Python源文件、146个Markdown文档、8个ReStructuredText文件、8个Java源文件、2个YAML配置文件、2个Python扩展文件、...
本项目为基于Python开发的HanLP中文自然语言处理源码,总文件量达198个,涵盖192个Python源文件、3个Markdown文档、1个YAML配置文件、1个Git忽略文件以及1个LICENSE文件。该源码集成了丰富的自然语言处理功能,包括...
推荐一个新的开源中文深度学习自然语言处理工具:Jiagu, 包括中文分词、词性标注、命名实体识别、情感分析、新词发现、关键词、文本摘要等。贡献者包括 Yener、zengbin93、dirtdust,感兴趣的同学可以试用,Github...
HanLP是由北京大学计算机科学技术研究所开发的自然语言处理库,提供了分词、词性标注、命名实体识别、依存句法分析、语义角色标注等丰富的功能,是NLP领域广泛使用的工具之一。 在学习和使用Python进行NLP时,通常...
HanLP,作为一款由Java编写的高效自然语言处理工具包,为Android开发者提供了丰富的NLP模型和算法,使其能够在移动设备上轻松实现复杂文本处理任务。 HanLP的主要特点: 1. 功能完善:HanLP涵盖了词性标注、分词、...
该项目是一个基于Python和Java的HanLP中文自然语言处理设计源码,包含614个文件,涵盖442个Python脚本、149个Markdown文档、8个reStructuredText文件、8个Java源文件、2个YAML配置文件、1个Git忽略文件、1个许可证...
《Python中文自然语言处理基础与实战》是一本深入浅出的教程,涵盖了使用Python进行NLP工作的各个方面。在本文中,我们将详细探讨该领域的重要概念、工具和技术,并结合实际案例来深化理解。 首先,让我们从Python...
基于bert的中文自然语言处理工具,包括情感分析、中文分词、词性标注、以及命名实体识别功能,并提供文本分类任务、序列标注任务、句对关系判断任务的训练与预测接口 说明 基于bert的中文自然语言处理工具 包括情感...
基于bert的中文自然语言处理工具 包括情感分析、中文分词、词性标注、以及命名实体识别功能 提供了训练接口,通过指定输入输出以及谷歌提供的下载好的预训练模型即可进行自己的模型的训练,训练任务有task_name参数...
总之,HanLP是一个强大而全面的自然语言处理工具,1.7.5版本的发布进一步提升了其处理效率和效果,为Java开发者提供了强大的NLP支持,无论是在学术研究还是在实际产品开发中,都能发挥重要的作用。通过学习和使用...
fastHan中文自然语言处理工具 fastHan是基于fastNLP与pytorch实现的中文自然语言处理工具,像spacy一样调用方便。 其内核为基于BERT的联合模型,其在13个语料库中进行训练,可处理中文分词、词性标注、依存分析、...
《自然语言处理入门》第07章 词性标注 本章节主要介绍了自然语言处理中的词性标注技术,包括词性标注的概念、词性标注语料库与标注集、序列标注模型应用于词性标注、自定义词性等。 词性标注是自然语言处理任务中...
自然语言处理是一门深入探索计算机如何理解和生成人类自然语言的学科。这门课程,编码为CS229,是计算机科学与技术专业的一门专业选修课,针对计算机科学与技术(致远荣誉计划)的学生开放。课程采用中英文双语教学...
### 基于HanLP的汉语词性标注表解析 #### 概述 ...通过以上详细的词性分类和解释,我们可以看出HanLP的汉语词性标注表为汉语文本提供了精细的分析层次,极大地促进了自然语言处理技术的发展和应用。
NLTK是一个专门针对自然语言处理的工具包,它提供了大量与自然语言处理相关的算法、数据集和语料库。它使得研究者可以统一处理标准,极大地简化了文本处理转换的复杂性,并弥补了其他工具在句法分析、图形绘制和正则...
《Python中文自然语言处理基础与实战》PPT课件涵盖了从基础到实践的全面内容,主要涉及以下几个核心知识点: 1. **绪论**(第1章):介绍自然语言处理(NLP)的基本概念,包括NLP的任务类型、历史发展以及Python在...
该源码支持包括中文分词、词性标注、命名实体识别、依存句法分析等在内的多种自然语言处理功能,并适用于文本分类聚类、自动摘要等高级应用,旨在实现风格转换、语义相似度计算、新词发现、关键词短语提取等多种复杂...