Python分詞工具——pyhanlp

本文爲本人學習pyhanlp的筆記,大多知識點來源於GitHubhttps://github.com/hankcs/HanLP/blob/master/README.md,文中的demo代碼來源於該GitHub主php

what's the pyhanlp  

  pyhanlp是HanLP的Python接口,支持自動下載與升級HanLP,兼容py二、py3。html

安裝前端

pip install pyhanlp

 

安裝時可能遇到的問題:java

  • 報錯:error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual

  解決方法:手動下載,下載連接:https://pan.baidu.com/s/1WaBxFghTll6Zofz1DGOZBggit

  

  • 報錯:jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

  解決方法:HanLP主項目採用Java開發,因此須要Java運行環境,請安裝JDK。須要保證JDK位數、操做系統位數和Python位數一致。pyhanlp在64位系統上經過了全部測試;在32位系統上能夠運行但不作保證。程序員

 

配置github

  默認在首次調用pyhanlp時自動下載jar包和數據包,並自動完成配置。 算法

  若是網速慢或者其餘問題致使配置失敗,須要自行下載data文件,而後放入pyhanlp文件的static目錄中。下載地址:http://nlp.hankcs.com/download.php?file=data編程

  若是仍是失敗,請參考https://github.com/hankcs/pyhanlp/wiki/手動配置數組

 

1、標準中文分詞

  使用命令hanlp segment進入交互分詞模式,輸入一個句子並回車,HanLP會輸出分詞結果:

$ hanlp segment
商品和服務
商品/n 和/cc 服務/vn

當下雨天地面積水分外嚴重
當/p 下雨天/n 地面/n 積水/n 分外/d 嚴重/a

龔學平等領導說,鄧穎超生前杜絕超生
龔學平/nr 等/udeng 領導/n 說/v ,/w 鄧穎超/nr 生前/t 杜絕/v 超生/vi

 

還能夠重定向輸入輸出到文件等:

$ hanlp segment <<< '歡迎新老師生前來就餐'               
歡迎/v 新/a 老/a 師生/n 前來/vi 就餐/vi

 

在Python中的實現

from pyhanlp import *

print(HanLP.segment('你好,歡迎在Python中調用HanLP的API')) 
# [你好/vl, ,/w, 歡迎/v, 在/p, Python/nx, 中/f, 調用/v, HanLP/nx, 的/ude1, API/nx]
###################
for term in HanLP.segment('下雨天地面積水'):
    print('{}\t{}'.format(term.word, term.nature)) # 獲取單詞與詞性

'''
下雨天    n
地面    n
積水    n
'''
###################
testCases = [
    "商品和服務",
    "結婚的和還沒有結婚的確實在干擾分詞啊",
    "買水果真後來世博園最後去世博會",
    "中國的首都是北京",
    "歡迎新老師生前來就餐",
    "工信處女幹事每個月通過下屬科室都要親口交代24口交換機等技術性器件的安裝工做",
    "隨着頁遊興起到如今的頁遊繁盛,依賴於存檔進行邏輯判斷的設計減小了,但這塊也不能徹底忽略掉。"]
for sentence in testCases:
    print(HanLP.segment(sentence))
'''
[商品/n, 和/cc, 服務/vn]
[結婚/vi, 的/ude1, 和/cc, 還沒有/d, 結婚/vi, 的/ude1, 確實/ad, 在/p, 干擾/vn, 分詞/n, 啊/y]
[買/v, 水果/n, 而後/c, 來/vf, 世博園/n, 最後/f, 去/vf, 世博會/n]
[中國/ns, 的/ude1, 首都/n, 是/vshi, 北京/ns]
[歡迎/v, 新/a, 老/a, 師生/n, 前來/vi, 就餐/vi]
[工信處/n, 女幹事/n, 每個月/t, 通過/p, 下屬/v, 科室/n, 都/d, 要/v, 親口/d, 交代/v, 24/m, 口/n, 交換機/n, 等/udeng, 技術性/n, 器件/n, 的/ude1, 安裝/v, 工做/vn]
[隨着/p, 頁遊/nz, 興起/v, 到/v, 如今/t, 的/ude1, 頁遊/nz, 繁盛/a, ,/w, 依賴於/v, 存檔/vi, 進行/vn, 邏輯/n, 判斷/v, 的/ude1, 設計/vn, 減小/v, 了/ule, ,/w, 但/c, 這/rzv, 塊/q, 也/d, 不能/v, 徹底/ad, 忽略/v, 掉/v, 。/w]
'''

 

說明

  • HanLP中有一系列「開箱即用」的靜態分詞器,以Tokenizer結尾,在接下來的例子中會繼續介紹。
  • HanLP.segment實際上是對StandardTokenizer.segmen的包裝。
  • 分詞結果包含詞性,每一個詞性的意思請查閱《HanLP詞性標註集》

算法詳解

 

2、關鍵詞提取、自動摘要

# 關鍵詞提取
document = "水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發佈會上透露," \
           "根據剛剛完成了水資源管理制度的考覈,有部分省接近了紅線的指標," \
           "有部分省超過紅線的指標。對一些超過紅線的地方,陳明忠表示,對一些取用水項目進行區域的限批," \
           "嚴格地進行水資源論證和取水許可的批准。"
print(HanLP.extractKeyword(document, 2)) # [水資源, 陳明忠]
# 自動摘要
print(HanLP.extractSummary(document, 3)) # [嚴格地進行水資源論證和取水許可的批准, 水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發佈會上透露, 有部分省超過紅線的指標]
# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_keyword(content):
    """ 關鍵詞提取

    [程序員, 程序, 分爲, 人員, 軟件]
    """
    TextRankKeyword = JClass("com.hankcs.hanlp.summary.TextRankKeyword")
    keyword_list = HanLP.extractKeyword(content, 5)
    print(keyword_list)


if __name__ == "__main__":
    content = (
       "程序員(英文Programmer)是從事程序開發、維護的專業人員。"
       "通常將程序員分爲程序設計人員和程序編碼人員,"
       "但二者的界限並不很是清楚,特別是在中國。"
       "軟件從業人員分爲初級程序員、高級程序員、系統"
       "分析員和項目經理四大類。")
    demo_keyword(content)
關鍵詞提取demo_keyword.py
# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_summary(document):
    """自動摘要

    [嚴格地進行水資源論證和取水許可的批准,
    水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發佈會上透露,
    有部分省超過紅線的指標]
    """

    TextRankSentence = JClass("com.hankcs.hanlp.summary.TextRankSentence")
    sentence_list = HanLP.extractSummary(document, 3)
    print(sentence_list)


if __name__ == "__main__":
    document = '''水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發佈會上透露,
    根據剛剛完成了水資源管理制度的考覈,有部分省接近了紅線的指標,
    有部分省超過紅線的指標。對一些超過紅線的地方,陳明忠表示,對一些取用水項目進行區域的限批,
    嚴格地進行水資源論證和取水許可的批准。
    '''
    demo_summary(document)
自動摘要demo_summary.py

 

3、短語提取

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_phrase_extractor(text):
    """ 短語提取

    [算法工程師, 算法處理, 一維信息, 算法研究, 信號處理]
    """
    phrase_list = HanLP.extractPhrase(text, 5)
    print(phrase_list)


if __name__ == "__main__":

    text = '''
     算法工程師
     算法(Algorithm)是一系列解決問題的清晰指令,也就是說,可以對必定規範的輸入,在有限時間內得到所要求的輸出。
     若是一個算法有缺陷,或不適合於某個問題,執行這個算法將不會解決這個問題。不一樣的算法可能用不一樣的時間、
     空間或效率來完成一樣的任務。一個算法的優劣能夠用空間複雜度與時間複雜度來衡量。算法工程師就是利用算法處理事物的人。
     1職位簡介
     算法工程師是一個很是高端的職位;
     專業要求:計算機、電子、通訊、數學等相關專業;
     學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;
     語言要求:英語要求是熟練,基本上能閱讀國外專業書刊;
     必須掌握計算機相關知識,熟練使用仿真工具MATLAB等,必須會一門編程語言。
     2研究方向
     視頻算法工程師、圖像處理算法工程師、音頻算法工程師 通訊基帶算法工程師
     3目前國內外情況
     目前國內從事算法研究的工程師很多,可是高級算法工程師卻不多,是一個很是緊缺的專業工程師。
     算法工程師根據研究領域來分主要有音頻/視頻算法處理、圖像技術方面的二維信息算法處理和通訊物理層、
     雷達信號處理、生物醫學信號處理等領域的一維信息算法處理。
     在計算機音視頻和圖形圖像技術等二維信息算法處理方面目前比較先進的視頻處理算法:機器視覺成爲此類算法研究的核心;
     另外還有2D轉3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),運動估計運動補償算法
     (Motion estimation/Motion Compensation),去噪算法(Noise Reduction),縮放算法(scaling),
     銳化處理算法(Sharpness),超分辨率算法(Super Resolution) 手勢識別(gesture recognition) 人臉識別(face recognition)。
     在通訊物理層等一維信息領域目前經常使用的算法:無線領域的RRM、RTT,傳送領域的調製解調、信道均衡、信號檢測、網絡優化、信號分解等。
     另外數據挖掘、互聯網搜索算法也成爲當今的熱門方向。
     算法工程師逐漸往人工智能方向發展。
    '''
    demo_phrase_extractor(text)
短語提取phrase_extractor.py

 

4、拼音轉換

說明

  • HanLP不只支持基礎的漢字轉拼音,還支持聲母、韻母、音調、音標和輸入法首字母首聲母功能。
  • HanLP可以識別多音字,也能給繁體中文注拼音。
  • 最重要的是,HanLP採用的模式匹配升級到AhoCorasickDoubleArrayTrie,性能大幅提高,可以提供毫秒級的響應速度!

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_pinyin():
    """ 漢字轉拼音


    原文, 重載不是重任!
    拼音(數字音調), [chong2, zai3, bu2, shi4, zhong4, ren4, none5]
    拼音(符號音調), chóng, zǎi, bú, shì, zhòng, rèn, none,
    拼音(無音調), chong, zai, bu, shi, zhong, ren, none,
    聲調, 2, 3, 2, 4, 4, 4, 5,
    聲母, ch, z, b, sh, zh, r, none,
    韻母, ong, ai, u, i, ong, en, none,
    輸入法頭, ch, z, b, sh, zh, r, none,
    jie zhi none none none none nian none
    jie zhi 2 0 1 2 nian ,
    """
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "重載不是重任!"
    pinyin_list = HanLP.convertToPinyinList(text)

    print("原文,", end=" ")
    print(text)
    print("拼音(數字音調),", end=" ")
    print(pinyin_list)
    print("拼音(符號音調),", end=" ")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getPinyinWithToneMark(), end=" ")
    print("\n拼音(無音調),", end=" ")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getPinyinWithoutTone(), end=" ")
    print("\n聲調,", end=" ")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getTone(), end=" ")
    print("\n聲母,", end=" ")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getShengmu(), end=" ")
    print("\n韻母,", end=" ")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getYunmu(), end=" ")
    print("\n輸入法頭,", end=" ")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getHead(), end=" ")

    print()
    # 拼音轉換可選保留無拼音的原字符
    print(HanLP.convertToPinyinString("截至2012年,", " ", True))
    print(HanLP.convertToPinyinString("截至2012年,", " ", False))


if __name__ == "__main__":
    demo_pinyin()
漢字轉拼音demo_chinese2pinyi.py
# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_pinyin_to_chinese():
    """ HanLP中的數據結構和接口是靈活的,組合這些接口,能夠本身創造新功能


    [renmenrenweiyalujiangbujian/null, lvse/[濾色, 綠色]]
    """
    AhoCorasickDoubleArrayTrie = JClass(
        "com.hankcs.hanlp.collection.AhoCorasick.AhoCorasickDoubleArrayTrie")
    StringDictionary = JClass(
        "com.hankcs.hanlp.corpus.dictionary.StringDictionary")
    CommonAhoCorasickDoubleArrayTrieSegment = JClass(
        "com.hankcs.hanlp.seg.Other.CommonAhoCorasickDoubleArrayTrieSegment")
    CommonAhoCorasickSegmentUtil = JClass(
        "com.hankcs.hanlp.seg.Other.CommonAhoCorasickSegmentUtil")
    Config = JClass("com.hankcs.hanlp.HanLP$Config")

    TreeMap = JClass("java.util.TreeMap")
    TreeSet = JClass("java.util.TreeSet")

    dictionary = StringDictionary()
    dictionary.load(Config.PinyinDictionaryPath)
    entry = {}
    m_map = TreeMap()
    for entry in dictionary.entrySet():
        pinyins = entry.getValue().replace("[\\d,]", "")
        words = m_map.get(pinyins)
        if words is None:
            words = TreeSet()
            m_map.put(pinyins, words)
        words.add(entry.getKey())
    words = TreeSet()
    words.add("綠色")
    words.add("濾色")
    m_map.put("lvse", words)

    segment = CommonAhoCorasickDoubleArrayTrieSegment(m_map)
    print(segment.segment("renmenrenweiyalujiangbujianlvse"))


if __name__ == "__main__":
    demo_pinyin_to_chinese()
拼音轉漢字demo_pinyin2chinses.py

 

5、簡繁轉換

說明

  • HanLP可以識別簡繁分歧詞,好比打印機=印表機。許多簡繁轉換工具不能區分「之後」「皇后」中的兩個「後」字,HanLP能夠。
  • 支持香港繁體和臺灣繁體

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_traditional_chinese2simplified_chinese():
    """ 將簡繁轉換作到極致

    「以後等你當上皇后,就能買草莓慶祝了」。發現一根白頭髮
    憑藉筆記本電腦寫程序HanLP
    hankcs在臺灣寫程式碼
    hankcs在臺灣寫代碼
    hankcs在香港寫代碼
    hankcs在香港寫代碼
    hankcs在臺灣寫程式碼
    hankcs在香港寫代碼
    hankcs在臺灣寫程式碼
    hankcs在臺灣寫代碼
    hankcs在臺灣寫代碼
    hankcs在臺灣寫代碼
    """
    print(HanLP.convertToTraditionalChinese("「之後等你當上皇后,就能買草莓慶祝了」。發現一根白頭髮"))
    print(HanLP.convertToSimplifiedChinese("憑藉筆記簿型電腦寫程式HanLP"))
    # 簡體轉檯灣繁體
    print(HanLP.s2tw("hankcs在臺灣寫代碼"))
    # 臺灣繁體轉簡體
    print(HanLP.tw2s("hankcs在臺灣寫程式碼"))
    # 簡體轉香港繁體
    print(HanLP.s2hk("hankcs在香港寫代碼"))
    # 香港繁體轉簡體
    print(HanLP.hk2s("hankcs在香港寫代碼"))
    # 香港繁體轉檯灣繁體
    print(HanLP.hk2tw("hankcs在臺灣寫代碼"))
    # 臺灣繁體轉香港繁體
    print(HanLP.tw2hk("hankcs在香港寫程式碼"))

    # 香港/臺灣繁體和HanLP標準繁體的互轉
    print(HanLP.t2tw("hankcs在臺灣寫代碼"))
    print(HanLP.t2hk("hankcs在臺灣寫代碼"))

    print(HanLP.tw2t("hankcs在臺灣寫程式碼"))
    print(HanLP.hk2t("hankcs在臺灣寫代碼"))


if __name__ == "__main__":
    demo_traditional_chinese2simplified_chinese()
簡繁轉換demo_traditional_chinese2simplified_chinese.py

 

6、文本推薦(相似搜索引擎功能)

說明

  • 在搜索引擎的輸入框中,用戶輸入一個詞,搜索引擎會聯想出最合適的搜索詞,HanLP實現了相似的功能。
  • 支持語義、字符、拼音等形式的搜索推薦
  • 能夠動態調節每種識別器的權重
# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_suggester():
    """ 文本推薦(句子級別,從一系列句子中挑出與輸入句子最類似的那一個)


    [威廉王子發表演說 呼籲保護野生動物, 英報告說空氣污染帶來「公共健康危機」]
    [英報告說空氣污染帶來「公共健康危機」]
    [《時代》年度人物最終入圍名單出爐 普京馬雲入選]
    [魅惑天后許佳慧不愛「預謀」 獨唱《許某某》]
    """
    Suggester = JClass("com.hankcs.hanlp.suggest.Suggester")
    suggester = Suggester()
    title_array = [
        "威廉王子發表演說 呼籲保護野生動物",
        "魅惑天后許佳慧不愛「預謀」 獨唱《許某某》",
        "《時代》年度人物最終入圍名單出爐 普京馬雲入選",
        "「黑格比」橫掃菲:菲吸收「海燕」經驗及早疏散",
        "日本保密法將正式生效 日媒指其損害國民知情權",
        "英報告說空氣污染帶來「公共健康危機」"
    ]
    for title in title_array:
        suggester.addSentence(title)

    print(suggester.suggest("陳述", 2))      # 語義
    print(suggester.suggest("危機公關", 1))  # 字符
    print(suggester.suggest("mayun", 1))   # 拼音
    print(suggester.suggest("徐家彙", 1)) # 拼音


if __name__ == "__main__":
    demo_suggester()
文本推薦demo_suggester.py

 

7、語義距離

說明

# -*- coding:utf-8 -*-

from pyhanlp import *


def demo_word_distance():
    """ 語義距離

    詞A       詞B       語義距離          語義類似度
    <BLANKLINE>
    香蕉       香蕉       0                  1.0000000000
    香蕉       蘋果       19980              0.9999997311
    香蕉       白菜       2628369            0.9999646244
    香蕉       水果       32967              0.9999995563
    香蕉       蔬菜       2630367            0.9999645975
    香蕉       自行車      1854515628         0.9750398066
    香蕉       公交車      1854535619         0.9750395376
    香蕉       飛機       1857307833         0.9750022259
    香蕉       買        39729797433        0.4652709248
    香蕉       賣        39729897333        0.4652695802
    香蕉       購入       39729797433        0.4652709248
    香蕉       新年       4981789224         0.9329493801
    香蕉       春節       4981789224         0.9329493801
    香蕉       丟失       46784535633        0.3703201856
    香蕉       補辦       39205230527        0.4723311464
    香蕉       辦理       39205222533        0.4723312540
    香蕉       送給       40831595534        0.4504416652
    香蕉       尋找       41124601233        0.4464980592
    香蕉       孩子       6734891367         0.9093541255
    香蕉       教室       1548030420         0.9791648353
    香蕉       教師       7516908567         0.8988288432
    香蕉       會計       7547972472         0.8984107496
    蘋果       香蕉       19980              0.9999997311
    蘋果       蘋果       0                  1.0000000000
    蘋果       白菜       2608389            0.9999648933
    蘋果       水果       12987              0.9999998252
    蘋果       蔬菜       2610387            0.9999648664
    蘋果       自行車      1854535608         0.9750395377
    蘋果       公交車      1854555599         0.9750392686
    蘋果       飛機       1857327813         0.9750019570
    蘋果       買        39729817413        0.4652706559
    蘋果       賣        39729917313        0.4652693113
    蘋果       購入       39729817413        0.4652706559
    蘋果       新年       4981809204         0.9329491112
    蘋果       春節       4981809204         0.9329491112
    蘋果       丟失       46784555613        0.3703199167
    蘋果       補辦       39205250507        0.4723308775
    蘋果       辦理       39205242513        0.4723309851
    蘋果       送給       40831615514        0.4504413963
    蘋果       尋找       41124621213        0.4464977903
    蘋果       孩子       6734871387         0.9093543944
    蘋果       教室       1548050400         0.9791645663
    蘋果       教師       7516888587         0.8988291121
    蘋果       會計       7547952492         0.8984110185
    白菜       香蕉       2628369            0.9999646244
    白菜       蘋果       2608389            0.9999648933
    白菜       白菜       0                  1.0000000000
    白菜       水果       2595402            0.9999650681
    白菜       蔬菜       1998               0.9999999731
    白菜       自行車      1857143997         0.9750044310
    白菜       公交車      1857163988         0.9750041620
    白菜       飛機       1859936202         0.9749668503
    白菜       買        39732425802        0.4652355492
    白菜       賣        39732525702        0.4652342046
    白菜       購入       39732425802        0.4652355492
    白菜       新年       4984417593         0.9329140045
    白菜       春節       4984417593         0.9329140045
    白菜       丟失       46787164002        0.3702848100
    白菜       補辦       39207858896        0.4722957708
    白菜       辦理       39207850902        0.4722958784
    白菜       送給       40834223903        0.4504062896
    白菜       尋找       41127229602        0.4464626836
    白菜       孩子       6732262998         0.9093895011
    白菜       教室       1550658789         0.9791294597
    白菜       教師       7514280198         0.8988642188
    白菜       會計       7545344103         0.8984461252
    水果       香蕉       32967              0.9999995563
    水果       蘋果       12987              0.9999998252
    水果       白菜       2595402            0.9999650681
    水果       水果       0                  1.0000000000
    水果       蔬菜       2597400            0.9999650412
    水果       自行車      1854548595         0.9750393629
    水果       公交車      1854568586         0.9750390939
    水果       飛機       1857340800         0.9750017822
    水果       買        39729830400        0.4652704811
    水果       賣        39729930300        0.4652691365
    水果       購入       39729830400        0.4652704811
    水果       新年       4981822191         0.9329489364
    水果       春節       4981822191         0.9329489364
    水果       丟失       46784568600        0.3703197419
    水果       補辦       39205263494        0.4723307027
    水果       辦理       39205255500        0.4723308103
    水果       送給       40831628501        0.4504412215
    水果       尋找       41124634200        0.4464976155
    水果       孩子       6734858400         0.9093545692
    水果       教室       1548063387         0.9791643915
    水果       教師       7516875600         0.8988292869
    水果       會計       7547939505         0.8984111933
    蔬菜       香蕉       2630367            0.9999645975
    蔬菜       蘋果       2610387            0.9999648664
    蔬菜       白菜       1998               0.9999999731
    蔬菜       水果       2597400            0.9999650412
    蔬菜       蔬菜       0                  1.0000000000
    蔬菜       自行車      1857145995         0.9750044041
    蔬菜       公交車      1857165986         0.9750041351
    蔬菜       飛機       1859938200         0.9749668234
    蔬菜       買        39732427800        0.4652355223
    蔬菜       賣        39732527700        0.4652341777
    蔬菜       購入       39732427800        0.4652355223
    蔬菜       新年       4984419591         0.9329139777
    蔬菜       春節       4984419591         0.9329139777
    蔬菜       丟失       46787166000        0.3702847831
    蔬菜       補辦       39207860894        0.4722957440
    蔬菜       辦理       39207852900        0.4722958515
    蔬菜       送給       40834225901        0.4504062627
    蔬菜       尋找       41127231600        0.4464626567
    蔬菜       孩子       6732261000         0.9093895280
    蔬菜       教室       1550660787         0.9791294328
    蔬菜       教師       7514278200         0.8988642457
    蔬菜       會計       7545342105         0.8984461521
    自行車      香蕉       1854515628         0.9750398066
    自行車      蘋果       1854535608         0.9750395377
    自行車      白菜       1857143997         0.9750044310
    自行車      水果       1854548595         0.9750393629
    自行車      蔬菜       1857145995         0.9750044041
    自行車      自行車      0                  1.0000000000
    自行車      公交車      19991              0.9999997309
    自行車      飛機       2792205            0.9999624193
    自行車      買        37875281805        0.4902311182
    自行車      賣        37875381705        0.4902297736
    自行車      購入       37875281805        0.4902311182
    自行車      新年       3127273596         0.9579095735
    自行車      春節       3127273596         0.9579095735
    自行車      丟失       44930020005        0.3952803790
    自行車      補辦       37350714899        0.4972913398
    自行車      辦理       37350706905        0.4972914474
    自行車      送給       38977079906        0.4754018586
    自行車      尋找       39270085605        0.4714582526
    自行車      孩子       8589406995         0.8843939321
    自行車      教室       306485208          0.9958749714
    自行車      教師       9371424195         0.8738686498
    自行車      會計       9402488100         0.8734505562
    公交車      香蕉       1854535619         0.9750395376
    公交車      蘋果       1854555599         0.9750392686
    公交車      白菜       1857163988         0.9750041620
    公交車      水果       1854568586         0.9750390939
    公交車      蔬菜       1857165986         0.9750041351
    公交車      自行車      19991              0.9999997309
    公交車      公交車      0                  1.0000000000
    公交車      飛機       2772214            0.9999626884
    公交車      買        37875261814        0.4902313872
    公交車      賣        37875361714        0.4902300427
    公交車      購入       37875261814        0.4902313872
    公交車      新年       3127253605         0.9579098426
    公交車      春節       3127253605         0.9579098426
    公交車      丟失       44930000014        0.3952806480
    公交車      補辦       37350694908        0.4972916089
    公交車      辦理       37350686914        0.4972917165
    公交車      送給       38977059915        0.4754021276
    公交車      尋找       39270065614        0.4714585217
    公交車      孩子       8589426986         0.8843936631
    公交車      教室       306505199          0.9958747023
    公交車      教師       9371444186         0.8738683807
    公交車      會計       9402508091         0.8734502872
    飛機       香蕉       1857307833         0.9750022259
    飛機       蘋果       1857327813         0.9750019570
    飛機       白菜       1859936202         0.9749668503
    飛機       水果       1857340800         0.9750017822
    飛機       蔬菜       1859938200         0.9749668234
    飛機       自行車      2792205            0.9999624193
    飛機       公交車      2772214            0.9999626884
    飛機       飛機       0                  1.0000000000
    飛機       買        37872489600        0.4902686988
    飛機       賣        37872589500        0.4902673543
    飛機       購入       37872489600        0.4902686988
    飛機       新年       3124481391         0.9579471542
    飛機       春節       3124481391         0.9579471542
    飛機       丟失       44927227800        0.3953179597
    飛機       補辦       37347922694        0.4973289205
    飛機       辦理       37347914700        0.4973290281
    飛機       送給       38974287701        0.4754394393
    飛機       尋找       39267293400        0.4714958333
    飛機       孩子       8592199200         0.8843563514
    飛機       教室       309277413          0.9958373907
    飛機       教師       9374216400         0.8738310691
    飛機       會計       9405280305         0.8734129755
    買        香蕉       39729797433        0.4652709248
    買        蘋果       39729817413        0.4652706559
    買        白菜       39732425802        0.4652355492
    買        水果       39729830400        0.4652704811
    買        蔬菜       39732427800        0.4652355223
    買        自行車      37875281805        0.4902311182
    買        公交車      37875261814        0.4902313872
    買        飛機       37872489600        0.4902686988
    買        買        0                  1.0000000000
    買        賣        99900              0.9999986554
    買        購入       0                  1.0000000000
    買        新年       34748008209        0.5323215446
    買        春節       34748008209        0.5323215446
    買        丟失       7054738200         0.9050492608
    買        補辦       524566906          0.9929397783
    買        辦理       524574900          0.9929396707
    買        送給       1101798101         0.9851707404
    買        尋找       1394803800         0.9812271344
    買        孩子       46464688800        0.3746250503
    買        教室       38181767013        0.4861060895
    買        教師       47246706000        0.3640997680
    買        會計       47277769905        0.3636816744
    賣        香蕉       39729897333        0.4652695802
    賣        蘋果       39729917313        0.4652693113
    賣        白菜       39732525702        0.4652342046
    賣        水果       39729930300        0.4652691365
    賣        蔬菜       39732527700        0.4652341777
    賣        自行車      37875381705        0.4902297736
    賣        公交車      37875361714        0.4902300427
    賣        飛機       37872589500        0.4902673543
    賣        買        99900              0.9999986554
    賣        賣        0                  1.0000000000
    賣        購入       99900              0.9999986554
    賣        新年       34748108109        0.5323202001
    賣        春節       34748108109        0.5323202001
    賣        丟失       7054638300         0.9050506054
    賣        補辦       524666806          0.9929384338
    賣        辦理       524674800          0.9929383262
    賣        送給       1101698201         0.9851720850
    賣        尋找       1394703900         0.9812284790
    賣        孩子       46464788700        0.3746237057
    賣        教室       38181866913        0.4861047450
    賣        教師       47246805900        0.3640984234
    賣        會計       47277869805        0.3636803298
    購入       香蕉       39729797433        0.4652709248
    購入       蘋果       39729817413        0.4652706559
    購入       白菜       39732425802        0.4652355492
    購入       水果       39729830400        0.4652704811
    購入       蔬菜       39732427800        0.4652355223
    購入       自行車      37875281805        0.4902311182
    購入       公交車      37875261814        0.4902313872
    購入       飛機       37872489600        0.4902686988
    購入       買        0                  1.0000000000
    購入       賣        99900              0.9999986554
    購入       購入       0                  1.0000000000
    購入       新年       34748008209        0.5323215446
    購入       春節       34748008209        0.5323215446
    購入       丟失       7054738200         0.9050492608
    購入       補辦       524566906          0.9929397783
    購入       辦理       524574900          0.9929396707
    購入       送給       1101798101         0.9851707404
    購入       尋找       1394803800         0.9812271344
    購入       孩子       46464688800        0.3746250503
    購入       教室       38181767013        0.4861060895
    購入       教師       47246706000        0.3640997680
    購入       會計       47277769905        0.3636816744
    新年       香蕉       4981789224         0.9329493801
    新年       蘋果       4981809204         0.9329491112
    新年       白菜       4984417593         0.9329140045
    新年       水果       4981822191         0.9329489364
    新年       蔬菜       4984419591         0.9329139777
    新年       自行車      3127273596         0.9579095735
    新年       公交車      3127253605         0.9579098426
    新年       飛機       3124481391         0.9579471542
    新年       買        34748008209        0.5323215446
    新年       賣        34748108109        0.5323202001
    新年       購入       34748008209        0.5323215446
    新年       新年       0                  1.0000000000
    新年       春節       0                  1.0000000000
    新年       丟失       41802746409        0.4373708055
    新年       補辦       34223441303        0.5393817663
    新年       辦理       34223433309        0.5393818739
    新年       送給       35849806310        0.5174922850
    新年       尋找       36142812009        0.5135486791
    新年       孩子       11716680591        0.8423035056
    新年       教室       3433758804         0.9537845449
    新年       教師       12498697791        0.8317782233
    新年       會計       12529761696        0.8313601297
    春節       香蕉       4981789224         0.9329493801
    春節       蘋果       4981809204         0.9329491112
    春節       白菜       4984417593         0.9329140045
    春節       水果       4981822191         0.9329489364
    春節       蔬菜       4984419591         0.9329139777
    春節       自行車      3127273596         0.9579095735
    春節       公交車      3127253605         0.9579098426
    春節       飛機       3124481391         0.9579471542
    春節       買        34748008209        0.5323215446
    春節       賣        34748108109        0.5323202001
    春節       購入       34748008209        0.5323215446
    春節       新年       0                  1.0000000000
    春節       春節       0                  1.0000000000
    春節       丟失       41802746409        0.4373708055
    春節       補辦       34223441303        0.5393817663
    春節       辦理       34223433309        0.5393818739
    春節       送給       35849806310        0.5174922850
    春節       尋找       36142812009        0.5135486791
    春節       孩子       11716680591        0.8423035056
    春節       教室       3433758804         0.9537845449
    春節       教師       12498697791        0.8317782233
    春節       會計       12529761696        0.8313601297
    丟失       香蕉       46784535633        0.3703201856
    丟失       蘋果       46784555613        0.3703199167
    丟失       白菜       46787164002        0.3702848100
    丟失       水果       46784568600        0.3703197419
    丟失       蔬菜       46787166000        0.3702847831
    丟失       自行車      44930020005        0.3952803790
    丟失       公交車      44930000014        0.3952806480
    丟失       飛機       44927227800        0.3953179597
    丟失       買        7054738200         0.9050492608
    丟失       賣        7054638300         0.9050506054
    丟失       購入       7054738200         0.9050492608
    丟失       新年       41802746409        0.4373708055
    丟失       春節       41802746409        0.4373708055
    丟失       丟失       0                  1.0000000000
    丟失       補辦       7579305106         0.8979890392
    丟失       辦理       7579313100         0.8979889316
    丟失       送給       5952940099         0.9198785204
    丟失       尋找       5659934400         0.9238221264
    丟失       孩子       53519427000        0.2796743111
    丟失       教室       45236505213        0.3911553504
    丟失       教師       54301444200        0.2691490288
    丟失       會計       54332508105        0.2687309352
    補辦       香蕉       39205230527        0.4723311464
    補辦       蘋果       39205250507        0.4723308775
    補辦       白菜       39207858896        0.4722957708
    補辦       水果       39205263494        0.4723307027
    補辦       蔬菜       39207860894        0.4722957440
    補辦       自行車      37350714899        0.4972913398
    補辦       公交車      37350694908        0.4972916089
    補辦       飛機       37347922694        0.4973289205
    補辦       買        524566906          0.9929397783
    補辦       賣        524666806          0.9929384338
    補辦       購入       524566906          0.9929397783
    補辦       新年       34223441303        0.5393817663
    補辦       春節       34223441303        0.5393817663
    補辦       丟失       7579305106         0.8979890392
    補辦       補辦       0                  1.0000000000
    補辦       辦理       7994               0.9999998924
    補辦       送給       1626365007         0.9781105187
    補辦       尋找       1919370706         0.9741669128
    補辦       孩子       45940121894        0.3816852719
    補辦       教室       37657200107        0.4931663112
    補辦       教師       46722139094        0.3711599896
    補辦       會計       46753202999        0.3707418960
    辦理       香蕉       39205222533        0.4723312540
    辦理       蘋果       39205242513        0.4723309851
    辦理       白菜       39207850902        0.4722958784
    辦理       水果       39205255500        0.4723308103
    辦理       蔬菜       39207852900        0.4722958515
    辦理       自行車      37350706905        0.4972914474
    辦理       公交車      37350686914        0.4972917165
    辦理       飛機       37347914700        0.4973290281
    辦理       買        524574900          0.9929396707
    辦理       賣        524674800          0.9929383262
    辦理       購入       524574900          0.9929396707
    辦理       新年       34223433309        0.5393818739
    辦理       春節       34223433309        0.5393818739
    辦理       丟失       7579313100         0.8979889316
    辦理       補辦       7994               0.9999998924
    辦理       辦理       0                  1.0000000000
    辦理       送給       1626373001         0.9781104112
    辦理       尋找       1919378700         0.9741668052
    辦理       孩子       45940113900        0.3816853795
    辦理       教室       37657192113        0.4931664188
    辦理       教師       46722131100        0.3711600972
    辦理       會計       46753195005        0.3707420036
    送給       香蕉       40831595534        0.4504416652
    送給       蘋果       40831615514        0.4504413963
    送給       白菜       40834223903        0.4504062896
    送給       水果       40831628501        0.4504412215
    送給       蔬菜       40834225901        0.4504062627
    送給       自行車      38977079906        0.4754018586
    送給       公交車      38977059915        0.4754021276
    送給       飛機       38974287701        0.4754394393
    送給       買        1101798101         0.9851707404
    送給       賣        1101698201         0.9851720850
    送給       購入       1101798101         0.9851707404
    送給       新年       35849806310        0.5174922850
    送給       春節       35849806310        0.5174922850
    送給       丟失       5952940099         0.9198785204
    送給       補辦       1626365007         0.9781105187
    送給       辦理       1626373001         0.9781104112
    送給       送給       0                  1.0000000000
    送給       尋找       293005699          0.9960563940
    送給       孩子       47566486901        0.3597957907
    送給       教室       39283565114        0.4712768299
    送給       教師       48348504101        0.3492705084
    送給       會計       48379568006        0.3488524148
    尋找       香蕉       41124601233        0.4464980592
    尋找       蘋果       41124621213        0.4464977903
    尋找       白菜       41127229602        0.4464626836
    尋找       水果       41124634200        0.4464976155
    尋找       蔬菜       41127231600        0.4464626567
    尋找       自行車      39270085605        0.4714582526
    尋找       公交車      39270065614        0.4714585217
    尋找       飛機       39267293400        0.4714958333
    尋找       買        1394803800         0.9812271344
    尋找       賣        1394703900         0.9812284790
    尋找       購入       1394803800         0.9812271344
    尋找       新年       36142812009        0.5135486791
    尋找       春節       36142812009        0.5135486791
    尋找       丟失       5659934400         0.9238221264
    尋找       補辦       1919370706         0.9741669128
    尋找       辦理       1919378700         0.9741668052
    尋找       送給       293005699          0.9960563940
    尋找       尋找       0                  1.0000000000
    尋找       孩子       47859492600        0.3558521847
    尋找       教室       39576570813        0.4673332240
    尋找       教師       48641509800        0.3453269024
    尋找       會計       48672573705        0.3449088088
    孩子       香蕉       6734891367         0.9093541255
    孩子       蘋果       6734871387         0.9093543944
    孩子       白菜       6732262998         0.9093895011
    孩子       水果       6734858400         0.9093545692
    孩子       蔬菜       6732261000         0.9093895280
    孩子       自行車      8589406995         0.8843939321
    孩子       公交車      8589426986         0.8843936631
    孩子       飛機       8592199200         0.8843563514
    孩子       買        46464688800        0.3746250503
    孩子       賣        46464788700        0.3746237057
    孩子       購入       46464688800        0.3746250503
    孩子       新年       11716680591        0.8423035056
    孩子       春節       11716680591        0.8423035056
    孩子       丟失       53519427000        0.2796743111
    孩子       補辦       45940121894        0.3816852719
    孩子       辦理       45940113900        0.3816853795
    孩子       送給       47566486901        0.3597957907
    孩子       尋找       47859492600        0.3558521847
    孩子       孩子       0                  1.0000000000
    孩子       教室       8282921787         0.8885189607
    孩子       教師       782017200          0.9894747177
    孩子       會計       813081105          0.9890566241
    教室       香蕉       1548030420         0.9791648353
    教室       蘋果       1548050400         0.9791645663
    教室       白菜       1550658789         0.9791294597
    教室       水果       1548063387         0.9791643915
    教室       蔬菜       1550660787         0.9791294328
    教室       自行車      306485208          0.9958749714
    教室       公交車      306505199          0.9958747023
    教室       飛機       309277413          0.9958373907
    教室       買        38181767013        0.4861060895
    教室       賣        38181866913        0.4861047450
    教室       購入       38181767013        0.4861060895
    教室       新年       3433758804         0.9537845449
    教室       春節       3433758804         0.9537845449
    教室       丟失       45236505213        0.3911553504
    教室       補辦       37657200107        0.4931663112
    教室       辦理       37657192113        0.4931664188
    教室       送給       39283565114        0.4712768299
    教室       尋找       39576570813        0.4673332240
    教室       孩子       8282921787         0.8885189607
    教室       教室       0                  1.0000000000
    教室       教師       9064938987         0.8779936784
    教室       會計       9096002892         0.8775755849
    教師       香蕉       7516908567         0.8988288432
    教師       蘋果       7516888587         0.8988291121
    教師       白菜       7514280198         0.8988642188
    教師       水果       7516875600         0.8988292869
    教師       蔬菜       7514278200         0.8988642457
    教師       自行車      9371424195         0.8738686498
    教師       公交車      9371444186         0.8738683807
    教師       飛機       9374216400         0.8738310691
    教師       買        47246706000        0.3640997680
    教師       賣        47246805900        0.3640984234
    教師       購入       47246706000        0.3640997680
    教師       新年       12498697791        0.8317782233
    教師       春節       12498697791        0.8317782233
    教師       丟失       54301444200        0.2691490288
    教師       補辦       46722139094        0.3711599896
    教師       辦理       46722131100        0.3711600972
    教師       送給       48348504101        0.3492705084
    教師       尋找       48641509800        0.3453269024
    教師       孩子       782017200          0.9894747177
    教師       教室       9064938987         0.8779936784
    教師       教師       0                  1.0000000000
    教師       會計       31063905           0.9995819064
    會計       香蕉       7547972472         0.8984107496
    會計       蘋果       7547952492         0.8984110185
    會計       白菜       7545344103         0.8984461252
    會計       水果       7547939505         0.8984111933
    會計       蔬菜       7545342105         0.8984461521
    會計       自行車      9402488100         0.8734505562
    會計       公交車      9402508091         0.8734502872
    會計       飛機       9405280305         0.8734129755
    會計       買        47277769905        0.3636816744
    會計       賣        47277869805        0.3636803298
    會計       購入       47277769905        0.3636816744
    會計       新年       12529761696        0.8313601297
    會計       春節       12529761696        0.8313601297
    會計       丟失       54332508105        0.2687309352
    會計       補辦       46753202999        0.3707418960
    會計       辦理       46753195005        0.3707420036
    會計       送給       48379568006        0.3488524148
    會計       尋找       48672573705        0.3449088088
    會計       孩子       813081105          0.9890566241
    會計       教室       9096002892         0.8775755849
    會計       教師       31063905           0.9995819064
    會計       會計       0                  1.0000000000
    """
    CoreSynonymDictionary = JClass("com.hankcs.hanlp.dictionary.CoreSynonymDictionary")

    word_array = [
        "香蕉",
        "蘋果",
        "白菜",
        "水果",
        "蔬菜",
        "自行車",
        "公交車",
        "飛機",
        "",
        "",
        "購入",
        "新年",
        "春節",
        "丟失",
        "補辦",
        "辦理",
        "送給",
        "尋找",
        "孩子",
        "教室",
        "教師",
        "會計",
    ]
    print("%-5s\t%-5s\t%-10s\t%-5s\n" % ("詞A", "詞B", "語義距離", "語義類似度"))
    for a in word_array:
        for b in word_array:
            print("%-5s\t%-5s\t%-15d\t%-5.10f" % (a, b, CoreSynonymDictionary.distance(a, b),
                CoreSynonymDictionary.similarity(a, b)))


if __name__ == "__main__":
    demo_word_distance()
語義距離demo_word_distance.py

 

 

8、依存句法分析

  命令爲hanlp parse,一樣支持交互模式和重定向:命令爲hanlp parse,一樣支持交互模式和重定向:

說明

  • 內部採用NeuralNetworkDependencyParser實現,用戶能夠直接調用NeuralNetworkDependencyParser.compute(sentence)
  • 也能夠調用基於ArcEager轉移系統的柱搜索依存句法分析器KBeamArcEagerDependencyParser

算法詳解

$ hanlp parse <<< '徐先生還具體幫助他肯定了把畫雄鷹、松鼠和麻雀做爲主攻目標。'         
1    徐先生    徐先生    nh    nr    _    4    主謂關係    _    _
2    還    還    d    d    _    4    狀中結構    _    _
3    具體    具體    a    a    _    4    狀中結構    _    _
4    幫助    幫助    v    v    _    0    核心關係    _    _
5    他    他    r    rr    _    4    兼語    _    _
6    肯定    肯定    v    v    _    4    動賓關係    _    _
7    了    了    u    ule    _    6    右附加關係    _    _
8    把    把    p    pba    _    15    狀中結構    _    _
9    畫    畫    v    v    _    8    介賓關係    _    _
10    雄鷹    雄鷹    n    n    _    9    動賓關係    _    _
11    、    、    wp    w    _    12    標點符號    _    _
12    松鼠    松鼠    n    n    _    10    並列關係    _    _
13    和    和    c    cc    _    14    左附加關係    _    _
14    麻雀    麻雀    n    n    _    10    並列關係    _    _
15    做爲    做爲    p    p    _    6    動賓關係    _    _
16    主攻    主攻    v    vn    _    17    定中關係    _    _
17    目標    目標    n    n    _    15    動賓關係    _    _
18    。    。    wp    w    _    4    標點符號    _    _
View Code

 

Python中實現

# 依存句法分析
print(HanLP.parseDependency("徐先生還具體幫助他肯定了把畫雄鷹、松鼠和麻雀做爲主攻目標。"))
'''
1    徐先生    徐先生    nh    nr    _    4    主謂關係    _    _
2    還    還    d    d    _    4    狀中結構    _    _
3    具體    具體    a    ad    _    4    狀中結構    _    _
4    幫助    幫助    v    v    _    0    核心關係    _    _
5    他    他    r    r    _    4    兼語    _    _
6    肯定    肯定    v    v    _    4    動賓關係    _    _
7    了    了    u    u    _    6    右附加關係    _    _
8    把    把    p    p    _    15    狀中結構    _    _
9    畫    畫    v    v    _    8    介賓關係    _    _
10    雄鷹    雄鷹    n    n    _    9    動賓關係    _    _
11    、    、    wp    w    _    12    標點符號    _    _
12    松鼠    松鼠    n    n    _    10    並列關係    _    _
13    和    和    c    c    _    14    左附加關係    _    _
14    麻雀    麻雀    n    n    _    10    並列關係    _    _
15    做爲    做爲    v    v    _    6    動賓關係    _    _
16    主攻    主攻    v    vn    _    17    定中關係    _    _
17    目標    目標    n    n    _    15    動賓關係    _    _
18    。    。    wp    w    _    4    標點符號    _    _

'''
# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_dependency_parser():
    """ 依存句法分析(CRF句法模型須要-Xms512m -Xmx512m -Xmn256m,
        MaxEnt和神經網絡句法模型須要-Xms1g -Xmx1g -Xmn512m)

    徐先生 --(主謂關係)--> 幫助
    還 --(狀中結構)--> 幫助
    具體 --(狀中結構)--> 幫助
    幫助 --(核心關係)--> ##核心##
    他 --(兼語)--> 幫助
    肯定 --(動賓關係)--> 幫助
    了 --(右附加關係)--> 肯定
    把 --(狀中結構)--> 做爲
    畫 --(介賓關係)--> 把
    雄鷹 --(動賓關係)--> 畫
    、 --(標點符號)--> 松鼠
    松鼠 --(並列關係)--> 雄鷹
    和 --(左附加關係)--> 麻雀
    麻雀 --(並列關係)--> 雄鷹
    做爲 --(動賓關係)--> 肯定
    主攻 --(定中關係)--> 目標
    目標 --(動賓關係)--> 做爲
    。 --(標點符號)--> 幫助
    <BLANKLINE>
    徐先生 --(主謂關係)--> 幫助
    還 --(狀中結構)--> 幫助
    具體 --(狀中結構)--> 幫助
    幫助 --(核心關係)--> ##核心##
    他 --(兼語)--> 幫助
    肯定 --(動賓關係)--> 幫助
    了 --(右附加關係)--> 肯定
    把 --(狀中結構)--> 做爲
    畫 --(介賓關係)--> 把
    雄鷹 --(動賓關係)--> 畫
    、 --(標點符號)--> 松鼠
    松鼠 --(並列關係)--> 雄鷹
    和 --(左附加關係)--> 麻雀
    麻雀 --(並列關係)--> 雄鷹
    做爲 --(動賓關係)--> 肯定
    主攻 --(定中關係)--> 目標
    目標 --(動賓關係)--> 做爲
    。 --(標點符號)--> 幫助
    <BLANKLINE>
    麻雀 --(並列關係)-->
    雄鷹 --(動賓關係)-->
    畫 --(介賓關係)-->
    把 --(狀中結構)-->
    做爲 --(動賓關係)-->
    肯定 --(動賓關係)-->
    幫助 --(核心關係)-->
    ##核心##
    """
    sentence = HanLP.parseDependency("徐先生還具體幫助他肯定了把畫雄鷹、松鼠和麻雀做爲主攻目標。")
    for word in sentence.iterator():  # 經過dir()能夠查看sentence的方法
        print("%s --(%s)--> %s" % (word.LEMMA, word.DEPREL, word.HEAD.LEMMA))
    print()

    # 也能夠直接拿到數組,任意順序或逆序遍歷
    word_array = sentence.getWordArray()
    for word in word_array:
        print("%s --(%s)--> %s" % (word.LEMMA, word.DEPREL, word.HEAD.LEMMA))
    print()

    # 還能夠直接遍歷子樹,從某棵子樹的某個節點一路遍歷到虛根
    CoNLLWord = JClass("com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLWord")
    head = word_array[12]
    while head.HEAD:
        head = head.HEAD
        if (head == CoNLLWord.ROOT):
            print(head.LEMMA)
        else:
            print("%s --(%s)--> " % (head.LEMMA, head.DEPREL))

if __name__ == "__main__":
    demo_dependency_parser()
依存分析demo_dendency_parser.py

 

9、NLP分詞

  調用更底層的API須要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器爲例,這個類位於包名com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer下,因此先用JClass獲得類,而後就能夠調用了:

PerceptronLexicalAnalyzer = JClass('com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer')
analyzer = PerceptronLexicalAnalyzer()
print(analyzer.analyze("上海華安工業(集團)公司董事長譚旭光和祕書胡花蕊來到美國紐約現代藝術博物館參觀"))
# [上海/ns 華安/nz 工業/n (/w 集團/n )/w 公司/n]/nt 董事長/n 譚旭光/nr 和/c 祕書/n 胡花蕊/nr 來到/v [美國紐約/ns 現代/ntc 藝術/n 博物館/n]/ns 參觀/v

print(analyzer.analyze("個人但願是但願張晚霞的背影被晚霞映紅").translateLabels()) 
# 我/代詞 的/助詞 但願/名動詞 是/動詞 但願/動詞 張晚霞/人名 的/助詞 背影/名詞 被/介詞 晚霞/名詞 映紅/動詞

print(analyzer.analyze("支援臺灣正體香港繁體:微軟公司於1975年由比爾·蓋茲和保羅·艾倫創立。")) 
# 支援/v 臺灣/ns 正體/n 香港/ns 繁體/n :/w 微軟公司/ntc 於/p 1975年/t 由/p 比爾·蓋茲/nr 和/c 保羅·艾倫/nr 創立/v 。/w

說明

  • NLP分詞NLPTokenizer會執行詞性標註和命名實體識別,由結構化感知機序列標註框架支撐。
  • 默認模型訓練自9970萬字的大型綜合語料庫,是已知範圍內全世界最大的中文分詞語料庫。語料庫規模決定實際效果,面向生產環境的語料庫應當在千萬字量級。用戶能夠在本身的語料上訓練新模型以適應新領域、識別新的命名實體。

 

10、索引分詞

說明

  • 調用更底層的API須要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器爲例,索引分詞的類位於包名com.hankcs.hanlp.tokenizer.IndexTokenizer下,先用JClass獲得類,而後就能夠調用了:
  • 索引分詞IndexTokenizer是面向搜索引擎的分詞器,可以對長詞全切分,另外經過term.offset能夠獲取單詞在文本中的偏移量。
  • 任何分詞器均可以經過基類Segment的enableIndexMode方法激活索引模式。
# # -*- coding:utf-8 -*-

from pyhanlp import *
from jpype import *


def demo_index_segment():
    """ 索引分詞
    主副食品/n [0:4]
    主副食/j [0:3]
    副食品/n [1:4]
    副食/n [1:3]
    食品/n [2:4]
    最細顆粒度切分:
    主副食品/n [0:4]
    主副食/j [0:3]
    主/ag [0:1]
    副食品/n [1:4]
    副食/n [1:3]
    副/b [1:2]
    食品/n [2:4]
    食/v [2:3]
    品/ng [3:4]
    """
    Term =JClass("com.hankcs.hanlp.seg.common.Term")
    IndexTokenizer = JClass("com.hankcs.hanlp.tokenizer.IndexTokenizer")

    term_list = IndexTokenizer.segment("主副食品")
    for term in term_list.iterator():
        print("{} [{}:{}]".format(term, term.offset, term.offset + len(term.word)))

    print("最細顆粒度切分:")
    IndexTokenizer.SEGMENT.enableIndexMode(JInt(1))  # JInt用於區分重載
    term_list = IndexTokenizer.segment("主副食品")
    for term in term_list.iterator():
        print("{} [{}:{}]".format(term, term.offset, term.offset + len(term.word)))

if __name__ == "__main__":
    demo_index_segment()
索引分詞demo_index_segment.py

 

11、N-最短路徑分詞

說明

  • 調用更底層的API須要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器爲例,N最短路徑的類位於包名com.hankcs.hanlp.seg.NShort.NShortSegment下,最短路徑的類位於包名com.hankcs.hanlp.seg.Viterbi.ViterbiSegment下,先用JClass獲得類,而後就能夠調用了
  • N最短路分詞器NShortSegment比最短路分詞器慢,可是效果稍微好一些,對命名實體識別能力更強。
  • 通常場景下最短路分詞的精度已經足夠,並且速度比N最短路分詞器快幾倍,請酌情選擇。

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_NShort_segment(sentences):
    """ N最短路徑分詞,該分詞器比最短路分詞器慢,可是效果稍微好一些,對命名實體識別能力更強

    N-最短分詞:[今天/t, ,/w, 劉志軍/nr, 案/ng, 的/ude1, 關鍵/n, 人物/n, ,/w, 山西/ns,
        女/b, 商人/nnt, 丁書苗/nr, 在/p, 市/n, 二/m, 中/f, 院/n, 出庭/vi, 受審/vi, 。/w]
    最短路分詞:[今天/t, ,/w, 劉志軍/nr, 案/ng, 的/ude1, 關鍵/n, 人物/n, ,/w, 山西/ns,
        女/b, 商人/nnt, 丁書苗/nr, 在/p, 市/n, 二/m, 中/f, 院/n, 出庭/vi, 受審/vi, 。/w]
    N-最短分詞:[江西省監獄管理局/nt, 與/cc, 中國/ns, 太平洋/ns, 財產/n, 保險/n, 股份/n,
        有限公司/nis, 南昌/ns, 中心支公司/nt, 保險/n, 合同/n, 糾紛案/nz]
    最短路分詞:[江西省監獄管理局/nt, 與/cc, 中國/ns, 太平洋/ns, 財產/n, 保險/n, 股份/n,
        有限公司/nis, 南昌/ns, 中心支公司/nt, 保險/n, 合同/n, 糾紛案/nz]
    N-最短分詞:[新北商貿有限公司/nt]
    最短路分詞:[新北商貿有限公司/nt]
    """
    NShortSegment = JClass("com.hankcs.hanlp.seg.NShort.NShortSegment")
    Segment = JClass("com.hankcs.hanlp.seg.Segment")
    ViterbiSegment = JClass("com.hankcs.hanlp.seg.Viterbi.ViterbiSegment")

    nshort_segment = NShortSegment().enableCustomDictionary(False).enablePlaceRecognize(
        True).enableOrganizationRecognize(True)
    shortest_segment = ViterbiSegment().enableCustomDictionary(
        False).enablePlaceRecognize(True).enableOrganizationRecognize(True)

    for sentence in sentences:
        print("N-最短分詞:{} \n最短路分詞:{}".format(
            nshort_segment.seg(sentence), shortest_segment.seg(sentence)))


if __name__ == "__main__":
    sentences = [
        "今天,劉志軍案的關鍵人物,山西女商人丁書苗在市二中院出庭受審。",
        "江西省監獄管理局與中國太平洋財產保險股份有限公司南昌中心支公司保險合同糾紛案",
        "新北商貿有限公司",
        ]
    demo_NShort_segment(sentences)
N最短路徑分詞Nshort_segment.py

 

12、CRF分詞

說明

  • 調用更底層的API須要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器爲例,CRF分詞的類位於包名com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer下,先用JClass獲得類,而後就能夠調用了
  • CRF對新詞有很好的識別能力,可是開銷較大。

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_CRF_lexical_analyzer(tests):
    """ CRF詞法分析器

    商品/n 和/c 服務/vn
    [上海/ns 華安/nz 工業/n (/n 集團/n )/v 公司/n]/nt 董事長/n 譚旭光/nr 和/c 祕書/n
        胡花蕊/nr 來到/v [美國/ns 紐約/ns 現代/t 藝術/n 博物館/n]/ns 參觀/v
    [微軟/nt 公司/n]/nt 於/p 1975年/t 由/p 比爾·蓋茲/n 和/c 保羅·艾倫/v 創立/v ,/v
        18年/n 啟動/v 以/p 智慧/n 雲端/n 、/v 前端/n 為/v 導向/n 的/u 大/a 改組/vn 。/w
    """
    CRFLexicalAnalyzer = JClass("com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer")
    analyzer = CRFLexicalAnalyzer()
    for sentence in tests:
        print(analyzer.analyze(sentence))


if __name__ == "__main__":
    sentences = ["商品和服務",
        "上海華安工業(集團)公司董事長譚旭光和祕書胡花蕊來到美國紐約現代藝術博物館參觀",
         "微軟公司於1975年由比爾·蓋茲和保羅·艾倫創立,18年啟動以智慧雲端、前端為導向的大改組。"
         ]
    demo_CRF_lexical_analyzer(sentences)
CRF分詞CRF_segment.py

 

十3、極速詞典分詞

說明

  • 調用更底層的API須要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器爲例,極速字典分詞的類位於包名com.hankcs.hanlp.tokenizer.SpeedTokenizer下,先用JClass獲得類,而後就能夠調用了
  • 極速分詞是詞典最長分詞,速度極其快,精度通常。
  • 在i7-6700K上跑出了4500萬字每秒的速度。

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *
import time


def demo_high_speed_segment():
    """ 演示極速分詞,基於DoubleArrayTrie實現的詞典正向最長分詞,適用於「高吞吐量」「精度通常」的場合

    [江西, 鄱陽湖, 乾枯, ,, 中國, 最大, 淡水湖, 變成, 大草原]
    SpeedTokenizer分詞速度:1253607.32字每秒
    """
    SpeedTokenizer = JClass("com.hankcs.hanlp.tokenizer.SpeedTokenizer")
    text = "江西鄱陽湖乾枯,中國最大淡水湖變成大草原"
    JClass("com.hankcs.hanlp.HanLP$Config").ShowTermNature = False
    print(SpeedTokenizer.segment(text))

    start = time.time()
    pressure = 1000000
    for i in range(pressure):
        SpeedTokenizer.segment(text)
    cost_time = time.time() - start
    print("SpeedTokenizer分詞速度:%.2f字每秒" % (len(text) * pressure / cost_time))


if __name__ == "__main__":
    demo_high_speed_segment()
極速詞典分詞demo_high_speed_segment.py

 

十4、用戶自定義詞典

說明

  • 調用更底層的API須要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器爲例,用戶自定義詞典的類位於包名com.hankcs.hanlp.dictionary.CustomDictionary下,先用JClass獲得類,而後就能夠調用了
  • CustomDictionary是一份全局的用戶自定義詞典,能夠隨時增刪,影響所有分詞器。另外能夠在任何分詞器中關閉它。經過代碼動態增刪不會保存到詞典文件。
  • 中文分詞≠詞典,詞典沒法解決中文分詞,Segment提供高低優先級應對不一樣場景,請參考FAQ

追加詞典

  • CustomDictionary主詞典文本路徑是data/dictionary/custom/CustomDictionary.txt,用戶能夠在此增長本身的詞語(不推薦);也能夠單獨新建一個文本文件,經過配置文件CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 個人詞典.txt;來追加詞典(推薦)。
  • 始終建議將相同詞性的詞語放到同一個詞典文件裏,便於維護和分享。

詞典格式

  • 每一行表明一個單詞,格式聽從[單詞] [詞性A] [A的頻次] [詞性B] [B的頻次] ... 若是不填詞性則表示採用詞典的默認詞性。
  • 詞典的默認詞性默認是名詞n,能夠經過配置文件修改:全國地名大全.txt ns;若是詞典路徑後面空格緊接着詞性,則該詞典默認是該詞性。
  • 在統計分詞中,並不保證自定義詞典中的詞必定被切分出來。用戶可在理解後果的狀況下經過強制生效。
  • 關於用戶詞典的更多信息請參考詞典說明一章。

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_custom_dictionary(text):
    """ 演示用戶詞典的動態增刪
    TO-DO:
    DoubleArrayTrie分詞
    首字哈希以後二分的trie樹分詞

    [攻城/vi, 獅/ng, 逆襲/nz, 單身/n, 狗/n, ,/w, 迎娶/v, 白富美/nr, ,/w, 走上/v, 人生/n, 巔峯/n]
    [攻城獅/nz, 逆襲/nz, 單身狗/nz, ,/w, 迎娶/v, 白富美/nz, ,/w, 走上/v, 人生/n, 巔峯/n]
    """
    print(HanLP.segment(text))

    CustomDictionary = JClass("com.hankcs.hanlp.dictionary.CustomDictionary")
    CustomDictionary.add("攻城獅")  # 動態增長
    CustomDictionary.insert("白富美", "nz 1024")  # 強行插入
    #CustomDictionary.remove("攻城獅"); # 刪除詞語(註釋掉試試)
    CustomDictionary.add("單身狗", "nz 1024 n 1")
    #print(CustomDictionary.get("單身狗"))

    print(HanLP.segment(text))


if __name__ == "__main__":
    text = "攻城獅逆襲單身狗,迎娶白富美,走上人生巔峯"
    demo_custom_dictionary(text)
自定義詞典demo_custom_dictionary.py

 

十5、中國人名識別

說明

  • 目前分詞器基本上都默認開啓了中國人名識別,好比HanLP.segment()接口中使用的分詞器等等,用戶沒必要手動開啓;上面的代碼只是爲了強調。
  • 有必定的誤命中率,好比誤命中關鍵年,則能夠經過在data/dictionary/person/nr.txt加入一條關鍵年 A 1來排除關鍵年做爲人名的可能性,也能夠將關鍵年做爲新詞登記到自定義詞典中。
  • 建議NLP用戶使用感知機或CRF詞法分析器,精度更高。

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *

def demo_chinese_name_recognition(sentences):
    """ 中國人名識別

    [簽約/vi, 儀式/n, 前/f, ,/w, 秦光榮/nr, 、/w, 李紀恆/nr, 、/w, 仇和/nr, 等/udeng, 一同/d, 會見/v, 了/ule, 參加/v, 簽約/vi, 的/ude1, 企業家/nnt, 。/w]
    [武大靖/nr, 創/v, 世界紀錄/nz, 奪冠/vi, ,/w, 中國表明團/nt, 平昌/ns, 首金/n]
    [區長/nnt, 莊木弟/nr, 新年/t, 致辭/vi]
    [朱立倫/nr, :/w, 兩岸/n, 都/d, 但願/v, 共創/v, 共贏/n,  /w, 習/v, 朱/ag, 歷史/n, 會晤/vn, 在即/vi]
    [陝西/ns, 首富/n, 吳一堅/nr, 被/pbei, 帶走/v,  /w, 與/cc, 令計劃/nr, 妻子/n, 有/vyou, 交集/v]
    [據/p, 美國之音/n, 電臺/nis, 網站/n, 4/m, 月/n, 28/m, 日/b, 報道/v, ,/w, 8/m, 歲/qt, 的/ude1, 凱瑟琳·克羅爾/nrf, (/w, 鳳甫娟/nr, )/w, 和/cc, 不少/m, 華裔/n, 美國/nsf, 小朋友/n, 同樣/uyy, ,/w, 小小年紀/n, 就/d, 開始/v, 學/v, 小提琴/n, 了/ule, 。/w, 她/rr, 的/ude1, 媽媽/n, 是/vshi, 位/q, 虎媽/nz, 麼/y, ?/w]
    [凱瑟琳/nrf, 和/cc, 露西/nrf, (/w, 廬瑞媛/nr, )/w, ,/w, 跟/p, 她們/rr, 的/ude1, 哥哥/n, 們/k, 有/vyou, 一些/m, 不一樣/a, 。/w]
    [王國強/nr, 、/w, 高峯/n, 、/w, 汪洋/n, 、/w, 張朝陽/nr, 光着頭/l, 、/w, 韓寒/nr, 、/w, 小/a, 四/m]
    [張浩/nr, 和/cc, 胡健康/nr, 復員/v, 回家/vi, 了/ule]
    [王總/nr, 和/cc, 小麗/nr, 結婚/vi, 了/ule]
    [編劇/nnt, 邵鈞林/nr, 和/cc, 稽道青/nr, 說/v]
    [這裏/rzs, 有/vyou, 關天培/nr, 的/ude1, 有關/vn, 事蹟/n]
    [龔學平/nr, 等/udeng, 領導/n, 說/v, ,/w, 鄧穎超/nr, 生前/t, 杜絕/v, 超生/vi]
    """
    segment = HanLP.newSegment().enableNameRecognize(True);
    for sentence in sentences:
        term_list = segment.seg(sentence)
        print(term_list)

if __name__ == "__main__":
    sentences = [
       "簽約儀式前,秦光榮、李紀恆、仇和等一同會見了參加簽約的企業家。",
       "武大靖創世界紀錄奪冠,中國表明團平昌首金",
       "區長莊木弟新年致辭",
       "朱立倫:兩岸都但願共創共贏 習朱歷史會晤在即",
       "陝西首富吳一堅被帶走 與令計劃妻子有交集",
       "據美國之音電臺網站4月28日報道,8歲的凱瑟琳·克羅爾(鳳甫娟)和不少華裔美國小朋友同樣,小小年紀就開始學小提琴了。她的媽媽是位虎媽麼?",
       "凱瑟琳和露西(廬瑞媛),跟她們的哥哥們有一些不一樣。",
       "王國強、高峯、汪洋、張朝陽光着頭、韓寒、小四",
       "張浩和胡健康復員回家了",
       "王總和小麗結婚了",
       "編劇邵鈞林和稽道青說",
       "這裏有關天培的有關事蹟",
       "龔學平等領導說,鄧穎超生前杜絕超生",]
    demo_chinese_name_recognition(sentences)
中國人名識別demo_chinese_recognition.py

 

十6、音譯人名識別

說明

  • 目前分詞器基本上都默認開啓了音譯人名識別,用戶沒必要手動開啓

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_translated_name_recognition(sentences):
    """ 音譯人名識別

    [一桶/nz, 冰水/n, 當頭/vi, 倒下/v, ,/w, 微軟/ntc, 的/ude1, 比爾蓋茨/nrf, 、/w,
        Facebook/nx, 的/ude1, 扎克伯格/nrf, 跟/p, 桑德博格/nrf, 、/w, 亞馬遜/nrf, 的/ude1,
        貝索斯/nrf, 、/w, 蘋果/nf, 的/ude1, 庫克/nrf, 全都/d, 不惜/v, 溼身/nz, 入鏡/nz, ,/w,
        這些/rz, 硅谷/ns, 的/ude1, 科技/n, 人/n, ,/w, 飛蛾撲火/nz, 似地/d, 犧牲/v,
        演出/vn, ,/w, 其實/d, 全/a, 爲了/p, 慈善/a, 。/w]
    [世界/n, 上/f, 最長/d, 的/ude1, 姓名/n, 是/vshi,
        簡森·喬伊·亞歷山大·比基·卡利斯勒·達夫·埃利奧特·福克斯·伊維魯莫·馬爾尼·梅爾斯·帕特森·湯普森·華萊士·普雷斯頓/nrf, 。/w]
    """
    segment = HanLP.newSegment().enableTranslatedNameRecognize(True)
    for sentence in sentences:
        term_list = segment.seg(sentence)
        print(term_list)

if __name__ == "__main__":
    sentences = [
        "一桶冰水當頭倒下,微軟的比爾蓋茨、Facebook的扎克伯格跟桑德博格、亞馬遜的貝索斯、蘋果的庫克全都不惜溼身入鏡,這些硅谷的科技人,飛蛾撲火似地犧牲演出,其實全爲了慈善。",
        "世界上最長的姓名是簡森·喬伊·亞歷山大·比基·卡利斯勒·達夫·埃利奧特·福克斯·伊維魯莫·馬爾尼·梅爾斯·帕特森·湯普森·華萊士·普雷斯頓。",
    ]
    demo_translated_name_recognition(sentences)
音譯人名識別demo_translated_name_recognition.py

 

十7、日本人名識別

說明

  • 目前標準分詞器默認關閉了日本人名識別,用戶須要手動開啓;這是由於日本人名的出現頻率較低,可是又消耗性能

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_japanese_name_recognition(sentences):
    """ 日本人名識別

    [北川景子/nrj, 參演/v, 了/ule, 林詣彬/nr, 導演/nnt, 的/ude1, 《/w, 速度/n, 與/cc, 激情/n, 3/m, 》/w]
    [林志玲/nr, 亮相/vi, 網友/n, :/w, 肯定/v, 不是/c, 波多野結衣/nrj, ?/w]
    [龜山千廣/nrj, 和/cc, 近藤公園/nrj, 在/p, 龜山/nz, 公園/n, 裏/f, 喝酒/vi, 賞花/nz]
    """
    Segment = JClass("com.hankcs.hanlp.seg.Segment")
    Term = JClass("com.hankcs.hanlp.seg.common.Term")

    segment = HanLP.newSegment().enableJapaneseNameRecognize(True)
    for sentence in sentences:
        term_list = segment.seg(sentence)
        print(term_list)


if __name__ == "__main__":
    sentences =[
       "北川景子參演了林詣彬導演的《速度與激情3》",
       "林志玲亮相網友:肯定不是波多野結衣?",
       "龜山千廣和近藤公園在龜山公園裏喝酒賞花",
    ]
    demo_japanese_name_recognition(sentences)
日本人名識別demo_japanese_name_recognition.py

 

十8、地名識別

說明

  • 目前標準分詞器都默認關閉了地名識別,用戶須要手動開啓;這是由於消耗性能,其實多數地名都收錄在核心詞典和用戶自定義詞典中。
  • 在生產環境中,能靠詞典解決的問題就靠詞典解決,這是最高效穩定的方法。
  • 建議對命名實體識別要求較高的用戶使用感知機詞法分析器

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_place_recognition(sentences):
    """ 地名識別

    [藍翔/nt, 給/p, 寧夏/ns, 固原市/ns, 彭陽縣/ns, 紅河鎮/ns, 黑牛溝村/ns, 捐贈/v, 了/ule, 挖掘機/n]
    """
    Segment = JClass("com.hankcs.hanlp.seg.Segment")
    Term = JClass("com.hankcs.hanlp.seg.common.Term")

    segment = HanLP.newSegment().enablePlaceRecognize(True)
    for sentence in sentences:
        term_list = segment.seg(sentence)
        print(term_list)


if __name__ == "__main__":
    sentences = ["藍翔給寧夏固原市彭陽縣紅河鎮黑牛溝村捐贈了挖掘機"]
    demo_place_recognition(sentences)
地名識別demo_place_recognition.py

 

十9、機構名識別

說明

  • 目前分詞器默認關閉了機構名識別,用戶須要手動開啓;這是由於消耗性能,其實經常使用機構名都收錄在核心詞典和用戶自定義詞典中。
  • HanLP的目的不是演示動態識別,在生產環境中,能靠詞典解決的問題就靠詞典解決,這是最高效穩定的方法。
  • 建議對命名實體識別要求較高的用戶使用感知機詞法分析器

算法詳解

# # -*- coding:utf-8 -*-

from pyhanlp import *


def demo_organization_recognition(sentences):
    """ 機構名識別

    [我/rr, 在/p, 上海/ns, 林原科技有限公司/nt, 兼職/vn, 工做/vn, ,/w]
    [我/rr, 常常/d, 在/p, 臺川喜宴餐廳/nt, 吃飯/vi, ,/w]
    [偶爾/d, 去/vf, 開元地中海影城/nt, 看/v, 電影/n, 。/w]
    """
    Segment = JClass("com.hankcs.hanlp.seg.Segment")
    Term = JClass("com.hankcs.hanlp.seg.common.Term")

    segment = HanLP.newSegment().enableOrganizationRecognize(True)
    for sentence in sentences:
        term_list = segment.seg(sentence)
        print(term_list)


if __name__ == "__main__":
    sentences = [
       "我在上海林原科技有限公司兼職工做,",
       "我常常在臺川喜宴餐廳吃飯,",
       "偶爾去開元地中海影城看電影。",
    ]
    demo_organization_recognition(sentences)
機構名識別demo_organization_recognition.py

 

服務器

  經過hanlp serve來啓動內置的http服務器,默認本地訪問地址爲:http://localhost:8765 ;也能夠訪問官網演示頁面:http://hanlp.hankcs.com/

 

與其餘項目共享data

  HanLP具有高度可自定義的特色,全部模型和詞典均可以自由替換。若是你但願與別的項目共享同一套data,只需將該項目的配置文件hanlp.properties拷貝到pyhanlp的安裝目錄下便可。本機安裝目錄能夠經過hanlp --version獲取。

同時,還能夠經過--config臨時加載另外一個配置文件:

hanlp segment --config path/to/another/hanlp.properties

 

 

 

 

 

參考:https://github.com/hankcs/pyhanlp

參考:https://github.com/hankcs/HanLP/blob/master/README.md

相關文章
相關標籤/搜索