編程環(huán)境:
anaconda + python3.7
anaconda + python3.5(pyltp只找到了py3.5的whl文件于是裝在了py3.5環(huán)境下)
pyltp 3.4.0
stanfordcorenlp 3.9.1.1
完整代碼及數(shù)據(jù)已經(jīng)更新至GitHub,歡迎fork~GitHub鏈接
相關(guān)工具包介紹安裝請查看該篇文章內(nèi)鏈接
聲明:創(chuàng)作不易,未經(jīng)授權(quán)不得復(fù)制轉(zhuǎn)載
statement:No reprinting without authorization
內(nèi)容:
? ? ? ?使用 StanfordCoreNLP 嘗試對中英文兩個語料進(jìn)行句法分析和依存句法分析,使 用 LTP 僅對中文語料進(jìn)行依存句法分析恬口,并對比一下 StanfordCoreNLP 與 LTP 在中文語料上 進(jìn)行依存句法分析結(jié)果的不同撕蔼。
? ? ? ?注意:StanfordCoreNLP 對于中英文均可伍纫,句法分析與依存句法分析都可以勝任,但是哈 工大的 LTP 工具只能進(jìn)行中文的依存句法分析。句法分析中的常用符號請參考“ 常用的標(biāo)注 指代 .txt”捷枯。
code:
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 1 09:36:20 2019
@author: Mr.relu
"""
import os
#from stanfordcorenlp import StanfordCoreNLP
from pyltp import Parser
from pyltp import Segmentor
from pyltp import Postagger
def test_Snlp_en(document):
print("start stanfordcorenlp parse and dependency_parse with English:>>>")
nlp = StanfordCoreNLP(r'D:\anaconda\Lib\stanford-corenlp-full-2018-02-27')
pra = nlp.parse(document)
d_pra = nlp.dependency_parse(document)
nlp.close() # Do not forget to close! The backend server will consume a lot memery.
print("parse: \n",pra)
print("dependency_parse: \n",d_pra)
def test_Snlp_zh(document):
print("start stanfordcorenlp parse and dependency_parse with Chinese:>>>")
nlp = StanfordCoreNLP(r'D:\anaconda\Lib\stanford-corenlp-full-2018-02-27',lang = 'zh')
pra = nlp.parse(document)
d_pra = nlp.dependency_parse(document)
nlp.close() # Do not forget to close! The backend server will consume a lot memery.
print("parse: \n",pra)
print("dependency_parse: \n",d_pra)
def test_ltp(document):
LTP_DATA_DIR = r"D:\anaconda\Lib\pyltp-model"
# ltp模型目錄的路徑
par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model') # 依存句法分析模型路徑,模型名稱為`parser.model`
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分詞模型路徑远豺,模型名稱為`cws.model`
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 詞性標(biāo)注模型路徑奈偏,模型名稱為`pos.model`
segmentor = Segmentor() # 初始化實例
segmentor.load(cws_model_path) # 加載模型
words = segmentor.segment(document) # 分詞
print("\nA")
print("分詞結(jié)果:")
print ('\t'.join(words))
segmentor.release() # 釋放模型
postagger = Postagger() # 初始化實例
postagger.load(pos_model_path) # 加載模型
postags = postagger.postag(words) # 詞性標(biāo)注
print("\n")
print("詞性標(biāo)注結(jié)果:")
print ('\t'.join(postags))
postagger.release() # 釋放模型
parser = Parser() # 初始化實例
parser.load(par_model_path) # 加載模型
arcs = parser.parse(words, postags) # 句法分析
print("\n")
print("句法分析結(jié)果:")
print("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
parser.release() # 釋放模型
def main():
f = open('chinese_sen2.txt','r',encoding='utf-8',errors='ignore')
document = f.read()
f.close()
print(document)
print("start ltp chinese test>>>")
test_ltp(document)
# test_Snlp_zh(document)
# f = open('english_sen.txt')
# doc = f.read()
# f.close()
# print(doc)
# print("\n")
# test_Snlp_zh(doc)
print("test finished!")
if __name__ == '__main__':
main()
一、使用Stanford coreNLP進(jìn)行中文和英文的句法和依存句法分析:
1躯护、中文原語料:
句法分析結(jié)果:
stanfordnlp依存語法分析:
stanford依存句法分析標(biāo)注樹狀圖:
stanfordcorenlp依存句法標(biāo)注詳細(xì)解釋:
ROOT:要處理文本的語句
IP:簡單從句
NP:名詞短語
VP:動詞短語
PU:斷句符惊来,通常是句號、問號棺滞、感嘆號等標(biāo)點符號
LCP:方位詞短語
PP:介詞短語
CP:由‘的’構(gòu)成的表示修飾性關(guān)系的短語
DNP:由‘的’構(gòu)成的表示所屬關(guān)系的短語
ADVP:副詞短語
ADJP:形容詞短語
DP:限定詞短語
QP:量詞短語
NN:常用名詞
NR:固有名詞
NT:時間名詞
PN:代詞
VV:動詞
VC:是
CC:表示連詞
VE:有
VA:表語形容詞
AS:內(nèi)容標(biāo)記(如:了)
VRD:動補復(fù)合詞
CD: 表示基數(shù)詞
DT: determiner 表示限定詞
EX: existential there 存在句
FW: foreign word 外來詞
IN: preposition or conjunction, subordinating 介詞或從屬連詞
JJ: adjective or numeral, ordinal 形容詞或序數(shù)詞
JJR: adjective, comparative 形容詞比較級
JJS: adjective, superlative 形容詞最高級
LS: list item marker 列表標(biāo)識
MD: modal auxiliary 情態(tài)助動詞
PDT: pre-determiner 前位限定詞
POS: genitive marker 所有格標(biāo)記
PRP: pronoun, personal 人稱代詞
RB: adverb 副詞
RBR: adverb, comparative 副詞比較級
RBS: adverb, superlative 副詞最高級
RP: particle 小品詞
SYM: symbol 符號
TO:”to” as preposition or infinitive marker 作為介詞或不定式標(biāo)記
WDT: WH-determiner WH限定詞
WP: WH-pronoun WH代詞
WP$: WH-pronoun, possessive WH所有格代詞
WRB:Wh-adverb WH副詞
關(guān)系表示
abbrev: abbreviation modifier裁蚁,縮寫
acomp: adjectival complement,形容詞的補充继准;
advcl : adverbial clause modifier枉证,狀語從句修飾詞
advmod: adverbial modifier狀語
agent: agent,代理移必,一般有by的時候會出現(xiàn)這個
amod: adjectival modifier形容詞
appos: appositional modifier,同位詞
attr: attributive室谚,屬性
aux: auxiliary,非主要動詞和助詞崔泵,如BE,HAVE SHOULD/COULD等到
auxpass: passive auxiliary 被動詞
cc: coordination秒赤,并列關(guān)系,一般取第一個詞
ccomp: clausal complement從句補充
complm: complementizer憎瘸,引導(dǎo)從句的詞好重聚中的主要動詞
conj : conjunct入篮,連接兩個并列的詞。
cop: copula幌甘。系動詞(如be,seem,appear等)崎弃,(命題主詞與謂詞間的)連系
csubj : clausal subject,從主關(guān)系
csubjpass: clausal passive subject 主從被動關(guān)系
dep: dependent依賴關(guān)系
det: determiner決定詞含潘,如冠詞等
dobj : direct object直接賓語
expl: expletive饲做,主要是抓取there
infmod: infinitival modifier,動詞不定式
iobj : indirect object遏弱,非直接賓語盆均,也就是所以的間接賓語;
mark: marker漱逸,主要出現(xiàn)在有“that” or “whether”“because”, “when”,
mwe: multi-word expression泪姨,多個詞的表示
neg: negation modifier否定詞
nn: noun compound modifier名詞組合形式
npadvmod: noun phrase as adverbial modifier名詞作狀語
nsubj : nominal subject,名詞主語
nsubjpass: passive nominal subject饰抒,被動的名詞主語
num: numeric modifier肮砾,數(shù)值修飾
number: element of compound number,組合數(shù)字
parataxis: parataxis: parataxis袋坑,并列關(guān)系
partmod: participial modifier動詞形式的修飾
pcomp: prepositional complement仗处,介詞補充
pobj : object of a preposition,介詞的賓語
poss: possession modifier,所有形式婆誓,所有格吃环,所屬
possessive: possessive modifier,這個表示所有者和那個’S的關(guān)系
preconj : preconjunct洋幻,常常是出現(xiàn)在 “either”, “both”, “neither”的情況下
predet: predeterminer郁轻,前綴決定,常常是表示所有
prep: prepositional modifier
prepc: prepositional clausal modifier
prt: phrasal verb particle文留,動詞短語
punct: punctuation好唯,這個很少見,但是保留下來了燥翅,結(jié)果當(dāng)中不會出現(xiàn)這個
purpcl : purpose clause modifier骑篙,目的從句
quantmod: quantifier phrase modifier,數(shù)量短語
rcmod: relative clause modifier相關(guān)關(guān)系
ref : referent权旷,指示物,指代
rel : relative
root: root贯溅,最重要的詞拄氯,從它開始,根節(jié)點
tmod: temporal modifier
xcomp: open clausal complement
xsubj : controlling subject 掌控者
中心語為謂詞
subj — 主語
nsubj — 名詞性主語(nominal subject) (同步它浅,建設(shè))
top — 主題(topic) (是译柏,建筑)
npsubj — 被動型主語(nominal passive subject),專指由“被”引導(dǎo)的被動句中的主語姐霍,一般是謂詞語義上的受事 (稱作鄙麦,鎳)
csubj — 從句主語(clausal subject),中文不存在
xsubj — x主語镊折,一般是一個主語下面含多個從句 (完善胯府,有些)
中心語為謂詞或介詞
obj — 賓語
dobj — 直接賓語 (頒布,文件)
iobj — 間接賓語(indirect object)恨胚,基本不存在
range — 間接賓語為數(shù)量詞骂因,又稱為與格 (成交,元)
pobj — 介詞賓語 (根據(jù)赃泡,要求)
lobj — 時間介詞 (來寒波,近年)
中心語為謂詞
comp — 補語
ccomp — 從句補語,一般由兩個動詞構(gòu)成升熊,中心語引導(dǎo)后一個動詞所在的從句(IP) (出現(xiàn)俄烁,納入)
xcomp — x從句補語(xclausal complement),不存在
acomp — 形容詞補語(adjectival complement)
tcomp — 時間補語(temporal complement) (遇到级野,以前)
lccomp — 位置補語(localizer complement) (占页屠,以上)
— 結(jié)果補語(resultative complement)
中心語為名詞
mod — 修飾語(modifier)
pass — 被動修飾(passive)
tmod — 時間修飾(temporal modifier)
rcmod — 關(guān)系從句修飾(relative clause modifier) (問題,遇到)
numod — 數(shù)量修飾(numeric modifier) (規(guī)定,若干)
ornmod — 序數(shù)修飾(numeric modifier)
clf — 類別修飾(classifier modifier) (文件卷中,件)
nmod — 復(fù)合名詞修飾(noun compound modifier) (浦東矛双,上海)
amod — 形容詞修飾(adjetive modifier) (情況,新)
advmod — 副詞修飾(adverbial modifier) (做到蟆豫,基本)
vmod — 動詞修飾(verb modifier议忽,participle modifier)
prnmod — 插入詞修飾(parenthetical modifier)
neg — 不定修飾(negative modifier) (遇到,不)
det — 限定詞修飾(determiner modifier) (活動十减,這些)
possm — 所屬標(biāo)記(possessive marker)栈幸,NP
poss — 所屬修飾(possessive modifier),NP
dvpm — DVP標(biāo)記(dvp marker)帮辟,DVP (簡單速址,的)
dvpmod — DVP修飾(dvp modifier),DVP (采取由驹,簡單)
assm — 關(guān)聯(lián)標(biāo)記(associative marker)芍锚,DNP (開發(fā),的)
assmod — 關(guān)聯(lián)修飾(associative modifier)蔓榄,NP|QP (教訓(xùn)并炮,特區(qū))
prep — 介詞修飾(prepositional modifier) NP|VP|IP(采取,對)
clmod — 從句修飾(clause modifier) (因為甥郑,開始)
plmod — 介詞性地點修飾(prepositional localizer modifier) (在逃魄,上)
asp — 時態(tài)標(biāo)詞(aspect marker) (做到,了)
partmod– 分詞修飾(participial modifier) 不存在
etc — 等關(guān)系(etc) (辦法澜搅,等)
中心語為實詞
conj — 聯(lián)合(conjunct)
cop — 系動(copula) 雙指助動詞伍俘??勉躺?癌瘾?
cc — 連接(coordination),指中心詞與連詞 (開發(fā)饵溅,與)
其它
attr — 屬性關(guān)系 (是柳弄,工程)
cordmod– 并列聯(lián)合動詞(coordinated verb compound) (頒布,實行)
mmod — 情態(tài)動詞(modal verb) (得到概说,能)
ba — 把字關(guān)系
tclaus — 時間從句 (以后碧注,積累)
— semantic dependent
cpm — 補語化成分(complementizer),一般指“的”引導(dǎo)的CP (振興糖赔,的)
2萍丐、英文原語料:
二、使用pyltp進(jìn)行中文的依存句法分析:
1放典、先利用pyltp進(jìn)行分詞:
2逝变、而后詞性標(biāo)注:
LTP 使用 863 詞性標(biāo)注集:
3基茵、依存句法分析結(jié)果:
pyltp依存句法關(guān)系標(biāo)注注釋表:
小結(jié):
? ? ? ?通過使用stanfordcorenlp和哈工大的ltp工具對中文進(jìn)行依存句法分析結(jié)果的比較,就結(jié)果而言壳影,各有特色拱层,ltp使用簡單,標(biāo)注的結(jié)果簡單易分析宴咧,可以滿足一般對依存句法分析要求不高的應(yīng)用根灯,而且速度較快;而stanfordcorenlp的分析進(jìn)行的多層標(biāo)注掺栅,標(biāo)注更加豐富烙肺,可以利用標(biāo)注結(jié)果進(jìn)行更具選擇和復(fù)雜的應(yīng)用,可以利用的信息更多氧卧。