亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者:Emmanuel Ameisen
編譯:ronghuaiyang

導(dǎo)讀

利用機(jī)器學(xué)習(xí)方法來理解和利用文本,從最簡單的到state-of-the-art,由淺入深,循序漸進(jìn)。
手把手教你解決90%的NLP問題

 

文本數(shù)據(jù)到處都是

無論是一家已成立的公司,還是正在開發(fā)一項(xiàng)新服務(wù),都可以利用文本數(shù)據(jù)來驗(yàn)證、改進(jìn)和擴(kuò)展產(chǎn)品的功能。從文本數(shù)據(jù)中提取語義和學(xué)習(xí)的科學(xué)是一個(gè)被稱為自然語言處理(NLP)的活躍研究課題。

NLP每天都有新的重要的進(jìn)展,這是一個(gè)非常大的領(lǐng)域。然而,在與數(shù)百家公司合作之后,Insight團(tuán)隊(duì)發(fā)現(xiàn)一些關(guān)鍵的實(shí)際應(yīng)用比其他應(yīng)用出現(xiàn)得更頻繁:

  • 確定不同的用戶/客戶群體(例如預(yù)測客戶流失、終身價(jià)值、產(chǎn)品偏好)
  • 準(zhǔn)確檢測和提取不同類別的反饋(正面和負(fù)面的評論/意見,屬性,如衣服尺寸/合身度…)
  • 按意圖將文本分類(例如:請求基本幫助、緊急問題)

雖然在網(wǎng)上有許多NLP的論文和教程,但我們發(fā)現(xiàn)很難找到指導(dǎo)方針和技巧來從根本上有效地解決這些問題。

這篇文章有什么用?

在一年領(lǐng)導(dǎo)了數(shù)百個(gè)項(xiàng)目,并從美國各地的頂級團(tuán)隊(duì)獲得建議之后,我們寫了這篇文章來解釋如何構(gòu)建機(jī)器學(xué)習(xí)解決方案來解決上述問題。我們將從最簡單可行的方法開始,然后轉(zhuǎn)向更細(xì)微的解決方案,如特征工程、詞向量和深度學(xué)習(xí)。

讀完這篇文章,你會知道:

  • 收集、準(zhǔn)備和檢查數(shù)據(jù)
  • 建立簡單的模型開始,并過渡到深入學(xué)習(xí),如果必要的話
  • 解釋和理解你的模型,以確保你實(shí)際捕獲的是信息而不是噪音

我們寫這篇文章是作為一個(gè)循序漸進(jìn)的指南,它還可以作為高效標(biāo)準(zhǔn)方法的高層次概述。

第一步: 收集數(shù)據(jù)

數(shù)據(jù)源的樣例

每一個(gè)機(jī)器學(xué)習(xí)問題都是從數(shù)據(jù)開始的,比如電子郵件、帖子或tweet列表。常見的文本信息來源包括:

  • 產(chǎn)品評論(亞馬遜,Yelp,各種應(yīng)用商店)
  • 用戶生成內(nèi)容(tweet、Facebook帖子、StackOverflow問題)
  • 故障排除(客戶請求、支持票、聊天日志)

“Disasters on Social Media” dataset

“社交媒體災(zāi)難”數(shù)據(jù)集

對于本文,我們將使用圖8提供的數(shù)據(jù)集,名為“社交媒體上的災(zāi)難”,其中:

貢獻(xiàn)者們查看了1萬多條推文,這些推文都經(jīng)過了各種各樣的搜索,比如“著火”、“隔離”和“混亂”,然后指出這條推文是否指的是災(zāi)難事件(而不是帶有這個(gè)詞的笑話、電影評論或其他非災(zāi)難性的東西)。

我們的任務(wù)是檢測哪些tweet是關(guān)于災(zāi)難性事件的,而不是與之相關(guān)的主題,比如電影。為什么?一種潛在的應(yīng)用可能是,在不理會對Adam Sandler最新電影的評論的情況下,只向執(zhí)法官員通報(bào)緊急情況。這項(xiàng)任務(wù)的一個(gè)特殊挑戰(zhàn)是,這兩個(gè)類都包含用于查找tweet的相同搜索詞,因此我們將不得不使用更細(xì)微的差異來區(qū)分它們。

在本文的其余部分,我們將把關(guān)于災(zāi)難的tweet稱為“災(zāi)難”,而關(guān)于其他任何事情的tweet稱為“無關(guān)”。

標(biāo)簽

我們已經(jīng)標(biāo)記了數(shù)據(jù),所以我們知道哪些tweet屬于哪些類別。正如Richard Socher在下面所概述的,找到和標(biāo)記足夠的數(shù)據(jù)來訓(xùn)練模型通常更快、更簡單、更便宜,而不是試圖優(yōu)化一個(gè)復(fù)雜的無監(jiān)督方法。

手把手教你解決90%的NLP問題

 

第二步: 數(shù)據(jù)清洗

我們遵循的第一條規(guī)則是:“你的模型永遠(yuǎn)只會和你的數(shù)據(jù)一樣好。”

數(shù)據(jù)科學(xué)家的關(guān)鍵技能之一是知道下一步應(yīng)該是處理模型還是數(shù)據(jù)。一個(gè)好的經(jīng)驗(yàn)法則是先查看數(shù)據(jù),然后整理它。一個(gè)干凈的數(shù)據(jù)集將允許模型學(xué)習(xí)有意義的特征,而不會在不相關(guān)的噪聲上過擬合。

這里有一個(gè)清單,可以用來清理你的數(shù)據(jù):

  1. 刪除所有不相關(guān)的字符,例如任何非字母數(shù)字字符
  2. Tokenize通過將文本分隔成單個(gè)單詞來實(shí)現(xiàn)文本的標(biāo)記
  3. 刪除不相關(guān)的單詞,比如twitter上提到的“@”或url
  4. 將所有字符轉(zhuǎn)換為小寫,以便對“hello”、“hello”和“hello”等單詞一視同仁
  5. 考慮將拼寫錯(cuò)誤或交替拼寫的單詞組合成一個(gè)表示(例如“cool”/“kewl”/“cooool”)
  6. 考慮詞型還原(將“am”、“are”和“is”等單詞簡化為“be”等常見形式)

在遵循這些步驟并檢查其他錯(cuò)誤之后,我們可以開始使用干凈的、有標(biāo)記的數(shù)據(jù)來訓(xùn)練模型!

第三步:找一個(gè)好的數(shù)據(jù)表示

機(jī)器學(xué)習(xí)模型以數(shù)值作為輸入。例如,處理圖像的模型采用矩陣表示每個(gè)顏色通道中的每個(gè)像素的強(qiáng)度。

手把手教你解決90%的NLP問題

用數(shù)字矩陣表示的笑臉

我們的數(shù)據(jù)集是一個(gè)句子列表,所以為了讓我們的算法從數(shù)據(jù)中提取模式,我們首先需要找到一種方法,以我們的算法能夠理解的方式來表示它,即作為一個(gè)數(shù)字列表。

One-hot編碼(詞袋)

表示計(jì)算機(jī)文本的一種自然方法是將每個(gè)字符單獨(dú)編碼為一個(gè)數(shù)字。如果我們要將這個(gè)簡單的表示形式提供給分類器,那么它就必須僅基于我們的數(shù)據(jù)從零開始學(xué)習(xí)單詞的結(jié)構(gòu),這對于大多數(shù)數(shù)據(jù)集來說是不可能的。我們需要使用更高層次的方法。

例如,我們可以為數(shù)據(jù)集中所有惟一的單詞構(gòu)建一個(gè)詞匯表,并為詞匯表中的每個(gè)單詞關(guān)聯(lián)一個(gè)惟一索引。然后,每個(gè)句子都被表示為一個(gè)列表,這個(gè)列表與我們詞匯表中不同單詞的數(shù)量一樣長。在這個(gè)列表的每個(gè)索引處,我們標(biāo)記給定單詞在我們的句子中出現(xiàn)的次數(shù)。這稱為詞袋模型,因?yàn)樗且粋€(gè)完全忽略句子中單詞順序的表示。如下圖所示。

手把手教你解決90%的NLP問題

把句子表示成詞袋。左邊是句子,右邊是描述。向量中的每個(gè)索引表示一個(gè)特定的單詞。

嵌入的可視化

在“社交媒體災(zāi)難”的例子中,我們的詞匯量大約有20000個(gè)單詞,這意味著每個(gè)句子都將被表示為一個(gè)長度為20000的向量。向量中大部分都是0,因?yàn)槊總€(gè)句子只包含詞匯表的一個(gè)非常小的子集。

為了查看我們的嵌入是否捕獲了與我們的問題關(guān)的信息(即tweet是否與災(zāi)難有關(guān)),將它們可視化并查看類之間是否有很好的分隔是一個(gè)好主意。由于詞匯表通常非常大,并且不可能在20,000個(gè)維度中可視化數(shù)據(jù),因此PCA等技術(shù)將幫助將數(shù)據(jù)投射到兩個(gè)維度。下圖所示。

手把手教你解決90%的NLP問題

詞袋嵌入的可視化

這兩個(gè)類看起來沒有很好地分離,這可能是我們的嵌入的一個(gè)特性,或者僅僅是維數(shù)減少的一個(gè)特性。為了了解詞袋特征是否有用,我們可以訓(xùn)練一個(gè)基于詞袋特征的分類器。

第四步: 分類

當(dāng)?shù)谝淮翁幚硪粋€(gè)問題時(shí),一般的最佳實(shí)踐是從能夠解決該工作的最簡單的工具開始。每當(dāng)涉及到對數(shù)據(jù)進(jìn)行分類時(shí),由于其通用性和可解釋性,最受歡迎的是Logistic Regression。它的訓(xùn)練非常簡單,結(jié)果是可解釋的,因?yàn)槟憧梢院苋菀椎貜哪P椭刑崛∽钪匾南禂?shù)。

我們將數(shù)據(jù)分成兩個(gè)部分,一個(gè)是用于擬合模型的訓(xùn)練集,另一個(gè)是測試集,以查看它對不可見數(shù)據(jù)的泛化程度。經(jīng)過訓(xùn)練,我們得到了75.4%的準(zhǔn)確率。還可以!猜測出現(xiàn)最多的類別(“無關(guān)緊要”)只會給我們57%的答案。然而,即使75%的精度已經(jīng)足夠滿足我們的需求,我們不能在不理解模型的情況下就發(fā)布模型。

第五步:檢查

混淆矩陣

第一步是了解我們的模型所犯錯(cuò)誤的類型,以及哪些錯(cuò)誤是最不可取的。在我們的示例中,false positive 將不相關(guān)的tweet分類為災(zāi)難,false negative 將災(zāi)難分類為不相關(guān)的tweet。如果我們的首要任務(wù)是對每一個(gè)潛在的事件做出反應(yīng),我們就會想要降低我們的false negative 。然而,如果我們在資源上受到限制,我們可能會優(yōu)先考慮較低的假陽性率,以減少虛警。將這些信息可視化的一個(gè)好方法是使用混淆矩陣,它將我們的模型做出的預(yù)測與真實(shí)的標(biāo)簽進(jìn)行比較。理想情況下,矩陣應(yīng)該是一條從左上角到右下角的對角線(我們的預(yù)測與事實(shí)完全吻合)。

手把手教你解決90%的NLP問題

混淆矩陣(綠色表示比例高,藍(lán)色表示比例低)

我們的分類器創(chuàng)建的假陰性比假陽性多(按比例)。換句話說,我們的模型最常見的錯(cuò)誤是不準(zhǔn)確地將災(zāi)難分類為無關(guān)緊要的。如果假陽性代表執(zhí)法的高成本,對我們的分類器,這可能是一個(gè)很好的偏見,。

解釋我們的模型

為了驗(yàn)證我們的模型并解釋它的預(yù)測,很重要的是看看它使用哪些詞匯來做決策。如果我們的數(shù)據(jù)是有偏差的,我們的分類器會在樣本數(shù)據(jù)中做出準(zhǔn)確的預(yù)測,但是模型在現(xiàn)實(shí)世界中不能很好地推廣。在這里,我們?yōu)闉?zāi)難類和無關(guān)類繪制最重要的單詞。由于我們只需要提取模型用于預(yù)測的系數(shù)并對其進(jìn)行排序,因此用詞袋模型和邏輯回歸來繪制單詞重要性圖非常簡單。

手把手教你解決90%的NLP問題

詞袋:單詞重要性

我們的分類器正確地選擇了一些模式(廣島,大屠殺),但顯然似乎在一些無意義的術(shù)語上過擬合(heyoo, x1392)。現(xiàn)在,我們的詞袋模型正在處理大量不同單詞的詞匯,并且平等地對待所有單詞。然而,其中一些詞匯非常頻繁,而且只會對我們的預(yù)測產(chǎn)生干擾。接下來,我們將嘗試一種表示句子的方法來解釋單詞的頻率,看看我們能否從數(shù)據(jù)中獲取更多的信號。

第6步:詞匯結(jié)構(gòu)計(jì)數(shù)

TF-IDF

為了幫助我們的模型更多地關(guān)注有意義的單詞,我們可以在我們的詞袋模型上使用TF-IDF score (Term Frequency, Inverse Document Frequency)。TF-IDF根據(jù)單詞在我們的數(shù)據(jù)集中的稀有程度來衡量單詞,對過于頻繁且只會增加噪音的單詞進(jìn)行減弱。這是我們新的嵌入的PCA投影。

手把手教你解決90%的NLP問題

TF-IDF嵌入可視化

從上面我們可以看到,這兩種顏色的區(qū)別更加明顯。這將使我們的分類器更容易地將兩個(gè)組分開。讓我們看看這是否會帶來更好的性能。在我們的新嵌入上訓(xùn)練另一個(gè)邏輯回歸,我們得到了76.2%的準(zhǔn)確率。

非常輕微的改善。我們的模型是否開始學(xué)習(xí)更重要的單詞?如果我們在防止模型“作弊”的同時(shí)獲得了更好的結(jié)果,那么我們就可以真正地將該模型視為一個(gè)升級。

手把手教你解決90%的NLP問題

TF-IDF: 單詞重要性

選到到的單詞看起來更相關(guān)了!盡管我們測試集上的準(zhǔn)確率只增加了一點(diǎn)點(diǎn),但是我們對我們的模型所使用的術(shù)語有了更多的信心,因此在一個(gè)與客戶交互的系統(tǒng)中部署它會更舒服。

第7步:語義的威力

word2Vec

我們最新的模型能夠識別高頻詞。然而,如果我們部署這個(gè)模型,很有可能會遇到以前在我們的訓(xùn)練集中沒有見過的單詞。之前的模型不能準(zhǔn)確地對這些tweet進(jìn)行分類,即使在訓(xùn)練期間看到了非常相似的單詞。

為了解決這個(gè)問題,我們需要捕捉單詞的語義,這意味著我們需要理解像“good”和“positive”這樣的單詞要比“apricot”和“continent”更接近。我們用來幫助我們捕捉語義的工具叫做Word2Vec。

使用預(yù)訓(xùn)練的單詞

Word2Vec是一種為單詞尋找連續(xù)嵌入的技術(shù)。它通過閱讀大量的文本和記憶在相似的語境中出現(xiàn)的單詞來學(xué)習(xí)。在對足夠的數(shù)據(jù)進(jìn)行訓(xùn)練后,它為詞匯表中的每個(gè)單詞生成一個(gè)300維的向量,具有相似含義的單詞彼此之間距離更近。

這篇論文的作者(https://arxiv.org/abs/1301.3781)公開了一個(gè)模型的源代碼,這個(gè)模型是在一個(gè)非常大的語料庫上預(yù)先訓(xùn)練的,我們可以利用這個(gè)語料庫將一些語義知識包含到我們的模型中。可以在與本文關(guān)聯(lián)的repository中找到預(yù)先訓(xùn)練好的向量。

語義級別的表示

為我們的分類器獲得一個(gè)句子嵌入的快速方法是平均我們句子中所有單詞的Word2Vec得分。這是一個(gè)詞袋的方法,就像以前一樣,但是這次我們只丟失了我們句子的語法,而保留了一些語義信息。

手把手教你解決90%的NLP問題

Word2Vec句子的嵌入

使用之前的技術(shù)可視化的我們的新嵌入:

手把手教你解決90%的NLP問題

Word2Vec嵌入可視化

這兩組顏色在這里看起來更加分離,我們的新嵌入應(yīng)該有助于我們的分類器找到這兩個(gè)類之間的分離。經(jīng)過第三次對同一模型的訓(xùn)練(Logistic回歸),我們得到的準(zhǔn)確率為77.7%,是我們目前最好的結(jié)果!是時(shí)候檢查我們的模型了。

復(fù)雜性和可解釋性的權(quán)衡

由于我們的嵌入不像之前的模型中那樣以每個(gè)單詞一維的向量來表示,所以很難看出哪些單詞與我們的分類最相關(guān)。雖然我們?nèi)匀豢梢栽L問邏輯回歸的系數(shù),但它們與嵌入的300個(gè)維度有關(guān),而不是與單詞的索引有關(guān)。

對于如此低的精確度,失去所有的可解釋性似乎是一個(gè)艱難的權(quán)衡。但是,對于更復(fù)雜的模型,我們可以利用黑匣子解釋器,比如LIME,以便深入了解分類器的工作原理。

LIME

LIME可在Github上獲得通過一個(gè)開源包。黑盒解釋器允許用戶通過擾動輸入(在我們的例子中是從句子中刪除單詞)并查看預(yù)測如何變化來解釋任何分類器對一個(gè)特定示例的決策。

讓我們從我們的數(shù)據(jù)集中看一些句子的解釋。

手把手教你解決90%的NLP問題

 

選擇正確的災(zāi)難詞匯來分類為“相關(guān)”。

手把手教你解決90%的NLP問題

 

在這里,單詞對分類的貢獻(xiàn)似乎不那么明顯。

然而,我們沒有時(shí)間研究數(shù)據(jù)集中的數(shù)千個(gè)示例。相反,我們要做的是對一個(gè)具有代表性的測試用例樣本運(yùn)行LIME,并查看哪些單詞會不斷出現(xiàn),成為強(qiáng)大的貢獻(xiàn)者。使用這種方法,我們可以得到單詞重要性評分,就像我們之前的模型一樣,并驗(yàn)證我們的模型的預(yù)測。

手把手教你解決90%的NLP問題

Word2Vec: 單詞重要性

看起來這個(gè)模型選擇了高度相關(guān)的詞匯,這意味著它似乎做出了可以理解的決定。在所有之前的模型中,這些似乎是最相關(guān)的詞匯,因此我們更愿意將它們部署到生產(chǎn)環(huán)境中。

第8步:利用語義,使用端到端的方法

我們已經(jīng)介紹了生成密集的語句嵌入的快速而有效的方法。然而,通過忽略單詞的順序,我們丟棄了我們句子的所有語法信息。如果這些方法不能提供足夠的結(jié)果,你可以使用更復(fù)雜的模型,它將整個(gè)句子作為輸入并預(yù)測標(biāo)簽,而不需要構(gòu)建中間表示。一種常見的方法是使用Word2Vec或更近期的方法如GloVe或CoVe將一個(gè)句子視為單個(gè)單詞向量的序列。這就是我們下面要做的。

手把手教你解決90%的NLP問題

高效的端到端的結(jié)構(gòu)

Convolutional Neural Networks for Sentence Classification訓(xùn)練非常快,是一種入門級的深度學(xué)習(xí)架構(gòu)。而卷積神經(jīng)網(wǎng)絡(luò)(CNN)主要是圖像數(shù)據(jù)性能著稱,他們在文本相關(guān)的任務(wù)上也能提供優(yōu)秀的結(jié)果。和通常最復(fù)雜的NLP訓(xùn)練方法(如[LSTMs]和編碼器/解碼器架構(gòu)更快。這個(gè)模型保存單詞的順序,并學(xué)習(xí)有價(jià)值的信息,以及哪些單詞序列可以預(yù)測我們的目標(biāo)類。與之前的模型相反,它可以區(qū)分“Alex eats plants”和“Plants eat Alex”。

與以前的方法相比,訓(xùn)練這個(gè)模型并不需要更多的工作,并為我們提供了一個(gè)比以前的方法更好的模型,獲得79.5%的準(zhǔn)確率!與上面的模型一樣,下一步應(yīng)該是使用我們描述的方法探索和解釋預(yù)測,以驗(yàn)證它確實(shí)是部署到用戶的最佳模型。到目前為止,你應(yīng)該已經(jīng)習(xí)慣了自己處理這個(gè)問題。

要點(diǎn)總結(jié)

下面是我們成功使用的方法的快速回顧:

  • 從一個(gè)快速簡單的模型開始
  • 解釋其預(yù)測
  • 了解它正在犯的錯(cuò)誤
  • 使用這些知識來指導(dǎo)下一步,無論是處理數(shù)據(jù)還是更復(fù)雜的模型。

英文原文:https://blog.insightdatascience.com/how-to-solve-90-of-nlp-problems-a-step-by-step-guide-fda605278e4e

分享到:
標(biāo)簽:NLP
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定