Python: NLPでfake newsとreal newsを区別できる? ver. 2

Last Updated on May 9, 2021 by shibatau

リンクの誤りを修正しました。

I.何をする?

 

次の解説にあるスクリプトでニュースのfakeとtrueを分けます。

 

Fake News Detection using NLP techniques

 

II.データの取得

 

FalseとTrueで分けられたニュースのデータは次にあります。

 

https://www.kaggle.com/clmentbisaillon/fake-and-real-news-dataset

 

III.データの概要

 

1.データの読み込み

 

データは、FalseとTrueの2つのファイルにわかれています。

ダウンロードして、Pythonの機能の高いEDA (exploratory data analysis)ライブラリーのpandas_profilingで概要を確認します。

 

Google Colaboratoryでやってみましたが、pandas_profiling.ProfileReport()の実行でエラーになります。対応方法がすぐにはわからないので、データのおかれているkaggleのクラウドでPythonのスクリプトを実行しました。スクリプトを次にリンクします

 

https://www.kaggle.com/shibatau/fakenews

 

2.Overview

 

欠損値がないことがわかります。

 

Dataset statistics

Number of variables     6
Number of observations  44898
Missing cells           0
Missing cells (%)       0.0%
Duplicate rows          0
Duplicate rows (%)      0.0%
Total size in memory    178.8 MiB
Average record size in memory	4.1 KiB

 

3.FakeニュースとRealニュースの件数

 

上で追加したlabelの0(fake)と1(true)の件数は次です。

 

 

4.ニュースの内容

 

ニュースは内容でsubject列に記載されており、それぞれの件数は次です。

 

 

5.Subjectとfakeとrealの区別

 

4でsubject列には8のカテゴリーがあることがわかりましたが、これとfake(label列の0)とrealの(label列の1)をクロスして集計します。

 

pd.crosstab(data.subject, data.label, margins=True) 

 

label           0	1	All
subject			
Government News 1570    0       1570
Middle-east     778     0       778
News            9050    0       9050
US_News         783     0       783
left-news       4459    0       4459
politics        6841    0       6841
politicsNews    0       11272   11272
worldnews       0       10145   10145
All             23481   21417   44898

 

Real newsをPoliticsNewsとworldnewsに分け、fake他の6種類に分類していることがわかります。なぜそのようにわけられているのかは、データの説明を読んでいないので不明です。

次の式でグラフを作成します。

 

import seaborn as sns
import matplotlib.pyplot as plt 
sns.set_style("dark")
chart = sns.countplot(x = "label", hue = "subject" , data = data , palette = 'muted')
chart.set_xticklabels(chart.get_xticklabels(),rotation=90)
 

 

 

II.

Not finished.

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.