教你用邏輯迴歸和樸素貝葉斯演算法識別虛假新聞,小技能大用途!
作者 | Christopher Pease
譯者 | Shawn Lee
編輯 | Jane
出品 | AI科技大本營
【導讀】 識別虛假新聞可以說是 Facebook 等社交網路目前最重視的問題。本文,我們就將介紹如何利用兩種機器學習的方法——邏輯迴歸和樸素貝葉斯分類器,來識別存在故意誤導的新聞文章。
自然語言處理( NLP )屬於電腦科學領域,它致力於處理和分析任何形式的自然人類語言(書面,口頭或其他)。 簡而言之,計算機只能理解 0 和 1 ,而人類則使用各種語言進行溝通,NLP 的目的便是在這兩個“世界”間搭建溝通的橋樑,這樣資料科學家和機器學習工程師能分析大量的人類溝通資料。
那 NLP 如何識別虛假新聞呢?實際上,NLP 會把文章分解成一個個小成分並篩選出其中的重要特徵,而後我們搭建並訓練模型去識別這其中不靠譜的內容來鑑別虛假新聞。
這次嘗試不僅練習了自然語言處理的技能,也學習了一些有效構建強大分類模型的技術。
▌ 資料清洗
首先從 Kaggle 庫中選取一個包含兩萬篇標記文章的資料集用於測試效果,結果顯示,模型在預測標籤時的準確度為93%。
在大部分以資料為主體的專案中,第一道工序便是資料清洗。在鑑別虛假新聞時,我們需要處理成千上萬篇來自不同領域、有著不同清晰度的文章。 為了有效篩選需要的內容,我們使用正則表示式來提取分析中所需要的字串型別。例如,這是一行使用 re python 模組的程式碼:
參閱連結:
https://docs.python.org/3/howto/regex.html#
這行程式碼會使用空格來替換所有不是字母或數字的字元。 第一個引數,“[^A-Za-z0-9']” ,表示除非符合括號內的指定集,其他內容將全部替換成第二個引數,也就是空格。 一旦我們刪除了那些不需要的字元,我們就可以開始進行標記化和向量化了!
Scikit-learn 是一個令人驚歎的 python 機器學習包,它能承擔很多繁重的工作。 特別是 Count Vectorizer 這個函式,它能建立所有被分析文字的完整詞彙表,並將每個單獨的文件轉換為表示每個單詞總數的向量。 因為大多數文章並不會包含詞彙表裡的大部分單詞,函式將返回一個稀疏矩陣形式的向量。 向量化器則允許我們對各種預處理函式和首選的標記器進行整合。
參閱連結:
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.te
xt.CountVectorizer.html
一個被向量化的文章的示例,每行包含我們初始的1000個特徵詞的出現次數
在分析新聞的情況下,僅考慮單個單詞的方法過於簡單,因此我們會允許對雙字元或兩個單詞短語進行向量化。 我們將特徵的數量限制為1000,這樣我們在通過特徵判斷真假時就只需考慮文件內最重要的那些特徵。
▌ 特徵工程
特徵工程是不一個簡單的技能,它更像是複雜的藝術形式。 它包含了考慮資料集和域的過程,選擇對於模型最有用的特徵,以及測試特徵以優化選擇。 Scikit-learn 的向量化器提取了我們的1000個基礎的 n 元語法( n-gram ) 特徵,同時我們開始新增元特徵來改進我們的分類。我們決定計算每個文件中的平均單詞長度和出現數字的次數,以此提高我們模型的準確性。
左:各類特徵 右:情感得分
情感分析是 NLP 中的另一種分析工具,它可以量化文章中的情緒並評分。我們在這裡使用了兩個包,TextBlob 和 Natural Language Toolkit 的 Vader 。它們都是分析文中情緒的工具。 Vader 會針對文章的偏激性和中立性進行測量和評分,而 TextBlob 則會測量文章的偏激性和整體主觀性。我們原本猜想這些情緒分佈會根據文章的真實性和誤導性有大幅變化,但在實際情況中我們發現這種差異並不明顯。
通過 Vader 得出的中性文章情緒的分佈,0代表的是完全中立
TextBlob 情感得分
(左:-1 代表極性為負,1 代表極性為正;右:0 代表非常客觀,1 代表非常主觀)
從上圖可以看出,通過情感評分的方法不能體現出明顯的差異。 然而,我們認為感情分數和分類器兩者的綜合使用可提高判斷的準確率,因此我們決定將它保留在模型中。
▌ 邏輯迴歸
我們在這裡考慮的系統是僅僅包含真和假兩類。 通過給出的相關特徵,我們對文章是虛假捏造的概率進行建模。 多項邏輯迴歸( LR )是這項工作的理想候選者,我們的模型通過使用對數變換(logit transformation)和最大似然估計(maximum likelihood estimation)來模擬預測變數的相關不可靠性的概率。
換句話說,LR 會直接計算後驗 p(x|y) , 學習如何給輸入的特徵分配標籤。 這是一個判別法的例子,雖然在技術層面上這並不是一個統計分類,但它可以對分類資格的條件概率進行賦值。SciKit-Learn 的邏輯迴歸模型提供了一種便利的方法來執行此操作。
參閱連結:
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
左:邏輯迴歸的 ROC 曲線;右:迴歸中排名前二十的特徵
▌ 樸素貝葉斯分類器
我們的第二種方法是使用樸素貝葉斯演算法( NB )演算法,雖然它很簡單,但是它十分適用於這個模型。通過假設特徵之間的獨立性,NB 從每個標籤文章中學習聯合概率 p(x,y) 的模型。基於貝葉斯規則計算得到的條件概率,模型會依據最大概率對文章進行標籤分配並預測真偽。與前面提到的方法不同,這是一個生成分類器的例子。
貝葉斯分類器,使用 MAP 決策規則
在這種情況下,我們考慮是一個多項事件模型,它能最準能確地表示我們的特徵分佈情況。 正如預期的那樣,其結果與邏輯擬合所得出的結論十分接近
左:多項樸素貝葉斯的 ROC 曲線;右:樸素貝葉斯分類器中排名前20的特徵
▌ 結論
機器學習可以有效地識別以虛假新聞形式存在的錯誤資訊。 即便是沒有標題來源等上下文資訊,僅正文內容也足以用來進行分析和學習。 因此,這些策略可以很簡單地應用於那些沒有額外描述的文件。 雖然單獨使用情緒評分法並不能準確地判別假新聞,但當它與其他功能一起使用時,則可以提高分類器的準確性。未來可以嘗試將其與其他流行的模型進行比較,比如支援向量機。
原文連結:
https://towardsdatascience.com/machine-learning-tackles-the-fake-news-problem-c3fa75549e52
--【完】--
尋找2018最佳AI應用案例
AI科技大本營希望找到在汽車、金融、教育、醫療、安防、零售、家居、文娛、工業等 9 大行業的最佳 AI 應用案例,記錄 AI 時代影響人類發展的變革性產品/解決方案。
如果您有優秀的 AI 產品/技術解決方案,歡迎 【掃碼提交】 ,參與評選。
點選 「閱讀原文」 ,檢視案例分享者特別獎勵