合并数据集并构建 Clickbait 检测模型
将两个 Clickbait 数据集合并并构建模型
本文将介绍如何将两个 Clickbait 数据集合并,并使用 Python 构建一个简单的 Bag-of-Words (BOW) 文本分类器来检测 Clickbait 标题。
数据来源:
- 正面例子:'https://github.com/pfrcks/clickbait-detection/blob/master/clickbait'
- 负面例子:'https://github.com/pfrcks/clickbait-detection/blob/master/not-clickbait'
问题 1:读取数据 (5 分)
- 使用 Python 读取两个 Clickbait 数据集(参见数据部分),并将它们合并成一个单一、随机排列的数据集。 (可以使用 numpy.random.shuffle 函数对数据进行洗牌操作)。
- 接下来,将数据集分成训练集、测试集和验证集。按照 72% 的训练集,8% 的验证集和 20% 的测试集的比例进行划分。
问题 2:基线性能 (10 分)
- 假设有一个简单的基线分类器,将每个文本都标记为 Clickbait。在测试集上,这样的分类器的精确度、召回率和 F1 分数是多少?是否有其他更好的基线分类器可以给出更高的 F1 分数?
- 可以将每个拆分保存为一个索引(行号列表),而不是创建 3 个单独的数据集。
- 每个数据集的“目标率”是多少?也就是说,测试数据集中标记为 Clickbait 的百分比是多少?在笔记本中展示你的结果。
问题 3:训练单个 Bag-of-Words (BOW) 文本分类器 (20 分)
- 使用 scikit-learn 的 pipelines 模块,创建一个 Pipeline 来训练一个 BOW 朴素贝叶斯模型。我们建议使用 CountVectorizer 和 MultinomialNB 类。在你的模型中包括 unigrams 和 bigrams。
- 在训练集上拟合你的分类器。
- 使用 sklearn.metrics 中的函数计算训练集和验证集上的精确度、召回率和 F1 分数。在笔记本中展示结果。
问题 4:超参数调整 (20 分)
- 使用 ParameterGrid 类,运行一个小的网格搜索,其中至少变化了模型的 3 个参数。
- count vectorizer 的 max_df(文档频率过滤阈值)
- NaïveBayes 模型的 alpha 或平滑参数
- 你选择的另一个参数。这可以是非数字的;例如,你可以考虑一个包含或不包含 bigrams 的模型(参见 CountVectorizer 类中的参数“ngram”)
- 在验证集上展示精确度、召回率和 F1 分数的度量。如果你的网格搜索非常大(>50 行),你可以将输出限制为最高和最低的结果。
问题 5:模型选择 (10 分)
- 使用上一问题中的验证集度量选择一个模型作为你的选定模型。你可以选择如何选择这个模型;一种方法是选择在训练集上显示最高 F1 分数的模型。然后将你选择的模型应用于测试集,并计算精确度、召回率和 F1 分数。在笔记本中展示结果。
问题 6:关键指标 (10 分)
- 使用你在上一个问题中选择的模型的对数概率,选择 5 个强烈的 Clickbait 指标词。也就是说,如果你需要根据单个词过滤标题,而不使用机器学习模型,那么这些词将是很好的选择。在笔记本中展示这个关键词列表。
- 你可以选择如何处理 bigrams(例如,“win
big”);你可以选择忽略它们,只选择 unigram 词汇中的关键词指标。
问题 7:正则表达式 (10 分)
- 你的 IT 部门联系你,因为他们听说你可以帮助他们找到 Clickbait。他们对你的机器学习模型感兴趣,但他们需要今天解决方案。
- 编写一个正则表达式,检查文本中是否包含前一个问题中的任何关键词。你应该编写一个正则表达式来检测前 5 个关键词中的任何一个。你的正则表达式应该在某种程度上意识到单词边界。也就是说,“win”关键词不应该在文本“Gas prices up in winter months”中被检测到。
- 使用 python 的 re 库,将你的函数应用于你的测试集(参见 re.search 函数)。这个分类器的精确度和召回率是多少?在笔记本中展示你的结果。
问题 8:比较结果 (15 分)
- 比较前一个问题中的基于规则的分类器和机器学习解决方案的结果。哪个分类器显示出最佳的模型度量?为什么你认为它表现最好?它们两者与你的基线(问题 2)相比如何?
- 如果你有更多时间来改进这个 Clickbait 检测解决方案,你会探索什么?(对于这个问题没有一个正确答案;回顾你的结果并提出你自己的想法)
关于问题 8 的分析结论:
- 基于规则的分类器可能会在识别明确包含特定关键词的 Clickbait 标题方面表现出色,但它可能无法捕获那些不包含这些特定关键词但仍然是 Clickbait 的标题。机器学习模型,特别是经过适当训练的模型,可以更灵活地识别 Clickbait 的模式,即使这些模式没有明确地由特定关键词表示。
- 问题 2 中的基线分类器,它将所有文本都标记为 Clickbait,可能具有很高的召回率,但精确度很低。这表明它会捕捉到所有 Clickbait 标题,但也会错误地标记许多非 Clickbait 标题。
- 通过问题 6 中识别出的关键指标,可以了解 Clickbait 标题中经常出现的语言特征。这些指标可以帮助改进机器学习模型,并为基于规则的分类器的规则提供见解。
改进 Clickbait 检测解决方案的建议:
- 使用更大的数据集来训练模型,这将有助于提高模型的泛化能力。
- 尝试使用更复杂的文本表示方法,例如词嵌入,它可以更好地捕捉单词之间的语义关系。
- 研究其他机器学习模型,例如支持向量机 (SVM) 或深度神经网络,看看它们是否能提供更好的性能。
- 探索其他 Clickbait 检测特征,例如标题长度、标点符号的使用和情绪。
- 将 Clickbait 检测模型与其他 NLP 任务相结合,例如情感分析或主题建模,以提供更全面的 Clickbait 检测解决方案。
原文地址: https://www.cveoy.top/t/topic/Dnq 著作权归作者所有。请勿转载和采集!