pyhanlp 兩種依存句法分類器


依存句法分析器

在HanLP中一共有兩種句法分析器

基於神經網絡的高性能依存句法分析器

HanLP中的基於神經網絡的高性能依存句法分析器參考的是14年Chen&Manning的論文(A Fast and Accurate Dependency Parser using Neural Networks)這里還有一個發在了Github的實現程序,其實現語言為Python。除此之外,你還可以參考ljj123zz 的CSDN 一篇博客:https://blog.csdn.net/ljj123zz/article/details/78834838

HanLP作者的原文介紹已經寫得比較清楚,唯一要注意的是原文章中介紹的依存句法分析器為早期版本,輸出的依存關系為英文,現在應該變為中文,而且從測試結果看,訓練語料應該已經更新了,但是更新為了那個語料現在還不會是很清楚。

基於最大熵的依存句法分析器

經過測試這個句法分析器為真的很坑,絕對不建議使用,測試代碼見最后,作者原文介紹請點擊:http://www.hankcs.com/nlp/parsing/to-achieve-the-maximum-entropy-of-the-dependency-parser.html

下面是使用的例子

基於神經網絡的高性能依存句法分析器

from pyhanlp import * # 依存句法分析 sentence = HanLP.parseDependency("徐先生還具體幫助他確定了把畫雄鷹、松鼠和麻雀作為主攻目標。") print(sentence) 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)) 
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	標點符號	_	_

徐先生 --(主謂關系)--> 幫助
還 --(狀中結構)--> 幫助
具體 --(狀中結構)--> 幫助
幫助 --(核心關系)--> ##核心##
他 --(兼語)--> 幫助
確定 --(動賓關系)--> 幫助
了 --(右附加關系)--> 確定
把 --(狀中結構)--> 作為
畫 --(介賓關系)--> 把
雄鷹 --(動賓關系)--> 畫
、 --(標點符號)--> 松鼠
松鼠 --(並列關系)--> 雄鷹
和 --(左附加關系)--> 麻雀
麻雀 --(並列關系)--> 雄鷹
作為 --(動賓關系)--> 確定
主攻 --(定中關系)--> 目標
目標 --(動賓關系)--> 作為
。 --(標點符號)--> 幫助

徐先生 --(主謂關系)--> 幫助
還 --(狀中結構)--> 幫助
具體 --(狀中結構)--> 幫助
幫助 --(核心關系)--> ##核心##
他 --(兼語)--> 幫助
確定 --(動賓關系)--> 幫助
了 --(右附加關系)--> 確定
把 --(狀中結構)--> 作為
畫 --(介賓關系)--> 把
雄鷹 --(動賓關系)--> 畫
、 --(標點符號)--> 松鼠
松鼠 --(並列關系)--> 雄鷹
和 --(左附加關系)--> 麻雀
麻雀 --(並列關系)--> 雄鷹
作為 --(動賓關系)--> 確定
主攻 --(定中關系)--> 目標
目標 --(動賓關系)--> 作為
。 --(標點符號)--> 幫助

麻雀 --(並列關系)--> 
雄鷹 --(動賓關系)--> 
畫 --(介賓關系)--> 
把 --(狀中結構)--> 
作為 --(動賓關系)--> 
確定 --(動賓關系)--> 
幫助 --(核心關系)--> 
##核心##

最大熵依存句法分析器

MaxEntDependencyParser = JClass("com.hankcs.hanlp.dependency.MaxEntDependencyParser") print("hankcs每天都在寫程序") print(MaxEntDependencyParser.compute("hankcs每天都在寫程序")) print("吳彥祖每天都在寫程序") print(MaxEntDependencyParser.compute("吳彥祖每天都在寫程序")) 
hankcs每天都在寫程序
1	hankcs	hankcs	x	x	_	6	限定	_	_
2	每天	每天	r	r	_	5	施事	_	_
3	都	都	d	d	_	5	程度	_	_
4	在	在	d	d	_	5	程度	_	_
5	寫	寫	v	v	_	0	核心成分	_	_
6	程序	程序	n	n	_	5	內容	_	_

吳彥祖每天都在寫程序
1	吳彥祖	吳彥祖	n	nr	_	5	施事	_	_
2	每天	每天	r	r	_	5	施事	_	_
3	都	都	d	d	_	5	程度	_	_
4	在	在	d	d	_	5	程度	_	_
5	寫	寫	v	v	_	0	核心成分	_	_
6	程序	程序	n	n	_	5	內容	_	_


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM