因爲最近要作一些天然語言處理的分享,可是我又不是科班出身,因此只能臨時抱佛腳的學習如下基本的原理。可是因爲底子很薄,因此只能憑藉google和baidu有限的資料進行總結。這裏不會看到太複雜的公式,由於公式層面我也理解不了....就當作是從0學習天然語言處理的過程的記錄吧!html
更多內容參考:程序員
下面就步入正題吧!網絡
這個方向在幾個大廠應該都比較成熟了,好比有道翻譯、百度翻譯、Google翻譯等等。我平時用的有道比較多,通常都是去翻譯個英文文檔之類的。由於有道作的詞典比較專業,所以在英譯漢或者漢譯英的時候承認度能高點。app
咱們先來看看機器翻譯是怎麼被玩壞的吧!學習
PS: 這個梗真的不是我黑誰!我也是從PPT上面看到的,以爲這個例子很不錯.....搜索引擎
話說回來,在機器翻譯的領域,有不少難點。好比,語言的複雜程度,上下文的關聯等等。想一想看,一樣是漢語,山東大漢和陝西小哥以及東北姑娘說出來的都是不同的;再想一想漢語中的博大精深,一樣一段話,上下文不一樣表達的含義也是不同的;再複雜點,涉及到兩種語言的切換,就更恐怖了。google
目前業內主要的實現手段有基於規則的、基於實例的、基於統計的以及基於神經網絡的,看着感受濛濛噠,咱們來具體的瞭解下吧:翻譯
基於規則的機器翻譯,是最古老也是見效最快的一種翻譯方式。code
根據翻譯的方式能夠分爲:htm
從字面上理解,基於詞的翻譯就是直接把詞進行翻譯,可是也不是這麼簡單,會經過一些詞性的變換、專業詞彙的變換、位置的調整等一些規則,進行修飾。
能夠看到翻譯的質量不好,可是基於這種詞規則的翻譯,基本上能夠輔助咱們作一些翻譯的工做;並且這種翻譯也帶來了機器翻譯的0到1的飛躍
那麼基於結構轉換 其實就是不只僅考慮單個詞,而是考慮到短語的級別。好比根據端與do chicken
有可能被翻譯成烹飪雞
,那麼整句話就好多了咱們烹飪雞好嗎
最後一種就是基於中間語的翻譯,好比過去在金本位的年代,各國都有本身的貨幣。中國使用中國的貨幣,美國使用美國的貨幣,那麼貨幣之間怎麼等價呢?就能夠兌換成黃金來衡量價值。這樣就能夠進行跨幣種的買賣了..翻譯也是如此,假若由兩種語言沒法直譯,那麼也能夠先翻譯成中間語,而後經過中間語進行兩種語言的翻譯。
基於統計的機器翻譯明顯要比基於規則的高級的多,由於引入了一些數學的方法,整體上顯得更加專業。那麼咱們看看它是怎麼作的吧!
首先,咱們有一段英文想要把它翻譯成漢語:
we do chicken right
會根據每一個詞或者短語,羅列它可能出現的翻譯結果:
咱們/作/雞/右 咱們/作/雞/好嗎 咱們/幹/雞/怎麼樣 ...
這樣的結果有不少種...
而後咱們須要一個大量的語料庫,即有大量的文章...這些文章會提供 每一種翻譯結果出現的機率,機率的計算方式多是使用隱馬爾可夫模型,即本身算相鄰詞的機率,這個原理在《數學之美》中有介紹,感興趣的能夠去看看。
最終挑選機率最高的翻譯結果做爲最終的輸出。
總結來講大體的流程是:
所以能夠看到,這種翻譯方式依賴大量的語料庫,所以大多數使用這種方式並且效果比較好的都是那種搜索引擎公司,好比Google和Baidu,他們依賴爬蟲技術有互聯網中大量的文本資料,基於這些文本資料能夠獲取大量的語料來源,從而爲本身的翻譯提供大量的依據數據。
這種翻譯也比較常見,通俗點說就是抽取句子的模式,當你輸入一句話想要翻譯的時候,會搜索相相似的語句,而後替換不同的詞彙翻譯。舉個例子:
I gave zhangsan a pen I gave lisi an apple
就能夠抽取他們類似的部分,直接替換不同的地方的詞彙就行。這種翻譯其實效果不太好,並且太偏領域背景...
在深度學習火起來後,這種方式愈來愈受關注。咱們先來了解下什麼是神經網絡:
基本的意思就是咱們會有不少的輸入,這些輸入通過一些中間處理,獲得輸出。獲得的輸出又能夠做爲下一個計算過程的輸入...這樣就組成了神經網絡。
在機器翻譯中主要使用的是循環神經網絡,即上一次的輸出能夠做爲此次的輸入繼續參與計算。這樣有什麼目的呢?
就是在翻譯的過程當中,雖然是以句子爲單位進行翻譯的,可是每一句話都會對下一句話的翻譯產生影響,這樣就作出了上下文的感受....好比do chicken
單純的翻譯有不少中翻譯的結果。可是若是前面出現過廚師等這類的詞句,那麼這個單詞就能夠更傾向翻譯成烹飪雞
。
這種操做模式,在問答系統中也會遇到...以後會有所介紹.
總結的來講,若是想要快速搭建一個機器翻譯的系統,能夠先從基於規則開始,添加一些領域背景的知識,就能達到一個比較快速的效果。而基於統計的方法從數據獲取的成本和模型的訓練來講,成本都很高...
針對機器翻譯是否能代替人工翻譯,知乎上面也有很多討論,我這個門外漢也以爲,暫時不太可能,不過機器翻譯做爲人工翻譯的一種輔助手段仍是很必要的。好比那些非專業的翻譯人士,如寫論文的研究生、看前沿技術的程序員小朋友,這種機器翻譯能夠做爲一種頗有效的閱讀輔助的手段,由於大部分的時候,都是直接把某一段英文粘貼到翻譯的輸入框,而後按照翻譯出來的結果,本身再組織理解...(我想大部分人都是這麼用的吧~ 原諒我英語差)
那麼機器翻譯的掃盲就暫時介紹到這裏了,以後會再研究下情感分析相關的內容...