你应该去词干和词形还原吗?

Should you Stem and lemmatize?

我目前正在使用 python NLTK 为 Kaggle SMS Spam Classification Dataset 预处理文本数据。我在预处理过程中完成了以下步骤:

  1. 删除了所有多余的空格
  2. 删除了标点符号和特殊字符
  3. 将文本转换为小写
  4. 将 lol、brb 等缩写替换为其含义或完整形式。
  5. 删除停用词
  6. 标记数据

现在我计划对标记化数据分别执行词形还原和词干化,然后分别对词形化数据和词干化数据执行 TF-IDF。

问题如下:

上下文: 我对 NLP 比较陌生,因此我试图尽可能多地了解这些概念。这个问题背后的主要思想是了解词形还原或词干合并是否有意义theoretically/practically,或者这些是否应该分开进行。

参考问题:

  1. 是否有实际用例对标记化数据执行词形还原,然后对词形化数据进行词干处理,反之亦然

  2. 提取词干化数据的想法在理论上是否有意义,还是完全不正确。

关于 (1):词形还原和词干提取本质上做同样的事情:它们将变形词形式转换为规范形式,假设通过形态表达的特征(例如词尾)对于使用并不重要案件。如果您对时态、数字、语音等不感兴趣,那么 lemmatising/stemming 将减少您必须处理的不同单词形式的数量(因为不同的变体被折叠成一种规范形式)。所以不知道你到底想做什么,也不知道形态学信息是否与那个任务相关,很难回答。

词形还原是一种语言动机的过程。它的输出是目标语言中的一个有效单词,但删除了词尾等。也不是没有信息丢失,但是没有那么多有问题的情况。 does 是第三人称单数助动词,还是母鹿的复数? building 是名词,指结构,还是动词 to build 的连续形式? 住房怎么样?物体(例如发动机)的外壳或为某人寻找庇护所的过程?

词干提取是一种资源密集程度较低的过程,但作为 trade-off 它仅适用于近似值。您将获得不太精确的结果,这在信息检索等应用程序中可能无关紧要,但如果您对意义完全感兴趣,那么它可能是一个太粗糙的工具。它的输出也不会是一个词,而是一个'stem',基本上是一个字符串,与你在提取相似词时得到的字符串大致相关。

Re (2): 不,没有任何意义。这两个过程以不同的方式尝试相同的任务(规范化变形词),一旦你完成词形还原,词干提取就毫无意义了。如果你先词干,你通常不会得到有效的词,所以词形还原无论如何都行不通。