为自然语言文本分类构建训练数据集?

数据挖掘 Python 分类 nlp 文本挖掘
2022-02-07 15:04:41

从 Coursera 平台上的 11 门免费课程中提取了大约 550 个视频脚本(字幕) 。我已经在标点符号去除、停用词去除、标记化、词干提取和词形还原方面对它们进行了预处理现在,我被告知对于我的任务,我可以尝试使用简单的 Bag of Words但是我不确定这将如何帮助我将我的文本分类为六类之一这些类别与创建视频材料的意图有关,更准确地说,哪一部分解释了一个概念,哪一部分讨论了一个例子,哪一部分给出了实用的建议等。以下是我的类别:

ConceptDescription-> 主要概念的解释
ConceptMention-> 提及一个与主要概念相关的概念
Methodology / Technique-> 要实现某件事,应该做什么
Summary-> 讨论的材料或整个课程的总结
Application-> 实用建议概念
Example-> 概念示例

通过手动阅读其中 3 门课程的多个文件,我创建了一个字典,其中包含口语单词,这可以帮助我识别特定句子/段落属于哪个类别。但是我没有分类器的训练数据集。所以我的想法是使用该字典来标记我的数据,例如句子 1 为Summary,句子 4 为ConceptDescription,句子 12 为Example,然后将句子 2 和 3 标记为 1,将句子 5-11 标记为句子 4 等。

我的问题是,这个想法太蹩脚了吗?没有办法以非手动的方式创建至少一个平均质量的训练数据集?或者,如果手动检查是唯一的选择,是否有一个选项我只需要对一小部分文件进行手动标记,比如 550 个文件中的 50 个,并且分类仍然会产生平均到好的结果?我不追求完美的结果,但由于时间有限,我的目标是不那么耗时的事情。

我也玩过输出术语的 tf-idf,但当然,这不是我真正需要的,所以这有点随机。

在此先感谢您的帮助。任何具体的想法和算法都将受到欢迎。

2个回答

这将有助于对脚本进行一些分析,以确定区分不同类别的方面。一旦您为某些示例手动执行此操作,您可以考虑根据观察编写一些规则。其余示例可以使用规则进行标记。对于基于模型的方法,如果您标记一小组示例(约 50 个),则可以在这些示例上训练一个简单的模型(朴素贝叶斯等)。

由于您知道标签的数量 (6),您可以使用k-means算法将您的数据聚类为 6 组。我建议您使用 tfidf 方法来表示每个。您可以使用sklearn函数来实现您的代码。