中文分词器

作者: 唯死撑尔 | 来源:发表于2019-07-18 17:31 被阅读0次

1.中文分词器

1.1.什么是中文分词器

学过英文的都知道,英文是以单词为单位的,单词与单词之间以空格或者逗号句号隔开。

标准分词器,无法像英文那样按单词分词,只能一个汉字一个汉字来划分。

所以需要一个能自动识别中文语义的分词器。

1.2.Lucene自带的中文分词器

1.2.1.StandardAnalyzer:

image.png

单字分词:就是按照中文一个字一个字地进行分词。如:“我爱中国”,

效果:“我”、“爱”、“中”、“国”。

1.2.2.CJKAnalyzer

二分法分词:按两个字进行切分。如:“我是中国人”,效果:“我是”、“是中”、“中国”“国人”。

上边两个分词器无法满足需求。

1.3.使用中文分词器IKAnalyzer

IKAnalyzer继承Lucene的Analyzer抽象类,使用IKAnalyzer和Lucene自带的分析器方法一样,将Analyzer测试代码改为IKAnalyzer测试中文分词效果。

如果使用中文分词器ik-analyzer,就在索引和搜索程序中使用一致的分词器ik-analyzer。

1.3.1.使用luke测试IK中文分词

(1)打开Luke,不要指定Lucene目录。否则看不到效果

(2)在分词器栏,手动输入IkAnalyzer的全路径

org.wltea.analyzer.lucene.IKAnalyzer

1.3.2.改造代码,使用IkAnalyzer做分词器

1.3.2.1.添加jar包

image.png

1.3.2.2.修改分词器代码

// 创建中文分词器     
Analyzer analyzer = new IKAnalyzer();

1.3.2.3.扩展中文词库

拓展词库的作用:在分词的过程中,保留定义的这些词
在src或其他source目录下建立自己的拓展词库,mydict.dic文件,例如:

image.png

在src或其他source目录下建立自己的停用词库,ext_stopword.dic文件
停用词的作用:在分词的过程中,分词器会忽略这些词。
在src或其他source目录下建立IKAnalyzer.cfg.xml,内容如下(注意路径对应):

<?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">mydict.dic</entry>

     <!-- 用户可以在这里配置自己的扩展停用词字典    -->

    <entry key="ext_stopwords">ext_stopword.dic</entry>

</properties>

如果想配置扩展词和停用词,就创建扩展词的文件和停用词的文件,文件的编码要是utf-8。

注意:不要用记事本保存扩展词文件和停用词文件,那样的话,格式中是含有bom的。

相关文章

网友评论

    本文标题:中文分词器

    本文链接:https://www.haomeiwen.com/subject/itcrlctx.html