Pythonでのフェイクニュース検出プロジェクト[コーディングあり]
公開: 2020-12-14偽物のように見えるニュースを読んだことがありますか? 私たちは皆、そのようなニュース記事に遭遇し、何かが正しく感じられないことを本能的に認識します。 そこには非常に多くの投稿があるため、正しいものと間違ったものを区別することはほぼ不可能です。 ここでは、偽りの主張や事実のポイントだけでなく、言語自体で複雑に間違っているように見えることについて話します。
偽のニュース検出プロジェクトを開発する方法を考えたことはありますか? しかし、ソーシャルメディアでのニュースの普及の速さで、どのニュースが偽物でどれが偽物ではないかを見つける簡単な方法はありません。 それでも、いくつかの解決策は、これらの不正行為を特定するのに役立つ可能性があります。
一部のニュースが偽物であるかどうかを主張する方法は2つあります。1つは、事実に基づく攻撃です。 第二に、言語。 前者は、自動クエリシステムを使用したインターネットへの実質的な検索によってのみ実行できます。 これは、特にデータサイエンスと自然言語処理を始めたばかりの人にとっては、大変な作業になる可能性があります。
後者は、自然言語処理パイプラインとそれに続く機械学習パイプラインによって可能になります。 これが、Pythonでフェイクニュース検出プロジェクトを実装する方法です。 これは、自然言語処理の問題として提起される機械学習の問題として認識されている問題の1つです。 初心者でデータサイエンスについて詳しく知りたい場合は、一流大学のデータサイエンスオンラインコースをご覧ください。
読む: Pythonプロジェクトのアイデアとトピック
このタイプのアプリケーションには多くのデータセットがありますが、ここで説明したものを使用します。 データには、偽物または本物の2つのターゲットラベルを持つ約7500以上のニュースフィードが含まれています。 データセットには、特定のニュース記事のタイトルも含まれています。
自然言語処理のパイプラインの手順は次のとおりです。
- データの取得とロード
- データセットのクリーニング
- 余分な記号を削除する
- 句読点の削除
- ストップワードの削除
- ステミング
- トークン化
- 特徴の抽出
- TF-IDFベクトライザー
- TF-IDFトランスを備えたカウンターベクトライザー
- 機械学習モデルのトレーニングと検証
フェイクニュース検出プロジェクトの実装手順について説明する前に、必要なライブラリをインポートしましょう。
コード:
パンダをpdとしてインポートします numpyをnpとしてインポートします 再インポート インポート文字列 nltk.corpusからインポートストップワード nltk.tokenizeからimportword_tokenize stop_words = set(stopwords.words( 'english' )) |
最初のステップは、データを取得することです。 CSVファイルへのリンクはすでに提供されています。 ただし、データを生成する別の方法について話し合うことも重要です。
方法の1つは、Webスクレイピングです。 このために、Webクローラーをコーディングし、データを取得する必要があるサイトを指定する必要があります。 ただし、このアプローチには2つの問題があることに注意してください。
まず、多くのサイトを廃棄することは違法である可能性があるため、注意する必要があります。 そして第二に、データは非常に生です。 パイプライン全体に、その生データを実行可能なCSVファイルまたはデータセットに変換するための手順のリストが追加されます。 したがって、整理されたデータを含む事前設定されたCSVファイルを使用します。
ただし、興味がある場合は、データサイエンスに関するupGradのコースを確認できます。このコースでは、データエンジニアリングとWebスクレイピングに関する適切な説明とともに十分なリソースを利用できます。 ここでそれらをチェックしてください。
これは、データセットをインポートしてラベルを追加する方法です。 データセットから不要な列を削除する方法に注意してください。 より高い値で必要な場合は、それらの列を維持できます。 しかし今のところ、私たちの偽のニュース検出プロジェクトは、テキストとターゲットラベルの列だけでスムーズに機能します。
コード:
df_text = pd.read_csv( 'fake_or_real_news.csv' 、encoding = 'latin-1' ) df_text.columns = [ 'id' 、 'title' 、 'text' 、 'label' ] df_text.drop(['id'、'title']、axis = 1) |
次に進むと、次のステップは既存のデータをクリーンアップすることです。 なぜこのステップが必要なのですか? 私たちが機械を使って作業しており、偽物と本物を二分するように教えていることを理解することが重要です。 現在、テキストデータがありますが、コンピューターは数値を処理します。 したがって、最初にそれらを数値に変換する必要があり、その前のステップは、理解に必要なテキストのみを変換していることを確認することです。
クリーニングパイプラインの最初のステップは、データセットにクリアする余分なシンボルが含まれているかどうかを確認することです。 これは、Webアドレス、またはat(@)やハッシュタグなどの他の参照記号のいずれかである可能性があります。 コードは次のとおりです。
コード:
#URLを削除する text = re.sub( r” http \ S + | www \ S + | https \ S +” 、 ” 、text、flags = re.MULTILINE) #ユーザーの@参照と「#」をテキストから削除します text = re.sub( r'\ @ \ w + | \#' 、 ” 、text) |
それを削除したら、次のステップは他の記号、句読点を削除することです。 私たちがそれについて考えるならば、句読点は特定のニュースの現実を理解する上で明確なインプットを持っていません。 句読点が多い場合、たとえば、感嘆符の乱用など、ニュースが現実的でない場合があります。
ただし、これらはまれなケースであり、特定のルールベースの分析が必要になります。 したがって、このフェイクニュース検出プロジェクトでは、句読点を削除します。 これを行う方法は次のとおりです。
コード:
text = text.translate(str.maketrans( ” 、 ” 、string.punctuation)) |
次のステップは、単語をそのコアにステムし、単語をトークン化することです。 トークン化とは、すべての文を単語またはトークンのリストにすることを意味します。 追加する必要のある2行のコードは次のとおりです。
コード:
トークン=word_tokenize(text) words = [ stop_wordsでwでない場合は、トークンでwをw ] |
次のステップは重要なステップです。 トークンの意味のある数値への変換。 このステップは、特徴抽出とも呼ばれます。 このアプリケーションでは、TF-IDFメソッドを使用して、機械学習パイプラインの機能を抽出して構築します。
TF-IDFは基本的に、用語頻度-逆ドキュメント頻度を意味します。 名前が示すように、データセット全体またはドキュメントのコレクション内の用語の頻度だけでなく、用語の頻度を介してデータセットに関する情報をすくい取ります。
TF-IDFは、TFとIDFの両方の値を混合することで簡単に計算できます。 どちらの式にも単純な比率が含まれています。
TF=いいえ。 用語がドキュメントに表示される回数/用語の総数。
IDF =ログ(ドキュメントの総数/用語が表示されるドキュメントの数)
現在、PythonにはTF-IDF変換用の2つの実装があります。 1つ目はTF-IDFベクトライザーで、2つ目はTF-IDFトランスです。 違いは、トランスフォーマーは変換の前にbag-of-wordsの実装を必要とするのに対し、vectoriserは両方のステップを1つに結合することです。 また、bag-of-wordsの単純な実装であるcountvectoriserを使用することもできます。 ただし、TF-IDFは特定のデータセットでより適切に機能します。

TF-IDFの実装方法は次のとおりです。
コード:
sklearn.feature_extraction.textからインポートTfidfVectorizer tf_vector = TfidfVectorizer(sublinear_tf = True ) tf_vector.fit(df_text [ 'text' ]) |
次のステップは、機械学習パイプラインです。 通常のMLパイプラインと同様に、データをXとyに取得する必要があります。 そのために、TF-IDFベクトライザーによって出力として提供されるマトリックスとしてXを使用します。これは、フラット化する必要があります。
Pythonのtravel関数を使用して、行列を配列に変換できます。 y値はラベルであり、数値ではないため、直接追加することはできません。 それらを0と1に変換するには、sklearnのラベルエンコーダーを使用します。
このエンコーダーは、ラベルテキストを番号付きのターゲットに変換します。 たとえば、次のようなラベルのリストがあるとします。['real'、'fake'、'fake'、'fake']
基本的に必要なのは、[1、0、0、0]のようなリストです。 ラベルエンコーダーが行うことは、すべての個別のラベルを取得してリストを作成することです。 この例では、リストは['fake'、'real']になります。
これが同じ実装です:
コード:
X_text = tf_vector.transform(df_text [ 'text' ] .ravel()) y_values = np.array(df_text [ 'label' ] .ravel()) |
sklearnインポート前処理から le = preprocessing.LabelEncoder() le.fit(y_values) le.transform(y_values) |
完了すると、トレーニングとテストの分割が行われます。 これは、sklearnの前処理パッケージを使用し、traintestsplit関数をインポートすることで実現できます。
コード:
sklearn.model_selectionからimporttrain_test_split _ X_train、X_test、y_train、y_test = train_test_split(X_text、y_values、test_size = 0.15 、random_state = 120 ) |
最後のステップは、モデルを使用することです。 利用可能な優れた機械学習モデルはたくさんありますが、単純な基本モデルでさえ、偽のニュース検出プロジェクトの実装でうまく機能します。 まず、ロジスティック回帰モデルを実装します。 sklearnを使用して実装する方法は次のとおりです。
コード:
sklearn.metricsからimportaccuracy_score sklearn.linear_modelからimportLogisticRegression model = LogisticRegression(solver = 'lbfgs' ) |
モデルはかなりうまく機能します。 回帰モデルの92%の精度はかなりまともです。 利用可能な他のモデルを実装して、精度を確認することもできます。
つまり、これがPythonを使用して偽のニュース検出プロジェクトを実装する方法です。
ここで行うことはたくさんあることに注意してください。 NLPパイプラインはまだ完全には完了していません。 さらに優れた特徴抽出を得るために適用できる他の多くの機能が利用可能です。
また読む: Pythonオープンソースプロジェクトのアイデア
フェイクニュースがテクノロジーを適応させる方法では、より優れた処理モデルが必要になります。 そして、これらのモデルは、より自然言語理解になり、機械学習モデル自体としてはあまり提示されません。 モデルは、使用する機能に応じて微調整することもできます。 データセットを動的に適応させて、現在のデータで機能させることができます。 しかし、それには、現在のニュース記事で徹底的に訓練されたモデルが必要になります。
したがって、より多くのデータが利用可能であれば、より良いモデルを作成でき、偽のニュース検出プロジェクトの適用性を向上させることができます。 ただし、内部スキームとコアパイプラインは同じままです。 説明されているパイプラインは、実行したい実験に非常に適応します。 さまざまな機能を試して遊んでみてください。
ペースの速い技術の進歩の最前線に立つためにデータサイエンスを学ぶことに興味がある場合は、upGrad&IIIT-BのデータサイエンスのエグゼクティブPGプログラムをチェックして、将来に向けてスキルを磨いてください。
Pythonでフェイクニュース検出プロジェクトを開発するために必要なスキルは何ですか?
Pythonは、動的型付け、組み込みのデータ構造、強力なライブラリ、フレームワーク、およびコミュニティサポートのために、偽のニュース検出プロジェクトの構築に使用されます。 Pythonでフェイクニュース検出プロジェクトを開発するために必要なその他のスキルは、機械学習、自然言語処理、人工知能です。 これらのスキルの知識は、このプロジェクトを行うことを意図している学習者にとって必須です。 学習者はこれらのスキルをオンラインで簡単に学ぶことができます。
企業はPythonのフェイクニュース検出プロジェクトをどのように使用していますか?
偽のニュースのほとんどはソーシャルメディアプラットフォームで見つかるため、本物のニュースと偽のニュースを区別するのは難しい場合があります。 ソーシャルメディアプラットフォームとほとんどのメディア企業は、偽のニュース検出プロジェクトを利用して、配信されているニュースが偽造されているかどうかを自動的に判断します。 ほとんどの企業は、プロジェクトに加えて機械学習を使用して、面倒な作業を人間に頼るのではなく、偽のニュースを見つけるこのプロセスを自動化します。
Pythonの他の実際のアプリケーションは何ですか?
Pythonには、さまざまな実世界のアプリケーションがあります。 Pythonはクロスプラットフォームのオペレーティングシステムをサポートしているため、Pythonを使用したアプリケーションの開発がはるかに管理しやすくなっています。 Pythonは、YouTube、BitTorrent、DropBoxなど、世界で最も有名なアプリのいくつかを強化するために使用されます。 Pythonは、革新的なゲームの制作によく使用されます。 Pythonは、保存されたデータに基づいて繰り返しアルゴリズムを作成するのに役立つため、機械学習、データサイエンス、人工知能でも使用されます。 Pythonは、Webサイトから大量のデータを抽出する場合に命の恩人であり、ユーザーはその後、価格比較、求人情報、研究開発などのさまざまな実際の操作で使用できます。