Lucene的CJKAnalyzer分析器
来源:互联网 发布:淘宝上卖兔子被骗 编辑:程序博客网 时间:2024/05/22 13:18
Lucene的CJKAnalyzer分析器。
CJKAnalyzer分析器的思想:
对中文汉字,每两个字作为一个词条,例如A,B,C,D是四个中文汉字,使用CJKAnalyzer分析器分词后一共得到三个词条如下:
AB,BC,CD。
其实,CJKAnalyzer分析器在对中文分词方面比StandardAnalyzer分析器要好一点。因为根据中文的习惯,包括搜索的时候键入关键字的习惯,中文的词(大于一个汉字)比单个汉字的频率应该高一些。
但是,在设置相同的过滤词条文本以后,CJKAnalyzer分析器的缺点就是产生了冗余会比较大,相对于StandardAnalyzer分析器来说。使用StandardAnalyzer分析器可以考虑在以字作为词条时,通过过滤词条文本来优化分词。而CJKAnalyzer分析器在给定的过滤词条文本的基础之上,获取有用的词条实际是一个在具有一定中文语言习惯的基础上能够获得最高的期望。
如果使用默认的过滤词条文本:
package org.shirdrn.lucene;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
public class MyAnalyzer {
public static void main(String[] args) {
try {
File file = new File("E:\\shirdrn.txt");
FileReader stopWords = new FileReader("E:\\stopWords.txt");
Reader reader = new FileReader(file);
Analyzer a = new CJKAnalyzer();
TokenStream ts = a.tokenStream("", reader);
Token t = null;
int n = 0;
while((t = ts.next()) != null ){
n ++ ;
System.out.println("词条"+n+"的内容为 :"+t.termText());
}
System.out.println("== 共有词条 "+n+" 条 ==");
} catch (Exception e) {
e.printStackTrace();
}
}
}
即:没有对中文词条限制,结果可以看到:
词条1的内容为 :中秋
词条2的内容为 :秋之
词条3的内容为 :之夜
词条4的内容为 :享受
词条5的内容为 :受着
词条6的内容为 :着月
词条7的内容为 :月华
词条8的内容为 :华的
词条9的内容为 :的孤
词条10的内容为 :孤独
词条11的内容为 :享受
词条12的内容为 :受着
词条13的内容为 :着爆
词条14的内容为 :爆炸
词条15的内容为 :炸式
词条16的内容为 :式的
词条17的内容为 :的思
词条18的内容为 :思维
词条19的内容为 :维跃
词条20的内容为 :跃迁
== 共有词条 20 条 ==
产生的无用的词条大概占50%左右,而且,如果被分词的文件很大,存储也有一定的开销,相对于使用StandardAnalyzer分析器。相对于使用StandardAnalyzer分析器,使用CJKAnalyzer分析器的存储开销是StandardAnalyzer分析器的两倍。
这里,无论是那种分词方式(对于StandardAnalyzer分析器和CJKAnalyzer分析器来说),都要考虑对重复的词条进行处理。
CJKAnalyzer分析器的分词工具是CJKTokenizer核心类。至于如果过滤,这和StandardAnalyzer分析器很相似,但是它只是设置了在程序中指定了一个stopTable。可以参考StandardAnalyzer分析器实现读取文件系统中的文本的实现。
Lucene的ChineseAnalyzer分析器。
ChineseAnalyzer分析器其实就是StandardAnalyzer分析器,对单个的中文汉字作为一个词条。
也可以指定一个stopTable。
- Lucene的CJKAnalyzer分析器
- Lucene的StandardAnalyzer分析器。
- Lucene的标准分析器
- 构建基于词典的Lucene分析器
- 构建基于词典的Lucene分析器
- 构建基于词典的Lucene分析器
- lucene学习:理解lucene分析器
- lucene分析器分析
- lucene-同义词分析器
- Lucene 查询分析器
- lucene内置分析器
- Lucene系列-分析器
- 一个自定义的用语过滤非字符的Lucene分析器
- 《开发自己的搜索引擎》读书笔记——Lucene的分析器
- Lucene中文分析器的中文分词准确性和性能比较
- java-lucene中几个主要可用的分析器
- Lucene中文分析器的中文分词准确性和性能比较
- Lucene中文分析器的中文分词准确性和性能比较
- Linux--ARP协议与CRC校验
- 用vue实现模态框组件
- css3中-moz、-ms、-webkit各什么意思
- 回车触发事件
- 百练_2683:求分数序列和
- Lucene的CJKAnalyzer分析器
- java多线程
- 生成函数(母函数)1003
- Maven install出来的jar包有问题,Eclipse-Project-Clean…的妙用
- while嵌套注意事项(九九星号代码
- c/c++中的string常用函数用法总结
- 常见HTTP状态码大全详解.lishiv
- CPU射频卡外部认证的操作步骤
- 关于交叉熵