【说话处理惩罚与Python】9.2处理惩罚特点布局\9.3扩大基于特点的文法
添加时间:2013-6-3 点击量:
9.2处理惩罚特点布局
这一节内容为如何构建特点布局以及在NLTK中操纵。
NLTK供给了特点布局应用的机关函数FeatStruct()声明。
>>>fs1 = nltk.FeatStruct(TENSE=past,NUM=sg)
>>>print fs1
[ NUM = sg ]
[ TENSE= past ]
将特点布局作为图来查看往往是有效的(有向无环图)
也会呈现布局共享,或者重入。如图:
当两条路径具有雷同的值时,被称为等价。
在代码中默示布局共享,如下所示:
>>>print nltk.FeatStruct("""[NAME=Lee,ADDRESS=(1)[NUMBER=74,STREET=ruePascal],
... SPOUSE=[NAME=Kim, ADDRESS->(1)]]""")
[ ADDRESS= (1) [ NUMBER= 74 ] ]
[ [ STREET = rue Pascal] ]
[ ]
[ NAME = Lee ]
[ ]
[ SPOUSE =[ ADDRESS-> (1) ] ]
[ [ NAME = Kim ] ]
包含和同一
包含:一个更一般的特点布局包含一个较少一般的。
同一:归并两个特点布局的信息被成为同一。
>>>fs1 = nltk.FeatStruct(NUMBER=74,STREET=ruePascal)
>>>fs2 = nltk.FeatStruct(CITY=Paris)
>>>print fs1.unify(fs2)
[ CITY = Paris ]
[ NUMBER=74 ]
[ STREET= rue Pascal]
布局共享也可以应用变量默示,如?x
>>>fs1 = nltk.FeatStruct("[ADDRESS1=[NUMBER=74, STREET=ruePascal]]")
>>>fs2 = nltk.FeatStruct("[ADDRESS1=?x,ADDRESS2=?x]")
>>>print fs2
[ ADDRESS1= ?x ]
[ ADDRESS2= ?x ]
>>>print fs2.unify(fs1)
[ ADDRESS1= (1) [ NUMBER= 74 ] ]
[ [ STREET= rue Pascal] ]
[ ]
[ ADDRESS2-> (1)
9.3扩大基于特点的文法
在本节,将会摸索各类说话题目,并显现将特点纳入文法的益处。
子类别
VP[TENSE=?t,NUM=?n]-> V[SUBCAT=intrans,TENSE=?t,NUM=?n]
VP[TENSE=?t,NUM=?n]-> V[SUBCAT=trans,TENSE=?t,NUM=?n]NP
VP[TENSE=?t,NUM=?n]-> V[SUBCAT=clause,TENSE=?t,NUM=?n]SBar
V[SUBCAT=intrans,TENSE=pres,NUM=sg]-> disappears | walks
V[SUBCAT=trans,TENSE=pres,NUM=sg]-> sees | likes
V[SUBCAT=clause,TENSE=pres,NUM=sg]-> says | claims
V[SUBCAT=intrans,TENSE=pres,NUM=pl]-> disappear | walk
V[SUBCAT=trans,TENSE=pres,NUM=pl]-> see | like
V[SUBCAT=clause,TENSE=pres,NUM=pl]-> say | claim
V[SUBCAT=intrans,TENSE=past]-> disappeared | walked
V[SUBCAT=trans,TENSE=past]-> saw | liked
V[SUBCAT=clause,TENSE=past]-> said | claimed
SBar代表从句标签。
SBar-> CompS
Comp-> that
You claim that youlike children.这句话的产生的布局如下:
例如这句话:put the book on the table
可以默示为:
V[SUBCAT=<NP,NP,PP>]
此中,NP代表主语,后面跟着PP的NP,补语子类别。
所以,Kimput the bookonthe table,这句话可以被解析为:
&#160;
核心词回顾
X-bar句法经由过程抽象出短语级此外概念。凡是认为有三个级别。
例如,如图所示:
&#160;
布局36a的核心词是N,N",N被称为N的投影。N"是大投影,N有时也称作零投影。
一个词汇核心X的直接补语子类别老是位于核心词的兄弟的地位,而润饰成分位于中心类别X的兄弟的地位。
&#160;
S -> N[BAR=2]V[BAR=2]
N[BAR=2]-> DetN[BAR=1]
N[BAR=1]-> N[BAR=1]P[BAR=2]
N[BAR=1]-> N[BAR=0]P[BAR=2]
助动词与倒装
(39)a. Doyoulike children?
b.CanJodywalk?
(40)a. Rarelydoyousee Kim.
b.NeverhaveI seen this dog.
然则不是什么动词都能放在前面的。可以放在从句开首的术语叫做助动词。例如:do can have,也包含be,will,shall
我们可以应用下面这个表达式:
S[+INV]-> V[+AUX] NP VP
标识表记标帜[+inv]申明,包含一个助动词。
AUX区分是否是助动词。
SUBCAT代表子类别。
&#160;
无穷制依附成分
填充词和缺口之间的间隔没有上界。这一事实可以很轻易地应用包含句子补语的成分来申明。
a. Who do you like __?
b.Who do you claim that you like __?
c.Who do you claim that Jody says that you like __?
广义短语文法中处理惩罚情势化文法的无穷依附:
一个斜线类此外情势是Y/XP;我们申明为:类别Y的短语缺乏一个类别XP的子成分。例如:S/NP是缺乏一个NP的S。
>>>nltk.data.show_cfg(grammars/book_grammars/feat1.fcfg)
%start S
####################
#GrammarProductions
####################
S[-INV] -> NPVP
S[-INV]/?x -> NPVP/?x
S[-INV] -> NPS/NP
S[-INV] -> Adv[+NEG]S[+INV]
S[+INV]-> V[+AUX]NPVP
S[+INV]/?x-> V[+AUX]NPVP/?x
SBar-> CompS[-INV]
SBar/?x-> CompS[-INV]/?x
VP-> V[SUBCAT=intrans,-AUX]
VP-> V[SUBCAT=trans,-AUX] NP
VP/?x-> V[SUBCAT=trans,-AUX] NP/?x
VP-> V[SUBCAT=clause,-AUX] SBar
VP/?x-> V[SUBCAT=clause,-AUX] SBar/?x
VP-> V[+AUX]VP
VP/?x-> V[+AUX]VP/?x
####################
#LexicalProductions
####################
V[SUBCAT=intrans,-AUX] -> walk | sing
V[SUBCAT=trans,-AUX] -> see | like
V[SUBCAT=clause,-AUX] -> say | claim
V[+AUX]-> do | can
NP[-WH]-> you | cats
NP[+WH]-> who
Adv[+NEG]-> rarely | never
NP/NP->
Comp-> that
应用文法来解析句子:
>>>tokens = who doyouclaim that youlike.split()
>>> nltk import load_parser
>>>cp = load_parser(grammars/book_grammars/feat1.fcfg)
>>>for tree in cp.nbest_parse(tokens):
... print tree
(S[-INV]
(NP[+WH] who)
(S[+INV]/NP[]
(V[+AUX] do)
(NP[-WH] you)
(VP[]/NP[]
(V[-AUX, SUBCAT=clause]claim)
(SBar[]/NP[]
(Comp[] that)
(S[-INV]/NP[]
(NP[-WH] you)
(VP[]/NP[] (V[-AUX, SUBCAT=trans]like) (NP[]/NP[] )))))))
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
9.2处理惩罚特点布局
这一节内容为如何构建特点布局以及在NLTK中操纵。
NLTK供给了特点布局应用的机关函数FeatStruct()声明。
>>>fs1 = nltk.FeatStruct(TENSE=past,NUM=sg)
>>>print fs1
[ NUM = sg ]
[ TENSE= past ]
将特点布局作为图来查看往往是有效的(有向无环图)
也会呈现布局共享,或者重入。如图:
当两条路径具有雷同的值时,被称为等价。
在代码中默示布局共享,如下所示:
>>>print nltk.FeatStruct("""[NAME=Lee,ADDRESS=(1)[NUMBER=74,STREET=ruePascal],
... SPOUSE=[NAME=Kim, ADDRESS->(1)]]""")
[ ADDRESS= (1) [ NUMBER= 74 ] ]
[ [ STREET = rue Pascal] ]
[ ]
[ NAME = Lee ]
[ ]
[ SPOUSE =[ ADDRESS-> (1) ] ]
[ [ NAME = Kim ] ]
包含和同一
包含:一个更一般的特点布局包含一个较少一般的。
同一:归并两个特点布局的信息被成为同一。
>>>fs1 = nltk.FeatStruct(NUMBER=74,STREET=ruePascal)
>>>fs2 = nltk.FeatStruct(CITY=Paris)
>>>print fs1.unify(fs2)
[ CITY = Paris ]
[ NUMBER=74 ]
[ STREET= rue Pascal]
布局共享也可以应用变量默示,如?x
>>>fs1 = nltk.FeatStruct("[ADDRESS1=[NUMBER=74, STREET=ruePascal]]")
>>>fs2 = nltk.FeatStruct("[ADDRESS1=?x,ADDRESS2=?x]")
>>>print fs2
[ ADDRESS1= ?x ]
[ ADDRESS2= ?x ]
>>>print fs2.unify(fs1)
[ ADDRESS1= (1) [ NUMBER= 74 ] ]
[ [ STREET= rue Pascal] ]
[ ]
[ ADDRESS2-> (1)
9.3扩大基于特点的文法
在本节,将会摸索各类说话题目,并显现将特点纳入文法的益处。
子类别
VP[TENSE=?t,NUM=?n]-> V[SUBCAT=intrans,TENSE=?t,NUM=?n]
VP[TENSE=?t,NUM=?n]-> V[SUBCAT=trans,TENSE=?t,NUM=?n]NP
VP[TENSE=?t,NUM=?n]-> V[SUBCAT=clause,TENSE=?t,NUM=?n]SBar
V[SUBCAT=intrans,TENSE=pres,NUM=sg]-> disappears | walks
V[SUBCAT=trans,TENSE=pres,NUM=sg]-> sees | likes
V[SUBCAT=clause,TENSE=pres,NUM=sg]-> says | claims
V[SUBCAT=intrans,TENSE=pres,NUM=pl]-> disappear | walk
V[SUBCAT=trans,TENSE=pres,NUM=pl]-> see | like
V[SUBCAT=clause,TENSE=pres,NUM=pl]-> say | claim
V[SUBCAT=intrans,TENSE=past]-> disappeared | walked
V[SUBCAT=trans,TENSE=past]-> saw | liked
V[SUBCAT=clause,TENSE=past]-> said | claimed
SBar代表从句标签。
SBar-> CompS
Comp-> that
You claim that youlike children.这句话的产生的布局如下:
例如这句话:put the book on the table
可以默示为:
V[SUBCAT=<NP,NP,PP>]
此中,NP代表主语,后面跟着PP的NP,补语子类别。
所以,Kimput the bookonthe table,这句话可以被解析为:
&#160;
核心词回顾
X-bar句法经由过程抽象出短语级此外概念。凡是认为有三个级别。
例如,如图所示:
&#160;
布局36a的核心词是N,N",N被称为N的投影。N"是大投影,N有时也称作零投影。
一个词汇核心X的直接补语子类别老是位于核心词的兄弟的地位,而润饰成分位于中心类别X的兄弟的地位。
&#160;
S -> N[BAR=2]V[BAR=2]
N[BAR=2]-> DetN[BAR=1]
N[BAR=1]-> N[BAR=1]P[BAR=2]
N[BAR=1]-> N[BAR=0]P[BAR=2]
助动词与倒装
(39)a. Doyoulike children?
b.CanJodywalk?
(40)a. Rarelydoyousee Kim.
b.NeverhaveI seen this dog.
然则不是什么动词都能放在前面的。可以放在从句开首的术语叫做助动词。例如:do can have,也包含be,will,shall
我们可以应用下面这个表达式:
S[+INV]-> V[+AUX] NP VP
标识表记标帜[+inv]申明,包含一个助动词。
AUX区分是否是助动词。
SUBCAT代表子类别。
&#160;
无穷制依附成分
填充词和缺口之间的间隔没有上界。这一事实可以很轻易地应用包含句子补语的成分来申明。
a. Who do you like __?
b.Who do you claim that you like __?
c.Who do you claim that Jody says that you like __?
广义短语文法中处理惩罚情势化文法的无穷依附:
一个斜线类此外情势是Y/XP;我们申明为:类别Y的短语缺乏一个类别XP的子成分。例如:S/NP是缺乏一个NP的S。
>>>nltk.data.show_cfg(grammars/book_grammars/feat1.fcfg)
%start S
####################
#GrammarProductions
####################
S[-INV] -> NPVP
S[-INV]/?x -> NPVP/?x
S[-INV] -> NPS/NP
S[-INV] -> Adv[+NEG]S[+INV]
S[+INV]-> V[+AUX]NPVP
S[+INV]/?x-> V[+AUX]NPVP/?x
SBar-> CompS[-INV]
SBar/?x-> CompS[-INV]/?x
VP-> V[SUBCAT=intrans,-AUX]
VP-> V[SUBCAT=trans,-AUX] NP
VP/?x-> V[SUBCAT=trans,-AUX] NP/?x
VP-> V[SUBCAT=clause,-AUX] SBar
VP/?x-> V[SUBCAT=clause,-AUX] SBar/?x
VP-> V[+AUX]VP
VP/?x-> V[+AUX]VP/?x
####################
#LexicalProductions
####################
V[SUBCAT=intrans,-AUX] -> walk | sing
V[SUBCAT=trans,-AUX] -> see | like
V[SUBCAT=clause,-AUX] -> say | claim
V[+AUX]-> do | can
NP[-WH]-> you | cats
NP[+WH]-> who
Adv[+NEG]-> rarely | never
NP/NP->
Comp-> that
应用文法来解析句子:
>>>tokens = who doyouclaim that youlike.split()
>>> nltk import load_parser
>>>cp = load_parser(grammars/book_grammars/feat1.fcfg)
>>>for tree in cp.nbest_parse(tokens):
... print tree
(S[-INV]
(NP[+WH] who)
(S[+INV]/NP[]
(V[+AUX] do)
(NP[-WH] you)
(VP[]/NP[]
(V[-AUX, SUBCAT=clause]claim)
(SBar[]/NP[]
(Comp[] that)
(S[-INV]/NP[]
(NP[-WH] you)
(VP[]/NP[] (V[-AUX, SUBCAT=trans]like) (NP[]/NP[] )))))))