1. 程式人生 > >Python中呼叫自然語言處理工具HanLP手記

Python中呼叫自然語言處理工具HanLP手記

HanLP方法封裝類:
1. # -*- coding:utf-8 -*-
2. # Filename: main.py
3.
4.from jpype import *
5. 
5.startJVM(getDefaultJVMPath(), "-Djava.class.path=C:\hanlp\hanlp-1.3.2.jar;C:\hanlp", "-Xms1g", "-Xmx1g") # 啟動JVM,Linux需替換分號;為冒號:
7.
8.print("="*30+"HanLP分詞"+"="*30)
9.HanLP = JClass('com.hankcs.hanlp.HanLP')
10.# 中文分詞
11.print(HanLP.segment('你好,歡迎在Python中呼叫HanLP的API'))
12.print("-"*70)
13. 
14.  print("="*30+"標準分詞"+"="*30)
15. StandardTokenizer = JClass('com.hankcs.hanlp.tokenizer.StandardTokenizer')
16. print(StandardTokenizer.segment('你好,歡迎在Python中呼叫HanLP的API'))
17. print("-"*70)
18. 
19.# NLP分詞NLPTokenizer會執行全部命名實體識別和詞性標註
20.print("="*30+"NLP分詞"+"="*30)
21.NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
22.print(NLPTokenizer.segment('中國科學院計算技術研究所的宗成慶教授正在教授自然語言處理課程'))
23.print("-"*70)
24.
25.  print("="*30+"索引分詞"+"="*30)
26. IndexTokenizer = JClass('com.hankcs.hanlp.tokenizer.IndexTokenizer')
27. termList= IndexTokenizer.segment("主副食品");
28. for term in termList :
29.  print(str(term) + " [" + str(term.offset) + ":" + str(term.offset + len(term.word)) + "]")
30. print("-"*70)
31.
32. 
33.print("="*30+" N-最短路徑分詞"+"="*30)
34.# CRFSegment = JClass('com.hankcs.hanlp.seg.CRF.CRFSegment')
35.# segment=CRFSegment()
36.# testCase ="今天,劉志軍案的關鍵人物,山西女商人丁書苗在市二中院出庭受審。"
37.# print(segment.seg("你看過穆赫蘭道嗎"))
38.print("-"*70)
39.
40.
41.print("="*30+" CRF分詞"+"="*30)
42.print("-"*70)
43.
44.  print("="*30+" 極速詞典分詞"+"="*30)
45. SpeedTokenizer = JClass('com.hankcs.hanlp.tokenizer.SpeedTokenizer')
46. print(NLPTokenizer.segment('江西鄱陽湖乾枯,中國最大淡水湖變成大草原'))
47. print("-"*70)
48. 
49.print("="*30+" 自定義分詞"+"="*30)
50.CustomDictionary = JClass('com.hankcs.hanlp.dictionary.CustomDictionary')
51.CustomDictionary.add('攻城獅')
52.CustomDictionary.add('單身狗')
53.HanLP = JClass('com.hankcs.hanlp.HanLP')
54.print(HanLP.segment('攻城獅逆襲單身狗,迎娶白富美,走上人生巔峰'))
55.print("-"*70)
56. 
57 . print("="*20+"命名實體識別與詞性標註"+"="*30)
58.NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
59.print(NLPTokenizer.segment('中國科學院計算技術研究所的宗成慶教授正在教授自然語言處理課程'))
60.print("-"*70)
61. 
62. 
63.document = "水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞釋出會上透露," \
64.           "根據剛剛完成了水資源管理制度的考核,有部分省接近了紅線的指標," \
65.           "有部分省超過紅線的指標。對一些超過紅線的地方,陳明忠表示,對一些取用水專案進行區域的限批," \
66.           "嚴格地進行水資源論證和取水許可的批准。"
67. print("="*30+"關鍵詞提取"+"="*30)
68. print(HanLP.extractKeyword(document, 8))
69. print("-"*70)
70. 
71. 
72.print("="*30+"自動摘要"+"="*30)
73.print(HanLP.extractSummary(document, 3))
74.print("-"*70)
75. 
76. 
77.# print("="*30+"地名識別"+"="*30)
78.# HanLP = JClass('com.hankcs.hanlp.HanLP')
79.# segment = HanLP.newSegment().enablePlaceRecognize(true)
80.# testCase=["武勝縣新學鄉政府大樓門前鑼鼓喧天",
81.#         "藍翔給寧夏固原市彭陽縣紅河鎮黑牛溝村捐贈了挖掘機"]
82.# for sentence in testCase :
83.#   print(HanLP.segment(sentence))
84.# print("-"*70)
85. 
86.  # print("="*30+"依存句法分析"+"="*30)
87. # print(HanLP.parseDependency("徐先生還具體幫助他確定了把畫雄鷹、松鼠和麻雀作為主攻目標。"))
88. # print("-"*70)
89.
90.
91.
92. 
93.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"
94.print("="*30+"短語提取"+"="*30)
95. 
96.  print(HanLP.extractPhrase(text, 10))
97. print("-"*70)
98. 
99.shutdownJVM()

HanLP執行結果:

python呼叫HanLP的jar包
連結: https://pan.baidu.com/s/1miDrWHq 密碼: bmy6

轉載自白寧超的部落格  http://www.cnblogs.com/baiboy/