天天看點

自然語言處理入門教程

自然語言處理(NLP)是計算機科學領域和人工智能領域中的一個分支,它與計算機和人類之間使用自然語言進行互動密切相關。NLP的最終目标是使計算機能夠像人類一樣了解語言。它是虛拟助手、語音識别、情感分析、自動文本摘要、機器翻譯等的驅動力。在這篇文章中,你将學習到自然語言處理的基礎知識,深入了解到它的一些技術,了解到NLP如何從深度學習的最新進展。

1. 簡介

自然語言處理(NLP)是計算機科學、語言學和機器學習的交叉點,它關注計算機與人類之間使用自然語言中的溝通交流。總之,NLP

緻力于

讓計算機能夠了解和生成人類語言。NLP技術應用于多個領域,比如天貓精靈和Siri這樣的語音助手,還有機器翻譯和文本過濾等。

機器學習是受NLP影響最深遠的領域之一,尤為突出的是深度學習技術

。該領域分為以下三個部分:

1.語音識别:将口語翻譯成文本。

2.自然語言了解:計算機了解人類的能力。

3.自然語言生成:計算機生成自然語言。

2. 為什麼NLP很難

人類語言有其特殊性。人類語言專門用于傳達講話者和寫作者的意思,即使小孩子能夠很快學會,它依然是一個複雜的系統。它的另一個顯著之處在于它完全與符号有關。Chris Manning(斯坦福教授)表示,它是一個離散的、象征性的、絕對的信号系統,這意味着人們可以通過使用不同的方式傳達相同的含義,比如演說,手勢,信号等。人類大腦對這些符号的編碼是持續的激活模式,在這個模式中,符号通過聲音和視覺的連續信号實作傳輸。

由于其複雜性,了解人類語言被認為是一項艱巨的任務。例如,在句子中排列單詞有無數種不同的方法。此外,一個單詞可以有多種含義,并且正确解釋句子需要恰當的語境資訊。每種語言或多或少都是獨特且含糊的。比如:“The Pope’s baby steps on gays”,這句話顯然有兩種截然不同的解釋,這是反映NLP中的困難之處的一個很好的例子。

随着計算機對語言的了解愈漸完美,将會産生可以處理網際網路上全部資訊的人工智能(AI),繼而産生強人工智能(AGI)。

3.句法和語義分析

句法分析和語義分析是了解自然語言的兩種主要方法。語言是一組意義的語句,但是什麼使語句有意義呢?實際上,你可以将有效性分為兩類:句法和語義。術語“句法”是指文本的文法結構,而術語“語義”是指由它表達的含義。但是,句法上正确的語句不必在語義上正确。隻需看看下面的例子。語句“cow kow supremely”在文法上是有效的(主語-動詞-副詞),但沒有任何意義。

句法分析:
自然語言處理入門教程

句法分析,也稱為文法分析或解析,是通過遵循正式文法規則來分析自然語言的過程。文法規則适用于單詞和詞組,而不是單個單詞。文法分析主要為文本配置設定語義結構。

語義分析:

我們了解他人的語言是一種無意識的過程,依賴于直覺和對語言本身的認識。是以,我們了解語言的方式很大程度上取決于意義和語境。計算機卻不能依賴上述方法,需要采用不同的途徑。 “語義”這個詞是一個語言術語,意思與意義或邏輯相近。

是以,語義分析是了解單詞、符号和語句結構的含義和解釋的過程,這使計算機能夠以人類的方式了解部分涉及意義和語境的自然語言。為什麼說隻能部分了解呢?是因為語義分析是NLP中最棘手的部分之一,仍未完全解決。例如,語音識别技術已非常成熟,并且工作近乎完美,但仍然缺乏在自然語言了解(例如語義)中的熟練程度。手機基本上可以了解我們所說的内容,但通常無法用它做任何事情,因為它不了解其背後意義。

4. 了解文本的技巧

下面我們将讨論多種用于自然語言處理的現行技術。

什麼是

解析

?首先,讓我們看一下詞典釋義:

解析—“将句子分解為其組成部分,并闡述各部分的句法角色。”

實際上解釋的已經非常到位,但它可以更全面一些。解析是指計算機對句子的形式分析,其結果是一個解析樹,這個解析樹可以可視化地顯示句子成分之間的句法關系,用于進一步處理和了解。

在下面你可以看到句子“The thief robbed the apartment”的解析樹,以及由它傳達的三種不同資訊類型的描述。

自然語言處理入門教程

我先看單個單詞正上方的字母,它們用于顯示每個單詞的詞性(名詞-N,動詞-V和限定詞-DT)。我們再看解析樹中更高的層級,一些單詞進行層次分組組成短語。例如,“the thief”是一個名詞短語(NP),“robbed the apartment”是一個動詞短語(VP),這些短語一起形成一個句子(S),在樹中标記在更高的層級。

這些短語以名詞為主體,包含一個或多個單詞,可能還包含描述性詞語、動詞或副詞,簡言之,就是把把名詞和與其相關的單詞組合在一起。

從解析樹中還能看出,單詞的表述結構影響其在句中的文法關系。例如,在此結構中,“thief”是“robbed”的主語。

結合結構來看,動詞“robbed”,上方标有“V”,更上一級标有“VP”;主語“thief”,上方标有N和“NP”,通過“S”聯系在一起。這就像主語—動詞關系的模闆,同樣還有許多其他類型的關系。

詞幹提取: 詞幹提取

是一種來自形态學和資訊檢索的技術,在NLP中用于預處理和效率提升。但是,我們首先看一下詞典中的釋義:詞幹 — “起源于或由其引起。”

基本上,“詞幹提取”是将單詞進行縮減得到詞幹的過程,而“詞幹”的實際意義是是在删除單詞的所有的字首字尾之後保留的一部分。例如,“touched”,它的詞幹是“touch”,同時“touch”也是“touching”等詞的詞幹。

為什麼需要詞幹?因為我們會遇到不同的詞彙變形,而實際上它們具有相同的詞幹和意義。舉例來說:

# I was taking a ride in the car

# I was riding in the car.

這兩個句子意思是一緻的,ride和riding的用法也是相同的。

詞彙表中所有的單詞有不同的注釋,其中還包括大量實際意義相同的單詞,要存儲它們,需要一個龐大資料庫,但是通過詞幹提取,僅關注單詞的詞幹,可以很好地解決這個問題。現行的通用算法之一是1979年的“Porter Stemming Algorithm”(波特詞幹算法),非常使用便捷。

文字分割:

NLP中的

文本分割

是将文本轉換為有意義的單元的過程,可以是單詞、句子、也可以是不同的主題或潛在的意圖等。在文本分割中,文本根據不同語種被分割為成份單詞,由于人類語言的複雜性,通常比較難。舉個例子,在英語中利用空格來分隔單詞,相對高效實用,但是也有像“ice box”這類詞語的例外,ice和box這兩個由空格隔開的詞合并一起使用才有原本含義的,是以人們有時把它寫作“ice-box”,那麼就給文字分割帶來了難題。

命名實體識别: 命名實體識别

(NER)用于确定文本中哪些詞條屬于命名實體,這些詞條可以被定位并歸入預定義的類别,類别的範圍包括人名,組織,地點,還有貨币價值和百分比。

看下面的例子:

NER之前:Martin bought 300 shares of SAP in 2016.

NER之後:[Martin]Person bought 300 shares of [SAP]Organization in [2016]Time.

關系抽取: 關系提取

采用“命名實體識别(NER)”的命名實體,并識别它們之間的語義關系。這可能意味着它能夠發現文本中詞語之間的關聯性,例如誰與誰結婚,某人在哪個公司工作等。這個問題也可以轉換為分類問題,然後為每種關系類型訓練機器學習模型。

情感分析:

通過情感分析,我們想要确定例如說話者或作者關于文檔,互動或事件的态度(例如情緒)。是以,需要了解文本以預測潛在意圖是一種自然語言處理問題。情緒主要分為積極,消極和中性兩類。通過使用情感分析,我們希望根據他撰寫的關于産品的評論來預測客戶對産品的看法和态度。是以,情感分析廣泛應用于評論,調查,文檔等等

如果你對使用Python中的某些技術感興趣,可以檢視我建立的Python的自然語言工具包(NLTK)的Jupyter Notebook。你還可以檢視我的部落格文章,了解如何使用Keras建構神經網絡,我将訓練神經網絡進行情感分析。

5. 深度學習和NLP

深度學習和自然語言的核心是“詞義”,在這裡,單詞用一個實數向量來表示。是以,通過向量來代表單詞單詞,我們可以将單詞置于高次元的空間中,由向量表示的單詞起到語義空間的作用。這僅僅意味着在該高維向量空間中,形近意近的單詞傾向于聚集在一起。下圖中,可以看到單詞含義的直覺展示:

自然語言處理入門教程

在此空間中,如果想要知道某一組聚內建類的單詞的含義,可以通過使用主成分分析法(PCA),也可以使用降維法。但這些方法太簡單并且會遺漏了周邊的大量資訊,因而産生誤差。在研究的初始階段,這些方法很好用,(如資料科學中的邏輯或線性回歸)但并不是前沿技術。

我們還可以将單詞的一部分當作向量,這些向量可以代表單詞的含義。想象一下“undesirability”這個詞。使用“形态學方法”,它涉及一個詞所具有的不同部分,我們認為它由詞素(單詞部分)構成:“Un + desire + able + ity”。每個語素都有自己的向量。這允許我們建構一個神經網絡,它可以構成一個更大的機關的意義,而更大的機關又由所有這些語素組成。

深度學習還可以通過建立句法分析器來了解句子的結構,谷歌正在使用這樣的依賴解析技術,在他們的“McParseface”和“SyntaxNet”(兩種語言解析器),不過更加宏大,更加複雜。

通過分析句子結構,我們開始了解句子的意義,可以從單詞的含義開始,也可以從整個短語和句子開始,無論單詞的意義、短語還是句子,都用向量來表示。如果想知道句子之間的關系,我們可以建立神經網絡來幫助分析。

深度學習

也适用于情感分析。請看這個電影評論:“這部電影不在乎是不是巧妙,也不在乎幽默與否”。傳統的機器學習算法會認為這是一個積極的評論,因為“聰明”和“幽默”是積極的詞彙,但是神經網絡能夠識别出它的真正含義。

另外,深度學習算法實作的機器翻譯中,它從句子開始翻譯,并生成一個向量,然後用另外一種語言生成所需要的資訊。

總而言之,NLP與深度學習相結合,就是表示單詞、短語的向量,以及它們的含義。

數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!

本文由北郵

@愛可可-愛生活

 老師推薦,

阿裡雲雲栖社群

組織翻譯。

文章原标題《Introduction Into Semantic Modeling for Natural Language Processing》

作者:Aaron Radzinski

譯者:Mags,審校:袁虎。

文章為簡譯,更為詳細的内容,請檢視

原文

繼續閱讀