摘要: 自然語言處理(NLP)是計算機科學領域和人工智能領域中的一個分支句子成分分析器,它與計算機和人類之間使用自然語言進行互動密切相關。在這篇文章中句子成分分析器,你將學習到自然語言處理的基礎知識,深入瞭解到它的一些技術,瞭解到NLP如何從深度學習的最新進展。

自然語言處理(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,審校:袁虎。