基于Java分词的ikanalyzer工具
1.Maven依赖
<dependency><groupId>org.apache.opennlp</groupId><artifactId>opennlp-tools</artifactId><version>1.9.1</version></dependency>
2. 自定义词典
IKanalyzer可通过配置Ikanalyzer.cfg.xml进行自定义词库,* 但有时需要在程序中根据不同的文章动态调用不同的词库进行分词,* 这就需要自定义Configuration类来实现。
首先,拷贝Ikanalyzer源码中的DefaultConfig.java,改为MyConfiguration.java,然后做如下改写:
package com.xhq.DOG.config;/*** IKanalyzer可通过配置Ikanalyzer.cfg.xml进行自定义词库,* 但有时需要在程序中根据不同的文章动态调用不同的词库进行分词,* 这就需要自定义Configuration类来实现。* * */
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.InvalidPropertiesFormatException;
import java.util.List;
import java.util.Properties;import org.wltea.analyzer.cfg.Configuration;/*** Configuration 默认实现* 2012-5-8**/
public class myDefaultConfig implements Configuration {/** 分词器默认字典路径*/private String PATH_DIC_MAIN = "org/wltea/analyzer/dic/main2012.dic";private static final String PATH_DIC_QUANTIFIER = "org/wltea/analyzer/dic/quantifier.dic";/** 分词器配置文件路径*/private static final String FILE_NAME = "IKAnalyzer.cfg.xml";// 配置属性——扩展字典private static final String EXT_DICT = "ext_dict";// 配置属性——扩展停止词典private static final String EXT_STOP = "ext_stopwords";private Properties props;/** 是否使用smart方式分词*/private boolean useSmart;/*** 返回单例* @return Configuration单例*/public static Configuration getInstance() {return new myDefaultConfig();}/** 初始化配置文件*/public myDefaultConfig() {props = new Properties();InputStream input = this.getClass().getClassLoader().getResourceAsStream(FILE_NAME);if (input != null) {try {props.loadFromXML(input);} catch (InvalidPropertiesFormatException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}/*** 返回useSmart标志位* useSmart =true ,分词器使用智能切分策略, =false则使用细粒度切分* @return useSmart*/public boolean useSmart() {return useSmart;}/*** 设置useSmart标志位* useSmart =true ,分词器使用智能切分策略, =false则使用细粒度切分* @param useSmart*/public void setUseSmart(boolean useSmart) {this.useSmart = useSmart;}/*** 获取主词典路径* * @return String 主词典路径*/public String getMainDictionary() {return PATH_DIC_MAIN;}/*** 设置主词典路径(2019-06-05 新加的)* * @return String 主词典路径*/public void setMainDictionary(String path) {this.PATH_DIC_MAIN = path;}/*** 获取量词词典路径* @return String 量词词典路径*/public String getQuantifierDicionary() {return PATH_DIC_QUANTIFIER;}/*** 获取扩展字典配置路径* @return List<String> 相对类加载器的路径*/public List<String> getExtDictionarys() {List<String> extDictFiles = new ArrayList<String>(2);String extDictCfg = props.getProperty(EXT_DICT);if (extDictCfg != null) {// 使用;分割多个扩展字典配置String[] filePaths = extDictCfg.split(";");if (filePaths != null) {for (String filePath : filePaths) {if (filePath != null && !"".equals(filePath.trim())) {extDictFiles.add(filePath.trim());}}}}return extDictFiles;}/*** 获取扩展停止词典配置路径* @return List<String> 相对类加载器的路径*/public List<String> getExtStopWordDictionarys() {List<String> extStopWordDictFiles = new ArrayList<String>(2);String extStopWordDictCfg = props.getProperty(EXT_STOP);if (extStopWordDictCfg != null) {// 使用;分割多个扩展字典配置String[] filePaths = extStopWordDictCfg.split(";");if (filePaths != null) {for (String filePath : filePaths) {if (filePath != null && !"".equals(filePath.trim())) {extStopWordDictFiles.add(filePath.trim());}}}}return extStopWordDictFiles;}}
3.调用方法
public static void main(String[] args) throws Exception{List<String> wordList = new ArrayList<>();//定义自己的词库myDefaultConfig cfg = new myDefaultConfig();cfg.setUseSmart(true); //智能切分//动态设置自定义的词库cfg.setMainDictionary("com/xhq/DOG/config/mydict.dic"); String content = "100% POLYESTER MAGGIE 20PC COMFORTER SET,SOLID PINSONIC QUILT SET,DREAM HAVEN COMFORTER";byte[] bt = content.getBytes();InputStream ip = new ByteArrayInputStream(bt);Reader read = new InputStreamReader(ip); IKSegmenter iks = new IKSegmenter(read, cfg);Lexeme t;while((t = iks.next()) != null){wordList.add(t.getLexemeText());}System.out.print(wordList);}
基于Java分词的ikanalyzer工具相关推荐
- 基于Java的QQ屏幕截图工具的设计与实现(论文+PPT+源码)
幻灯片1 基于Java的QQ屏幕截图工具的设计与实现 幻灯片2 论文绪论 设计方法 设计结果 论文总结 CONTENTS 致 谢 幻灯片3 论文绪论 幻灯片4 课题背景 当今时代是飞速发展的信息时代, ...
- java如何实现qq截屏代码_基于Java的QQ屏幕截图工具的设计
设计一款基于Java的QQ屏幕截图软件,能实现不联网也能对屏幕截图:截图是由电脑截取显示在屏幕上或其他显示设备上的可视图像,通常截图可以由操作系统或专用截图软件截取,截取的图像会有不同种的文件格式,如 ...
- 基于java的qq屏幕截图工具的设计与实现_几款鲜为人知的实用工具,你都尝试过吗?...
Any.Do--跨平台免费日程管理应用 它不仅提供Android.iOS客户端,以及Chrome浏览器扩展.网页版,而且允许登陆用户同步日程,并与用户的Google Tasks同步.Any.Do支持管 ...
- java制作局域网聊天器_基于Java的局域网聊天工具
一 需求分析 掌握Java语言的程序设计方法,理论结合实际操作巩固我们所学的现有知识,使用图形用户界面和socket通信实现一个聊天程序,充分利用线程知识,实现用一个局域网聊天室,同时学会处理各种异常 ...
- java mysql 语句解析器_几种基于Java的SQL解析工具的比较与调用
1.sqlparser http://www.sqlparser.com/ 优点:支持的数据库最多,除了传统数据库外还支持hive和greenplum一类比较新的数据库,调用比较方便,功能不错 缺点: ...
- 常用的6款Java开源报表制作工具
本文为大家推荐6款常用的Java开源报表制作工具,供开发者学习.参考. 1.Aspose.Cells for JasperReports 一个基于Java的开源报表工具,它可以在Java环境下像其他I ...
- java 开源 报表_6款常用的Java开源报表制作工具
原标题:6款常用的Java开源报表制作工具 1. Aspose.Cells for JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其他IDE报表工具一样来制作报表 ...
- ictclas java_ICTCLAS50 基于中科院分词作的java 工具,内容详细各个函数都有实现 含有word解析文档 Develop 238万源代码下载- www.pudn.com...
文件名称: ICTCLAS50下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 2983 KB 上传时间: 2013-05-15 下载次数: 11 提 供 者: 安 ...
- 基于Java、JSP中文分词的搜索引擎的设计与实现
技术:Java.JSP等 摘要: 网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情.建立搜索引擎就是解决这个问题的最好方法.本文首先详细介绍了基于英特网的搜索引擎的系统结构,然后从网络机 ...
最新文章
- QIIME1.9.1-1虚拟机安装配置及挂载外部目录
- Python基础语法学习笔记
- HTML5 服务器发送事件(Server-Sent Events)介绍
- C++容器(三):pair类型
- vscode html如何插入模板?(!)
- hql刪除語句,根據參數刪除
- java后端工程师平时开发或多或少会用到Intellij idea,那么它有哪些快捷键呢
- 执行计划中的参数解释
- python 绘制二维曲面_用python绘制曲面[复制]
- 大型数据库的设计原则与开发技巧
- apple pay php 文档,Apple Pay 终于可以支付 iTunes、App Store 中的内容了
- 基于hadoop构建对象存储系统_Hadoop社区正式支持腾讯云对象存储COS
- Dubbo 的设计思想,真优秀!
- springboot+freemarker毕业设计项目错误合集
- 学安全测试需要多少钱?安全测试培训费一般多少?
- 计算机科学中的计算机思维在本质上源自于,计算思维对学习计算机知识有何作用?...
- 视频教程-华为HCIA网络基础-网络技术
- java 右对齐_字符串对齐器(左对齐、居中、右对齐)
- 百度地图迁徙大数据_百度地图迁徙大数据:除武汉外多地出行趋势回升
- ESP8266开发之旅 基础篇⑤ ESP8266 SPI通信和I2C通信