Hanlp分词之CRF中文词法分析详解
这是另一套基于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<String> 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以上版本中,所有的词法分析接口都同时支持简繁。
Hanlp分词之CRF中文词法分析详解的更多相关文章
- 条件随机场之CRF++源码详解-预测
这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有 ...
- elasticsearch-.yml(中文配置详解)
此elasticsearch-.yml配置文件,是在$ES_HOME/config/下 elasticsearch-.yml(中文配置详解) # ======================== El ...
- HanLP中的人名识别分析详解
在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: u u名字识别的问题 #387 u u机构名识别错误 u u关于层叠H ...
- HAProxy详细中文用法详解
一.HAProxy简介 (1)HAProxy 是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProx ...
- Python OS模块常用功能 中文图文详解
一.Python OS模块介绍 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: >>> i ...
- Nginx配置文件中文注释详解
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...
- coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解
一, 前言 1,研究coreseek的动机 我有一个自己的笔记博客,经常在上面做一些技术文章分析.在查询一些文章的时候,以前只能将要查询的内容去mysql中用like模糊匹配.在文章多了的情 ...
- HanLP用户自定义词典源码分析详解
1. 官方文档及参考链接 l 关于词典问题Issue,首先参考:FAQ l 自定义词典其实是基于规则的分词,它的用法参考这个issue l 如果有些数量词.字母词需要分词,可参考:P2P和C2C这种词 ...
- filebeat.yml(中文配置详解)
################### Filebeat Configuration Example ######################### ####################### ...
随机推荐
- 搭建Django项目
命令行搭建Django项目 1.安装django 在指定解释器环境下安装django 1.11.9 在真实python3环境下: pip3 install django==1.11.9 在虚拟环境下: ...
- 什么是wsgi,uwsgi,uWSGI
WSGI: web服务器网关接口,是一套协议.用于接收用户请求将请求进行初次封装,然后将请求交给web框架 实现wsgi协议的模块: 1,wsgiref,本质就是编写一个socket服务端,用于接收用 ...
- python,monkey-patch【猴子补丁】
用来运行时动态修改已有的代码,而不需要修改原始代码,在gevent[协程]中.会在开头的地方gevent.monkey.patch_all(),把标准库中thead.sockcet等给替换掉,这样我们 ...
- SS报错的解决
SS报错 AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: 解决方案: EVP_CIPHER_ ...
- Python学习笔记第六周
目录 一.基础概念 面向对象编程 1.面向对象的几个核心特点 1.class类 2.object对象 3.encapsulation封装 4.inheritance继承 5.polymorphism多 ...
- 【转载】 opencv, PIL.Image的彩色图片维度 && caffe和pytorch的矩阵维度
原文地址: https://blog.csdn.net/u011668104/article/details/82718375 ------------------------------------ ...
- flask中的request和response
1.request 1.request的常用成员 1.scheme : 获取请求方案(协议) 2.method : 获取本期请求的请求方式(重点) 3.args : 获取使用get请求方式提交的数据 ...
- acm 2084
////////////////////////////////////////////////////////////////////////////////#include<iostream ...
- CF使用TGP下载后,分卷文件损坏的解决方法
首先从游戏的列表删除游戏(安装失败出现分卷文件损坏的游戏) 然后进入游戏重新,继续找到该游戏(安装失败的游戏) 点击下载游戏!不会重新下载的,之后下载一些失败的文件,不会花费多少时间,慢慢等待即可 之 ...
- POI事件模型处理execl导入功能(只支持07版本的execl)
由于通过new XSSFWorkbook 这种方式导入导致生产环境端口宕机.通过dump文件和javacore文件分析是导入功能导致的.解决办法:自己通过网上写的工具类,不知道是否存在bug. pac ...