英文文件**特徵在建立基於規則的語法中的作用。中文文件
以下編號按個人習慣
以下以句子kim chased lee為例,找到其動詞的施事角色和主語,受事角色和賓語
def
lex2fs
(word)
:# 以下兩個物件中,不同的面向語義的特徵被稱為特徵結構(特徵+特徵值)。特徵結構包含各種有關語法實體的資訊
kim =
chase =
lee =
# chase為例,其主語(subject)扮演『施事』(agent)的角色。賓語(object)扮演『受事』(patient)的角色
chase[
'agt']=
'sbj'
chase[
'pat']=
'obj'
# fs 分別為kim,lee,chase迴圈
for fs in
[kim, lee, chase]
:if fs[
'orth'
]== word:
return fs
# 語法特徵
defgrammatical_features()
:# 找到動詞的施事角色和主語,受事角色和賓語。假設動詞左右的np分別是主語和賓語。
sent =
"kim chased lee"
tokens = sent.split(
) subj, verb, obj = lex2fs(tokens[0]
), lex2fs(tokens[1]
), lex2fs(tokens[2]
) verb[
'agt'
]= subj[
'ref'
] verb[
'pat'
]= obj[
'ref'
]for k in
['orth'
,'rel'
,'agt'
,'pat']:
print
("%-5s => %s"
%(k, verb[k]
))
檢視基於示例特性的語法,如下:
nltk.data.show_cfg(
'grammars/book_grammars/feat0.fcfg'
)
基於特徵的語法圖示解析的操作。如下,輸入分詞之後,匯入load_parser函式,以語法檔名為輸入,返回乙個圖表分析器cp。呼叫分析器的parse()方法將迭代生成的分析樹。
# 基於特徵跟蹤的圖表解析器
tokens =
'kim likes children'
.split(
)# 圖示分析器
cp = load_parser(
'grammars/book_grammars/feat0.fcfg'
, trace=2)
for tree in cp.parse(tokens)
:print
(tree)
像sg,pl這樣簡單的特徵值成為原子,原子值的特殊情況是布林值。
如何在nltk中構建和操作特徵結構。
使用建構函式featstruct()構造特徵結構,像字典一樣使用它。
# 特徵結構構造器
fs1 = nltk.featstruct(per=
3, num=
'p1'
, gnd=
'fem'
)print
(fs1[
'gnd'])
fs1[
'case']=
'acc'
print
(fs1)
# 更複雜的特徵結構
fs2 = nltk.featstruct(pos=
'n', agr=fs1)
print
(fs2)
print
(fs2[
'agr'])
# 使用feature=value格式的特徵-值對的方括號擴起的字串
fs3 = nltk.featstruct(
"[pos='n', agr=[per=3, num='pl', gnd='fem']]"
)print
(fs3)
特徵結構也可以看做乙個有向無環圖(dag),如下,
fs4 = nltk.featstruct(
"[name='lee', address=(1)[number=74, street='rue pascal'],spouse=[name='kim', address->(1)]]"
)
統一:合併兩個特徵結構,unify()函式實現。如果fs0和fs1的特徵結構共享乙個路徑目錄,那麼fs0和fs1的統一就會失敗,但是fs0中的value和fs1中的value是完全不同的。這是通過將統一的結果設定為none來實現的。
fs1 = nltk.featstruct(number=
74, street=
'rue pascal'
)fs2 = nltk.featstruct(city=
'paris'
)print
(fs1.unify(fs2)
)
當針對上面結構共享中,修改某個變數時,被引用的地方也會被修改。
廣義短語結構文法,通過允許詞彙類別支援subcat特徵。設subcat特徵表明該專案所屬的子類別。
因為可以無限的加深句子補語的遞迴,所以在整個句子中缺口可以無限遠的被填充。無限制依賴成分:填充詞-缺口依賴,即填充詞和缺口之間的距離沒有上界。
tokens =
'who do you claim that you like'
.split(
)cp = load_parser(
'grammars/book_grammars/feat1.fcfg'
)for tree in cp.parse(tokens)
:print
(tree)
基於Drupal的CMS構建
1.在 var www 下建立資料夾 sync a html html zhxue 2.修改配置檔案,新增 的資料庫資訊 vi sites default settings.php databases array default array default array database openci...
基於redis構建訊息佇列
一般來說,訊息佇列有兩種場景 一種是發布者訂閱者模式 一種是生產者消費者模式。利用redis這兩種場景的訊息佇列都能夠實現。定義 1 redis作為訊息中介軟體 1 producer consumermode 該方式是借助redis的list結構實現的。producer呼叫redis的lpush往特...
Vue CLI 基於webpack構建優化
參考vue cli 基於webpack構建優化,資源打包與資源預壓縮 yarn add filemanager webpack plugin dev d 宣告外掛程式 const filemanagerplugin require filemanager webpack plugin 外掛程式配置。...