词干与词干之间的真正区别是什么?

问题描述 投票:114回答:8

我何时使用每个?

而且... NLTK词素化是否取决于词性?如果不是,它会更准确吗?

python nlp nltk lemmatization
8个回答
114
投票

短而密集:http://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

词干和词根化的目标都是将单词的屈折形式和有时与派生相关的形式减少为共同的基本形式。

但是,这两个词的风格不同。词干通常是指粗略的启发式过程,该过程会砍掉单词的结尾,以期在大多数时间正确实现此目标,并且通常包括删除派生词缀。词法词化通常是指使用单词的词汇和词法分析来正确处理事情,通常旨在仅去除词尾变化并返回单词的基数或字典形式,这被称为引理。

来自NLTK文档:

合法化和词干提取是规范化的特殊情况。他们为一组相关的单词形式确定规范的代表。


62
投票

Lemmatisationstemming密切相关。区别在于词干分析器只对一个单词进行操作,而无需了解上下文,因此无法区分不同的单词含义取决于词性。但是,茎干通常是易于实施和运行,并且精度降低可能不会对于某些应用来说很重要。

例如:

  1. “ better”一词的引理是“ good”。错过了此链接茎,因为它需要字典查找。

  2. 单词“ walk”是单词“ walking”的基本形式,因此词干和词根匹配都匹配。

  3. 单词“ meeting”可以是名词的基本形式或形式动词(“见面”)的含义取决于上下文,例如,“在我们最后会议”或“我们明天再开会”。引理原则上可以选择适当的引理取决于上下文。

来源https://en.wikipedia.org/wiki/Lemmatisation


17
投票

词干和词根化的目的都是为了减少形态变异。这与更通用的“术语合并”过程相反,后者可能还会处理词汇语义,句法或正字法变化。

词干和词根化之间的真正区别是三重:

  1. Stemming将单词形式简化为(伪)词干,而lemmatization将单词形式简化为语言有效的引理。这种差异在形态更为复杂的语言中显而易见,但对于许多IR应用而言可能无关紧要;

  2. 合法化仅处理拐点变化,而词干还可以处理导数变化;

  3. 就实现而言,词元化通常更为复杂(特别是对于形态复杂的语言),并且通常需要某种词典。另一方面,可以通过相当简单的基于规则的方法来实现令人满意的词干。

[词法化也可以由词性标记器支持,以消除同音异义。


16
投票

有两个方面显示它们的差异:

  1. A stemmer将返回单词的词干,该词根不必与单词的词根相同。即使词干本身不是有效的词根,通常也可以将相关词映射到相同的词干,而在lemmatisation中,它将返回词的字典形式,该词必须是有效的词。

  2. lemmatisation中,应首先确定单词的词性,并且归一化规则将针对不同的词性而有所不同,而stemmer在单个单词上操作而无需了解上下文,因此无法根据词性区分具有不同含义的词。

参考http://textminingonline.com/dive-into-nltk-part-iv-stemming-and-lemmatization


13
投票

正如MYYN指出的那样,词干提取是将词尾的,有时是衍生词的词缀去除为所有原始词都可能与之相关的基本形式的过程。词法化与获得单个单词有关,该单词使您可以将一堆变形的表格组合在一起。这比阻止更难,因为它需要考虑上下文(以及单词的含义),而阻止则忽略上下文。

关于何时使用一个或另一个,取决于您的应用程序在多大程度上取决于正确理解上下文中单词的含义。如果您要进行机器翻译,则可能需要进行词法化处理,以避免错误翻译单词。如果您要对10亿个文档进行信息检索,而其中有99%的查询(从1-3个字不等),您就可以满足条件。

对于NLTK,WordNetLemmatizer确实使用了语音部分,尽管您必须提供它(否则默认为名词)。将其传递给“鸽子”和“ v”会产生“潜水”,而传递给“鸽子”和“ n”会产生“鸽子”。


10
投票

示例驱动的关于词源化和词干之间的区别的解释:

Lemmatization处理matching” car”与“ cars”匹配“汽车”与“汽车”。

Stemming处理将“ car”匹配到“ cars”

合法化意味着模糊词匹配的范围更广,即仍然由相同的子系统处理。这意味着某些技术用于引擎内的低级处理,也可能反映工程上对术语的偏爱。

[...]以FAST为例,他们的词形化引擎不仅处理诸如单数或复数,但词库运算符也喜欢“热”匹配“温暖”。

这并不是说其他​​引擎不会处理同义词他们这样做,但是底层实施可能有所不同子系统,而不是处理基本词干的子系统。

http://www.ideaeng.com/stemming-lemmatization-0601


3
投票

ianacl但是我认为Stemming是一个粗俗的技巧,人们经常使用它来将同一个单词的所有不同形式简化为基本形式,而不必自己成为合法的单词像Porter Stemmer这样的东西可以使用简单的正则表达式来消除常见的单词后缀

合法化将单词还原为实际的基本形式,在不规则动词的情况下,它看起来可能与输入的单词完全不同诸如Morpha之类的东西,它使用FST将名词和动词带入其基本形式]


0
投票

Stemming仅删除或阻止单词的最后几个字符,通常会导致错误的含义和拼写。 Lemmatization考虑上下文并将单词转换为其有意义的基本形式,即Lemma。有时,同一个词可以有多个不同的引词。我们应该在特定的上下文中为单词识别词性(POS)标签。以下是说明所有差异和用例的示例:

  1. 如果您对'Caring'进行词缀化,它将返回'Care'。如果您阻止,它将返回“ Car”,这是错误的。
  2. 如果在verb上下文中对单词'Stripes'进行定形化,它将返回'Strip'。如果在名词上下文中对其进行词形化,它将返回'Stripe'。如果仅阻止它,它将仅返回'Strip'。
  3. 无论您对诸如步行,奔跑,游泳 ...之类的词进行词干化或词干化,您得到的结果都是相同的。归类化在计算上是昂贵的,因为它涉及查找表,而不涉及查找表。如果您的数据集很大并且性能是一个问题,请使用Stemming。请记住,您也可以将自己的规则添加到“词干”中。如果准确性至高无上,并且数据集不那么庞大,请使用Lemmatization。
© www.soinside.com 2019 - 2024. All rights reserved.