自然語言處理之句法分析和依存句法分析

編程環(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é)果:


image.png

stanfordnlp依存語法分析:


image.png

stanford依存句法分析標(biāo)注樹狀圖:
image.png

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萍丐、英文原語料:
image.png

image.png

二、使用pyltp進(jìn)行中文的依存句法分析:

1放典、先利用pyltp進(jìn)行分詞:
image.png
2逝变、而后詞性標(biāo)注:

image.png

LTP 使用 863 詞性標(biāo)注集:
image.png

3基茵、依存句法分析結(jié)果:

image.png

pyltp依存句法關(guān)系標(biāo)注注釋表:
image.png

小結(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)用,可以利用的信息更多氧卧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桃笙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沙绝,更是在濱河造成了極大的恐慌搏明,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闪檬,死亡現(xiàn)場離奇詭異星著,居然都是意外死亡,警方通過查閱死者的電腦和手機谬以,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門强饮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來由桌,“玉大人为黎,你說我怎么就攤上這事⌒心” “怎么了铭乾?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娃循。 經(jīng)常有香客問我炕檩,道長,這世上最難降的妖魔是什么捌斧? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任笛质,我火速辦了婚禮,結(jié)果婚禮上捞蚂,老公的妹妹穿的比我還像新娘妇押。我一直安慰自己,他們只是感情好姓迅,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布敲霍。 她就那樣靜靜地躺著俊马,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肩杈。 梳的紋絲不亂的頭發(fā)上柴我,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音扩然,去河邊找鬼艘儒。 笑死,一個胖子當(dāng)著我的面吹牛与学,可吹牛的內(nèi)容都是我干的彤悔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼索守,長吁一口氣:“原來是場噩夢啊……” “哼晕窑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卵佛,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤杨赤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后截汪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疾牲,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年衙解,在試婚紗的時候發(fā)現(xiàn)自己被綠了阳柔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚓峦,死狀恐怖舌剂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暑椰,我是刑警寧澤霍转,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站一汽,受9級特大地震影響避消,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜召夹,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一岩喷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧监憎,春花似錦纱意、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爬虱。三九已至,卻和暖如春腾它,著一層夾襖步出監(jiān)牢的瞬間跑筝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工瞒滴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留曲梗,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓妓忍,卻偏偏與公主長得像虏两,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子世剖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容