天天看點

HanLp的應用 - 真實使用背景:例子代碼預設詞典分詞結果自定義詞典分詞結果

背景:

使用者将自己的訴求,通過文字形式,或者語音形式進行描述,描述後,希望系統自動檢測出該系統已經存在的 功能,并且對功能進行分組處理,自動展示到前端頁面;

例如: 使用者提出訂單管理系統訴求

描述:

 訂單管理系統

目的

HanLp的應用 - 真實使用背景:例子代碼預設詞典分詞結果自定義詞典分詞結果

 目的:

将上文中的專業詞語,根據分詞,和自定義的詞性比對出來。

例子代碼

public class CSNDDemoSegment
{
    public static void main(String[] args) throws InterruptedException {
        String sentence = "訂單管理系統的内容如下, 商品系統:在送出訂單頁面會看到該訂單所包含的商品資訊,商品系統:在送出訂單頁面會看到該訂單所包含的商品資訊,例如商品名稱、所購買數量、價格、售後資訊等營銷系統:會顯示商品是否優惠資訊,例如滿減、優惠券;會員系統:會顯示該會員是否有基于會員等級的折扣資訊(如淘寶的88會員),或是否有可抵扣扣金額的會員點數(如京豆);會顯示該會員下面的收貨位址資訊、也會顯示該會員下面是否有儲值卡、運費券等。;倉庫系統:基于收貨位址資訊顯示發貨倉庫,;自提地點等,并且訂單最終會流轉到該系統進行發貨操作。支付系統:顯示支付方式(如貨到付款、線上支付等)、并且在支付的時候計算該會員實際應付的金額,以及顯示銀行卡資訊等。物流系統:顯示配送時間、配送方式、運費等并且在訂單發貨後會顯示實際的配送路徑;财務系統:顯示開票資訊等,在訂單完成後會生成發票。;内容系統:顯示訂單留言等";
        Segment segment = HanLP.newSegment();

        segment.enableCustomDictionaryForcing(true);
        List<Term> termList =segment.seg(sentence);
        System.out.println(termList);

    }
}
           

預設詞典分詞結果

[商品/domain, 系統/n, :/w, 在/p, 送出/v, 訂單/domain, 頁/q, 面會/n, 看到/v, 該/rz, 訂單/domain, 所/usuo, 包含/v, 的/ude1, 商品資訊/nz, ,/w, 商品/domain, 系統/n, :/w, 在/p, 送出/v, 訂單/domain, 頁/q, 面會/n, 看到/v, 該/rz, 訂單/domain, 所/usuo, 包含/v, 的/ude1, 商品資訊/nz, ,/w, 例如/v, 商品名稱/attribute, 、/w, 所/usuo, 購買/v, 數量/n, 、/w, 價格/n, 、/w, 售後/vi, 資訊/n, 等/udeng, 營銷/vn, 系統/n, :/w, 會/v, 顯示/v, 商品/domain, 是否/v, 優惠/vn, 資訊/n, ,/w, 例如/v, 滿/a, 減/v, 、/w, 優惠券/n, ;/w, 會員/nnt, 系統/n, :/w, 會/v, 顯示/v, 該/rz, 會員/nnt, 是否/v, 有/vyou, 基于/p, 會員/nnt, 等級/n, 的/ude1, 折扣/n, 資訊/n, (/w, 如/v, 淘寶/n, 的/ude1, 88/m, 會員/nnt, )/w, ,/w, 或/c, 是否/v, 有/vyou, 可/v, 抵/v, 扣扣/nz, 金額/n, 的/ude1, 會員/nnt, 點數/n, (/w, 如/v, 京豆/nr, )/w, ;/w, 會/v, 顯示/v, 該/rz, 會員/nnt, 下面/f, 的/ude1, 收貨/vn, 位址/n, 資訊/n, 、/w, 也/d, 會/v, 顯示/v, 該/rz, 會員/nnt, 下面/f, 是否/v, 有/vyou, 儲值卡/nz, 、/w, 運費/n, 券/ng, 等/udeng, 。/w, ;/w, 倉庫/n, 系統/n, :/w, 基于/p, 收貨/vn, 位址/n, 資訊/n, 顯示/v, 發貨/vi, 倉庫/n, ,/w, ;/w, 自提/nz, 地點/n, 等/udeng, ,/w, 并且/c, 訂單/domain, 最終/d, 會/v, 流/v, 轉到/v, 該/rz, 系統/n, 進行/vn, 發貨/vi, 操作/vn, 。/w, 支付/v, 系統/n, :/w, 顯示/v, 支付/v, 方式/n, (/w, 如/v, 貨到付款/nz, 、/w, 線上/vn, 支付/v, 等/udeng, )/w, 、/w, 并且/c, 在/p, 支付/v, 的/ude1, 時候/n, 計算/v, 該/rz, 會員/nnt, 實際/n, 應付/v, 的/ude1, 金額/n, ,/w, 以及/cc, 顯示/v, 銀行卡/nz, 資訊/n, 等/udeng, 。/w, 物流/n, 系統/n, :/w, 顯示/v, 配送/vn, 時間/n, 、/w, 配送/vn, 方式/n, 、/w, 運費/n, 等/udeng, 并且/c, 在/p, 訂單/domain, 發貨/vi, 後會/n, 顯示/v, 實際/n, 的/ude1, 配送/vn, 路徑/n, ;/w, 财務/n, 系統/n, :/w, 顯示/v, 開票/vi, 資訊/n, 等/udeng, ,/w, 在/p, 訂單/domain, 完成/v, 後會/n, 生成/v, 發票/n, 。/w, ;/w, 内容/n, 系統/n, :/w, 顯示/v, 訂單/domain, 留言/n, 等/udeng]
           

詞典配置:

#本配置檔案中的路徑的根目錄,根目錄+其他路徑=完整路徑(支援相對路徑,請參考:https://github.com/hankcs/HanLP/pull/254)
#Windows使用者請注意,路徑分隔符統一使用/
root=D:/gaohaicheng-gitee/hanLP1.X/HanLP

#好了,以上為唯一需要修改的部分,以下配置項按需反注釋編輯。

#核心詞典路徑
#CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt
#2元文法詞典路徑
#BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt
#自定義詞典路徑,用;隔開多個自定義詞典,空格開頭表示在同一個目錄,使用“檔案名 詞性”形式則表示這個詞典的詞性預設是該詞性。優先級遞減。
#所有詞典統一使用UTF-8編碼,每一行代表一個單詞,格式遵從[單詞] [詞性A] [A的頻次] [詞性B] [B的頻次] ... 如果不填詞性則表示采用詞典的預設詞性。
CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; CSDNCustomeDictionary.txt
#停用詞詞典路徑
#CoreStopWordDictionaryPath=data/dictionary/stopwords.txt
#同義詞詞典路徑
#CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt
#人名詞典路徑
#PersonDictionaryPath=data/dictionary/person/nr.txt
#人名詞典轉移矩陣路徑
#PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt
#繁簡詞典根目錄
#tcDictionaryRoot=data/dictionary/tc
#HMM分詞模型
#HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin
#分詞結果是否展示詞性
#ShowTermNature=true
#IO擴充卡,實作com.hankcs.hanlp.corpus.io.IIOAdapter接口以在不同的平台(Hadoop、Redis等)上運作HanLP
#預設的IO擴充卡如下,該擴充卡是基于普通檔案系統的。
#IOAdapter=com.hankcs.hanlp.corpus.io.FileIOAdapter
#感覺機詞法分析器
#PerceptronCWSModelPath=data/model/perceptron/pku1998/cws.bin
#PerceptronPOSModelPath=data/model/perceptron/pku1998/pos.bin
#PerceptronNERModelPath=data/model/perceptron/pku1998/ner.bin
#CRF詞法分析器
#CRFCWSModelPath=data/model/crf/pku199801/cws.txt
#CRFPOSModelPath=data/model/crf/pku199801/pos.txt
#CRFNERModelPath=data/model/crf/pku199801/ner.txt
#更多配置項請參考 https://github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/HanLP.java#L59 自行添加
           

在上述配置檔案中配置自定義詞典:  CSDNCustomeDictionary.txt

格式遵從[單詞] [詞性A] [A的頻次] [詞性B] [B的頻次] ... 如果不填詞性則表示采用詞典的預設詞性。

訂單管理系統 customWord-os 1

購物車 customWord-1 1

商品系統 customWord-1 1

營銷系統 customWord-1 1

會員系統 customWord-1 1

倉庫系統 customWord-1 1

支付系統 customWord-1 1

物流系統 customWord-1 1

财務系統 customWord-1 1

内容系統 customWord-1 1

自定義詞典分詞結果

加載好自定義詞典後,然後再次運作,看分詞效果:

[訂單管理系統/customWord-os, 的/ude1, 内容/n, 如下/vi, ,/w,  /w, 商品系統/customWord-1, :/w, 在/p, 送出/v, 訂單/n, 頁/q, 面會/n, 看到/v, 該/rz, 訂單/n, 所/usuo, 包含/v, 的/ude1, 商品資訊/nz, ,/w, 商品系統/customWord-1, :/w, 在/p, 送出/v, 訂單/n, 頁/q, 面會/n, 看到/v, 該/rz, 訂單/n, 所/usuo, 包含/v, 的/ude1, 商品資訊/nz, ,/w, 例如/v, 商品/n, 名稱/n, 、/w, 所/usuo, 購買/v, 數量/n, 、/w, 價格/n, 、/w, 售後/vi, 資訊/n, 等/udeng, 營銷系統/customWord-1, :/w, 會/v, 顯示/v, 商品/n, 是否/v, 優惠/vn, 資訊/n, ,/w, 例如/v, 滿/a, 減/v, 、/w, 優惠券/n, ;/w, 會員系統/customWord-1, :/w, 會/v, 顯示/v, 該/rz, 會員/nnt, 是否/v, 有/vyou, 基于/p, 會員/nnt, 等級/n, 的/ude1, 折扣/n, 資訊/n, (/w, 如/v, 淘寶/n, 的/ude1, 88/m, 會員/nnt, )/w, ,/w, 或/c, 是否/v, 有/vyou, 可/v, 抵/v, 扣扣/nz, 金額/n, 的/ude1, 會員/nnt, 點數/n, (/w, 如/v, 京豆/nr, )/w, ;/w, 會/v, 顯示/v, 該/rz, 會員/nnt, 下面/f, 的/ude1, 收貨/vn, 位址/n, 資訊/n, 、/w, 也/d, 會/v, 顯示/v, 該/rz, 會員/nnt, 下面/f, 是否/v, 有/vyou, 儲值卡/nz, 、/w, 運費/n, 券/ng, 等/udeng, 。/w, ;/w, 倉庫系統/customWord-1, :/w, 基于/p, 收貨/vn, 位址/n, 資訊/n, 顯示/v, 發貨/vi, 倉庫/n, ,/w, ;/w, 自提/nz, 地點/n, 等/udeng, ,/w, 并且/c, 訂單/n, 最終/d, 會/v, 流/v, 轉到/v, 該/rz, 系統/n, 進行/vn, 發貨/vi, 操作/vn, 。/w, 支付系統/customWord-1, :/w, 顯示/v, 支付/v, 方式/n, (/w, 如/v, 貨到付款/nz, 、/w, 線上/vn, 支付/v, 等/udeng, )/w, 、/w, 并且/c, 在/p, 支付/v, 的/ude1, 時候/n, 計算/v, 該/rz, 會員/nnt, 實際/n, 應付/v, 的/ude1, 金額/n, ,/w, 以及/cc, 顯示/v, 銀行卡/nz, 資訊/n, 等/udeng, 。/w, 物流系統/customWord-1, :/w, 顯示/v, 配送/vn, 時間/n, 、/w, 配送/vn, 方式/n, 、/w, 運費/n, 等/udeng, 并且/c, 在/p, 訂單/n, 發貨/vi, 後會/n, 顯示/v, 實際/n, 的/ude1, 配送/vn, 路徑/n, ;/w, 财務系統/customWord-1, :/w, 顯示/v, 開票/vi, 資訊/n, 等/udeng, ,/w, 在/p, 訂單/n, 完成/v, 後會/n, 生成/v, 發票/n, 。/w, ;/w, 内容系統/customWord-1, :/w, 顯示/v, 訂單/n, 留言/n, 等/udeng]

           

這樣自定義詞典便生效了。

可以根據自己的業務需要做一定的定義,進行分詞使用;

繼續閱讀