學習筆記CB003:分塊、標記、關係抽取、文法特徵結構

分塊,根據句子的詞和詞性,按照規則組織合分塊,分塊代表實體。常見實體,組織、人員、地點、日期、時間。名詞短語分塊(NP-chunking),通過詞性標記、規則識別,通過機器學習方法識別。介詞短語(PP)、動詞短語(VP)、句子(S)。

分塊標記,IOB標記,I(inside,內部)、O(outside,外部)、B(begin,開始)。樹結構存儲分塊。多級分塊,多重分塊方法。級聯分塊。

關係抽取,找出實體間關係。實體識別認知事物,關係識別掌握真相。三元組(X,a,Y),X、Y實體,a表達關係字元串。通過正則識別。from nltk.corpus import conll2000,print(conll2000.chunked_sents(train.txt)[99]) 。

文法,潛在無限句子集合緊湊特性。形式化模型,覆蓋所有結構句子。符合多種文法句子有歧義。只能用特徵方法處理。

文法特徵結構,單詞最後字母、詞性標籤、文法類別、正字拼寫、指示物、關係、施事角色、受事角色。文法特徵是鍵值對,特徵結構存儲形式是字典。句法協議、屬性、約束、術語。import nltk,fs1 = nltk.FeatStruct(TENSE=past, NUM=sg) ,fs2 = nltk.FeatStruct(POS=N, AGR=fs1) 。nltk產生式文法描述 /nltk_data/grammars/book_grammars 。sql0.fcfg,查找國家城市sql語句文法:

% start S

S[SEM=(?np + WHERE + ?vp)] -> NP[SEM=?np] VP[SEM=?vp]

VP[SEM=(?v + ?pp)] -> IV[SEM=?v] PP[SEM=?pp]

VP[SEM=(?v + ?ap)] -> IV[SEM=?v] AP[SEM=?ap]

NP[SEM=(?det + ?n)] -> Det[SEM=?det] N[SEM=?n]

PP[SEM=(?p + ?np)] -> P[SEM=?p] NP[SEM=?np]

AP[SEM=?pp] -> A[SEM=?a] PP[SEM=?pp]

NP[SEM=Country="greece"] -> Greece

NP[SEM=Country="china"] -> China

Det[SEM=SELECT] -> Which | What

N[SEM=City FROM city_table] -> cities

IV[SEM=] -> are

A[SEM=] -> located

P[SEM=] -> in

載入文法描述

import nltk

from nltk import load_parser

cp = load_parser(grammars/book_grammars/sql0.fcfg)

query = What cities are located in China

tokens = query.split()

for tree in cp.parse(tokens):

print(tree)

參考資料:

《Python 自然語言處理》

自己動手做聊天機器人 六-教你怎麼從一句話里提取出十句話的信息

自己動手做聊天機器人 七-文法分析還是基於特徵好啊

歡迎推薦上海機器學習工作機會,我的微信:qingxingfengzi


推薦閱讀:

《大演算:機器學習的終極演演算法將如何改變我們的未來,創造新紀元的文明》
學習筆記CB001:NLTK庫、語料庫、詞概率、雙連詞、詞典
鋼鐵直男的救世主來了!讓AI告訴你妹子到底是啥意思
第二章:機器學習對配電網健康指數分析

TAG:聊天機器人 | 自然語言處理 | 機器學習 |