跳转到内容

IK分词器


IK 分词器是 Elasticsearch 中非常常用的一个分词器,它是一个开源的中文分词工具,能够将中文文本精确地切分成独立的词条(token),以便 Elasticsearch 更好地处理和搜索中文数据。IK 分词器支持中文的精确分词和智能分词,能够根据不同的需求灵活配置,适应各种搜索场景。

  1. 支持中文分词

    IK 分词器能够针对中文进行高效的分词。因为中文没有明确的单词间隔(不像英语有空格分隔单词),IK 分词器可以根据一定的规则将连续的字符流分成有意义的词语。

  2. 两种分词模式

    最细粒度分词(精确模式):尽可能将文本分为最小的词语单位。例如,“小明喜欢吃苹果”会被分成“[小明, 喜欢, 吃, 苹果]”。

    智能分词(智能模式):尽可能保留更多的语义信息,避免将词语切得过细。这种模式更适合用于自然语言查询,保证查询的自然性和完整性。例如,“我爱北京天安门”会分成“[我, 爱, 北京, 天安门]”,保留“天安门”作为一个完整的词语。

  3. 支持多种扩展功能

    IK 分词器支持用户自定义词典,可以将用户特定的词汇加入到分词词库中,增强分词的准确性,避免分词时出现错误或遗漏。支持对英文、数字以及其他语言符号的识别和分词。

  4. 开源并高度可配置

    IK 分词器是一个开源项目,用户可以根据自己的需要调整配置文件,实现不同的分词需求。提供了多个自定义配置选项,可以设置是否启用同义词、是否进行停用词过滤等。

  5. 分词效率高

    IK 分词器不仅分词准确,而且效率很高,能够快速对大量文本进行分词处理,非常适合大规模的 Elasticsearch 集群。

IK 分词器允许用户通过添加外部的自定义词典来扩展分词能力。自定义词典文件应该是一个纯文本文件,每一行代表一个词条。

  • 修改 ext_dict 自定义词典
<?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">ext.dic</entry>
</properties>
  • 新建一个 ext.dic

在新建的 ext.dic 中添加需要扩展的词典,然后重启 elasticsearch 即可生效。

程序员 100
机器学习 50
深度学习 30
人工智能 20
自然语言处理 10
大数据 5

在 IK 分词器中,停用词典的作用就是在分词时忽略这些常见的无关词汇。例如,常见的停用词有“的”、“是”、“在”、“和”等。停用词典中的每一行通常只包含一个停用词,不需要词频信息。

  • 修改 ext_dict 自定义词典
<?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">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典 *** 添加停用词词典-->
<entry key="ext_stopwords">stopword.dic</entry>
</properties>
  • 在 stopword.dic 添加停用词