可以自动找到停止词吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以自动找到停止词吗?相关的知识,希望对你有一定的参考价值。

在NLP中,停用词移除是典型的预处理步骤。它通常是基于我们认为停止词应该是什么的经验方式来完成的。

但在我看来,我们应该概括一下停止词的概念。对于来自不同领域的语料库,停止词可能会有所不同。我想知道我们是否可以在数学上定义停用词,例如通过其统计特征。然后我们可以自动从特定域的语料库中提取停用词。

对此有任何类似的想法和进展吗?谁能解开一些光明?

答案

通常,停止词比其他语义词更频繁地发生......所以在构建我的应用程序时,我使用了两者的组合;固定清单和统计方法。我正在使用NLTK,它已经列出了一些常见的停用词;所以我首先删除了这个列表中出现的单词,但当然这并没有删除所有的单词...正如你已经提到的那样,单词不同于语料库和语料库。然后我评估了出现在语料库中的每个单词的频率,并删除了频率高于“一定限度”的单词。我提到的这个限制是我在观察所有单词的频率后修复的值...因此这个限制也取决于语料库到语料库......但是一旦仔细观察所有单词的列表,你就可以很容易地计算出来按照频率顺序排列的单词...这种统计方法将确保您删除未出现在常用停用词列表中的停止词...之后,为了优化数据,我还使用了POS标记。并删除了前两步后仍然存在的专有名词。

另一答案

我不是专家,但希望我的回答是有道理的。

从语料库中统计提取停用词听起来很有趣!我会考虑计算逆文档频率,如其他答案中所提到的,除了使用来自公共停用词列表的常规停用词,如NLTK中的那个。停止词不仅从语料库到语料库,它们也可能因问题而异。例如,在我工作的一个问题中,我使用了一组新闻文章,在那里你会发现许多时间敏感和位置敏感的单词。这些都是至关重要的信息,统计上删除“今天”,“这里”等字样会对我的结果造成影响。因为,新闻文章不仅讨论了一个特定事件,还讨论了过去或其他地方发生的类似事件。

简而言之,我的观点是,您需要考虑正在解决的问题,而不仅仅是语料库。

谢谢,Ramya

另一答案

言语无处不在。它们将出现在每个(或几乎每个)文档中。从数学上为不同域的语料库定义停用词的好方法是计算单词的inverse document frequency (IDF)

IDF是一种比频率计算更好的方法来定义停用词,因为简单的频率计算受到包含特殊字多次的少数专用文档的不利影响。此方法已用于自动学习外语中的停用词(参考Machine Learning with SVM and Other Kernel Methods)。

另一答案

是的,可以自动检测停用词。

单词频率整体

一种方法是将字频率视为一个整体。

计算组合文本中所有单词的频率。按顺序排序并删除前20%左右。

您可能还希望删除底部5%。这些不是停顿词,但对于很多机器学习来说,它们是无关紧要的。甚至可能是拼写错误。

每个“文件”的字数

另一种方法是分析每个“文档”的单词。

在一组文档中,可以通过查找存在于大量文档中的单词来检测停用词。它们对于在该特定集合中对文档进行分类或聚类将是无用的。

例如。分析科学论文的机器学习系统可能在分析后将“抽象”一词标记为停用词,即使每个文档只存在一次。但几乎所有人都有可能。

对于仅在非常有限数量的文档中找到的单词也是如此。它们可能拼写错误或非常独特,可能永远不会再被看到。

但是,在这种情况下,重要的是学习集中文档组之间的分布是偶数,或者分成一个大组和一个小组可能会丢失所有重要单词(因为它们可能存在于太多文档中或太少) 。

避免训练集中不均匀分布的组的问题的另一种方法是仅删除存在于所有或几乎所有文档中的单词。 (即所有英文文本中都会出现我们最喜欢的停止词,如“a”,“it”,“the”,“an”等)。

Zipf定律

当我学习机器学习并讨论停止词时,提到了Zipf定律。然而,今天我无法告诉你如何或为什么,但也许这是你想要研究的一般原则或数学基础......

我用Google搜索了“Zipf's Law自动停止字检测”,快速选择了两个可能感兴趣的PDF文件...

另一答案

实际上,构建停用词的常用方法是仅使用最常见的(在文档中,即通过DF)单词。构建前100个,200个,1000个单词的列表,并查看它们。只需浏览列表,直到找到您认为不应成为停用词的单词。然后考虑跳过它,或者在这一点上打破列表。

在许多数据集中,您将拥有特定于域的停用词。例如,如果您使用StackOverflow,“java”和“c#”很可能是停用词(这实际上不会造成太大损害;特别是如果您仍然使用标签)。其他特定于域的停用词可以是“代码”,“实现”,“程序”。

以上是关于可以自动找到停止词吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以以编程方式配置 PostgreSQL 以不消除全文搜索中的停用词吗?

我可以在应用商店的应用名称中使用“免费”一词吗? [关闭]

语义 UI 搜索栏 - 您可以截断描述,使其仅显示前几个词,但仍搜索所有词吗?

本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止 亲测有效

在网站中实现谷歌地图时自动设置搜索词(javascript)

tomcat 突然开始自动停止运行。为啥,以前好好的。