人工智能是 最近的一個比較火的名詞,相信大家對於阿爾法狗都不陌生吧?其實我對人工智能以前也是非常抵觸的,因為我認為機器人會取代人類,成為地球乃至宇宙的霸主,但是人工智能帶給我的這種沖擊,我個人感覺是欲罷不能的,進入正題,網上找了一個人工智能的框架,它的名字叫做syntaxnet ,有興趣的可以去看看,底層是用C++實現的。
由於人工智能是一個比較新的名詞,連我自己接觸的也很少;所以也只能帶大家一起摸索了,如果園子里有人工智能 方面的大牛,還希望多多請教。
syntaxnet 官方的解釋是:有序的神經網絡模型。它有另外一個奇怪的名字,叫做:TensorFlow 。TensorFlow實現的模型的描述這里可以找到;GOOGLE花費了大量的時間去研究怎么才能讓機器更聰明的學習人類的語言,以及以更快的方式學習人類的語言;
這里有必要去科普一下TensorFlow,我剛剛查了下;官方的解釋是:TensorFlow是一款開源的使用使用數據流圖的數值計算類庫。在圖形中的節點(Node)呈現了各種不同的數學操作等等...剩下的就不翻譯了,有感興趣的可以谷歌一下。其實我外語不太好,各位抱歉了,翻譯啥的,慢慢來吧。
訓練模型
下面的教程當中,我將告訴大家 如何訓練模型,會介紹更多的和NPL相關的東西;重點關注點是NPL 管道。
詞性標注器
考慮如下句子,它有 很多種不同的意思;I saw the man with glasses 以上句子由下面幾部分組成:
不同的字符串可以分割成如下幾組:例如:"I","saw","the" 就是3組,分隔符為空格,每一個單詞都有它們不同的意思,大家學過英語的人都知道,英語有時候一個詞有10幾個意思,並且這次意思在不同的語境中的意思都是不同的;比如這里面的saw是to see的過去式,然而已經提到過,不同的詞在不同 的語境當中有不同的意思,比如saw在某些情況下可以作為名詞,也有可能是現在時,上面說的需要一點英語基礎的。
如果要理解不同的詞的意思,首先是需要知道不同的詞在在這個句子中所扮演的不同角色,這個過程就叫做Part-of-Speech (POS) Tagging,也就是詞性標注器,這些角色叫做POS Tags,雖然一個單詞可能對於這個句子來說擁有不同的上下文,但是對於任何的一個組成句子的單詞來說,當它們的語義組合在一起的時候,往往Tag(釋義)的個數會大幅減少,一般來說就是一種意思。
對於POS Tagging來說,對於一個句子當中定義動詞,是一個很有挑戰性的東西。當動詞和名詞的意思很相近的時候,對於任何語言來說,定義動詞或者名詞,都是極其困難的。 Universal Dependencies 的目的就是為了解決這個問題,有興趣的可以點開看看。
訓練SyntaxNet POS Tagger
要得到這個句子的所有單詞的正確Tag,我們首先必須讓機器能夠理解這個句子的具體意思,在當前上下文當中。這里我們可以采用一種句子當中的就近原則去分析,比如I saw the man with glasses, saw 的前面是I,saw 的后面是the;比如the的后面,一般來說是接名詞或者形容詞,而並不是動詞。
為了達到預估什么意思的目的,一般使用如下步驟:從左到右。我們先把這個句子的所有的臨近的詞配合起來,然后把這些意思都算出來,然后發送給神經網絡分類器的前饋,用來分析POS Tags在不同的語境當中的不同意思。因為我們是按照從左到右的順序,所以下一個單詞的意思,也可能是由前一個或者幾個單詞的意思來判斷的,比如I saw the man with glasses,中saw 如果 確定是動詞了,the 肯定不是動詞,man在句子中的意思或者是語法作用,肯定是前面的the來修飾的,所以后面的單詞就算有不同的意思,也能由前面的單詞,來進行篩選。
所有的在這個包里面的模型都使用了靈活的標記語言去定義特性。比如POS Tag ,帶參數brain_pos_features 在TaskSpec中,看起來像這樣:
stack(3).word stack(2).word stack(1).word stack.word input.word input(1).word input(2).word input(3).word; input.digit input.hyphen; stack.suffix(length=2) input.suffix(length=2) input(1).suffix(length=2); stack.prefix(length=2) input.prefix(length=2) input(1).prefix(length=2)
注意stack 的意思是表示這個單詞已經被Tagged了。所以,詳細的說,有3種不同的Types對於這個功能來說:單詞,后綴和前綴。所以更像一個嵌入式的矩陣,就好比Table里面又有個Table一樣,串聯起來了,送入了隱藏的層的鏈表中。
下面給大家一張圖先睹為快哦~~~

未完待續~~敬請期待~~~

