模型效率中最常见的词效应?

人工智能 自然语言处理 文本分类
2021-11-14 15:23:04

假设我有一个带有文本列的数据框。问题:分类/预测

    sms_text
0   Go until jurong point, crazy.. Available only ...
1   Ok lar... Joking wif u oni...
2   Free entry in 2 a wkly comp to win FA Cup fina...
3   U dun say so early hor... U c already then say...
4   Nah I don't think he goes to usf, he lives aro...

预处理文本后 在此处输入图像描述

从上面的 WordCloud 中,我们可以找到最频繁(出现)的词,例如

Free
Call
Text
Txt

因为这些是最常见的词,并且在预测/分类中的重要性较低,因为它们出现很多。(我的看法)

我的问题是删除最频繁(最常出现)的单词会提高模型分数吗?

这对模型性能有何影响?

删除出现次数最多的单词可以吗?

4个回答

据我所知,有几个方面可能会提高模型分数:

  1. 正常化
  2. 词形还原
  3. 停用词删除(正如您在此处询问的那样)

根据您的问题,“删除最常见的词(停用词)会提高模型得分吗?”。答案是,这取决于您要删除什么样的停用词。这里的问题是,如果不去除停用词,数据集中的噪声会因为 I、my、me 等词而增加。这是使用SVM 分类器对这三个方面的比较。

使用 SVM 分类器进行比较

您可能会看到,在不移除停用词的情况下,Train Set Accuracy 下降到94.81%,Test Set Accuracy 下降到88.02%但是,您应该注意要删除的停用词类型。

如果您正在使用基本的 NLP 技术,如 BOW、Count Vectorizer 或 TF-IDF(词频和逆文档频率),那么删除停用词是一个好主意,因为停用词对这些方法来说就像噪音。如果您使用 LSTM 或其他捕获语义的模型,并且单词的含义取决于先前文本的上下文,那么不要删除停用词就变得很重要。

那么,解决方案是什么?

您可能想要创建一个 Python 包nlppreprocess来删除不必要的停止词。它还具有一些额外的功能,可以快速清理文本。例如:

from nlppreprocess import NLP
import pandas as pd

nlp = NLP()
df = pd.read_csv('some_file.csv')
df['text'] = df['text'].apply(nlp.process)

来源:

  1. https://github.com/miguelfzafra/Latest-News-Classifier

  2. https://towardsdatascience.com/why-you-should-avoid-removing-stopwords-aa7a353d2a52

根据我的经验,我做了 2 项任务,这些任务被证明可以提高模型的准确性/分数。

  1. 正常化
    • 删除文本中的字符和符号
    • 小写折叠
  2. 停用词删除(如你所问)

这些过程帮助我改进了我的模型,因为当我使用词频计数来表示文本时,停用词给我的模型带来了噪音。

所以根据你的问题,去除停用词会提高分数吗?这取决于您的型号。如果您使用字数来表示文本,则可以在进行文本分类时进行停用词去除以去除噪音。

这些词的技术术语是“停用词”。查看信息检索和索引(例如TF/IDF)以决定是否要删除它们。

根据我的项目,我是如何清理和对数据做一些准备的。

  1. 删除特定字符('\r'、'\n'、'"'、)
  2. 改成小写
  3. 删除一些符号
  4. 词形还原(用 wordnet 改变基本词)
  5. 删除停用词。

通过以下这些步骤,我在我的模型上获得了一些改进的准确性分数。

我的项目:https ://github.com/khaifagifari/NLP-Course-TelU