最近的工作都是小任務,很簡單的小任務,水水的就寫好了。因為覺得自己在自然語言處理方面了解甚少,剩下的時間就在看《人工智能》,最近再看第8章自然語言理解。很認真的看過了解過,現在做一下總結。
自然語言理解現在大體分為5個層次:語音分析,詞法分析,語義分析和語用分析。
一.語音分析跳過,直接進入詞法分析。所謂詞法分析就是從句子中切分出單詞,找出詞匯的各個詞素,從中獲得單詞的語言學信息并確定單詞的詞義。
1.for English
repeat
look for word in dictionary
If not found
Then modify the word
Until word found or no further modification possible
所以在自然語言理解的詞典中一般只放詞根,支持詞素分析可以大大的壓縮電子詞典的規模。英語詞法分析的難度在于詞義判斷,以為單詞有很多解釋,要判定詞義只能依靠句子中其他相關單詞和詞組的分析。
2.對于漢語
漢語中的每一字都是一個詞素,但是要切分出各個詞就非常困難,最主要的就是切分歧義。一句話可以有多種拆分方式,要是遇到那種“下雨天留客天留我不留”,基本就死翹翹了。
二.句法分析
這個和匯編原理里的那個好像是一樣的,至于到底是不是一個,我也忘卻了。主要分為兩類:基于規則的方法和基于統計的方法。
1.短語結構語法
2.喬姆斯基形式語法
3.語法分析樹
4.轉移網絡
5.擴充轉移網絡
具體細節自己查去,我主要寫一下擴充轉移網絡(Augmented Transition Network,ANT),該語法屬于一種增強型的上下文無關語法。
ANT主要對轉移網絡中的弧附加了過程得到的,過程的主要功能:對文法特征進行賦值。前后把書翻看幾遍也沒有發現對文法特征進行賦值是什么,暫理解成把一個單詞賦給ART,當隨著弧走到這時,檢查詞性部分是否等于ART。如果是則把ART賦值給NP,S\DET,否則,失敗引起回溯。第二個就是檢查數或人稱條件是否滿足,并據此允許或不允許轉移,整個ANT語法就構成了一個句法樹。
三.語義分析(百度去吧,谷歌去吧)
大規模真實文本的處理
最近做的處理工作好像就是這些,在各種語料中提取各種庫,里面的很多發現自己也斷斷續續的在接觸。
這里的兩個語料庫一個是基于wordnet,另一種是hownet.hownet以前介紹過,直接wordnet.
其實wordnet就是把所有的詞構建成一棵樹,整個名詞組成一個繼承關系。

補充一下:在利用worknet進行相似度計算的時候,詞與詞之間的距離對于路徑相同的,層次高的要比層次低的層次低的距離遠,稀疏的要比稠密的距離遠。所以用worknet要hownet考慮更多的問題。對于句子與句子之間的相似度計算很容易實現,但是時間復雜度太高,上次做優化的時候,在89萬次計算中,只有1000+的有效計算,所以選擇把詞與詞之間的距離先算好,直接讀取,要快很多。
最后后面的詞性標注和分詞一直都是直接用公司的代碼去調用的,自己還在學習中,期待在不久的將來能夠掌握這些。
一天比一天多一點的進步就好,快樂碼農中。