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


9

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

数据:

数年来,大量的可变长度的人类文本输入(搜索词和整个句子(最多200个字符))。文本中包含大量垃圾邮件(例如来自机器人的机器输入,单个单词,愚蠢的搜索,产品搜索等),似乎只有几%有用。我意识到有时候(很少)人们会问一些很酷的问题来搜寻我的身边。这些问题是如此的酷,以至于我认为有必要更深入地研究它们,以了解人们随着时间的流逝如何搜索以及人们对使用我的网站感兴趣的主题。

我的问题:

是我真的在预处理方面苦苦挣扎(即丢弃垃圾邮件)。我已经从网络上尝试过一些停用词列表(NLTK等),但是这些并不能真正满足我对这个数据集的需求。

感谢您的想法和讨论!


1
Python NLTK模块提供停用词数据,如果它不能帮助您更好地提供有关数据集的更多信息。为什么对您的案例没有帮助?
卡斯拉·曼沙伊(Kasra Manshaei)2015年

@kasramsh:当我为这些软件过滤时,我有一种印象,即它没有将垃圾邮件过滤掉。我认为原因是这些列表是基于自然文本生成的(不确定),因此不适用于搜索词和网站查询。就像当您进行聚类(基于搜索字符串的相似性)时,我的印象是垃圾邮件在熵级别上具有很强的作用,因此混淆了最终结果:-/。
PlagTag

1
我认为@PlagTag无法理解是什么stop words。停止wrods是在一些语言最常用的词,例如一个列表Ithea等等。您只需从文本中删除这些单词,然后再开始训练算法,尝试确定哪个文本是垃圾邮件。它并不能帮助您确定哪个文本是垃圾邮件,它可以使您的学习算法有所改进。
itdxer 2015年

@itdxer,感谢您的评论。我在这里更广泛地使用了术语“停用词”(因为我认为这样做可能没问题)。感谢您解决问题;-)
PlagTag

Answers:


5

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


非常感谢,我将尝试这个并在这里报告!
PlagTag

实际上,仅靠IDF高分就能解决问题
CpILL

2

这取决于您的应用程序。

在进行主题建模时,请首先尝试使用默认停用词。当在许多主题中出现一些突出的单词时(请注意我相当模糊的表述),它们是添加其他停用词的不错的选择。

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


1

使用TFIDF(术语频率与文档频率成反比)将解决您的目的。获取文档中每个单词的TFIDF分数,然后按照单词的分数对单词进行排序,从而可以选择数据中的重要单词。


1

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

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


0

在某些时候,停用词可能是解决方案的一部分,但不是关键。在任何情况下,对于任何主要语言,都存在良好的停用词列表,但不应特定于域。

我也不认为单独使用TD-IDF确实是正确的。质量低劣的字符串中可能有非常罕见的单词(可能是垃圾)。

与其尝试猜测确切的功能是有用的,不如:我首先创建一个数据集,方法是随机选择一些数据并手动标记它们(as goodbad,或从0.0到1.0的比例)。然后编写一些代码,提取出许多功能(长度,单词数(令牌),垃圾邮件分数,是否包含URL或臭名昭著的字符,检测到的语言,是否带有问号,是否具有正确的大写字母)。另外,不要忘记包含您可能具有的非语言功能,例如进行查询的用户的geoIP所在的国家/地区,用户是否已登录,用户的帐户年龄。因此,此时您将拥有一个庞大的表/ CSV,而一个较小的表/ CSV将为您添加的标签增加一列。

然后训练一些带有这些标记示例的机器学习包,以建立一个对您足够准确的模型。然后,让该模型在其余数据上运行。

如果您不想编写太多代码,甚至可以将这些功能转换为CSV格式,然后将其提供给Google Prediction API的电子表格界面

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.