首页 > 解决方案 > 文本分类 + NLP + 数据挖掘 + 数据科学:我应该在应用 tf-idf 之前进行停止词删除和词干提取吗?

问题描述

我正在研究文本分类问题。问题解释如下:

我有一个事件数据集,其中包含三列 - 事件名称、事件描述、事件类别。数据集中大约有 32 个类别,例如旅游、运动、教育、商业等。我必须根据每个事件的名称和描述将每个事件分类到一个类别中。

我的理解是,这种特殊的分类任务高度依赖于关键字,而不是语义。我给你举两个例子:

如果在名称或描述中或在两者中都找到“足球”一词,则该事件很可能与体育有关。

如果在名称或描述中或在两者中都找到“徒步旅行”一词,则该事件很可能与旅行有关。

我们没有考虑一个事件的多个类别(但是,这是未来的计划!!)

我希望在多项式朴素贝叶斯之前应用 tf-idf 会为这个问题带来不错的结果。我的问题是:

我应该在应用 tf-idf 之前停止单词删除和词干提取,还是应该仅在原始文本上应用 tf-idf?这里的文本表示事件名称和描述列中的条目。

标签: nlpdata-miningdata-sciencetext-classificationtf-idf

解决方案


这个问题太笼统了,您没有提供数据集、代码的示例,甚至没有说明您正在使用的语言。在这方面,我假设您使用的是英语,因为您作为示例提供的两个词是“football”和“trekking”。然而,答案必然是通用的。

我应该停止删除词吗

的。看看这个,看看英语中最常见的单词。如您所见,它们没有语义意义,因此无助于解决您提出的分类任务。ifstopwords是一个包含停用词的列表,stop_words=stopwords传递给CountVectorizeror构造函数的参数将在调用该方法TfidfVectorizer时自动排除停用词。.fit_transform()

我应该做词干吗

这取决于. 英语以外的语言,其语法规则允许大量可能的前缀-后缀,在执行分类任务时通常需要词干,以获得任何有用的结果。然而,英语的语法规则很差,因此您通常可以在没有词干/词形还原的情况下逃脱。您应该首先根据所需的准确性检查获得的结果,如果不够,请尝试在数据预处理中添加词干提取/词形还原步骤。词干提取对于大型语料库来说是一个计算成本很高的过程,我个人只将它用于需要它的语言。

我希望在多项式朴素贝叶斯之前应用 tf-idf 会为这个问题带来不错的结果

小心这个。虽然 tf-idf 在实践中适用于朴素贝叶斯分类器,但这并不是特定分类器的使用方式。从文档中, The multinomial distribution normally requires integer feature counts. However, in practice, fractional counts such as tf-idf may also work.首先处理分类任务CountVectorizer并对其进行评分符合您的最大利益,在您获得评估的基线准确度之后TfidfVectorizer,检查其结果是优于还是差于 CountVectorizer 的结果。

如果您发布一些代码和数据集示例,我们可以为您提供帮助,否则就足够了。


推荐阅读