Es學習第五課, 分詞器介紹和中文分詞器配置


 上課我們介紹了倒排索引,在里面提到了分詞的概念,分詞器就是用來分詞的。

分詞器是ES中專門處理分詞的組件,英文為Analyzer,定義為:從一串文本中切分出一個一個的詞條,並對每個詞條進行標准化。它由三部分組成,

  • Character Filters:分詞之前進行預處理,比如去除html標簽
  • Tokenizer:將原始文本按照一定規則切分為單詞
  • Token Filters:針對Tokenizer處理的單詞進行再加工,比如轉小寫、刪除或增新等處理,也就是標准化

 

預定義的分詞器

ES自帶的分詞器有如下:

  • Standard Analyzer
    • 默認分詞器
    • 按詞切分,支持多語言
    • 小寫處理
    • 支持中文采用的方法為單字切分
  • Simple Analyzer
    • 按照非字母切分
    • 小寫處理
  • Whitespace Analyzer
    • 空白字符作為分隔符
  • Stop Analyzer
    • 相比Simple Analyzer多了去除請用詞處理
    • 停用詞指語氣助詞等修飾性詞語,如the, an, 的, 這等
  • Keyword Analyzer
    • 不分詞,直接將輸入作為一個單詞輸出
  • Pattern Analyzer
    • 通過正則表達式自定義分隔符
    • 默認是\W+,即非字詞的符號作為分隔符

ES默認對中文分詞是一個一個字來解析,這種情況會導致解析過於復雜,效率低下,所以目前有幾個開源的中文分詞器,來專門解決中文分詞,其中常用的叫IK

中文分詞

  • 難點
    • 中文分詞指的是將一個漢字序列切分為一個一個的單獨的詞。在英文中,單詞之間以空格作為自然分界詞,漢語中詞沒有一個形式上的分界符
    • 上下文不同,分詞結果迥異,比如交叉歧義問題
  • 常見分詞系統
    • IK:實現中英文單詞的切分,可自定義詞庫,支持熱更新分詞詞典
    • jieba:支持分詞和詞性標注,支持繁體分詞,自定義詞典,並行分詞等
    • Hanlp:由一系列模型與算法組成的Java工具包,目標是普及自然語言處理在生產環境中的應用
    • THUAC:中文分詞和詞性標注

 

安裝配置ik中文分詞插件

# 在Elasticsearch安裝目錄下執行命令,然后重啟es bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
 # 如果由於網絡慢,安裝失敗,可以先下載好zip壓縮包,將下面命令改為實際的路徑,執行,然后重啟es bin/elasticsearch-plugin install file:///path/to/elasticsearch-analysis-ik-6.3.0.zip
ik兩種分詞模式ik_max_word 和 ik_smart 什么區別?
  • ik_max_word: 會將文本做最細粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,中華人民,中華,華人,人民共和國,人民,人,民,共和國,共和,和,國國,國歌”,會窮盡各種可能的組合;

  • ik_smart: 會做最粗粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,國歌”。

你也可以直接上IK的github的教程來配置,https://github.com/medcl/elasticsearch-analysis-ik

安裝完后,修改elasticsearch.yml文件,把ik分詞器設置為es的默認分詞器

index.analysis.analyzer.default.type:ik

重啟es,注意es中的每個節點都要進行上述配置。

  

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM