自然語言處理或NLP是在 最熱的今天AI的領域。NLP是人工智能的一個子領域,致力於使計算機能夠理解和處理人類語言,使計算機更接近人類對語言的理解。
計算機非常適合處理標準化和結構化數據,如數據庫表和財務記錄。他們能夠比我們人類更快地處理這些數據。但是我們人類不會在“結構化數據”中進行交流,也不會說二進制!我們使用單詞進行交流,這是一種非結構化數據。
然而,我們的Mac和PC還沒有人類對自然語言的直觀理解。他們無法真正理解語言的真正含義。他們不像我們的朋友艾倫一樣想到下面。
使用NLP算法,我們可以使我們的機器更接近人類更深層次的理解語言。今天,NLP使我們能夠構建聊天機器人,語言翻譯器和自動化系統等東西,向您推薦最好的Netflix電視節目。
我們將快速介紹NLP中的3種主要技術方法,以及我們如何使用它們來構建出色的機器!
階段一:基於規則的方法
基於規則的方法是所有AI算法的最早類型。實際上,在我們考慮使用機器學習實現一切自動化之前,他們統一了計算機科學。基於規則的算法的本質很簡單:
(1)定義一組規則,描述任務的所有不同方面,在本例中為語言
(2)指定這些規則的某種順序或權重組合以作出最終決定
(3)以相同的方式將由該固定規則組成的公式應用於每個輸入
考慮上面的無上下文語法的例子。樹的底部顯示了“顯示星期二從波士頓飛往舊金山的航班”的原始句子。
從人的角度來看,我們可以輕鬆定義一些規則來幫助機器理解這句話:
(1)只要我們看到“show”這個詞,我們就知道我們會做一些視覺。因此,我們將使用標記SHOW標記單詞“show”的每個匹配項以及與其一起使用的任何其他單詞
(2)“航班”一詞是名詞; 我們用原始單詞標記所有名詞。所以“航班”和“航班”都將用FLIGHT標記
(3)“from”自然總是指某些東西最初 來自哪裡,所以我們用ORIGIN標記它。我們使用DESTINATION標記的“to”和使用DEPARTDATE標記的“on”是相同的想法。
我們剛剛定義的這三條規則允許我們輕鬆理解這句話!
SHOW =呈現視覺效果
FLIGHTS =我們想要展示的東西
ORIGIN,DESTINATION,DEPARTDATE =我們想要展示的所有信息
基於規則的算法通常具有非常高的精度,因為規則是用戶定義的。當人類用戶定義規則時,我們知道它們是正確的。缺點是這種算法具有非常低的召回率; 我們無法定義世界上每一個城市!如果我們忘記將多倫多市放在我們的城市數據庫中,那麼根本不會被我們的算法檢測到
經典機器學習
教授機器如何理解語言的另一種方法是構建經典的機器學習模型。我們的想法是使用一些用戶定義的功能來表示一些“端到端”模型。與基於規則的方法類似,此類功能設計可能非常自然:
- 這個詞是否大寫?
- 這個詞是一個城市嗎?
- 前一個和下一個詞是什麼?
- 它是句子中的第一個,最後一個還是一些中間詞?
將所有這些信息結合在一起可以讓我們非常了解單詞或短語的實際含義。
由於我們正在培訓機器學習模型,因此我們所有的數據都需要在某個時刻表示為數字。資本與非資本可以表示為1.0和0.0; 對於城市名稱也可以這樣做 – 在我們的整個城市列表中使用單熱編碼的1和0。
單詞通常表示為基於它們與其他單詞的關係的固定長度向量 – 具有相似含義的單詞將具有相似的向量,反之亦然。我們可以將單詞在句子中的位置表示為某個整數。它可以是分類(第一,中間,最後)或開放(句子中第一個單詞的步數)
機器學習模型可以比基於規則的模型具有更高的召回率。但為了實現高精度,它們的功能需要非常精心設計和全面。
深度學習
經典的機器學習算法可以具有高精度並且相對容易實現。但它們的主要缺點確實阻礙了它們:它們需要特徵工程。
設計特點,只是普通的硬盤。我們自然而然地理解自然語言,但我們仍然很難將其分解為具體步驟。我們無法想到理解語言的所有必要規則!
通過深入學習,我們不必進行任何複雜的功能工程。預處理仍然大致相同:將我們的文本轉換為計算機可以理解的某種矢量表示,數字。
但是,深度學習不是使用工程特徵來進行計算,而是讓神經網絡自己學習這些特徵。在訓練期間,輸入是文本的特徵向量,輸出是一些高級語義信息,例如情感,分類或實體提取。在這一切的中間,曾經手工設計的功能現在由深度神經網絡通過找到將輸入轉換為輸出的某種方式來學習。
使用NLP的深度學習幾乎總能獲得更高的準確性。缺點是往往比基於規則和經典的機器學習方法慢得多。它們可能需要幾秒鐘才能運行,並且需要一些GPU計算。
掌握所有可用工具的知識總是有利的。如果您的準確度降低2-4%,那麼請使用簡單易用的基於規則的方法。如果你真的想要擠出最後一點精確度並有錢花錢,那就去重量級深度學習吧!
本文轉自 medium,原文地址(需要科學上網)
Comments