IKAnalyzer 独立使用 配置扩展词典
有三点要注意(要不然扩展词典始终不生效):
- 后缀名.dic的词典文件,必须如使用文档里所说的 无BOM的UTF-8编码保存的文件。如果不确定什么是 无BOM的UTF-8编码,最简单的方式就是 用Notepad++编辑器打开,Encoding->选择 Encoding in UTF-8 without BOM,然后保存。
- 项目preferences 里 编码选择 utf8。
- 词典和IKAnalyzer.cfg.xml配置文件的路径问题。IKAnalyzer.cfg.xml必须在src根目录下。词典可以任意放,但是在IKAnalyzer.cfg.xml里要配置对。如下:我的两个词典文件my.dic 和 mine.dic 放在src下的com.org.config包下,注意com前面一定不要加/,否则是绝对路径找不到。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM
"http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer
扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry
key="ext_dict">com/org/config/my.dic;com/org/config/mine.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry
key="ext_stopwords">/com/org/config/stopword.dic</entry>
</properties>
package com.org; import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme; public class IKAnalyzerTest {
public static void main(String[] args) {
String str = "最希望从企业得到的是独家的内容或销售信息,获得打折或促销信息等;最不希望企业进行消息或广告轰炸及访问用户的个人信息等。这值得使用社会化媒体的企业研究"; IKAnalysis(str);
} public static String IKAnalysis(String str) {
StringBuffer sb = new StringBuffer();
try {
// InputStream in = new FileInputStream(str);//
byte[] bt = str.getBytes();// str
InputStream ip = new ByteArrayInputStream(bt);
Reader read = new InputStreamReader(ip);
IKSegmenter iks = new IKSegmenter(read, true);
Lexeme t;
while ((t = iks.next()) != null) {
sb.append(t.getLexemeText() + " , "); }
sb.delete(sb.length() - 1, sb.length());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sb.toString());
return sb.toString(); }
}
获得 , 打折 , 或 , 促销信息 , 等 , 最不 , 希望 , 企业 , 进行 , 消息 , 或 , 广告 ,
轰炸 , 及 , 访问 , 用户 , 的 , 个人信息 , 等 , 这 , 值得 , 使用 , 社会化媒体 , 的 ,
企业研究 ,
以下是proj的目录结构。
附加:手动添加相关词库
public static void main(String[] args) throws IOException {
String s = "中文分词工具包";
Configuration cfg = DefualtConfig.getInstance(); //加载词库
cfg.setUseSmart(true); //设置智能分词
Dictionary.initial(cfg);
Dictionary dictionary = Dictionary.getSingleton();
// List<String> words = new ArrayList<String>();
// words.add("基础班");
// words.add("高级会计实务");
// dictionary.addWords(words); //自动添加自定义词
System.out.println(cfg.getMainDictionary()); // 系统默认词库
System.out.println(cfg.getQuantifierDicionary());
Hit hit = dictionary.matchInMainDict("基础班".toCharArray());
System.out.println(hit.isMatch());
System.out.println(queryWords(s));
}
/**
* IK 分词
*
* @param query
* @return
* @throws IOException
*/
public static List<String> queryWords(String query) throws IOException {
List<String> list = new ArrayList<String>();
StringReader input = new StringReader(query.trim());
IKSegmenter ikSeg = new IKSegmenter(input, true);// true 用智能分词 ,false细粒度
for (Lexeme lexeme = ikSeg.next(); lexeme != null; lexeme = ikSeg.next()) {
list.add(lexeme.getLexemeText());
}
return list;
}
IKAnalyzer 独立使用 配置扩展词典的更多相关文章
- IK-Analyzer(5.3.1)动态配置自定义词典
参考文献:http://blog.csdn.net/fatpanda/article/details/37911079 jar包: IK-Analyzer-extra-5.3.1.jar IKAnal ...
- IKAnalyzer使用停用词词典进行分词
@Test // 測试分词的效果,以及停用词典是否起作用 public void test() throws IOException { String text = "老爹我们都爱您.&qu ...
- Sourcetree报错: 您没有已经配置扩展集成设置的远端
一.错误提示 您没有已经配置扩展集成设置的远端; ... 二.解决 配置 Legacy Account Settings 即可:
- centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides "*/vim" 第十节课
centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides "*/vim" 第十节课 你不能保证可逆化操 ...
- 使用 Sinamics S120 驱动脚本配置扩展报文
为了传输故障代码.电流.温度等信息.通常需要使用扩展报文的方式来发送这些信息.在驱动数量较少的情况下,可以进行手动配置. 如果驱动数量很多,可以使用脚本script的方式来配置扩展报文. 驱动编号 注 ...
- 五十八.Kibana使用 、 Logstash配置扩展插件
1.导入数据 批量导入数据并查看 1.1 导入数据 1) 使用POST方式批量导入数据,数据格式为json,url 编码使用data-binary导入含有index配置的json文件 ]# ...
- Cisco基础(四):配置标准ACL、配置扩展ACL、配置标准命名ACL、配置扩展命名ACL
一.配置标准ACL 目标: 络调通后,保证网络是通畅的.同时也很可能出现未经授权的非法访问.企业网络既要解决连连通的问题,还要解决网络安全的问题. 配置标准ACL实现拒绝PC1(IP地址为192.16 ...
- Lucene基于IKAnalyzer配置的词典扩充
在web项目的src目录下创建IKAnalyzer.cfg.xml文件,内容如下 <?xml version="1.0" encoding="UTF-8" ...
- 用pecl/pear独立编译PHP扩展 vs. 把扩展编译到PHP内核中
将扩展编译到php内部的方式会提高php运行扩展的效率,但是每次需要新添加扩展时都需要把php以及之前添加的所有扩展重新编译一边,非常麻烦. 独立编译扩展,php外部调用扩展的方式虽然会牺牲一点点的性 ...
随机推荐
- 2018.08.16 洛谷P2029 跳舞(线性dp)
传送门 简单的线性dp" role="presentation" style="position: relative;">dpdp. 直接推一推 ...
- 2018.07.20 bzoj1614: Telephone Lines架设电话线(二分+最短路)
传送门 这题直接做显然gg" role="presentation" style="position: relative;">gggg,看这数据 ...
- Django的路由层(1)
https://www.cnblogs.com/yuanchenqi/articles/8876685.html URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为 ...
- Linux 系统运维常用命令
1 文件管理2 软件管理3 系统管理4 服务管理5 网络管理6 磁盘管理7 用户管理8 脚本相关9 服务配置==================================------------ ...
- HDU 1050 Moving Tables (贪心)
题意:在一个走廊两边都有对称分布的连续房间,现在有n张桌子需要从a移动到b房间.每次移动需要10分钟, 但是如果两次移动中需要经过相同的走廊位置,则不能同时进行,需要分开移动.最后求最少需要多长时间移 ...
- github/gitlab添加多个ssh key
系统:macOS X 由于公司的代码管理放在了gitlab.com上,所以添加了一个ssh key, 生成ssh key的代码如下: 1.$ ssh-keygen -t rsa -C “yourema ...
- PO Release Final Closed 灾难恢复
今天不小心 Final Closed了一条Po Release,只能通过后台更新数据恢复了. 更新后可接收可匹配,但不保证更新数据有遗漏,慎用. 更新前备份各表数据 UPDATE PO_LINE_LO ...
- MYC编译器源码之代码生成
前面讲过语法的解析之后,代码生成方面就简单很多了.虽然myc是一个简单的示例编译器,但是它还是在解析的过程中生成了一个小的语法树,这个语法树将会用在生成exe可执行文件和il源码的过程中. 编译器在解 ...
- Unity Shader 阶段性反思与总结(一)
Unity Shader 阶段性反思与总结(一) 最近在写Shader的时候,总是感觉力不从心,感觉自己已经看了蛮久的书了,也有一定的积累了,但是一想写什么效果,完完全全就是脑袋一团空白.典型的例子就 ...
- Nginx+IIS部署负载均衡的常见问题
windows 下配置 Nginx 常见问题 一. Nginx配置 找到 conf 目录里的 nginx.conf 文件,配置Nginx #user nobody; #指定nginx进程数 work ...