NLP和一类分类器构建

数据挖掘 Python 分类 支持向量机 nlp
2021-10-07 23:23:47

我有一个包含近 5 亿条推文的大数据集。我正在做一些关于公司如何参与激进主义的研究,到目前为止,我已经标记了可以根据推文中某些主题标签的存在而归类为激进主义类别的推文。

现在,让我们假设公司正在发布关于激进主义主题的推文,而没有在推文中插入任何主题标签。我的代码不会对其进行分类,我的想法是运行一个只有一个类的 SVM 分类器。

这导致了以下问题:

  • 这个解决方案在数据科学上是否可行?
  • 是否存在任何其他一类分类器?
  • (最重要的是)是否有任何其他方法可以查找推文是否类似于包含激进主义主题标签的推文的启用?
3个回答
  1. 是的,这是可行的。

  2. 一类分类是一回事,但它通常用在很难或不可能得到负样本的情况下。在您的情况下,我认为,您可以很容易地获得与激进主义无关的推文,因此您可以将其呈现为二进制分类,因为您有两个类别或标签的数据点:1 代表属于您的类别的推文另一个 1 表示不是的推文。

  3. 构建分类器的方法有很多种,SVM 只是其中一种。您也可以使用朴素贝叶斯算法,或者@Kasra 提到的神经网络模型。无论您使用什么,您都必须组织您的数据,以便您拥有两个类别的样本:您的集合中的激进主义和非激进主义。这意味着您应该从您的大数据集中随机挑选推文并手动检查它们是否与激进主义有关,即使它们中没有您在开始时用于识别激进主义推文的主题标签。此外,您必须考虑分类器将使用的功能。最简单的可能是推文中的词袋,但您也可以对推文进行预处理以排除停用词。根据您使用的算法,您可能会发现您的分类器在很大程度上依赖于您的特定主题标签的存在作为预测类别的特征。在这种情况下,它可能很难将没有此主题标签的其他推文识别为激进主义,即使它们是激进主义。我会尝试对整个数据集中的推文进行预处理,以从推文中删除这些标签。

  1. 是的。一类 SVM 实际上是为您的问题而设计的。它回答的问题是“一个新的样本点(未标记的推文)与我的训练数据(带有哈希标签的推文)有多相似?”
  2. 不管这个问题有什么好的答案,我都可以分享我的头脑风暴。尝试找到“我如何以一种行动主义推文粘在一起并与其他推文分开的方式对我的数据进行建模?”的答案。一种方法是找到一些 Activism 特定的字典,并使用该字典使用 TF-IDF 对数据集进行建模。为此,您可以使用非激进主义文本(只需找到有关数学的文本语料库!)并从您的激进主义词汇中减去其词汇集。剩下的可以让你对激进主义“关键词”有一个很好的了解。请注意,如果激进主义主题是概念中的内容,而与关键字无关,那么您需要更复杂的语言模型,例如BERT. 在这种情况下,将您的激进主义推文用作正面示例并创建负面示例(例如,来自该数学语料库)并使用Sequence Classification
  3. 我刚刚意识到在(2)中我实际上回答了(3)!

希望能帮助到你!

从OP的评论:

我想根据我已经拥有的标记数据(包含激进主义标签的数据)确定是否必须将未标记的推文归类为激进主义

这可能对应于半监督学习设置,如下所示:

  1. 在标记的数据样本上训练模型,例如将带有#activism 的推文作为正面实例,并假设其他的现在是负面的
  2. 将模型应用于其余数据(未标记的实例)

为了最大限度地提高准确性,可以通过以下方式迭代该过程:将预测为很可能为正的实例和很可能为负的实例作为新的训练集,并重复该过程直到收敛(即预测的变化很小)。

顺便说一句,对于作者身份验证问题,有一类学习方法(不同)的例子,它与这个有一些相似之处。