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

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

1

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

本文作者: AI研習社-譯站 2018-07-25 10:49
導(dǎo)語:文本分類又又又又來了

雷鋒網(wǎng)按:本文為雷鋒字幕組編譯的技術(shù)博客,原標題 Multi-Class Text Classification with Scikit-Learn,作者為 Susan Li 。

翻譯 | 朱茵      整理 | 余杭  MY

 

在商業(yè)領(lǐng)域有很多文本分類的應(yīng)用,比如新聞故事通常由主題來分類;內(nèi)容或產(chǎn)品常常被打上標簽;基于如何在線談?wù)摦a(chǎn)品或品牌,用戶被分成支持者等等。

然而大部分的文本分類文章和網(wǎng)上教程是二進制的文本分類,像垃圾郵件過濾(spam vs. ham)、情感分析(積極的和消極的)。在大量實例中,我們現(xiàn)實世界的問題要比這些復(fù)雜的多。因此,這是我們今天要做的:將消費者的財務(wù)投訴分成12個預(yù)定義的類。這些數(shù)據(jù)可以從 data.gov 下載。

我們使用 Python 和 Jupyter Notebook 來開發(fā)我們的系統(tǒng),依靠 Scikit-Learn 作為機器學(xué)習的部件。如果你想看下在 PySpark 中的實現(xiàn),請閱讀下一篇文章。


問題形成

我們的問題是有監(jiān)督的文本分類問題,目標是調(diào)查哪一種有監(jiān)督的機器學(xué)習方法最適于解決該問題。

鑒于新的投訴的到來,我們想將它歸到12個分類目錄中。分類器使得每個新投訴被歸類到一個僅且一個類別中。這是一個多類文本分類問題。我已經(jīng)迫不及待地想看下我們完成的結(jié)果。


數(shù)據(jù)瀏覽

在投入訓(xùn)練機器學(xué)習模型前,我們應(yīng)當先看一些實例以及每個類別中投訴的數(shù)量:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖1

針對這個項目而言,我們僅需要2欄:“產(chǎn)品”和“消費者投訴陳述”。

  • 輸入: Consumer_complaint_narrative

實例:“在我的信用報告上有過時的信息,我之前對該信用報告有爭議,該項信息記錄應(yīng)該被刪除,該信息是7年多之前的并且不符合信用報告的要求?!?/p>

  • 輸出:產(chǎn)品

實例:信用報告

我們將在消費者投訴陳述欄刪除無賦值的,并且增加一欄編譯該產(chǎn)品作為一個整數(shù)值,因為通常分類屬性變量用整數(shù)比用字符串代表要好。

我們也創(chuàng)建了幾個字典以備將來使用。

清理后,這是我們要使用的最初的5行數(shù)據(jù):

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

 圖2

不平衡的分類

我們看到每個產(chǎn)品的投訴數(shù)值不平衡。消費者的投訴多針對索回債款、信用報告和房屋抵押貸款。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖3

當我們遇到問題時,我們會用標準算法解決這些問題。傳統(tǒng)的算法常常傾向于大多數(shù)的分類,并不會將數(shù)據(jù)分布考慮進去。最糟的情況,少數(shù)的分類被當做異常值被忽略了。在一些例子中,像欺詐偵測和癌癥預(yù)測,我們將仔細設(shè)置我們的模型或人工平衡數(shù)據(jù)集,比如通過欠采樣和過采樣每個類。

然而,在我們的學(xué)習不均衡的數(shù)據(jù)的例子中,我們會將興趣點放在占少數(shù)的的分類上。在大多數(shù)分類上具有高準確率的分類器是令人滿意的。然而針對占少數(shù)的分類也應(yīng)當保持合理的準確度。就這樣吧。


文本表達

分類器和學(xué)習算法不能以他們原來的形式直接處理文本文件,他們大多數(shù)需要有固定大小的數(shù)字特征向量而不是帶有變量長度的原來的文本文件。因此,在預(yù)處理的階段文本將被轉(zhuǎn)成更好處理的表達方式。

一個從文本中提取特征的常用方法是使用詞匯模型袋:一種給每個文件,在我們的例子中的投訴陳述,詞匯的呈現(xiàn)(通常是頻率)將被考慮進去,但這些詞匯出現(xiàn)的順序是被忽略的。

尤其是我們數(shù)據(jù)集的每個術(shù)語,我們將計算一種被稱為術(shù)語頻率的測量方法。逆文檔頻率,縮寫成tf-idf。我們將使用 sklearn.feature_extraction.text.TfidfVectorizer 給每個消費者投訴陳述計算一個 tf-idf 向量:

  • sublinear_df 設(shè)置為True 給頻率使用一種算法形式。

  • min_df 是文檔的最小數(shù)值is the minimum numbers of documents a word must be present in to be kept.

  • norm 設(shè)置為l2,來確保我們的特征向量具有歐幾里得標準1. 

  • ngram_range 設(shè)置為) (1,2)來表明我們同時考慮一元語法和二元語法。

  • stop_words 設(shè)置為"english" 來移除所有相同的代詞("a", "the", ...)用以減少噪音特征的數(shù)量。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

(4569, 12633)

現(xiàn)在,每 4569 個消費者投訴陳述由12633個特征表示,代表不同的一元和二元語法的 tf-idf 分數(shù)。

我們可以使用 sklearn.feature_selection.chi2 來尋找和每個產(chǎn)品最相關(guān)的術(shù)語:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

# ‘銀行賬戶或服務(wù)’:
 . 最相關(guān)的一元語法:
 . 銀行
 . 透支
 . 最相關(guān)的二元語法:
 . 透支費用
 . 支票賬戶
# ‘消費者貸款’:
 . :最相關(guān)的一元語法:
 . 小轎車
 . 車輛
 . 最相關(guān)的二元語法:
 . 車輛 xxxx
 . 豐田汽車金融
# ‘信用卡’:
 . 最相關(guān)的一元語法:
 . 花旗銀行
 . 卡
 . 最相關(guān)的二元語法:
 . 年費
 . 信用卡
# ‘信用報告’:
 . 最相關(guān)的一元語法:
 . 益百利
 . 艾奎法克斯
 . 最相關(guān)的二元語法:
 . 反式聯(lián)盟
 . 信用報告
# ‘索回債款’:
 . 最相關(guān)的一元語法:
 . 收集
 . 債務(wù)
 . 最相關(guān)的二元語法:
 . 索回債款
 . 索回機構(gòu)
# ‘轉(zhuǎn)賬’:
 . 最相關(guān)的一元語法:
 . 西聯(lián)
 . paypal貝寶
 . 最相關(guān)的二元語法:
 . 西聯(lián)
 . 轉(zhuǎn)賬
# ‘住房抵押貸款’:
 . 最相關(guān)的一元語法:
 . 修改
 . 住房抵押貸款
 . 最相關(guān)的二元語法:
 . 抵押貸款公司
 . 貸款修改
# ‘其它金融服務(wù)’:
 . 最相關(guān)的一元語法:
 . 口腔
 . 護照
 . 最相關(guān)的二元語法:
 . 幫助支付
 . 規(guī)定支付
# ‘發(fā)薪日貸款’:
 . 最相關(guān)的一元語法:
 . 借錢
 . 發(fā)薪日
 . 最相關(guān)的二元語法:
 . 主要部分
 . 發(fā)薪日貸款
# ‘預(yù)付卡’:
 . 最相關(guān)的一元語法:
 . 服務(wù)
 . 預(yù)付
 . 最相關(guān)的二元語法:
 . 獲得的錢
 . 預(yù)付卡
# ‘學(xué)生貸款’:
 . 最相關(guān)的一元語法:
 . 學(xué)生
 . navient
 . 最相關(guān)的二元語法:
 . 學(xué)生貸款
 . 學(xué)生貸款
# ‘虛擬貨幣’:
 . 最相關(guān)的一元語法:
 . 處理
 . https
 . 最相關(guān)的二元語法:
 . xxxx 提供商
 . 金錢需要

這些都很講得通,對么?


多級類別分類器:特征和設(shè)計

  • 為了訓(xùn)練有監(jiān)督的分類器,我們首先將“消費者投訴陳述”轉(zhuǎn)化為數(shù)字向量。我們開發(fā)了類似 TF-IDF 權(quán)值向量的向量表示。

  • 在得到文本的向量表示后,我們可以訓(xùn)練有監(jiān)督的分類器來訓(xùn)練看不見的“消費者投訴陳述”和預(yù)測“產(chǎn)品”將落在哪個分類。

上述所有這些數(shù)據(jù)轉(zhuǎn)化后,現(xiàn)在我們有了所有的特征和標簽,是時候來訓(xùn)練分類器了。針對這種類型的問題,許多算法可供我們使用。

  • 樸素貝葉斯分類器:最適合的詞匯計算的是多項式變量:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

在配置好訓(xùn)練設(shè)置后,我們來做一些預(yù)測。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

[‘債務(wù)索回’]

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖4

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

[‘信用報告’]

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖5

還不算太糟!


模型選擇

我們現(xiàn)在可以用不同的機器學(xué)習模型來做測試了,評估他們的準確度和尋找任一潛在問題的源頭。

我們將用下列四種模型來做測試:

  • 邏輯回歸

  • (多項)  樸素貝葉斯

  • 線性支持向量機

  • 隨機森林

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖6

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

model_name
LinearSVC: 0.822890
LogisticRegression: 0.792927
MultinomialNB: 0.688519
RandomForestClassifier: 0.443826
Name: accuracy, dtype: float64

線性支持向量機和邏輯回歸比其他兩種分類器表現(xiàn)更好,線性支持向量機有一個小優(yōu)勢,它具備 82% 左右的準確率。


模型評估

繼續(xù)我們最好的模型(線性支持向量機),我們看下混淆矩陣,展示下預(yù)測的和實際的標簽之間的差異。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖7

大多數(shù)的預(yù)測最終呈現(xiàn)的是對角線(預(yù)測的標簽 = 實際的標簽),正是我們想要的。然而,還是有許多的誤分類,看看他們是由什么引起的也許蠻有意思的:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖8

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖9

你可以看到,一些誤分類的投訴是一些跟不止一個主題相關(guān)的投訴(比如,包括信用卡和信用報告的投訴)。這種錯誤將一直發(fā)生。

然后我們使用 chi-squared test 來尋找與每個目錄最相關(guān)的術(shù)語:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

# ‘銀行賬號和服務(wù)’:

 . 最高一元語法:

 . 銀行

 . 賬戶

 . 最高二元語義:

 . 借記卡

 . 透支費用

# ‘消費貸’:

 . 最高一元語義:

 . 車輛

 . 小型汽車

 . 最高二元語義:

 . 個人貸款

 . 歷史xxxx

# ‘信用卡’:

 . 最高一元語義:

 . 卡

 . 發(fā)現(xiàn)

 . 最高二元語義:

 . 信用卡

 . 發(fā)現(xiàn)卡

# ‘信用’:

 . 最高一元語義:

 . 艾奎法克斯

 . 反式聯(lián)盟

 . 最高二元語義:

 . xxxx 賬戶

 . 反式聯(lián)盟

# ‘索回債務(wù)’:

 . 最高一元語義:

 . 債務(wù)

 . 收集

 . 最高二元語義:

 . 信用賬戶

 . 時間期限

# ‘轉(zhuǎn)賬’:

 . 最高一元語義:

 . paypal貝寶

 . 轉(zhuǎn)

 . 最高二元語義:

 . 轉(zhuǎn)賬

 . 發(fā)送錢

# ‘住房抵押貸款’:

 . 最高一元語義:

 . 住房抵押貸款

 . 第三方托管

 . 最高二元語義:

 . 貸款修改

 . 住房抵押貸款公司

# ‘其它金融服務(wù)’:

 . 最高一元語義:

 . 護照

 . 口腔

 . 最高二元語義:

 . 規(guī)定支付

 . 幫助支付

# ‘發(fā)薪日貸款’:

 . 最高一元語義:

 . 發(fā)薪日

 . 貸款

 . 最高二元語義:

 . 發(fā)薪日貸款

 . 發(fā)薪日

# ‘預(yù)付卡’:

 . 最高一元語義:

 . 預(yù)付

 . 服務(wù)

 . 最高二元語義:

 . 預(yù)付卡

 . 使用卡

# ‘學(xué)生貸款’:

 . 最高一元語義:

 . navient貸款公司

 . 貸款

 . 最高二元語義:

 . 學(xué)生貸款

 . 薩利美-學(xué)生貸款市場協(xié)會

# ‘虛擬貨幣’:

 . 最高以一元語義:

 . https

 . tx

 . 最高二元語義:

 . 金錢需求

 . xxxx 提供者

這些跟我們的預(yù)期一致。

最后,我們給每個類別打印分類報告:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖9

源代碼可以在 Github 上找到,期待大家的反饋和提問。 


原文鏈接:https://towardsdatascience.com/multi-class-text-classification-with-scikit-learn-12f1e60e0a9

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

雷鋒網(wǎng)雷鋒網(wǎng)

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

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

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

知情人士

AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習知識的門檻。(原雷鋒字幕組)
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說