pyhanlp 兩種依存句法分類器
阿新 • • 發佈:2018-12-11
依存句法分析器
在HanLP中一共有兩種句法分析器
基於神經網路的高效能依存句法分析器
HanLP作者的原文介紹已經寫得比較清楚,唯一要注意的是原文章中介紹的依存句法分析器為早期版本,輸出的依存關係為英文,現在應該變為中文,而且從測試結果看,訓練語料應該已經更新了,但是更新為了那個語料現在還不會是很清楚。
基於最大熵的依存句法分析器
下面是使用的例子
基於神經網路的高效能依存句法分析器
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 內容 _ _