從零開始學自然語言處理(七)—— 句法結構分析

2021-02-21 可愛的統計

在之前的 從零開始學自然語言處理(六)—— 命名實體識別 文章中,我們使用了 standford CoreNLP 工具,本文中,我們繼續會使用 standford CoreNLP 進行句法分析。

句法分析分為句法結構分析(syntactic structure parsing)和依存關係分析(dependency parsing)。

以獲取整個句子的句法結構為目的的稱為完全句法分析,而以獲得局部成分為目的的語法分析稱為局部分析,依存關係分析簡稱依存分析。

今天我們看看句法結構分析。

簡單的講,句法結構分析方法可以分為基於規則的分析方法和基於統計的分析方法兩大類。

顧名思義,句法結構分析可以幫我們分析出句子的句法結構信息(如:主謂賓、定狀補)。

from nltk.parse.stanford import StanfordParser
chi_parser = StanfordParser(r"C:\Users\Dell\Downloads\stanford-parser-full-2018-10-17\stanford-parser.jar",r"C:\Users\Dell\Downloads\stanford-parser-full-2018-10-17\stanford-parser-3.9.2-models.jar",r"F:\stanford-parser-3.9.2-models\edu\stanford\nlp\models\lexparser\chinesePCFG.ser.gz")

其中,用到的內容在 從零開始學自然語言處理(六)—— 命名實體識別 文章中提過,用到的chinesePCFG.ser.gz在stanford-corenlp-full-2018-10-05中的stanford-corenlp-3.9.2-models.jar解壓後的內容中。

文末掃碼關注公眾號「數據科學雜談」,公眾號後臺回復「NER」,即可獲取本文所需相關安裝文件~

#分析指定數據,返回一個generator
sent = '我 愛 北京 天安門'
sentence = chi_parser.raw_parse(sent)
print(sentence)
for line in sentence:
    #需要注意的是line類型為<class 'nltk.tree.Tree'>
    print(line)
    #畫樹
    line.draw()
    #樹會彈出來顯示

句法分析縮寫語含義
ROOT:要處理文本的語句
IP:簡單從句
NP:名詞短語
VP:動詞短語
PU:斷句符,通常是句號、問號、感嘆號等標點符號
LCP:方位詞短語
PP:介詞短語
CP:由『的』構成的表示修飾性關係的短語
DNP:由『的』構成的表示所屬關係的短語
ADVP:副詞短語
ADJP:形容詞短語
DP:限定詞短語
QP:量詞短語
NN:常用名詞
NR:固有名詞
NT:時間名詞
PN:代詞
VV:動詞
VC:是
CC:表示連詞
VE:有
VA:表語形容詞
AS:內容標記(如:了)
VRD:動補複合詞
CD: 表示基數詞
DT: determiner 表示限定詞
EX: existential there 存在句
FW: foreign word 外來詞
IN: preposition or conjunction, subordinating 介詞或從屬連詞
JJ: adjective or numeral, ordinal 形容詞或序數詞
JJR: adjective, comparative 形容詞比較級
JJS: adjective, superlative 形容詞最高級
LS: list item marker 列表標識
MD: modal auxiliary 情態助動詞
PDT: pre-determiner 前位限定詞
POS: genitive marker 所有格標記
PRP: pronoun, personal 人稱代詞
RB: adverb 副詞
RBR: adverb, comparative 副詞比較級
RBS: adverb, superlative 副詞最高級
RP: particle 小品詞 
SYM: symbol 符號
TO:」to」 as preposition or infinitive marker 作為介詞或不定式標記 
WDT: WH-determiner WH限定詞
WP: WH-pronoun WH代詞
WP$: WH-pronoun, possessive WH所有格代詞
WRB:Wh-adverb WH副詞

我們試試其他的句子:

sent = u'關注 公眾號 數據科學雜談 手把手 帶 你 學習 自然語言處理'
print(list(chi_parser.parse(sent.split())))

[Tree('ROOT', [Tree('IP', [Tree('NP', [Tree('NN', ['關注']), Tree('NN', ['公眾號']), Tree('NN', ['數據科學雜談']), Tree('NN', ['手把手'])]), Tree('VP', [Tree('VV', ['帶']), Tree('IP', [Tree('NP', [Tree('PN', ['你'])]), Tree('VP', [Tree('VV', ['學習']), Tree('NP', [Tree('NN', ['自然語言處理'])])])])])])])]

#分析指定數據,返回一個generator
sentence = chi_parser.raw_parse(sent)
print(sentence)
for line in sentence:
    #需要注意的是line類型為<class 'nltk.tree.Tree'>
    print(line)
    #畫樹
    line.draw()
    #樹會彈出來顯示

接下來我們看看英文的句法結構分析:

#英文句法分析
eng_parser = StanfordParser(r"C:\Users\Dell\Downloads\stanford-parser-full-2018-10-17\stanford-parser.jar",r"C:\Users\Dell\Downloads\stanford-parser-full-2018-10-17\stanford-parser-3.9.2-models.jar")
print(list(eng_parser.parse("the quick brown fox jumps over the lazy dog".split())))

[Tree('ROOT', [Tree('NP', [Tree('NP', [Tree('DT', ['the']), Tree('JJ', ['quick']), Tree('JJ', ['brown']), Tree('NN', ['fox'])]), Tree('NP', [Tree('NP', [Tree('NNS', ['jumps'])]), Tree('PP', [Tree('IN', ['over']), Tree('NP', [Tree('DT', ['the']), Tree('JJ', ['lazy']), Tree('NN', ['dog'])])])])])])]

#分析指定數據,返回一個generator
sent = r"the quick brown fox jumps over the lazy dog"
sentence = chi_parser.raw_parse(sent)
print(sentence)
for line in sentence:
    #需要注意的是line類型為<class 'nltk.tree.Tree'>
    print(line)
    #畫樹
    line.draw()
    #樹會彈出來顯示

相關焦點

  • 從零開始學自然語言處理(十二)——上下文無關文法
    在說上下文無關文法之前,我們來看看形式語言理論,什麼是形式語言理論?形式語言理論是用數學方法研究自然語言或者程序設計語言的理論。
  • 句法分析綜述
    從CM看來,正確率不足50%,其實並不高,可見依存句法分析任重道遠。然後看中文,中文的自然語言處理相對比較難,一方面是中文本身的語法特性,另一方面中文分詞的時候本就有誤差,再進行句法分析會產生誤差疊加。
  • 2018自然語言處理研究報告
    2.1 自然語言處理基礎技術自然語言的基礎技術包括詞彙、短語、 句子和篇章級別的表示,以及分詞、句法分析和語義分析以及語言認知模型和知識圖譜等。2.1.1 詞法、句法及語義分析詞法分析的主要任務是詞性標註和詞義標註。
  • 一文讀懂依存句法分析
    本文系作者投稿,作者公眾號:AI小白入門(id: StudyForAI),歡迎關注,點擊文末"閱讀原文"可直達原文連結,也歡迎大家投稿,AI
  • NLP航海圖:自然語言處理相關任務簡介
    限於作者水平有限,其中難免有錯漏之處,歡迎讀者斧正。一般認為1950 年圖靈提出著名的「圖靈測試」是自然語言處理思想的開端。20 世紀 50 年代到 70 年代自然語言處理主要採用基於規則的方法。基於規則的方法不可能覆蓋所有語句,且對開發者的要求極高。這時的自然語言處理停留在理性主義思潮階段。
  • 自然語言處理庫spaCy號稱最快句法分析器
    【IT168 評論】spaCy是Python和Cython中的高級自然語言處理庫,它建立在最新的研究基礎之上,從一開始就設計用於實際產品。spaCy帶有預先訓練的統計模型和單詞向量,目前支持20多種語言的標記。它具有世界上速度最快的句法分析器,用於標籤的卷積神經網絡模型,解析和命名實體識別以及與深度學習整合。它是在MIT許可下發布的商業開源軟體。
  • 人工智慧之自然語言處理初探
    編輯導讀:自然語言處理是人工智慧的一個細分領域,是一個龐大的系統的工程。本文將從自然語言處理的簡介、句法分析、發展現狀、話語分割、知識體系、指代消解六個方面展開分析,希望對你有幫助。最近在梳理人工智慧的一個細分領域自然語言處理相關知識點。隨著查閱的資料越來越多,在梳理的過程中,也越來越發現自己的無知。
  • 依存句法分析
    在自然語言處理中,我們有時不需要或者不僅僅需要知道整個句子的短語結構樹,而且要知道句子中詞與詞之間的依存關係。用詞與詞之間的依存關係來描述語言結構的框架稱為依存語法,又稱從屬關係語法。利用依存語法進行句法分析也是自然語言理解的重要手段之一。
  • AI自然語言處理(NLP)領域常用的16個術語
    1.自然語言處理(NLP)自然語言處理,簡單來說就是構建人與機器之間溝通的橋梁,以實現人機交流的目的。自然語言處理有兩大核心任務:自然語言理解(NLU)與自然語言生成(NLG)。5.分詞(Tokenization)分詞是自然語言處理的基礎任務,將句子、段落分解為字詞單位,方便後續的處理與分析。
  • R語言自然語言處理:情感分析
    希望與大家分享學習經驗,推廣並加深R語言在業界的應用。郵箱:huang.tian-yuan@qq.com前文推送:R語言自然語言處理:中文分詞R語言自然語言處理:詞性標註與命名實體識別R語言自然語言處理:關鍵詞提取(TF-IDF)R語言自然語言處理:關鍵詞提取與文本摘要(TextRank)R語言自然語言處理:文本向量化——詞嵌入(Word
  • 【NLP】依存句法分析你真的學會了嗎
    內容速遞句法分析(Syntactic Parsing),兩種典型的句法結構表示:(1)短語結構句法:依託上下文無關文法,S代表起始符號,如NP和VP分別表示名詞短語和動詞短語。(2)依存結構句法:依託依存文法,如sub和obj分別表示主語和賓語,root表示虛擬根節點,其指向整個句子的核心謂詞。dependency parsing是依存關係語法分析,簡稱為依存分析。
  • 中文自然語言處理雲平臺 訊飛語言云
    「哈工大訊飛語言云」深度結合了哈工大「語言技術平臺LTP(Language Technology Platform)」高效、精準、便捷的自然語音處理核心技術以及科大訊飛在全國性大規模雲計算服務方面的經驗。「語言技術平臺LTP」是可以為開發者提供包括中文分詞、詞性標註、命名實體識別、依存句法分析、語義角色標註等自然語言處理技術服務的平臺。
  • 蘇州大學張民教授兩小時講座精華摘錄:自然語言處理方法與應用
    那麼自然語言處理的定義是什麼?就是用計算機來處理人類的自然語言。自然語言處理有三件重要的事:1. 分析和理解;2. 生成和應用(互動過程);3. 動作(執行語言相對應的內容)。為了更好地進行表示、推理和學習,自然語言處理涉及到了哪些方法?張民教授總結了如下內容:自然語言處理學科自身的算法和理論,規則方法,統計方法、機器學習方法及深度學習等多種方法。機器能理解人類的自然語言嗎?從廣義角度來說,真正的自然語言處理從 1950 年代的機器翻譯研究開始。
  • 豐田工業大學芝加哥分校在讀博士石昊悅:基於自然監督信號的句法...
    句法分析,作為自然語言處理中的關鍵技術之一,基本任務是確定句子的句法結構(如主謂賓結構)和句子中詞彙之間的依存關係(如從屬、並列等),可以為語義分析、情感傾向分析、觀點抽取等NLP具體應用場景打下堅實的基礎。在「NLP前沿講座」第1講的講座中,智東西公開課邀請到豐田工業大學芝加哥分校的在讀博士石昊悅,為大家帶來主題為《基於自然監督信號的句法結構學習》的講座。
  • 自然語言處理的十個發展趨勢
    實際工作中,我們面臨著一個課題——信息抽取。我之前和一個單位合作,初衷是我做句法分析,然後他們在我的基礎上做信息抽取,相互配合,後來他們發表了一篇論文,與初衷是相悖的,它證明了沒有句法分析,也可以直接做端到端的直接的實體關係抽取,這很震撼,不是說現在句法分析沒用了,而是我們認為句法分析是人為定義的層次,在端到端的數據量非常充分,可以直接進行信息抽取的時候,那麼不用句法分析,也能達到類似的效果。
  • NLP(自然語言處理)掃盲
    自然語言處理(簡稱NLP),是研究計算機處理人類語言的一門技術,是人工智慧(AI)的一個子領域,包括:1.句法語義分析:對於給定的句子,進行分詞、詞性標記、命名實體識別和連結、句法分析、語義角色識別和多義詞消歧。
  • 復旦大學黃萱菁教授:自然語言處理中的表示學習
    AITimer-何文莉,來源:AI TIME 論道比爾·蓋茨曾說:「語言理解是人工智慧皇冠上的明珠。」在語音交互的AI時代,自然語言處理(NLP)發揮著不可替代的作用。深度學習的出現與發展,使NLP技術取得了重大的突破。語言表示學習作為深度學習的重點之一,在自然語言處理中都有哪些研究進展和體會?
  • 斯坦福 Manning 組發現 BERT 可自動學習句法結構
    雖然一般認為,BERT只是在學習相鄰詞彙出現的概率,但斯坦福Chris Manning的最新研究發現,BERT已經可以開始識別語法和句法結構題圖:Stanford 編譯:Xinyu生物學家可以通過生物信息學和大數據分析獲得巨大的收穫,但需要耗費大量工作才能生成分析所需的數據集。與此同時,全球各地的研究者們都不斷「培養」出許多有用的數據集,但這些數據通常不會被廣泛共享。
  • CNCC 2019 | 劉群:基於深度學習的自然語言處理,邊界在哪裡?
    近日,在北京語言大學舉辦的第四屆語言與智能高峰論壇上,華為諾亞方舟實驗室語音語義首席科學家劉群教授高屋建瓴,細緻分析了深度學習時代NLP的已知與未知。他從自然語言處理基於規則、統計到深度學習的範式遷移出發,探討了深度學習方法解決了自然語言處理的哪些問題以及尚未解決哪些問題。
  • 關於自然語言計算機處理的幾點思考
    為什麼我們認為計算機可以仿真人類的語言處理機制、乃至人類的整個智能行為呢?將計算機作為一種定性的、離散的機器來處理語言材料就必需首先懂得語言的結構及其他特徵,這就要求人們能把語言的結構和其他所需的材料精確地改寫成計算機可以理解的程序和數據結構。