基于特征的文法分析以及概述自然语言处理
一、基于特征的文法分析
語(yǔ)法分析固然重要,但要想覆蓋語(yǔ)言的全部,需要進(jìn)一步擴(kuò)展到文法分析,文法分析可以基于規(guī)則,但是工作量難以想象,基于特征的文法分析不但可窮舉,而且可以方便用計(jì)算機(jī)存儲(chǔ)和計(jì)算,本節(jié)簡(jiǎn)單做一個(gè)介紹,更深層次的內(nèi)容還需要繼續(xù)關(guān)注后面的系列文章?
請(qǐng)尊重原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)源網(wǎng)站www.shareditor.com以及原始鏈接地址
語(yǔ)法和文法
還記得上一節(jié)中的這個(gè)嗎?
(S(NP 小明) (VP(V 追趕) (NP(Det 一只) (N 兔子))))這里面的N表示名詞,Det表示限定詞,NP表示名詞短語(yǔ),V表示動(dòng)詞,VP表示動(dòng)詞短語(yǔ),S表示句子
這種句子分析方法叫做語(yǔ)法分析
因?yàn)榫渥涌梢詿o(wú)限組合無(wú)限擴(kuò)展,所以單純用語(yǔ)法分析來(lái)完成自然語(yǔ)言處理這件事情是不可能的,所以出現(xiàn)了文法分析
文法是一個(gè)潛在的無(wú)限的句子集合的一個(gè)緊湊的特性,它是通過(guò)一組形式化模型來(lái)表示的,文法可以覆蓋所有結(jié)構(gòu)的句子,對(duì)一個(gè)句子做文法分析,就是把句子往文法模型上靠,如果同時(shí)符合多種文法,那就是有歧義的句子
最重要的結(jié)論:文法結(jié)構(gòu)范圍相當(dāng)廣泛,無(wú)法用規(guī)則類的方法來(lái)處理,只有利用基于特征的方法才能處理
?
文法特征結(jié)構(gòu)
文法特征舉例:單詞最后一個(gè)字母、詞性標(biāo)簽、文法類別、正字拼寫、指示物、關(guān)系、施事角色、受事角色
因?yàn)槲姆ㄌ卣魇且环Nkv,所以特征結(jié)構(gòu)的存儲(chǔ)形式是字典
不是什么樣的句子都能提取出每一個(gè)文法特征的,需要滿足一定的條件,這需要通過(guò)一系列的檢查手段來(lái)達(dá)到,包括:句法協(xié)議(比如this dog就是對(duì)的,而these dog就是錯(cuò)的)、屬性和約束、術(shù)語(yǔ)
?
特征結(jié)構(gòu)的處理
nltk幫我實(shí)現(xiàn)了特征結(jié)構(gòu):
>>> import nltk >>> fs1 = nltk.FeatStruct(TENSE='past', NUM='sg') >>> fs1 [NUM='sg', TENSE='past'] >>> fs2 = nltk.FeatStruct(POS='N', AGR=fs1) >>> fs2 [AGR=[NUM='sg', TENSE='past'], POS='N']在nltk的庫(kù)里已經(jīng)有了一些產(chǎn)生式文法描述可以直接使用,位置在:
[root@centos $] ls ~/nltk_data/grammars/book_grammars background.fol discourse.fcfg drt.fcfg feat0.fcfg feat1.fcfg german.fcfg simple-sem.fcfg sql0.fcfg sql1.fcfg storage.fcfg我們看其中最簡(jiǎn)單的一個(gè)sql0.fcfg,這是一個(gè)查找國(guó)家城市的sql語(yǔ)句的文法:
% start SS[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'解釋一下
這里面從上到下是從最大范圍到最小范圍一個(gè)個(gè)的解釋,S是句子
我們來(lái)加載這個(gè)文法描述,并試驗(yàn)如下:
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輸出結(jié)果如下:
(S[SEM=(SELECT, City FROM city_table, WHERE, , , Country="china")](NP[SEM=(SELECT, City FROM city_table)](Det[SEM='SELECT'] What)(N[SEM='City FROM city_table'] cities))(VP[SEM=(, , Country="china")](IV[SEM=''] are)(AP[SEM=(, Country="china")](A[SEM=''] located)(PP[SEM=(, Country="china")](P[SEM=''] in)(NP[SEM='Country="china"'] China)))))我們可以看到用特征結(jié)構(gòu)可以建立對(duì)大量廣泛的語(yǔ)言學(xué)現(xiàn)象的簡(jiǎn)介分析??
二、概述自然語(yǔ)言處理涉及到的內(nèi)容
別誤會(huì),前面幾節(jié)不是逗你玩,我總結(jié)了,計(jì)算機(jī)領(lǐng)域的知識(shí)得倒著學(xué),不管三七二十一先用起來(lái),然后再系統(tǒng)地學(xué)習(xí),這不,前幾節(jié)先給你們展示了幾個(gè)常見知識(shí)和工具,從這一節(jié)開始步入主題,自然語(yǔ)言處理與問(wèn)答系統(tǒng)?
自然語(yǔ)言處理怎么學(xué)?
先學(xué)會(huì)倒著學(xué),倒回去看上面那句話:不管三七二十一先用起來(lái),然后再系統(tǒng)地學(xué)習(xí)
nltk是最經(jīng)典的自然語(yǔ)言處理的python庫(kù),不知道怎么用的看前幾篇文章吧,先把它用起來(lái),最起碼做出來(lái)一個(gè)詞性標(biāo)注的小工具
?
自然語(yǔ)言處理學(xué)什么?
這門學(xué)科的知識(shí)可是相當(dāng)?shù)膹V泛,廣泛到你不需要掌握任何知識(shí)就可以直接學(xué),因?yàn)槟悴豢赡苷莆账蕾嚨娜恐R(shí),所以就直接沖過(guò)去吧。。。
話說(shuō)回來(lái),它到底包括哪些知識(shí)呢?如果把這些知識(shí)比作難關(guān)的話,我數(shù)一數(shù),整整九九八十一難
第一難:語(yǔ)言學(xué)。直接懵逼了吧?語(yǔ)言學(xué)啥玩意,怎么說(shuō)話?還是怎么學(xué)說(shuō)話?其實(shí)大家也都說(shuō)不清語(yǔ)言學(xué)是什么東東,但是我知道大家在這方面都在研究啥,有的在研究語(yǔ)言描述的學(xué)問(wèn),有的在研究語(yǔ)言理論的學(xué)問(wèn),有的在研究不同語(yǔ)言對(duì)比的學(xué)問(wèn),有的在研究語(yǔ)言共同點(diǎn)上的學(xué)問(wèn),有的在研究語(yǔ)言發(fā)展的歷史,有的在研究語(yǔ)言的結(jié)構(gòu),總之用一個(gè)字來(lái)形容那是一個(gè)涉獵廣泛啊
第二難:語(yǔ)音學(xué)。再一次懵逼!有人說(shuō):我知道!語(yǔ)音學(xué)就是怎么發(fā)聲。贊一個(gè),回答的那是相當(dāng)不完全對(duì)啊!你以為你是學(xué)唱歌嗎?語(yǔ)音學(xué)研究領(lǐng)域分三塊:一塊是研究聲音是怎么發(fā)出來(lái)的(同學(xué)你說(shuō)對(duì)了一點(diǎn));一塊是研究聲音是怎么傳遞的;一塊是研究聲音是怎么接收的。這尼瑪不是物理嗎?怎么還整出語(yǔ)言學(xué)來(lái)了?其實(shí)這是一個(gè)交叉學(xué)科,交叉了語(yǔ)言學(xué),交叉了生物學(xué)
第三難:概率論。啥?怎么到處都是概率論啊?聽人說(shuō)今年又某某某得了諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng)了,我定睛一看,尼瑪,這不是研究的概率論嘛,這也能得經(jīng)濟(jì)學(xué)獎(jiǎng),真是得數(shù)學(xué)者得天下啊。廢話少說(shuō),概率論跟自然語(yǔ)言處理有什么關(guān)系?我知道了,說(shuō)話是一個(gè)概率問(wèn)題,我經(jīng)常說(shuō)“尼瑪”,那我再次說(shuō)“尼瑪”的概率就高,嗯~沾邊了。提到概率論那就少不了這些:貝葉斯老爺爺、馬爾可夫大叔……
第四難:信息論。提到信息論肯定第一個(gè)想到的是“香濃”啊,有點(diǎn)流口水了,香農(nóng)老爺爺提出的熵理論影響那是相當(dāng)巨大啊,沒(méi)有它估計(jì)就沒(méi)有我們計(jì)算機(jī)人事什么事了,因?yàn)闆](méi)有他就沒(méi)有互聯(lián)網(wǎng)了。還有人說(shuō)沒(méi)有圖靈就沒(méi)有計(jì)算機(jī)了,他咋不說(shuō)沒(méi)有他們倆就沒(méi)有地球了呢?
第五難:機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)是我的最愛(ài),得聊的正式一點(diǎn),咳咳!機(jī)器學(xué)習(xí)啊——得好好學(xué)
第六難:形式語(yǔ)言與自動(dòng)機(jī)。我滴媽啊!我跪了!剛說(shuō)圖靈圖靈就來(lái)了。說(shuō)白了,形式語(yǔ)言就是把語(yǔ)言搞的很形式,換句話說(shuō)就是本來(lái)你能懂的東西,搞成你不能懂的東西,那就是形式語(yǔ)言啦!不信?你聽:短語(yǔ)結(jié)構(gòu)語(yǔ)言、上下文有關(guān)語(yǔ)言、上下文無(wú)關(guān)語(yǔ)言、正則語(yǔ)言,懂了嗎?而自動(dòng)機(jī)呢包括:圖靈機(jī)、有窮自動(dòng)機(jī)、下推自動(dòng)機(jī)、線性有界自動(dòng)機(jī)。你可能會(huì)問(wèn)了,這么多自動(dòng)機(jī)那得要多少汽油啊?該死的翻譯怎么就把這么高大上的英文給翻譯成這么晦澀呢,自動(dòng)機(jī)英文叫automata,表達(dá)的是自動(dòng)形成一些信息,也就是說(shuō)根據(jù)前面能自動(dòng)判斷出后面。形式語(yǔ)言用在自然語(yǔ)言處理上我理解,都有語(yǔ)言倆字,可是這自動(dòng)機(jī)有什么用呢?這您還真問(wèn)著了,您見過(guò)拼寫檢查嗎?這就是用的自動(dòng)機(jī),用處杠杠的!
第七難:語(yǔ)言知識(shí)庫(kù)。你見過(guò)科幻電影里的機(jī)器人手捧著電話線就能知道一切的鏡頭吧,互聯(lián)網(wǎng)上有無(wú)數(shù)文本內(nèi)容,用我們抽象的話說(shuō)那都是知識(shí),但是簡(jiǎn)單放在電腦里那就是一串字符串,怎么才能讓它以知識(shí)的形式存儲(chǔ)呢?首先得讓計(jì)算機(jī)能分析語(yǔ)言,那么語(yǔ)料就是它學(xué)習(xí)的基礎(chǔ)、是種子,然后有了基礎(chǔ)再讓它把語(yǔ)言里的知識(shí)存儲(chǔ)起來(lái),這就形成了語(yǔ)言知識(shí)庫(kù)
第八難:語(yǔ)言模型。模型顧名思義就是“模子”,就是“往上靠”的意思,怎么靠上去更吻合就怎么靠,這就是語(yǔ)言模型。怎么?沒(méi)懂?好那我用形式化的語(yǔ)言再來(lái)說(shuō)一下:把很多已經(jīng)整理好的模子放在那里,遇到一個(gè)新內(nèi)容的時(shí)候看看屬于哪種格式,那就按照這種模子來(lái)解釋。嗯~你肯定懂了
第九難:分詞、實(shí)體識(shí)別、詞性標(biāo)注。這部分開始純語(yǔ)言處理了,前幾節(jié)也簡(jiǎn)單講過(guò)這部分內(nèi)容,分詞就是讓計(jì)算機(jī)自動(dòng)區(qū)分出漢字組成的詞語(yǔ),因?yàn)橐粋€(gè)詞語(yǔ)一個(gè)意思嘛。實(shí)體識(shí)別就是再分詞之后能夠根據(jù)各種短語(yǔ)形式判斷出哪個(gè)詞表示的是一個(gè)物體或組織或人名或……。詞性標(biāo)注就是給你一句話,你能識(shí)別出“名動(dòng)形、數(shù)量代、副介連助嘆擬聲”。
第十難:句法分析。句法分析類似于小學(xué)時(shí)學(xué)的主謂賓補(bǔ)定狀的區(qū)分,只是要在這基礎(chǔ)上組合成短語(yǔ),也就是把一個(gè)非結(jié)構(gòu)化的句子分析稱結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)
第十一難:語(yǔ)義分析??雌饋?lái)一步一步越來(lái)越深入了。語(yǔ)義是基于句法分析,進(jìn)一步理解句子的意思,最重要的就是消除歧義,人姑且還會(huì)理解出歧義來(lái)呢,何況一個(gè)機(jī)器
第十二難:篇章分析。一堆堆的句子,每個(gè)都分析明白了,但是一堆句子組合成的篇章又怎么才能聯(lián)系起來(lái)呢?你得總結(jié)出本文的中心思想不是?這他娘的是小學(xué)語(yǔ)文里最難的一道題
以上這些內(nèi)容就是自然語(yǔ)言處理的幾大難了,什么?說(shuō)好的九九八十一難呢?你還不嫌多啊?你還真想變成孫猴子嗎?能把這幾關(guān)過(guò)了就不錯(cuò)了!
請(qǐng)尊重原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)源網(wǎng)站www.shareditor.com以及原始鏈接地址
自然語(yǔ)言處理和聊天機(jī)器人什么關(guān)系?
說(shuō)到這里,索性就說(shuō)說(shuō)下自然語(yǔ)言處理的應(yīng)用領(lǐng)域吧。
第一個(gè)應(yīng)用:機(jī)器翻譯。機(jī)器翻譯方法有很多,我不做,也不說(shuō),想學(xué)自己看去
第二個(gè)應(yīng)用:語(yǔ)音翻譯。跟上一個(gè)不是一個(gè)嗎?不是的,這是語(yǔ)音,那個(gè)是機(jī)器
第三個(gè)應(yīng)用:文本分類與情感分析。別看兩個(gè)詞,其實(shí)是一種事——分類。前面有很多篇文章將文本分類的,可以看看,還有代碼噢。
第四個(gè)應(yīng)用:信息檢索與問(wèn)答系統(tǒng)。終于說(shuō)到重點(diǎn)了,累死我了。這里的問(wèn)答系統(tǒng)就是我們的聊天機(jī)器人。后面會(huì)著重講這個(gè)應(yīng)用,我不斷讀論文,不斷給大家分享哈,別著急,乖!
第五個(gè)應(yīng)用:自動(dòng)文摘和信息抽取。看過(guò)百度搜索里顯示的摘要嗎?他們多么的精簡(jiǎn),而且描述了網(wǎng)頁(yè)里的中心內(nèi)容,多漂亮啊!可惜多數(shù)都沒(méi)做到自動(dòng)文摘。所以這是一個(gè)高技術(shù)難度的問(wèn)題。
第六個(gè)應(yīng)用:人機(jī)對(duì)話。融合了語(yǔ)音識(shí)別、口語(yǔ)情感分析、再加上問(wèn)答系統(tǒng)的全部?jī)?nèi)容,是自然語(yǔ)言處理的最高境界,離機(jī)器人統(tǒng)霸世界不遠(yuǎn)了。
以及這么多數(shù)不完的應(yīng)用:文本挖掘、輿情分析、隱喻計(jì)算、文字編輯和自動(dòng)校對(duì)、作文自動(dòng)評(píng)分、OCR、說(shuō)話人識(shí)別驗(yàn)證……
好!自然語(yǔ)言處理就溫習(xí)到這里,讓我們上陣出發(fā)!
總結(jié)
以上是生活随笔為你收集整理的基于特征的文法分析以及概述自然语言处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 个人作业(alpha)
- 下一篇: 为什么那么多人转型做大数据