安裝stanfornlp

準備條件 win10 + jdk8(java安裝包) + anaconda3

• 1)安裝stanford nlp自然語言處理包: pip install stanfordcorenlp

• 2)下載Stanford CoreNLP文件

https://stanfordnlp.github.io/CoreNLP/download.html

下載的文件件爲:stanford-corenlp-full-2016-10-31的壓縮包

把解壓後的stanford-corenlp-full-2016-10-31重命名爲Stanford CoreNLP

• 3)下載中文模型jar包, http://nlp.stanford.edu/software/stanford-chinesecorenlp-2018-02-27-models.jar,

• 4)將上一步下載的stanford-chinese-corenlp2018-02-27-models.jar放在Stanford CoreNLP文件夾內

• 5)在Python中引用模型:

• from stanfordcorenlp import StanfordCoreNLP

• nlp = StanfordCoreNLP(r‘path’, lang=‘zh’)

說明:

–path 爲Stanford CoreNLP文件夾目錄

由於本機的內存過小,加載stanfordnlp所需要的內存需要8G,而本機內存只有4G,根本無法讀取,所以只是把代碼複製在編譯器裏,並沒有執行。

安裝hanlp

• 1、安裝Java和Visual C++:我裝的是Java 1.8和Visual C++ 2015。

• 2、安裝Jpype,conda install -c conda-forge jpype1

• 3、測試是否按照成功:

from jpype import *

startJVM(getDefaultJVMPath(), “-ea”)

java.lang.System.out.println(“Hello World”)

shutdownJVM()

安裝所需附件:

path:E:\所需軟件\安裝stanfordnlp所需組件

配置

• 1)下載hanlp.jar包: https://github.com/hankcs/HanLP

• 2、下載data.zip:https://github.com/hankcs/HanLP/releases中

http://hanlp.linrunsoft.com/release/data-for-1.7.0.zip後解壓數據

包。

• 3、配置文件

• 示例配置文件:hanlp.properties

• 配置文件的作用是告訴HanLP數據包的位置,只需修改第一行:

root=usr/home/HanLP/

• 比如data目錄是D:/hnlp/hanlp_code/hanlp,那麼

root=D:/hnlp/hanlp_code/hanlp

startJVM(getDefaultJVMPath(), “-Djava.class.path=D:\hnlp\hanlp_code\hanlp\hanlp-1.5.0.jar;D:\hnlp\hanlp_code\hanlp”

“-Xms1g”,

“-Xmx1g”)

啓動JVM,Linux需替換分號;爲冒號:分號前後有兩個目錄,一個是hanlp的Jar包路徑,一個是它的上級目錄路徑

2.-Xms1g代表給文件分配的內存爲1g

3. 路徑設置爲hanlp安裝的路徑,不能帶有中文字符

代碼示例:

#-- coding:utf-8 --

from jpype import *

startJVM(getDefaultJVMPath(), “-Djava.class.path=D:\hnlp\hanlp_code\hanlp\hanlp-1.5.0.jar;D:\hnlp\hanlp_code\hanlp”,

“-Xms1g”,

“-Xmx1g”) # 啓動JVM,Linux需替換分號;爲冒號:

print("=" * 30 + “HanLP分詞” + “=” * 30)

HanLP = JClass(‘com.hankcs.hanlp.HanLP’)

中文分詞

print(HanLP.segment(‘你好,歡迎在Python中調用HanLP的API’))

print("-" * 70)

print("=" * 30 + “標準分詞” + “=” * 30)

StandardTokenizer = JClass(‘com.hankcs.hanlp.tokenizer.StandardTokenizer’)

print(StandardTokenizer.segment(‘你好,歡迎在Python中調用HanLP的API’))

print("-" * 70)

NLP分詞NLPTokenizer會執行全部命名實體識別和詞性標註

print("=" * 30 + “NLP分詞” + “=” * 30)

NLPTokenizer = JClass(‘com.hankcs.hanlp.tokenizer.NLPTokenizer’)

print(NLPTokenizer.segment(‘中國科學院計算技術研究所的宗成慶教授正在教授自然語言處理課程’))

print("-" * 70)

print("=" * 30 + “索引分詞” + “=” * 30)

IndexTokenizer = JClass(‘com.hankcs.hanlp.tokenizer.IndexTokenizer’)

termList = IndexTokenizer.segment(“主副食品”);

for term in termList:

print(str(term) + " [" + str(term.offset) + “:” + str(term.offset + len(term.word)) + “]”)

print("-" * 70)

print("=" * 30 + " CRF分詞" + “=” * 30)

print("-" * 70)

print("=" * 30 + " 極速詞典分詞" + “=” * 30)

SpeedTokenizer = JClass(‘com.hankcs.hanlp.tokenizer.SpeedTokenizer’)

print(NLPTokenizer.segment(‘江西鄱陽湖乾枯,中國最大淡水湖變成大草原’))

print("-" * 70)

print("=" * 30 + " 自定義分詞" + “=” * 30)

CustomDictionary = JClass(‘com.hankcs.hanlp.dictionary.CustomDictionary’)

CustomDictionary.add(‘攻城獅’)

CustomDictionary.add(‘單身狗’)

HanLP = JClass(‘com.hankcs.hanlp.HanLP’)

print(HanLP.segment(‘攻城獅逆襲單身狗,迎娶白富美,走上人生巔峯’))

print("-" * 70)

print("=" * 20 + “命名實體識別與詞性標註” + “=” * 30)

NLPTokenizer = JClass(‘com.hankcs.hanlp.tokenizer.NLPTokenizer’)

print(NLPTokenizer.segment(‘中國科學院計算技術研究所的宗成慶教授正在教授自然語言處理課程’))

print("-" * 70)

document = “水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發佈會上透露,”

“根據剛剛完成了水資源管理制度的考覈,有部分省接近了紅線的指標,”

“有部分省超過紅線的指標。對一些超過紅線的地方,陳明忠表示,對一些取用水項目進行區域的限批,”

“嚴格地進行水資源論證和取水許可的批准。”

print("=" * 30 + “關鍵詞提取” + “=” * 30)

print(HanLP.extractKeyword(document, 8))

print("-" * 70)

print("=" * 30 + “自動摘要” + “=” * 30)

print(HanLP.extractSummary(document, 3))

print("-" * 70)

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

print("=" * 30 + “短語提取” + “=” * 30)

print(HanLP.extractPhrase(text, 10))

print("-" * 70)

shutdownJVM()

查看原文 >>
相關文章