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工具相关推荐

  1. 基于Java的QQ屏幕截图工具的设计与实现(论文+PPT+源码)

    幻灯片1 基于Java的QQ屏幕截图工具的设计与实现 幻灯片2 论文绪论 设计方法 设计结果 论文总结 CONTENTS 致 谢 幻灯片3 论文绪论 幻灯片4 课题背景 当今时代是飞速发展的信息时代, ...

  2. java如何实现qq截屏代码_基于Java的QQ屏幕截图工具的设计

    设计一款基于Java的QQ屏幕截图软件,能实现不联网也能对屏幕截图:截图是由电脑截取显示在屏幕上或其他显示设备上的可视图像,通常截图可以由操作系统或专用截图软件截取,截取的图像会有不同种的文件格式,如 ...

  3. 基于java的qq屏幕截图工具的设计与实现_几款鲜为人知的实用工具,你都尝试过吗?...

    Any.Do--跨平台免费日程管理应用 它不仅提供Android.iOS客户端,以及Chrome浏览器扩展.网页版,而且允许登陆用户同步日程,并与用户的Google Tasks同步.Any.Do支持管 ...

  4. java制作局域网聊天器_基于Java的局域网聊天工具

    一 需求分析 掌握Java语言的程序设计方法,理论结合实际操作巩固我们所学的现有知识,使用图形用户界面和socket通信实现一个聊天程序,充分利用线程知识,实现用一个局域网聊天室,同时学会处理各种异常 ...

  5. java mysql 语句解析器_几种基于Java的SQL解析工具的比较与调用

    1.sqlparser http://www.sqlparser.com/ 优点:支持的数据库最多,除了传统数据库外还支持hive和greenplum一类比较新的数据库,调用比较方便,功能不错 缺点: ...

  6. 常用的6款Java开源报表制作工具

    本文为大家推荐6款常用的Java开源报表制作工具,供开发者学习.参考. 1.Aspose.Cells for JasperReports 一个基于Java的开源报表工具,它可以在Java环境下像其他I ...

  7. java 开源 报表_6款常用的Java开源报表制作工具

    原标题:6款常用的Java开源报表制作工具 1. Aspose.Cells for JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其他IDE报表工具一样来制作报表 ...

  8. ictclas java_ICTCLAS50 基于中科院分词作的java 工具,内容详细各个函数都有实现 含有word解析文档 Develop 238万源代码下载- www.pudn.com...

    文件名称: ICTCLAS50下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 2983 KB 上传时间: 2013-05-15 下载次数: 11 提 供 者: 安 ...

  9. 基于Java、JSP中文分词的搜索引擎的设计与实现

    技术:Java.JSP等 摘要: 网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情.建立搜索引擎就是解决这个问题的最好方法.本文首先详细介绍了基于英特网的搜索引擎的系统结构,然后从网络机 ...

最新文章

  1. QIIME1.9.1-1虚拟机安装配置及挂载外部目录
  2. Python基础语法学习笔记
  3. HTML5 服务器发送事件(Server-Sent Events)介绍
  4. C++容器(三):pair类型
  5. vscode html如何插入模板?(!)
  6. hql刪除語句,根據參數刪除
  7. java后端工程师平时开发或多或少会用到Intellij idea,那么它有哪些快捷键呢
  8. 执行计划中的参数解释
  9. python 绘制二维曲面_用python绘制曲面[复制]
  10. 大型数据库的设计原则与开发技巧
  11. apple pay php 文档,Apple Pay 终于可以支付 iTunes、App Store 中的内容了
  12. 基于hadoop构建对象存储系统_Hadoop社区正式支持腾讯云对象存储COS
  13. Dubbo 的设计思想,真优秀!
  14. springboot+freemarker毕业设计项目错误合集
  15. 学安全测试需要多少钱?安全测试培训费一般多少?
  16. 计算机科学中的计算机思维在本质上源自于,计算思维对学习计算机知识有何作用?...
  17. 视频教程-华为HCIA网络基础-网络技术
  18. java 右对齐_字符串对齐器(左对齐、居中、右对齐)
  19. 百度地图迁徙大数据_百度地图迁徙大数据:除武汉外多地出行趋势回升
  20. ESP8266开发之旅 基础篇⑤ ESP8266 SPI通信和I2C通信

热门文章

  1. SpringCloud(一)
  2. redis基础学习(一)— 配置项
  3. ADO.NET Entity Framework 学习(1)
  4. Shell命令-系统信息及显示之stat、du
  5. PIE SDK 坐标系创建、定义、对比
  6. Web前端 — Bootstrap(2)
  7. php中对象(object)与数组(array)之间的相互转换
  8. Python模块Pygame安装
  9. android 4 高级编程 第一章摘
  10. android 开发不容错过的网站