概述
遞歸轉移網路(RTN)是ATN的前身,RTN利用有限狀態機原理,把句子劃分成由若干種狀態和弧組成的狀態圖,每種狀態之間用弧來連線。其中有一個狀態需要被設定為初始狀態,在弧上不僅可以標以終結符號(即具體的詞,如“的”)和詞類符號(如名詞、動詞、形容詞等),而且可以指定一個RTN網路名稱的非終結符,狀態中的一個子集叫做結束狀態。RTN很好的解決了上下文無關文法的辨別問題,但上下文無關文法對於自然語言的處理是不完善的,它不能分析句子的成分,更無法分析上下文間的依賴性問題。
對此ATN對RTN做了以下幾方面的擴展,包括暫存器組,測試和動作。ATN也稱為代標記的遞歸轉移網路,因為它把當前信息、如詞語、句子成分等信息存放在暫存器中,通過測試的方法來查找下一狀態,在測試通過之後執行相關的動作,然後跳到下一狀態。在做了這些擴充之後ATN算法的靈活性比較好,但是在一定程度上增加了系統的開銷,以及對於有歧義的句子可能會有幾種不同的路徑。
ATN算法會對信息進行語法、詞法檢查,所以在對信息進行預處理時一會有很好的效果,這對提高過濾的準確性是一個很好的保障。
ATN的優缺點
準確、高效是ATN算法的主要優點,因為在處理中文分詞的時候,會對整個句子做語法、詞法檢查,所以相比一般的分詞算法,它的準確性相對較高一些。同時,它可以從上下文無關文法出發,高效的轉換到上下文相關文法,而一般的算法在這個過程中,時間消耗會迅問題速增加。ATN算法更接近人的思維能力,尤其是中文,它的表達很靈活,可以實現很多不同類型的語法,也容易用人工智慧語言LISP來實現。
ATN算法對語法過分的依賴,導致了它無法很好的處理一些不符合語法規則的句子或者一些不完全符合語法規則的句子。同時雖然ANT算法在利用語法關聯可以很好的解決不符合語法規則帶來的歧義切分問題,但它也帶來了另外一個問題,ATN算法本身也存在歧義問題,因為漢語的詞性很多,可能存在不同的分析結果都符合語法規則,這種問題稱為ATN歧義問題。
ATN歧義問題
ATN歧義問題是由漢語多詞性造成的,這個問題導致的結果和一般分詞算法產生的歧義分解是一樣的,但是造成歧義的原因不一樣。ATN歧義問題的起因有以下幾點:
1、相連的幾個字之間成詞的組合存在衝突,比如“還有著”,“中繼續”,“基本功能”等。
2、句子中連續出現不同長度且都可以構成詞的情況,比如“基本功能”中,“基本”可以成詞,“基本功”也可以成詞,而“功能”也是一個詞。
3、詞存在相同的詞性,這是最重要的條件。以“基本功能”來分析在ATN算法中產生歧義的過程,“基本”共有三個詞性,名詞,形容詞和副詞,“基本功”是一個名詞,同時“功能”也是名詞詞性,形容詞+名詞構成一個短語結構,很容易就可以把“基本”和“功能”切分開,而且是正確的切分。但是把它放在一個句子中“一個人的基本功能體現在工作中”,這裡就存在一個問題就是“基本功”是一個名詞,“基本”也是一個名詞。很容易就可以把這個話切分成一下正確的結果:“一/個/人/的/基本功/能/體現/在/工作/中”,這個句子的主幹是:基本功體現,這是個名詞短語作主語,動詞短語作謂語的結構。但是機器可能會得到如下結果:“一/個/人/的/基本/功能/體現/在/工作/中”,這樣的分詞結果是符合語法規則的,因為計算機並不知道“人”這個主題不能用來直接修飾“功能”,雖然這不符合自然人的理解,但是程式可以接受這種分析結果。
對於這樣的問題,ATN算法並不能解決,只能儘量減少這種情況的發生,為此專門設計了一個算法來判斷連續幾個漢字之間成詞衝突的問題,該算法首先檢查詞的最後一個字元和詞的下一個字元是否能夠成詞,如果不能成詞,則判斷為不存在衝突的情況,當前詞可以直接存入堆疊,相反如果成詞,則繼續檢查下一個字元與下下個字元能否成詞,如果成詞,那么判斷不存在衝突,如果不成詞則判斷為成詞衝突,這樣的情況下,需要檢查兩個詞作為某種詞性的機率有多大,以它最高頻率的詞性來作為該詞的當前詞性。“基本”的三個詞性中,作為形容詞出現的頻率341.4377是最高的,作為名詞的頻率只有18.7424,所以這裡把“基本”處理成形容詞,“基本功”只有名詞詞性,在名詞短語中助詞後面只可以接受名詞,所以把“基本功”作為一個詞,從而得到了正確的分析結果。