如何使用 Python 创建假新闻检测器?

嘿!今天,我们将使用一些常见的机器学习算法在 Python 中创建一个假新闻检测器。

1. 导入模块

就像任何其他项目一样,该项目的第一步也是导入模块。我们正在使用NumpyPandasitertools其代码如下所示。

1
2
3
4
5
6
7
import numpy as np
import pandas as pd
import itertools
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.metrics import accuracy_score, confusion_matrix

2. 加载数据

现在,让我们从 csv 文件中读取数据以进行假新闻检测,该文件可以在此处找到。下面显示了相同的代码以及打印前 5 行数据。

1
2
data=pd.read_csv('news.csv')
data.head()

确保 CSV 文件与 Python 代码保存在同一文件夹中。接下来,让我们从刚刚加载的数据中提取标签并打印前五个标签。

1
2
lb=df.label
lb.head()

3. 创建训练和测试数据

在将数据传递到最终模型/分类器之前,我们需要将数据拆分为测试数据和训练数据,这在下面提到的代码中完成。

1
x_train,x_test,y_train,y_test=train_test_split(data['text'], lb, test_size=0.2, random_state=7)

为了分割数据,我们将使用80-20以下规则:80% 的数据用于训练,其余 20% 用于测试数据。

4. 实现 Tfidf-Vectorizer 和 PassiveAggressiveClassifier

TF-IDF使用 Tfidf-Vectorizer将文本数组转换为矩阵。

  1. TF(词频):定义为单词在文本中出现的次数。
  2. IDF(逆文档频率):它衡量一个术语在整个数据中的重要性。

随后,我们应用PassiveAggressiveClassifier数据并将其拟合到训练数据中。分类器在每次迭代后更新损失,并对权重向量也做出轻微的改变。

最后,我们对测试数据进行预测并计算模型对测试数据的准确性。事实证明,我们得到的测试数据准确率超过 90% 。

其代码如下所示。

1
2
3
4
5
6
7
8
9
10
11
tfidf_vectorizer=TfidfVectorizer(stop_words='english', max_df=0.7)
tfidf_train=tfidf_vectorizer.fit_transform(x_train)
tfidf_test=tfidf_vectorizer.transform(x_test)
 
pac=PassiveAggressiveClassifier(max_iter=50)
pac.fit(tfidf_train,y_train)
 
y_pred=pac.predict(tfidf_test)
score=accuracy_score(y_test,y_pred)
 
print("Accuracy: ",round(score*100,2),"%")

结论

今天,我们学习了使用 Python 在包含大量新闻数据的数据集上检测假新闻。检测是在 TfidfVectorizer 和 PassiveAggressiveClassifier 的帮助下完成的。结果我们的准确率超过了 90%,这真是太棒了!

我希望您喜欢假新闻探测器!继续阅读以了解更多信息!