空間分析:4-1.分詞模型hanLP簡介與安裝

吳道簡map發表於2020-11-28

自然語言處理NLP相對來說,是比較火的方向,分詞模型很多,選起來容易眼花繚亂,我最開始使用過結巴分詞,簡單易用。後來又看到了hanLP,介紹上說,它是用《人民日報》語料庫訓練的,深得我心,於是拿來用用。

hanLP的git連線:https://github.com/hankcs/HanLP/

hanLP的官網:https://www.hanlp.com/

一、anaconda安裝Python3.6

因為hanlp依賴TensorFlow,但TensorFlow不支援Python3.6以上版本,所以我們需要先有一個Python3.6的環境。

但社群版pycharm不支援直接從conda直接建立Python環境,所以乾脆直接安裝一個anaconda吧!

我們在映象網址,下載一個版本號吻合的anaconda:

https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

我選擇的安裝檔案是:Anaconda3-5.2.0-Windows-x86_64.exe,適合Python3.6版本。

開啟exe,一直next,直到安裝,仔細觀察進度條,會發現上面有Extract:Python-3.6.5的標識,說明我們安裝的這個anaconda是Python3.6的。

安裝的過程中,記住安裝路徑。

 

安裝會比較慢,耐心等待即可。

到後面會提示Install Microsoft VSCode,因為我們使用的是pycharm,所以點選skip就行。

 

最後點選finsh就行,兩個learn的核取方塊,可以取消勾選。

 

二、pycharm配置Python3.6

我們已經安裝完anaconda,並自帶的Python3.6了,現在只要把它們配置到pycharm裡就行了。

開啟pycharm,+New Project,新建一個工程fenci。

 

 

File——Settings,快捷鍵ctrl+alt+s。開啟Settings配置。

在Settings對話方塊,Project:fenci中的Python Interpreter中,點選show All。

 

在Python Interpreter中點選+。

 

在Add Python Interpreter中,選擇Virtualenv Environment,勾選 Existing environment,Interpreter選擇anaconda3安裝目錄下的python.exe。點選ok。

 

一路ok回去,能看到anaconda下的Python已經預裝了好多包,這麼多包,覺得自己還可以搞點別的事兒。

 

 

三、安裝hanLP

安裝hanlp的時候,就能直接把tensorflow安裝上。

以管理員身份,開啟cmd。

一路切換到anaconda3安裝目錄下的scripts資料夾,既pip所在的資料夾,如C:\Users\**\Anaconda3\Scripts。

輸入pip install pyhanlp。

安裝完成後,下載https://file.hankcs.com/hanlp/data-for-1.7.5.zip ,下載完成後,將data-for-1.7.5.zip重新命名為data-for-1.7.8.zip,放在資料夾C:\Users\**\Anaconda3\Lib\site-packages\pyhanlp\static。

 

我們安裝的是hanlp1.x版本,因為電腦配置不夠的話,安裝hanlp2.x版本會失敗。

但是hanlp1.x版本,依賴java環境。具體可參加:https://github.com/hankcs/pyhanlp

但如果電腦比較新,配置比較給力,尤其是ios或linux作業系統,可以安裝hanlp2.x版本,pip install hanlp。

一次能安裝成功,是運氣。

如果安裝不成功,遇到什麼問題解決什麼問題吧。

我遇到過的部分問題羅列如下:

1.沒有wrapt:

報錯:Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

因為報這個錯,安裝就退出了,所以必須解決。

那就安裝一個wrapt,--igonre-installed,是忽略已安裝版本。

pip install wrapt --ignore-installed

2.升級pip

警告:You are using pip version 10.0.1, however version 20.3b1 is available.

升級pip:pip install --upgrade pip

3.沒有msgpack

警告:distributed 1.21.8 requires msgpack, which is not installed.

安裝msgback:pip install msgback

4.tensorflow沒有Microsoft Visual C++環境

在Microsoft網站上下載vc的安裝包,選擇電腦作業系統版本相對應安裝檔案,點選next。

https://www.microsoft.com/zh-CN/download/details.aspx?id=53587

 

檔案下載好了,直接安裝即可。

如果安裝失敗,可能是有版本衝突,去控制皮膚——程式——程式和功能,將其他版本的Microsoft Visual C++都解除安裝掉,重新安裝。

5.numpy版本高

解除安裝numpy,重新安裝。

pip uninstall numpy

pip install numpy==1.16.0

6.header與library版本不統一

解除安裝h5py,重新安裝。

pip uninstall h5py

pip install h5py

 

 

四、測試

 

官方的測試指令碼:

from pyhanlp import *
print(HanLP.segment('你好,歡迎在Python中呼叫HanLP的API'))

執行,在控制檯上,會列印出:

[你好/vl, ,/w, 歡迎/v, 在/p, Python/nx, 中/f, 呼叫/v, HanLP/nx, 的/ude1, API/nx]

說明執行成功了。

文字後面的標籤,是詞性標註,詞性標註可參見:

http://www.hankcs.com/nlp/part-of-speech-tagging.html#h2-8

 

五、房源描述屬性詞頻統計

測試通過後,我們就要根據自己的需求進行指令碼編寫了。

我要做的是,統計房源描述的詞頻。

指令碼如下:

 

from pyhanlp import *

f = open(r'beikefangyuanall.txt','r',encoding='utf-8')

flines = f.readlines()

result = {}

for idx,line in enumerate(flines):

    # if idx>10:

    #     break

    # 每條記錄長這樣: 朝陽  北京朝陽在售二手房  /ershoufang/chaoyang/  芍藥居北里 2003年商品房,小區中間,帶電梯    https://bj.ke.com/ershoufang/101107773062.html 芍藥居北里  https://bj.ke.com/xiaoqu/1111027379657/    中樓層(共24層)|2003年建|2室1廳|91.69平米|西    706萬   單價76998.6元/平米  44人關注/4月前釋出    近地鐵|VR看裝修  116.435619 39.986142

    segs = HanLP.segment(line.strip('\n').split('\t')[3])

    for term in segs:

        if not result.__contains__(term.word):

            result[term.word] = 1

        else:

            result[term.word] += 1

result_sort = sorted(result.items(),key=lambda item:item[1],reverse=True)

fnew = open(r'cipin.txt','a',encoding='utf-8')

for r in result_sort:

    fnew.write(r[0]+'\t'+str(r[1])+'\n')

f.close()

fnew.close()

 

結果如下,對統計出來的詞頻進行了正序排列:

 

南北通透,滿五唯一、好樓層,大概是最多的描述詞彙了,跟我們的生活經驗是相符的,很好。

 

六、總結

總的來說,指令碼不難寫,比較麻煩的是安裝包、配環境,需要花些心思。

簡單的詞頻統計,調包就行,但有定製化的需求,可能需要重新訓練模型了。

 

 

相關文章