HanLP中文分词Lucene插件
基于HanLP,支持包括Solr(7.x)在内的任何基于Lucene(7.x)的系统。
Maven
<dependency>
<groupId>com.hankcs.nlp</groupId>
<artifactId>hanlp-lucene-plugin</artifactId>
<version>1.1.6</version>
</dependency>
Solr快速上手
1.将hanlp-portable.jar和hanlp-lucene-plugin.jar共两个jar放入${webapp}/WEB-INF/lib下。(或者使用mvn package对源码打包,拷贝target/hanlp-lucene-plugin-x.x.x.jar到${webapp}/WEB-INF/lib下)
2. 修改solr core的配置文件${core}/conf/schema.xml:
<fieldType name="text_cn" class="solr.TextField">
<analyzer type="index">
<tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="true"/>
</analyzer>
<analyzer type="query">
<!-- 切记不要在query中开启index模式 -->
<tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="false"/>
</analyzer>
</fieldType>
<!-- 业务系统中需要分词的字段都需要指定type为text_cn -->
<field name="my_field1" type="text_cn" indexed="true" stored="true"/>
<field name="my_field2" type="text_cn" indexed="true" stored="true"/>
· 如果你的业务系统中有其他字段,比如location,summary之类,也需要一一指定其type="text_cn"。切记,否则这些字段仍旧是solr默认分词器。
· 另外,切记不要在query中开启indexMode,否则会影响PhaseQuery。indexMode只需在index中开启一遍即可。
高级配置
目前本插件支持如下基于schema.xml的配置:
更高级的配置主要通过class path下的hanlp.properties进行配置,请阅读HanLP自然语言处理包文档以了解更多相关配置,如:
0.用户词典
1.词性标注
2.简繁转换
3.……
停用词与同义词
推荐利用Lucene或Solr自带的filter实现,本插件不会越俎代庖。 一个示例配置如下:
调用方法
在Query改写的时候,可以利用HanLPAnalyzer分词结果中的词性等属性,如
String text = "zhong hua ren min gong he guo很辽阔";
for (int i = 0; i < text.length(); ++i)
{
System.out.print(text.charAt(i) + "" + i + " ");
}
System.out.println();
Analyzer analyzer = new HanLPAnalyzer();
TokenStream tokenStream = analyzer.tokenStream("field", text);
tokenStream.reset();
while (tokenStream.incrementToken())
{
CharTermAttribute attribute = tokenStream.getAttribute(CharTermAttribute.class);
// 偏移量
OffsetAttribute offsetAtt = tokenStream.getAttribute(OffsetAttribute.class);
// 距离
PositionIncrementAttribute positionAttr = tokenStream.getAttribute(PositionIncrementAttribute.class);
// 词性
TypeAttribute typeAttr = tokenStream.getAttribute(TypeAttribute.class);
System.out.printf("[%d:%d %d] %s/%s\n", offsetAtt.startOffset(), offsetAtt.endOffset(), positionAttr.getPositionIncrement(), attribute, typeAttr.type());
}
在另一些场景,支持以自定义的分词器(比如开启了命名实体识别的分词器、繁体中文分词器、CRF分词器等)构造HanLPTokenizer,比如:
tokenizer = new HanLPTokenizer(HanLP.newSegment()
.enableJapaneseNameRecognize(true)
.enableIndexMode(true), null, false);
tokenizer.setReader(new StringReader("林志玲亮相网友:确定不是波多野结衣?"));
文章摘自:2019 github

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云栖科技评论89期:谁是下一个“智能手机”?
点击订阅《云栖科技评论期刊》 【卷首语】谁是下一个“智能手机”? 苹果公司宣布调降2019财年第一季度财务预测的新闻瞬间承包了媒体所有的关注点,虽然新的预估值840亿美元仅比原先估计的890-930亿美元有5.6~9.6%的下修幅度,但“苹果不行了”“iPhone卖不出去了”以及“iPhone销量下滑因为中国市场”等新闻仍然让苹果公司身处舆论漩涡。 针对媒体和华尔街的质疑,库克不断强调:尽管面临这些挑战,苹果在中国的业务依旧前景光明,他同时表示“苹果的产品在客户中有很强的追随力,消费者的参与度和满意度都很高。”言外之意,苹果公司所面临的困难只是暂时的,中国市场销售疲软只是偶发情况,“苹果公司的发展不会进入长期下行周期”。 外界媒体和华尔街的分析师们更关心的则是“苹果是否失去了创新能力?”他们中的大多数人认为近年来 iPhon
- 下一篇
智能相机是工业深度学习的第一步
神经网络将嵌入在工厂车间及其周围出现的越来越多具有Linux功能的多核x86网关和控制器中。而据说新兴的5G蜂窝网络有一天会让神经网络可以随时访问远程数据中心。汽车和飞机制造商以及医疗保健提供商正在采取早期措施,主要是智能相机。佳能正在其工业相机中嵌入Nvidia Jetson板,以开启深度学习。工业相机供应商康耐视公司正在加大自己的产品种类。机器人技术是计算机和人工智能的交叉点,但深度学习的许多工业用途将不那么迷人,而且会更快到达。深度学习导致了TensorFlow,Caffe和Chainer等软件框架的迅速崛起,每个框架都有自己的优点和缺点。开发人员认为需要混合框架来支持细微的AI抽象,研究人员才刚刚开始研究它们。不过也有人指出,神经网络是不确定的。这产生了两个问题:结果是有用的但无法解释,并且它们通常表现为良好但总是不完美的准确度水平。与算法一样,硬件仍在不断发展。深度学习中的计算需要改变你如何为矩阵乘法等特征布置晶体管,深度学习的需求与今天的CPU和GPU不匹配。 从喷气涡轮机到挑拣快递机器学习开始在工业应用中产生影响,从喷漆涡轮机到包装圣诞礼物。通用电气公司使用配备计算机视觉...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Linux系统CentOS6、CentOS7手动修改IP地址
- Red5直播服务器,属于Java语言的直播服务器