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

Posted

技术标签:

【中文标题】文本分类 + NLP + 数据挖掘 + 数据科学:我应该在应用 tf-idf 之前进行停止词删除和词干提取吗?【英文标题】:Text Classification + NLP + Data-mining + Data Science: Should I do stop word removal and stemming before applying tf-idf? 【发布时间】:2019-03-08 23:23:49 【问题描述】:

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

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

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

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

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

我们不会为一个活动考虑多个类别(但是,这是未来的计划!!)

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

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

【问题讨论】:

【参考方案1】:

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

我应该停止词删除

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

我应该做词干

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

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

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

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

【讨论】:

以上是关于文本分类 + NLP + 数据挖掘 + 数据科学:我应该在应用 tf-idf 之前进行停止词删除和词干提取吗?的主要内容,如果未能解决你的问题,请参考以下文章

NLP的文本分析与特征工程

NLP文本情感分类

专栏 | NLP概述和文本自动分类算法详解

NLP概述和文本自动分类算法详解

NLP——天池新闻文本分类 Task1

自然语言处理(NLP)基于GRU实现情感分类