合并两个点击诱饵数据集并训练文本分类器

本教程将指导你完成一个点击诱饵检测项目,从数据预处理、模型训练到最终评估。

数据集

  • 正面例子: '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% 分配给训练集和验证集。)

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

• 假设你有一个简单的基准分类器,它将所有提交给它的文本标记为点击诱饵。这种分类器在你的测试集上的精确度、召回率和 F1 分数是多少?你认为是否有另一个好的基准分类器能让你获得更高的 F1 分数?

o 如果你喜欢,你可以将每个分割保存为一个索引(行号列表),而不是创建 3 个单独的数据集。

• 这三个数据集的“目标率”是多少?也就是说,测试集中有多少百分比的文本被标记为点击诱饵?在你的笔记本中显示结果。

问题3 - 训练一个单一的词袋 (BOW) 文本分类器 (20 分)

• 使用 scikit-learn 的管道模块,创建一个管道来训练一个 BOW 朴素贝叶斯模型。我们建议使用 CountVectorizerMultinomialNB 类。在你的模型的向量化词汇表中包含单字和双字(参见参数:ngram_range) • 在你的训练集上拟合你的分类器 • 使用 sklearn.metrics 中的函数,计算你的训练集和验证集上的精确度、召回率和 F1 分数。在你的笔记本中显示结果。使用“点击诱饵”作为你的目标类别(即,y=1 表示点击诱饵,y=0 表示非点击诱饵)

替代方案: 如果你已经熟悉朴素贝叶斯,你可以选择另一个词袋分类器来解决这个问题。你的方法应该有某种方式来选择最重要的特征或关键指标,映射到你词汇表中的单词或 n-gram,以便你完成剩余的问题

问题4 - 超参数调整 (20 分)

使用 ParameterGrid 类,运行一个小的网格搜索,你至少需要改变模型的 3 个参数

• 你的词频向量化的 max_df(过滤文档频率的阈值) • 你的朴素贝叶斯模型的 alpha 或平滑度 • 你选择的另一个参数。这可以是非数字的;例如,你可以考虑一个包含和不包含双字的模型(参见 CountVectorizer 类中的参数“ngram”)

显示你的验证集上的精确度、召回率和 F1 分数指标。如果你的网格搜索非常大(>50 行),你可能需要将输出限制为最高和最低的结果。

替代方案 - 如果你在问题 3 中使用了朴素贝叶斯以外的方法,那么请确保你清楚地在问题 4 中调整了哪些指标。

问题5 - 模型选择 (10 分)

使用上一个问题中获得的验证集指标,选择一个模型作为你的选定模型。如何选择模型由你决定;一种方法是选择在你的训练集上显示最高 F1 分数的模型。

接下来,将你的选定模型应用于你的测试集,并计算精确度、召回率和 F1。在你的笔记本中显示结果

问题6 - 关键指标 (10 分)

使用你在上一个问题中选择的模型的对数概率,选择 5 个词作为强烈的点击诱饵指示器。也就是说,如果你需要根据单个词来过滤标题,而不需要机器学习模型,那么这些词将是不错的选择。在你的笔记本中显示这个关键词列表。

你可以选择如何处理双字(例如,'winbig');你可以选择忽略它们,只选择单字词汇表中的词作为关键指标。

问题7 - 正则表达式 (10 分)

你的 IT 部门已经联系了你,因为他们听说你可以帮助他们找到点击诱饵。他们对你的机器学习模型很感兴趣,但他们今天需要一个解决方案。

• 编写一个正则表达式,检查文本中是否包含上一个问题中提到的任何关键词。你应该编写一个正则表达式来检测你选择的 5 个关键词中的任何一个。你的正则表达式应该以某种方式识别单词边界。也就是说,关键词“win”不应该在文本“Gas prices up in winter months”中被检测到。

• 使用 python 的 re 库 - 将你的函数应用于你的测试集。(参见函数 re.search)。这种分类器的精确度和召回率是多少?在你的笔记本中显示结果

问题8 - 比较结果 (15 分 - 在 Blackboard 上回答)

• 将你上一个问题中基于规则的分类器与你的机器学习解决方案进行比较。哪个分类器显示了最好的模型指标?你认为它为什么表现最好?两者与你的简单基准(问题 2)相比如何?

• 如果你有更多时间来尝试改进这个点击诱饵检测解决方案,你会探索什么?(这个问题没有一个唯一的正确答案;回顾你的结果,并提出自己的想法)

关于问题 8,结合问题 2、问题 6、问题 7 给出分析结论,并解释问题 2 中为什么基准分类器是将所有文本都标记为 clickbait,这样的分类器的精确度、召回率和 F1 分数都为 0。内容:问题 2 中的基准分类器将所有文本都标记为 clickbait,因为它是一个非常简单的分类器,没有任何特征选择或模型训练的步骤。它只是根据一个非常简单的规则将所有文本标记为 clickbait,因此它的精确度、召回率和 F1 分数都为 0。

问题 6 中选择的 5 个关键词是强烈的 clickbait 指示器,这意味着它们在 clickbait 标题中经常出现。这些关键词可能包括“win”、“amazing”、“shocking”等。

问题 7 中的正则表达式可以通过使用 \b(单词边界)来检测关键词,并且可以使用 re.search 函数在文本中查找关键词。该正则表达式将检测任何一个关键词出现在文本中的情况。

将问题 8 与这些问题结合起来,可以得出以下分析结论:

  • 在问题 2 中,基准分类器的精确度、召回率和 F1 分数都为 0,因为它将所有文本都标记为 clickbait,无论实际情况如何。这是一个非常简单的规则,没有考虑任何其他特征。
  • 在问题 6 中,选择的 5 个关键词是强烈的 clickbait 指示器,它们在 clickbait 标题中经常出现。这些关键词可以作为规则分类器的依据,但可能会忽略其他重要特征。
  • 在问题 7 中,使用正则表达式来检测关键词可以作为一个规则分类器的替代方法。这种方法可以更灵活地检测关键词,并且可以通过调整正则表达式来改进分类器的性能。
  • 与基准分类器相比,机器学习解决方案可能会获得更好的模型指标,因为它可以利用更多的特征和模型训练过程来进行分类。然而,机器学习解决方案的性能也取决于特征选择和模型的选择。
  • 如果有更多时间来改进 clickbait 检测解决方案,可以尝试以下方面:
    • 考虑使用更复杂的特征选择方法,例如 TF-IDF 或词嵌入。
    • 尝试不同的模型,例如支持向量机(SVM)或随机森林。
    • 调整模型的超参数,例如正则化参数或平滑参数。
    • 考虑其他特征,例如标题长度或其他语言特征。
    • 尝试使用其他机器学习技术,例如深度学习模型。
合并两个点击诱饵数据集并训练文本分类器

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

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