HanLP Analysis for Elasticsearch

adnb34g發表於2019-04-22


 

基於 HanLP Elasticsearch 中文分詞外掛,核心功能:

 

相容 ES 5.x-7.x

內建詞典,無需額外配置即可使用;

支援使用者自定義詞典;

支援遠端詞典熱更新(待開發);

內建多種分詞模式,適合不同場景;

拼音過濾器(待開發);

簡繁體轉換過濾器(待開發)。

 

版本

外掛版本和 ES 版本一致,直接下載對應版本的外掛進行安裝即可。

 

· 外掛開發完成時,最新版本已經為 6.5.2 了,所以個人只對典型的版本進行了測試;

· 5.X 5.0.0 5.5.0 版本進行了測試;

· 6.X 6.0.0 6.3.0 6.4.1 6.5.1 版本進行了測試;

· 7.X 7.0.0 版本進行了測試。

 

安裝使用

下載編譯

git clone 對應版本的程式碼,開啟 pom.xml 檔案,修改 <elasticsearch.version>6.5.1</elasticsearch.version> 為需要的 ES 版本;然後使用 mvn package 生產打包檔案,最終檔案在 target/release 資料夾下。

 

打包完成後,使用離線方式安裝即可。

 

使用預設詞典

 

· 線上安裝: .\elasticsearch-plugin install https://github.com/AnyListen/elasticsearch-analysis-hanlp/releases/download/vA.B.C/elasticsearch-analysis-hanlp-A.B.C.zip

· 離線安裝: .\elasticsearch-plugin install file:///FILE_PATH/elasticsearch-analysis-hanlp-A.B.C.zip

離線安裝請把 FILE_PATH 更改為 zip 檔案路徑; A B C 對應的是 ES 版本號。

 

使用自定義詞典

預設詞典是精簡版的詞典,能夠滿足基本需求,但是無法使用感知機和 CRF 等基於模型的分詞器。

 

HanLP 提供了更加完整的詞典,請按需下載。

 

詞典下載後,解壓到任意目錄,然後修改外掛安裝目錄下的 hanlp.properties 檔案,只需修改第一行

 

root=D:/JavaProjects/HanLP/

data 的父目錄即可,比如 data 目錄是 /Users/hankcs/Documents/data ,那麼 root=/Users/hankcs/Documents/

 

使用自定義配置檔案

如果你在其他地方使用了 HanLP ,希望能夠複用 hanlp.properties 檔案,你只需要修改外掛安裝目錄下的 plugin.properties 檔案,將 configPath 配置為已有的 hanlp.properties 檔案地址即可。

 

內建分詞器

 

分析器 (Analysis)

 

· hanlp_index :細粒度切分

· hanlp_smart :常規切分

· hanlp_nlp :命名實體識別

· hanlp_per :感知機分詞

· hanlp_crf CRF 分詞

· hanlp :自定義

 

分詞器 (Tokenizer)

· hanlp_index :細粒度切分

· hanlp_smart :常規切分

· hanlp_nlp :命名實體識別

· hanlp_per :感知機分詞

· hanlp_crf CRF 分詞

· hanlp :自定義

 

自定義分詞器

外掛有較為豐富的選項允許使用者自定義分詞器,下面是可用的配置項:

 

 

案例展示:

 

# 建立自定義分詞器

PUT my_index

{

  "settings": {

    "analysis": {

      "analyzer": {

        "my_analyzer": {

          "type": "hanlp",

          "algorithm": "viterbi",

          "enableIndexMode": "true",

          "enableCustomDictionary": "true",

          "customDictionaryPath": "",

          "enableCustomDictionaryForcing": "false",

          "enableStopWord": "true",

          "stopWordDictionaryPath": "",

          "enableNumberQuantifierRecognize": "true",

          "enableNameRecognize": "true",

          "enableTranslatedNameRecognize": "true",

          "enableJapaneseNameRecognize": "true",

          "enableOrganizationRecognize": "true",

          "enablePlaceRecognize": "true",

          "enableTraditionalChineseMode": "false"

        }

      }

    }

  }

}

 

# 測試分詞器

POST my_index/_analyze

{

  "analyzer": "my_analyzer",

  "text": " 張惠妹在上海市舉辦演唱會啦 "

}

分詞速度(僅供參考)

 

藉助 _analyze API 1 1G 單執行緒),通過改變分詞器型別,對 2W 字的文字進行分詞,以下為從請求到返回的耗時:

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2642121/,如需轉載,請註明出處,否則將追究法律責任。

相關文章