中文自然语言处理工具hanlp隐马角色标注详解

简介: 本文旨在介绍如何利用HanLP训练分词模型,包括语料格式、语料预处理、训练接口、输出格式等。 目前HanLP内置的训练接口是针对一阶HMM-NGram设计的,另外附带了通用的语料加载工具,可以通过少量代码导出供其他训练工具使用的特定格式(如CRF++)。


 

本文旨在介绍如何利用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来使用新训练的词典。

相关文章
|
6月前
|
数据采集 机器学习/深度学习 人工智能
31_NLP数据增强:EDA与NLPAug工具
在自然语言处理(NLP)领域,高质量的标注数据是构建高性能模型的基础。然而,获取大量准确标注的数据往往面临成本高昂、耗时漫长、覆盖度不足等挑战。2025年,随着大模型技术的快速发展,数据质量和多样性对模型性能的影响愈发显著。数据增强作为一种有效扩充训练样本的技术手段,正成为解决数据稀缺问题的关键策略。
539 0
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
3681 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
人工智能 自然语言处理 数据可视化
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
Data Formulator 是微软研究院推出的开源 AI 数据可视化工具,结合图形化界面和自然语言输入,帮助用户快速创建复杂的可视化图表。
1375 10
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
|
存储 人工智能 自然语言处理
ACE++:输入想法就能完成图像创作和编辑!阿里通义推出新版自然语言驱动的图像生成与编辑工具
ACE++ 是阿里巴巴通义实验室推出的升级版图像生成与编辑工具,支持多种任务,如高质量人物肖像生成、主题一致性保持和局部图像编辑。
1016 8
|
自然语言处理 算法 数据可视化
NLP-基于bertopic工具的新闻文本分析与挖掘
这篇文章介绍了如何使用Bertopic工具进行新闻文本分析与挖掘,包括安装Bertopic库、加载和预处理数据集、建立并训练主题模型、评估模型性能、分类新闻标题、调优聚类结果的详细步骤和方法。
NLP-基于bertopic工具的新闻文本分析与挖掘
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
400 2
|
SQL 人工智能 自然语言处理
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
743 0
|
机器学习/深度学习 自然语言处理 Java
中文自然语言处理相关资料 | Chinese NLP Toolkits 中文NLP工具
中文自然语言处理相关资料 | Chinese NLP Toolkits 中文NLP工具
|
自然语言处理 Shell Linux
安利一个NLP标注工具:brat
brat是一个基于web的文本标注工具,可以对文本进行结构化注释。能够用于NLP中实体、关系、事件的数据标注,使用简单,可扩展性较高,这里简单记录一下安装和使用方法。
2305 0
安利一个NLP标注工具:brat

热门文章

最新文章