丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能學術(shù) 正文
發(fā)私信給MrBear
發(fā)送

0

入門 NLP 項目前,你必須掌握哪些理論知識?

本文作者: MrBear 編輯:幸麗娟 2019-08-15 11:41
導語:一篇全面易懂的 NLP 入門寶典!

引言

今年一月開始,我一直在從事一個從非結(jié)構(gòu)化的文本中提取信息的項目。在開始這個項目之前,我對自然語言處理(NLP)領(lǐng)域一無所知。當我剛開始研究這個領(lǐng)域時,我很快就找了一本名為「Python 自然語言處理」的書(圖書查閱地址:https://www.nltk.org/book/)。這本書對于我來說過于理論化了,但其中的知識基本是正確的,因此它對我來說仍然是無價的資源。接下來,我發(fā)現(xiàn)了 Dipanjan Sarkar 編寫的「Python 文本分析」(圖書查閱地址:https://www.apress.com/gp/book/9781484243534),并從頭到尾通讀了此書。這本書真的太棒了,它教會了我入門 NLP 項目所需的所有技術(shù)技能。最近,此書的第二版(https://www.apress.com/gp/book/9781484243534)也面世了,對上個版本進行了大量的擴充。

在本文中,我想概述一下我在學習 NLP 技術(shù)時研究過的一些問題。我知道有已經(jīng)有很多很棒的文章也討論過相同的問題(比如 Sarkar 撰寫的一系列文章:https://towardsdatascience.com/a-practitioners-guide-to-natural-language-processing-part-i-processing-understanding-text-9f4abfd13e72),但對于筆者來說,將這些問題寫下來對于自己梳理自己所掌握的知識很有幫助。

本文涉及的內(nèi)容

為簡潔起見,本文主要還是偏理論一些。今后我會編寫更多的實用性的文章?,F(xiàn)在,我將討論以下幾個問題:

  • 1. 使用 NLP 處理文本

  • 2. 從文本中提取特征

  • 3. 文本的監(jiān)督學習

  • 4. 文本的非監(jiān)督學習

文本預處理

一個典型的文本預處理工作流程由以下 4 個步驟組成:

  • 1. 句子分割

  • 2. 文本歸一化和分詞

  • 3. 詞性標注(POS)

  • 4. 命名實體識別

在大多數(shù)應用中,并不需要執(zhí)行以上所有的預處理步驟。是否需要進行命名實體識別取決于應用的具體業(yè)務需求,而詞性標注工作則通常由現(xiàn)代工具自動完成,從而改進歸一化和分詞步驟的某些部分。

句子分割

預處理工作流程的第一步是將文本分割成多個句子。在許多語言環(huán)境下(例如英語),標點符號(特別是句號、感嘆號和問號)可以被用來表明句子的結(jié)束。然而,句號字符也可以被用在縮寫中(如 Ms. 或 U.K.),此時句號字符則并不表示句子結(jié)束了。在這種情況下,我們會使用縮寫表來避免對句子邊界的誤分類。當文本包含特定領(lǐng)域的術(shù)語時,必須創(chuàng)建一個額外的縮寫詞典,從而避免產(chǎn)生不自然的詞(token)。

分詞和歸一化


入門 NLP 項目前,你必須掌握哪些理論知識?

分詞時的極端情況

「分詞」指的是將文本劃分成單詞和標點(即「詞」(token))。與在句子分割中的情況一樣,此時對標點符號的處理仍是一個具有挑戰(zhàn)性的問題。例如,U.K. 應該被視為一個詞,同時「don't」不應該被分成兩個詞:「do」和「not」。

詞干提取(stemming)和詞形還原(lemmatization)是文本歸一化過程的重要組成部分。歸一化由詞干提取和詞形還原組成。在詞干提取過程中,通過刪除后綴(如 -ed 和 -ing)來識別單詞的詞干。由此得到的詞干并不一定是一個單詞。類似地,詞形還原包括刪除前綴和后綴的過程,它與詞干提取的重要區(qū)別在于它的結(jié)果是自然的語言。這里的結(jié)果被稱為詞元(lemma)。詞干提取和詞形還原的例子如下表所示:

入門 NLP 項目前,你必須掌握哪些理論知識?

詞干提取和詞形還原的差異

這兩種技術(shù)都通過講將單詞轉(zhuǎn)化為其基本形式來降低文本中的噪聲。對于大多數(shù)應用來說(如文本分類或文檔聚類),保留單詞的意義是非常重要的,因此最好使用詞形還原而不是詞干提取。例如,「meeting」(名詞,會議)和「meeting」(動名詞,會見)通過詞干提取都會得到「meet」,因此并沒有準確地保留原本的意思,它們各自的詞元分別為「meeting」和「meet」。

其它的歸一化技術(shù)還包括:縮寫擴展、刪除數(shù)字和標點符號、糾正典型的語法錯誤等。這些操作大多都可以通過使用正則表達式來完成。

詞性標注

這一步是基于單詞的上下文和定義,將詞(token)分類為不同的詞性(POS)類別,也被稱為單詞分類或詞法分類。POS 類別包括名詞、動詞、介詞、副詞等。英語環(huán)境下的詞法分類示例如下圖表所示。詞性標注提升了詞形還原的效果,其對于命名實體識別是必要的。 

入門 NLP 項目前,你必須掌握哪些理論知識?

常用的 POS 類的示例

通常有三種類型的詞性標注器: 基于規(guī)則的、基于統(tǒng)計的和基于深度學習的詞性標注器?;谝?guī)則的詞性標注器依賴于顯式的規(guī)則,例如一篇文章的標題后面必須緊跟一個名詞,從而對這個詞(token)進行標注?;诮y(tǒng)計的詞性標注器使用概率模型來標注單個單詞或單詞序列?;谝?guī)則的詞性標注器非常精確但是卻與語言高度相關(guān)。

基于統(tǒng)計的標注器更易于創(chuàng)建,并且是與語言無關(guān)的,而代價則是犧牲了一定的精確度。如今,盡管工業(yè)界開始逐漸轉(zhuǎn)而尋求深度學習解決方案(在預先標注的句子集上訓練模型),但基于規(guī)則的模型和統(tǒng)計模型仍然會被混合使用?;诨旌戏椒ê蜕疃葘W習的方法提升了上下文敏感的詞性標注任務的性能。

命名實體識別

在識別命名實體之前,必須對詞(token)進行組塊分析(chunk)。組塊分析意味著對一組詞進行分割和標記。最常用的組塊是名詞短語組塊,它由限定詞、形容詞、以及一個名詞組成(例如,「a happy unicorn」(一只快樂的獨角獸))。句子「He found a happy unicorn」(他發(fā)現(xiàn)了一只快樂的獨角獸)由兩個組塊「他」和「一只快樂的獨角獸」組成。

命名實體是指示特定物體(例如,人、祖師、地點、日期、地緣政治實體)的名詞短語。命名實體識別(NER)的目標是識別文本中提到的命名實體。

入門 NLP 項目前,你必須掌握哪些理論知識?

帶有 NER 標簽的句子

機器學習

正如 Brink 等人定義的那樣,機器學習(ML)就是利用歷史數(shù)據(jù)中的模式來對新的數(shù)據(jù)做出決策[1],或者就像谷歌首席決策科學家 Cassie Kozyrkov 所述:「機器學習就是一個對事物的標記器,根據(jù)你對某件事物的描述,告訴你它應該被賦予什么標簽」(相關(guān)閱讀:https://hackernoon.com/the-simplest-explanation-of-machine-learning-youll-ever-read-bebc0700047c)。當你所面臨的問題過于復雜,而無法通過編程解決時(比如區(qū)分出圖像中不同種類的貓),或者解決方案需要適應時間的變化(比如識別手寫文本)時,應用機器學習技術(shù)是非常有用的。

通常而言,機器學習被分為監(jiān)督學習和無監(jiān)督學習。當我們的歷史數(shù)據(jù)包含標簽(例如,下圖中的「鴨子」和「不是鴨子」)時,我們可以使用監(jiān)督學習。另一方面,如果數(shù)據(jù)中沒有包含標簽,這應該使用非監(jiān)督學習。非監(jiān)督機器學習方法旨在總結(jié)或壓縮數(shù)據(jù)。

下面我們通過垃圾郵件檢測和異常檢測的例子來說明這兩種學習方法之間的區(qū)別。在監(jiān)督學習中,我們擁有帶有「垃圾郵件/非垃圾郵件」標簽的訓練數(shù)據(jù);而在非監(jiān)督學習中,我們則須要基于(無標簽的)電子郵件的訓練集檢測異常郵件。 

入門 NLP 項目前,你必須掌握哪些理論知識?

監(jiān)督學習和非監(jiān)督學習的區(qū)別

特征提取

所有的機器學習算法都需要數(shù)值型數(shù)據(jù)作為輸入。這意味著文本數(shù)據(jù)必須被轉(zhuǎn)化為數(shù)值型數(shù)據(jù)。這就是 NLP世界中特征提取步驟的本質(zhì)。

基于計數(shù)的策略

將文本轉(zhuǎn)化為數(shù)值向量的最簡單的方法就是使用詞袋(BoW)方法。詞袋方法的的原理是提取出文本中所有特有的單詞,并且創(chuàng)建一個文本語料庫,稱為詞匯表。通過使用該詞匯表,可以將每個句子表示為一個由 0 和 1 組成的向量,向量元素的取決于詞匯表中的某個詞是否出現(xiàn)在該句子中。下圖顯示了使用 BoW 方法在五個歸一化處理后的句子上創(chuàng)建的矩陣的一個示例。 

入門 NLP 項目前,你必須掌握哪些理論知識?

例句

入門 NLP 項目前,你必須掌握哪些理論知識?

根據(jù)上面的句子創(chuàng)建的 BoW 特征矩陣

為了給詞匯表添加更多的上下文信息,可以將詞(token)組合在一起。這種方法被稱為 N 元(N-gram)方法。一個 N-gram 是由 N 個詞(token)組成的序列。例如,一個 2-gram(雙字母組,bigram)是由兩個單詞組成的序列,而三字母組(trigram)則是由三個單詞組成的序列。

一旦選定了單詞表,無論是對于 1-gram、2-gram 還是 3-gram,都需要計算出 gram 出現(xiàn)的次數(shù)。我們可以使用 BoW 方法。這種方法的缺點是,會使流行詞(出現(xiàn)頻率高的單詞)變得過于重要。因此,這里最受歡迎的方法被稱為「詞頻-逆文檔頻率法」(TFIDF)。

入門 NLP 項目前,你必須掌握哪些理論知識?

對 TF-IDF 的抽象解釋

TF-IDF 由詞頻(TF)和逆文檔頻率(IDF)構(gòu)成,前者表示單詞相對于句子長度的重要性,而后者則表示單詞相對于文檔總行數(shù)出現(xiàn)的行數(shù)。直觀地說,如果一個單詞經(jīng)常出現(xiàn)在目標文檔中,但并不經(jīng)常出現(xiàn)在所有文檔的集合中,那么它的 TF-IDF 值就會較高。下圖顯示了根據(jù)之前見過的例句創(chuàng)建的 TF-IDF 矩陣的示例。請注意,單詞「fox」(狐貍)的得分與出現(xiàn)更為頻繁的單詞「rabbit」的得分有何不同。

入門 NLP 項目前,你必須掌握哪些理論知識?

根據(jù)例句創(chuàng)建的 TF-IDF 特征矩陣

高級策略

雖然基于技術(shù)的方法可以被用來表征單詞序列(n-gram),但它們并不能捕獲單詞的語義上下文,而這正是許多 NLP 應用的核心。我們通過詞嵌入技術(shù)來解決這個問題。我們可以使用詞嵌入將單詞表轉(zhuǎn)化為向量,這樣一來具有相似上下文的單詞的距離就相近。

「Word2Vec」(相關(guān)論文:https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf)是谷歌開發(fā)的一個框架。它使用淺層神經(jīng)網(wǎng)絡訓練詞嵌入模型。

「Word2Vec」算法有兩種類型:(1)Skip-gram,被用來預測給定單詞的上下文。(2)連續(xù)詞袋(CBOW)模型,被用來在給定上下文的情況下,預測下一個單詞。

全局向量方法(GloVe,https://www.aclweb.org/anthology/D14-1162)使用共現(xiàn)統(tǒng)計量來創(chuàng)建向量空間。該方法是對 Word2Vec 的擴展,期望得到更好的詞嵌入。下圖顯示了根據(jù)例句構(gòu)建的 GloVe 詞嵌入的示例,以及這些詞嵌入的圖形化表示。正如我們設(shè)想的那樣,類似的概念距離相近。

入門 NLP 項目前,你必須掌握哪些理論知識?

使用 GloVe 嵌入創(chuàng)建的特征矩陣

入門 NLP 項目前,你必須掌握哪些理論知識?

投影到一個二維空間的詞向量

此外,F(xiàn)acebook 也開發(fā)了一個名為「FastText」的 Word2Vec 的版本。FastText 是一個深度學習框架,它在創(chuàng)建向量空間時考慮到了單個的字符。

監(jiān)督學習

根據(jù)標簽(也被稱為目標)的格式不同,可以將監(jiān)督學習分為兩類。如果目標是一個類別的離散值(貓/狗),那么它就是一個分類問題;而如果目標是連續(xù)數(shù)值(房價),那么它就是一個回歸問題。在處理文本時,我們經(jīng)常會遇到分類問題。

入門 NLP 項目前,你必須掌握哪些理論知識?

典型的監(jiān)督學習工作流程

上圖顯示了一個文本分類系統(tǒng)的典型工作流程。我們首先將數(shù)據(jù)劃分為一個訓練集和一個測試集。我們需要對訓練數(shù)據(jù)和測試數(shù)據(jù)進行預處理和歸一化,接著就可以提取特征了。本文前面的章節(jié)已經(jīng)介紹了大多數(shù)流行的特征提取技術(shù)。當文本數(shù)據(jù)被轉(zhuǎn)化為數(shù)值形式后,我們就可以對其應用機器學習算法了。

我們將這個過程稱為訓練模型——模型從特征中學習模式從而預測標簽。首先使用通過一個被稱為超參數(shù)調(diào)優(yōu)的過程得到的模型參數(shù),可以對模型進行優(yōu)化,從而得到更好的性能。然后使用模型之前沒有遇到過的測試數(shù)據(jù)對生成的模型進行評價。模型的性能是通過各種度量來衡量的,例如準確率、精度、召回率、F1 值,等等。本質(zhì)上,這些得分是為了將真實標簽和預測標簽進行比較而建立的。

用于文本分類的典型算法包括:

  • 多項式樸素貝葉斯——該算法屬于樸素貝葉斯算法家族,構(gòu)建在對貝葉斯定理的應用之上,假設(shè)每個特征之間都是相互獨立的。多項式樸素貝葉斯是一種用于具有兩個以上不同標簽的分類任務的(多分類問題)對樸素貝葉斯算法的擴展。

  • Logistic 回歸——該算法使用 Sigmoid 函數(shù)預測分類得分。廣受歡迎的「sklearn」程序包允許對模型參數(shù)進行調(diào)優(yōu),使得該算法也可以用于多標簽分類問題。

  • 支持向量機(SVM,https://medium.com/machine-learning-101/chapter-2-svm-support-vector-machine-theory-f0812effc72)——該算法使用一條直線或一個超平面(如果有兩個以上的特征,此時需要創(chuàng)建一個多維空間)來分離不同的類。

  • 隨機森林——該算法是一種在不同數(shù)據(jù)子集山并行地訓練多個決策樹的集成方法。

  • 梯度提升機(GBM)——這是一個集成學習方法家族,它們訓練一系列弱學習器(如決策樹),從而獲得準確的結(jié)果。XGBoost 是這個算法家族中最流行的實現(xiàn)之一。

分類算法列表中的最后兩項是集成方法,它們使用許多預測算法來實現(xiàn)更好的泛化。集成方法的效果通常比單個模型更平均,并且集成方法在較大的數(shù)據(jù)集上效果更好。然而,正如 Sarkar 在[6]中所證明的,集成方法并不一定能更好地處理文本數(shù)據(jù)。

評價指標

入門 NLP 項目前,你必須掌握哪些理論知識?

混淆矩陣以及從中得出的各種度量方法

混淆矩陣是評估機器學習模型最簡單、最直觀的工具之一。它給出了實際值與預測值之間的關(guān)系。盡管混淆矩陣本身就是一個有力的工具,但是與其相關(guān)的術(shù)語又被用作了其它度量方法的基礎(chǔ)。關(guān)于混淆矩陣的重要術(shù)語如下所示:

  • 真正例——我們預測為正而實際也為正的情況。

  • 真負例——我們預測為負而實際也為負的情況。

  • 假正例——我們預測為正而實際為負的情況。

  • 假負例——我們預測為負而實際為正的情況。

根據(jù)混淆矩陣導出的度量標準如下:

  • 準確率(accuracy)——模型做出正確預測的數(shù)量與全部預測數(shù)量之比。

  • 精度(precision)——正確預測為正的樣本數(shù)與所有預測為正的樣本數(shù)之比,即有多少選中的項是相關(guān)的。

  • 召回率(recall)——正確預測為正的樣本數(shù)與所有實際為正的樣本數(shù)之比,即有多少相關(guān)的項被選中。

  • F1 值——使用調(diào)和均值融合精度和召回率得到的單個分值。調(diào)和均值是 x 和 y 相等時的平均值。但是當 x 和 y 不同時,它就會接近于更小的值,而不是更大的值。

只有當標簽包含大致相同數(shù)量的數(shù)據(jù)點時,準確率才是一個有用的度量指標。以上四個度量指標的取值范圍都是 0-1,其中 1 位最佳得分,而 0 位最差的得分。

非監(jiān)督學習

當待分析的數(shù)據(jù)集沒有標簽的時候,可以使用非監(jiān)督機器學習技術(shù)(如聚類)。聚類是非監(jiān)督學習的一個分支,其目的是將相似的對象組合到一起。

入門 NLP 項目前,你必須掌握哪些理論知識?

聚類的示例

常用的聚類算法分為以下幾類:

  • 基于連通性的聚類——也被稱為層次聚類,根據(jù)數(shù)據(jù)點之間的距離將它們連接起來。連接這些點的策略有兩類:(1)凝聚型。這是一種「自底向上」的方法,其中每個數(shù)據(jù)點一開始會形成自己的簇,然后迭代地合并成對的簇。(2)分裂型。這是一種「自頂向下」分裂的方法,其中整個數(shù)據(jù)空間被遞歸地分裂。對于凝聚型層次聚類來說,還有兩種必要的度量指標:說明兩個數(shù)據(jù)點相似程度的距離度量(典型的例子有:歐幾里得距離、漢明距離、余弦距離),以及一個說明數(shù)據(jù)點簇相似程度的連接標準。

  • 基于質(zhì)心的聚類算法——根據(jù)數(shù)據(jù)點與簇的質(zhì)心的臨近程度將數(shù)據(jù)劃分到不同的簇中?!窴-Means」是這類算法中最流行的一種實現(xiàn)。算法的基本流程如下:(1)選取簇的個數(shù) k,(2)將數(shù)據(jù)點分配到簇中,(3)計算簇的質(zhì)心,(4)重新將數(shù)據(jù)點分配到最近的質(zhì)心代表的簇中,(5)重復前兩個步驟,直到質(zhì)心不再變化。

  • 基于密度的聚類算法——數(shù)據(jù)空間被劃分,并形成密度不同的區(qū)域。其中 DBSCAN 和 OPTICS 是兩種最流行的算法,它們會提取出數(shù)據(jù)空間中臭咪咪的區(qū)域,將「早上」數(shù)據(jù)留在稀疏區(qū)域中。OPTICS 算法試圖克服 DBSCAN 在邊界和密度不一的數(shù)據(jù)集上性能不佳的缺點。

文本摘要

文本摘要任務可以被劃分為兩個部分:主題建模和自動文本摘要。其中,自動文本摘要是一類使用機器學習算法創(chuàng)建文檔摘要或一組文檔的過程。這些算法在處理大量文檔和長文檔時效果最佳。

另一方面,主題建模側(cè)重于從文檔集合中提取出主題。主題模型通常被稱為概率統(tǒng)計模型,因為他們使用到了統(tǒng)計技術(shù)(例如,奇異值分解(SVD)),從文本中發(fā)現(xiàn)潛在的語義結(jié)構(gòu)。SVD 依賴于線性代數(shù)中的矩陣分解技術(shù),能將特征矩陣分解成更小的部分。諸如潛在語義索引(LSI)、潛在狄利克雷分布(LDA)、以及非負矩陣分解(NNMF)等方法利用線性代數(shù)中的技術(shù)將文檔內(nèi)容劃分為不同的主題,其本質(zhì)上是單詞聚類,如下圖所示。當文本多樣性高時,主題建模算法往往會得到更好的結(jié)果。

入門 NLP 項目前,你必須掌握哪些理論知識?

主題建模原理示意圖

結(jié)語

在本文中,我針對讀者開始從事與自然語言處理和機器學習相關(guān)的項目時可能遇到的重要問題進行了概述。本文只是觸及了這個領(lǐng)域的皮毛。我甚至沒有涉及到使用遷移學習進行語言建模這樣激動人心的最新進展,讀者可以從 Sebastian Ruder 的博文(http://ruder.io/nlp-imagenet/)中閱讀到相關(guān)信息。

在我看來,現(xiàn)在正是在工業(yè)界實踐應用 NLP 技術(shù)的大好時機。正如 Yoav Goldberg 在最近的一次會議上所說的,大部分工業(yè)界同仁還停留在使用正則表達式解決問題的階段(相關(guān)閱讀:https://medium.com/@arnelapnin/highlights-from-spacy-irl-802229333785)。通過理解我在本文中介紹的理論,并將其應用到現(xiàn)實生活問題中,你可以真正造福于大眾。 雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

入門 NLP 項目前,你必須掌握哪些理論知識?

Yoav Foldberg 在 spaCy IRL 會議上報告應用 NLP 的最新進展

參考文獻

[1] H. Brink, J. W. Richards, and M. Fetherolf, Real-world Machine Learning (2017), Manning Publications

[2] S. Shalev-Shwartz, S. Ben-David, Understanding Machine Learning: From Theory to Algorithms (2014), Cambridge University Press

[3] T. Mikolov, I. Sutskever, K. Chen, G. S Corrado, and J. Dean. Distributed Representations of Words and Phrases and their Compositionality (2013), Advances in Neural Information Processing Systems 26

[4] J. Pennington, R. Socher, and C. D. Manning, GloVe: Global Vectors for Word Representation (2014), In EMNLP.

[5] P. Bojanowski, E. Grave, A. Joulin, and T. Mikolov. Enriching word vectors with subword information (2016), arXiv preprint  

[6] D. Sarkar. Text Analytics with Python: A Practitioner’s Guide to Natural Language Processing (2019), Apress

via https://towardsdatascience.com/the-theory-you-need-to-know-before-you-start-an-nlp-project-1890f5bbb793

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

入門 NLP 項目前,你必須掌握哪些理論知識?

分享:
相關(guān)文章

知情人士

當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說