所謂的自然語言處理,就是研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法,說到底,就是研究人如何同計算機交流的學科
那他的核心技術又在哪兒?為什么可以實現人和計算機之間的交流?
我們從以下幾個方面談談:
先了解一下目前遇到的難點。
1.語言的多樣性造成了語種不同,那就會導致語序不同,所以如果用同樣的方法處理不同的語言,就可能造成語序不連貫的問題。
2.詞義的歧義性,很多的詞并不只代表一個意思,還需要看上下文語境。比如蘋果,如果沒有上下文語境,我們如何知道,這是水果,還是品牌呢?
3.句法的模糊性,自然語言的語法是摸棱兩可的,針對同一個句子可能有多種剖析樹,而我們必須知道前后文才能選出最合適的剖析樹。
4.大規模數據集的建設,自然語言處理是以統計機器學習為基礎的,那就需要大量的數據集,但是構建數據集是一項費時費力還費錢的工作,所以導致目前的數據集并沒有達到任意使用的地步。
知道難點以后,我們再去看他的核心技術,為什么能夠進行機器和人類的交流。
1.多層感知機的應用,通過非線性激活函數(tanh函數,Sigmoid函數)對線性不可分數據進行分類
2.CNN
卷積神經網絡的應用,作為一種特殊的前向傳播網絡,獨特的結構性帶來的是更少的參數需求和更深的網絡層數。
3.RNN
循環神經網絡的應用,解決卷積神經網絡無法結合上下文關系的問題,使用循環結構,使得其像人一樣擁有了記憶能力。
4.LSTM
長短期記憶網絡的應用,LSTM是一種特殊的RNN,用來解決長期依賴問題。和傳統的RNN一樣,網絡結構是重復的,每次的訓練,神經元和神經元之間需要傳遞一些信息。傳統的RNN,每個重復的模塊里都有一個簡單tanh層。
5.SequencetoSequence(序列對),
一類End-to-End的算法框架,也就是從序列到序列的轉換模型框架,應用在機器翻譯,自動應答等場景。Seq2Seq一般是通過Encoder-Decoder(編碼-解碼)框架實現,Encoder和Decoder部分可以是任意的文字,語音,圖像,視頻數據,模型可以采用CNN、RNN、LSTM、GRU、BLSTM等等。所以基于Encoder-Decoder,我們可以設計出各種各樣的應用算法。
以上觀點如有錯誤,還請指正
內心OS:(大家多多關注呀!)