在这个项目中,你将建立一个文本分类模型,用于识别点击诱导性标题,即主要目的是吸引注意力并引导读者点击链接的文本标题。

你将使用其他 NLP 研究人员在 GitHub 上创建和共享的数据:

  • 正面例子:'https://github.com/pfrcks/clickbait-detection/blob/master/clickbait'
  • 负面例子:'https://github.com/pfrcks/clickbait-detection/blob/master/not-clickbait'

问题 1 – 读取数据 (5 分)

• 使用 Python 读取两个点击诱导性标题数据集(参见数据部分),并将它们合并成一个单一的、随机打乱的数据集。(用于打乱数据的函数之一是 numpy.random.shuffle) • 接下来,将你的数据集分成训练集、测试集和验证集。使用 72% 训练集、8% 验证集和 20% 测试集。(这相当于 20% 测试集,以及剩余的 90%/10% 用于训练和验证)。 o 如果你愿意,你可以将每个分割保存为一个索引(行号列表),而不是创建 3 个单独的数据集。 • 每个数据集的“目标率”是什么?也就是说,测试集中有多少比例的样本被标记为点击诱导性标题?在你的笔记本中显示你的结果。

问题 2 – 基准性能 (10 分 – 在 Blackboard 上回答)

• 假设你有一个简单的基准分类器,它将呈现给它的所有文本都标记为点击诱导性标题。在你的测试集上,这个分类器的精确率、召回率和 F1-score 是多少?你认为是否有另一个好的基准分类器可以给你更高的 F1-score?

问题 1 的代码:

import numpy as np
import pandas as pd

# 读取正面例子数据
clickbait_positive = pd.read_csv('https://raw.githubusercontent.com/pfrcks/clickbait-detection/master/clickbait')

# 读取负面例子数据
clickbait_negative = pd.read_csv('https://raw.githubusercontent.com/pfrcks/clickbait-detection/master/not-clickbait')

# 合并数据集
combined_data = pd.concat([clickbait_positive, clickbait_negative])

# 打乱数据集
np.random.shuffle(combined_data.values)

# 计算数据集长度
data_length = len(combined_data)

# 划分训练集、验证集和测试集
train_end = int(data_length * 0.72)
val_end = int(data_length * 0.8)

train_data = combined_data[:train_end]
val_data = combined_data[train_end:val_end]
test_data = combined_data[val_end:]

# 计算目标率
target_rate_train = sum(train_data['label'] == 'clickbait') / len(train_data)
target_rate_val = sum(val_data['label'] == 'clickbait') / len(val_data)
target_rate_test = sum(test_data['label'] == 'clickbait') / len(test_data)

print('Target rate of train dataset: {:.2%}'.format(target_rate_train))
print('Target rate of validation dataset: {:.2%}'.format(target_rate_val))
print('Target rate of test dataset: {:.2%}'.format(target_rate_test))

问题 2 的答案:

假设我们有一个将每个文本标记为 clickbait 的基准分类器。在测试集上,我们可以计算这个分类器的精确率(precision)、召回率(recall)和 F1-score(F1-score)。假设测试集中有 100 个样本,其中有 80 个样本是 clickbait,20 个样本是非 clickbait。

# 计算基准分类器的精确率、召回率和 F1-score
precision = 80 / 100
recall = 80 / 80
f1_score = 2 * (precision * recall) / (precision + recall)

print('Precision of baseline classifier: {:.2%}'.format(precision))
print('Recall of baseline classifier: {:.2%}'.format(recall))
print('F1-score of baseline classifier: {:.2%}'.format(f1_score))

在这个基准分类器上,精确度为 80%,召回率为 100%,F1 得分为 89.47%。这是由于我们将所有样本都标记为 clickbait,因此没有误报,召回率为 100%。然而,这个基准分类器的 F1-score 相对较低,因为它的精确度较低。

可能有其他的基准分类器可以提供更高的 F1-score,例如将所有样本都标记为非 clickbait。这样做的话,精确度会更高,但召回率会降低。最佳的基准分类器取决于具体的问题和应用场景。

点击诱导性标题识别模型:文本分类实践

原文地址: http://www.cveoy.top/t/topic/bjKu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录