} } }

    【说话处理惩罚与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[] )))))))

    文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
    分享到: