1、IK分词测试
下面给出了IK的示例代码及IK的分词测试,示例代码见github:
https://github.com/irfen/lucene-example
我这里使用的是开源中国(OSC)的maven库,而且增加了其第三方库支持,具体配置见下面两篇内容:
http://maven.oschina.net/help.html
http://my.oschina.net/huangyong/blog/195559
有了开源中国,妈妈再也不用担心我的maven下载好慢了。
在pom中增加如下配置:
1 2 3 4 5 |
<dependency> <groupId>IKAnalyzer</groupId> <artifactId>IKAnalyzer</artifactId> <version>2012FF_hf1</version> </dependency> |
建议大家使用maven构建项目,尤其是在目前这个google被屏蔽的时候,很多托管在googlecode上的项目都没法访问了,但是可以用maven下载jar。 下面介绍分词的测试情况: 分词的测试文本:不论你采用什么形式的测试过程,什么形式的部署过程,没有代码审查——game over。为什么?因为代码的质量是一种人能看懂的质量。不管你如何测试,有如何严谨的部署流程,只有当另外一个人看了这些代码,并且表明能看懂时,这些代码才有意义。如果看不懂,你认为这样的代码——虽然测试通过、部署符合流程——可以上线吗? Ps:本段内容摘自你们公司做代码审查吗? 下面是分词的结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
不论 0 2 你 2 3 采用 3 5 什么 5 7 形式 7 9 的 9 10 测试 10 12 试过 11 13 过程 12 14 什么 15 17 形式 17 19 的 19 20 部署 20 22 过程 22 24 没有 25 27 有 26 27 代码 27 29 审查 29 31 game 33 37 over 38 42 为什么 43 46 什么 44 46 因为 47 49 代码 49 51 的 51 52 质量 52 54 是 54 55 一种 55 57 一 55 56 种 56 57 人 57 58 能看懂 58 61 能看 58 60 看懂 59 61 的 61 62 质量 62 64 不管 65 67 管你 66 68 你 67 68 如何 68 70 测试 70 72 有如 73 75 有 73 74 如何 74 76 严谨 76 78 的 78 79 部署 79 81 流程 81 83 只有 84 86 有当 85 87 有 85 86 当 86 87 另外 87 89 一个人 89 92 一个 89 91 一 89 90 个人 90 92 个 90 91 人 91 92 看了 92 94 这些 94 96 代码 96 98 并且 99 101 表明 101 103 能看懂 103 106 能看 103 105 看懂 104 106 时 106 107 这些 108 110 代码 110 112 才有 112 114 有意义 113 116 有意 113 115 有 113 114 意义 114 116 如果 117 119 看不懂 119 122 看不 119 121 不懂 120 122 你 123 124 认为 124 126 这样 126 128 的 128 129 代码 129 131 虽然 133 135 测试通过 135 139 测试 135 137 通过 137 139 部署 140 142 符合 142 144 合流 143 145 流程 144 146 可以 148 150 以上 149 151 上线 150 152 吗 152 153 |
如上所示,这里我们循环出来了所有短语及位置信息,这个在处理查询及高亮的时候是非常给力的。
首先需要用IK做索引,这部分与之前讲的索引过程相类似,这里就不再赘述了,具体代码见github:
https://github.com/irfen/lucene-example/blob/master/src/test/java/me/irfen/lucene/ch06/IKAnalyzerTest.java
唯一不同的是Field上需要一些设定:
1 2 3 4 5 6 7 8 |
FieldType fieldType = new FieldType(); fieldType.setIndexed(true);// 存储 fieldType.setStored(true);// 索引 fieldType.setStoreTermVectors(true); fieldType.setTokenized(true); fieldType.setStoreTermVectorPositions(true);// 存储位置 fieldType.setStoreTermVectorOffsets(true);// 存储偏移量 Field field = new Field("contents", text, fieldType); |
词频(TF)查询代码见github:
https://github.com/irfen/lucene-example/blob/master/src/test/java/me/irfen/lucene/ch06/IKAnalyzerTest.java
这里只是遍历了所有的词及词频,你还可以给这个排个序看看。
下面是词频的结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
关键字:game 词频: 1 关键字:over 词频: 1 关键字:一 词频: 2 关键字:一个 词频: 1 关键字:一个人 词频: 1 关键字:一种 词频: 1 关键字:上线 词频: 1 关键字:不懂 词频: 1 关键字:不管 词频: 1 关键字:不论 词频: 1 关键字:严谨 词频: 1 关键字:个 词频: 1 关键字:个人 词频: 1 关键字:为什么 词频: 1 关键字:人 词频: 2 关键字:什么 词频: 3 关键字:代码 词频: 5 关键字:以上 词频: 1 关键字:你 词频: 3 关键字:另外 词频: 1 关键字:只有 词频: 1 关键字:可以 词频: 1 关键字:合流 词频: 1 关键字:吗 词频: 1 关键字:因为 词频: 1 关键字:如何 词频: 2 关键字:如果 词频: 1 关键字:审查 词频: 1 关键字:并且 词频: 1 关键字:当 词频: 1 关键字:形式 词频: 2 关键字:意义 词频: 1 关键字:才有 词频: 1 关键字:时 词频: 1 关键字:是 词频: 1 关键字:有 词频: 4 关键字:有如 词频: 1 关键字:有当 词频: 1 关键字:有意 词频: 1 关键字:有意义 词频: 1 关键字:没有 词频: 1 关键字:流程 词频: 2 关键字:测试 词频: 3 关键字:测试通过 词频: 1 关键字:的 词频: 6 关键字:看不 词频: 1 关键字:看不懂 词频: 1 关键字:看了 词频: 1 关键字:看懂 词频: 2 关键字:种 词频: 1 关键字:符合 词频: 1 关键字:管你 词频: 1 关键字:能看 词频: 2 关键字:能看懂 词频: 2 关键字:虽然 词频: 1 关键字:表明 词频: 1 关键字:认为 词频: 1 关键字:试过 词频: 1 关键字:质量 词频: 2 关键字:过程 词频: 2 关键字:这些 词频: 2 关键字:这样 词频: 1 关键字:通过 词频: 1 关键字:部署 词频: 3 关键字:采用 词频: 1 |
词在几篇文档中存在(IDF)的代码见github:
https://github.com/irfen/lucene-example/blob/master/src/test/java/me/irfen/lucene/ch06/IKAnalyzerTest.java
结果就不贴,因为这里只放了一段文字,肯定都是1。
本文发表自赵伊凡BLOG
©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 6、Lucene4.9学习笔记——Lucene分词器使用之IKAnalyzer
“6、Lucene4.9学习笔记——Lucene分词器使用之IKAnalyzer”的35个回复