hanlp 训练模型_Hanlp分词之CRF中文词法分析详解

news/2024/7/24 11:46:58 标签: hanlp 训练模型

这是另一套基于CRF的词法分析系统,类似感知机词法分析器,提供了完善的训练与分析接口。

CRF的效果比感知机稍好一些,然而训练速度较慢,也不支持在线学习。

默认模型训练自OpenCorpus/pku98/199801.txt,随hanlp 1.6.2以上版本发布。

语料格式等与感知机词法分析器相同,请先阅读《感知机词法分析器》。

中文分词

训练

CRFSegmenter segmenter = new CRFSegmenter(null);

segmenter.train("data/test/pku98/199801.txt", CWS_MODEL_PATH);

输出为HanLP私有的二进制模型,有兴趣的话还可以通过命令导出为兼容CRF++的纯文本格式。

java -cp hanlp.jar com.hankcs.hanlp.model.crf.crfpp.crf_learn -T cws.bin cws.txt

与CRF++兼容

由于C++的运行效率和内存效率优于Java,所以推荐直接利用CRF++执行大规模训练。

首先将人民日报语料转换为CRF++格式:

CRFSegmenter segmenter = new CRFSegmenter(null);

segmenter.convertCorpus("data/test/pku98/199801.txt", "data/test/crf/cws-corpus.tsv");

然后准备一份特征模板,或者直接用HanLP默认的:

segmenter.dumpTemplate("data/test/crf/cws-template.txt");

接着用CRF++的crf_learn执行训练:

crf_learn cws-template.txt cws-corpus.tsv cws -t

·此处必须使用-t命令CRF++输出文本格式的模型cws.txt

·HanLP只兼容CRF++的文本模型,不兼容二进制

将cws.txt格式的模型传入CRFSegmenter或CRFLexicalAnalyzer的构造函数即可创建分词器,同时HanLP会自动创建二进制缓存.txt.bin,下次加载耗时将控制在数百毫秒内。

预测

可通过如下方式加载:

CRFSegmenter segmenter = new CRFSegmenter(CWS_MODEL_PATH);

List wordList = segmenter.segment("商品和服务");

System.out.println(wordList);

不传入模型路径时将默认加载配置文件指定的模型。

词性标注

CRF词性标注器的训练与加载与中文分词类似,对应CRFPOSTagger。

命名实体识别

CRF命名实体识别也是类似的用法,对应CRFNERecognizer。

CRF词法分析器

训练了1至3个模型后,可以构造CRF词法分析器:

/**

* 构造CRF词法分析器

*

* @param cwsModelPath CRF分词器模型路径

* @param posModelPath CRF词性标注器模型路径

* @param nerModelPath CRF命名实体识别器模型路径

*/

public CRFLexicalAnalyzer(String cwsModelPath, String posModelPath, String nerModelPath) throws IOException

/**

* 加载配置文件指定的模型

*

* @throws IOException

*/

public CRFLexicalAnalyzer() throws IOException

构造后可以调用analyze接口或与旧接口兼容的seg:

CRFLexicalAnalyzer analyzer = new CRFLexicalAnalyzer();

String[] tests = new String[]{

"商品和服务",

"上海华安工业(集团)公司董事长谭旭光和秘书胡花蕊来到美国纽约现代艺术博物馆参观",

"微软公司於1975年由比爾·蓋茲和保羅·艾倫創立,18年啟動以智慧雲端、前端為導向的大改組。" // 支持繁体中文

};

for (String sentence : tests)

{

System.out.println(analyzer.analyze(sentence));

System.out.println(analyzer.seg(sentence));

}

在1.6.2以上版本中,所有的词法分析接口都同时支持简繁。


http://www.niftyadmin.cn/n/1245201.html

相关文章

Redis 运维 - 从零开始学习

Redis 运维 - 从零开始学习一、Redis简介Redis 的优点二、Redis 与 Memcached 的区别三、Redis部署1. 下载编译及安装2. 配置环境四、Redis 常用工具1.Redis 命令工具2.Redis-cli 命令行工具3.Redis-benchmark 测试工具五、常用指令1. 数据的存放和获取2. 查询数据3. 键值的判断…

Redis 运维 - 主从复制 | 哨兵模式 | Cluster集群 | 报错排查 | 负载均衡及高可用方案

Redis 运维 - 负载均衡及高可用方案一、主从复制1.1 作用1.2 主从复制的流程1.3 搭建Redis主从复制1.3.1 安装Redis1.3.2 修改Redis配置文件Master节点Slave1/2节点1.3.4 验证主从效果1.3.5 报错排查WARNING: The TCP backlog setting of 511 cannot be enforced because /proc…

Rsync + Intofy 数据实时同步方案

Rsync Intofy 数据实时同步方案一、Rsync1.1 Rsync特性1.2 部署Rsync下行同步1.2.1 Master节点安装配置开启服务1.2.2 Slave节点1.3 报错排查ERROR: auth failed on module wwwroot二、Intofy2.1 Intofy的使用方法2.2 部署 RsyncInotify 实时同步2.2.1 Master2.2.2 Slave优化S…

哪种css实现方式优势更突出_CSS网页布局的优势与弊端

关于CSS网页布局,随着WEB2.0标准化设计理念的普及,国内很多大型门户网站已经纷纷采用DIVCSS制作方法,从实际应用情况来看,此种方法绝对好于表格制作页面的方法。如今大部分网站仍然采用表格嵌套内容的方式来制作网站,虽…

GFS(GlusterFS) 分布式存储平台

GFS 分布式存储平台一、GFS概述1.1 GFS的三个组件1.1.1 存储服务器(Brick Server)1.1.2 存储网关(NFS/Samaba)1.2 GFS的特点1.2.1 扩展性和高性能1.2.2 高可用性1.2.3 全局统一命名空间1.2.4 弹性卷管理1.2.5 基于文件系统的标准使…

ELK 日志文件分析系统

ELK日志分析一、概述二、ELK的组件1.1 Elasticsearch1.2 Logstash1.3 Kibana三、日志处理步骤四、Elasticsearch 介绍面试题五、Logstash 介绍1.1 Logstash 主要组件1.2 Shipper 日志收集者1.3 Indexer 日志存储1.4 Broker 日志Hub1.5 Search and Storage1.6 Web Interface六、…

KVM 虚拟化技术 | 虚拟化平台部署

KVM 虚拟化技术一、虚拟化技术1.1 概述1.2 类型① 全虚拟化② 半虚拟化③ 直通1.3 特点二、KVM2.1 概述2.2 原理2.3 虚拟化架构2.4 工作流程三、部署 KVM 虚拟化平台3.1 宿主机最低配置3.2 环境优化① 关闭 DNS 反向解析② 将镜像光盘设置为自动挂载③ 设置本地源和网络源④ 关…

索尼koov机器人比赛_05后都已经杀入索尼KOOV机器人决赛了 编程真的可以如此简单?...

社会快速的发展让现在的小朋友很早就接触到了不少新科技,比如我们小时候想都没想过ipad这类东西到了现在小孩手里已经成了最基本的配备。而像我们到大学才接触到的编程(还不是每个人都有能接触到),现在的小学生竟然已经开始接触了,并且还玩得…