golang知識圖譜NLP實戰第一節——整體思路

 golang知識圖譜NLP實戰第一節——整體思路

golang知識圖譜NLP實戰第二節——解析依存句法分析結果

golang知識圖譜NLP實戰第三節——關係抽取

最大的願望是給engineercms工程師知識管理系統添加人工智能——知識圖譜功能

它包含了自然語言處理(NLP)的十大任務裏的幾項(Salesforce總結的十大任務,簡單來說包括:問答、機器翻譯、摘要、自然語言推理、情感分析、語義角色標註、關係抽取、目標導向對話、語義分析、常識代詞消解。)

最最簡單的可操作的實現方式如下:

(1)基於依存句法分析的開放式中文實體關係抽取https://blog.csdn.net/heuguangxu/article/details/80088489

較複雜的如下:

(2)知識庫管理系統——項目https://blog.csdn.net/qq_18860653/article/details/79722032

最簡單的實現思路爲:

給定文章(一段文字)——a用hanlp進行依存句法解析——b用上述(1)方法提取關係——c存入圖數據庫dgraph——d查詢得到關係圖譜……

下圖是dgraph展示的關係數據查詢效果(另外文章記錄dgraph的docker安裝和使用)

上文思路中,最最麻煩的是關係提取,其實還包含了實體確定吧,最近看得暈……但是上文(1)採用簡化處理,就不去糾結了。

當然,一些人的觀點我很贊同,這些算法都是有現成的代碼,已經實現了,問題是我們組裝起來,在自己系統裏集成,去實現它們一整套流程……

下面是hanlp的安裝和使用:目的就是上文思路的a步驟,提取句子的依存關係,基於《基於神經網絡的高性能依存句法分析器

(3)漢語言處理包Hanlp的使用https://blog.csdn.net/zhangqiang1104/article/details/50275659?locationNum=13

(4)入門指南http://hanlp.linrunsoft.com/doc/_build/html/getting_started.html#hanlp

(5)菜鳥如何使用Hanlphttps://blog.csdn.net/tianbwin2995/article/details/50938796/

(6)hanlp的基本使用--python(自然語言處理)https://www.cnblogs.com/ybf-yyj/p/7801429.html

提取出了依存關係如下圖:

package engineercms;

import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLSentence;
import com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLWord;
 
public class TestHanlp {
 
	public static void main(String[] args) {
		System.out.println(HanLP.segment("你好,歡迎使用HanLP!"));
		System.out.println(HanLP.parseDependency("李白的詩有哪些?"));
		System.out.println(HanLP.parseDependency("徐先生還具體幫助他確定了把畫雄鷹、松鼠和麻雀作爲主攻目標。"));
		String text = "算法工程師\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";
		System.out.println(HanLP.extractPhrase(text, 10));
		CoNLLSentence sentence = HanLP.parseDependency("徐先生還具體幫助他確定了把畫雄鷹、松鼠和麻雀作爲主攻目標。");
		for (CoNLLWord word : sentence)
        {
            System.out.printf("%s --(%s)--> %s\n", word.LEMMA, word.DEPREL, word.HEAD.LEMMA);
        }
	}
}

下一步參考文章(1)進行關係提取,存入圖數據庫。

當然,依存句法的實現有很多api接口可用,比如baiduai……但是想集成到系統內,還是找現成開源的。

問題是沒有go語言的類似hanlp的工具。dgraph是go語言的,但是也需要在docker中運行。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章