如何创建一个好的停用词列表

数据挖掘 数据挖掘 nlp 信息检索 语言模型
2021-10-08 07:11:57

我正在寻找有关如何整理停用词列表的一些提示。有人知道/有人可以推荐一种从数据集本身提取停用词列表以进行预处理和过滤的好方法吗?

数据:

多年来,大量可变长度的人工文本输入(搜索词和整个句子(最多 200 个字符))。该文本包含大量垃圾邮件(例如来自机器人的机器输入、单个单词、愚蠢的搜索、产品搜索……),而且似乎只有一小部分有用。我意识到有时(很少)人们会通过询问非常酷的问题来搜索我的身边。这些问题太酷了,我认为值得深入研究一下,看看人们如何随着时间的推移进行搜索,以及人们对使用我的网站感兴趣的主题。

我的问题:

是我真的在努力进行预处理(即丢弃垃圾邮件)。我已经尝试了一些来自网络的停用词列表(NLTK 等),但这些并不能真正满足我对该数据集的需求。

感谢您的想法和讨论!

4个回答

一种方法是使用tf-idf分数。大多数查询中出现的词对于区分好的搜索查询和坏的搜索查询几乎没有帮助。但是那些仅在少数查询(高 idf 或逆文档频率)中频繁出现(高 tf 或词频)的查询在区分好查询和坏查询方面可能更重要。

这取决于您的应用程序。

在进行主题建模时,请先尝试默认停用词。当有一些词在许多主题中突出显示时(注意我相当模糊的表述),它们是额外停用词的良好候选者。

例如,在具有包含图形和表格材料的文本的语料库中,单词“fig”、“figure”、“tab”或“table”是很好的附加停用词。结果,您的主题变得更加明确。

使用 TFIDF(词频逆文档频率)将解决您的目的。获取文档中每个单词的 TFIDF 分数,并按分数对单词进行排序,您可以通过这些分数选择数据中的重要单词。

我用来构建停用词列表的一种方法是在您的文本数据上构建和训练逻辑回归模型(由于其可解释性)。取每个标记的系数的绝对值。然后,对令牌系数的绝对值进行降序排序。然后,创建一个包含高系数绝对值的所有标记的列表,这些标记可能会导致过度拟合或可能满足某些其他标准成为停用词。该列表是您的停用词列表。然后,您可以将该停用词列表应用于此类型的另一组文档(有点像测试集),以查看删除它们是否会增加测试集模型的准确度、精确度或召回率。

这种策略是有效的,因为它在构建停用词列表时考虑了令牌的影响。