Python 柠檬化和词干化之间的区别是什么?

Python 柠檬化和词干化之间的区别是什么?,python,nlp,nltk,lemmatization,Python,Nlp,Nltk,Lemmatization,我什么时候用 另外,NLTK的柠檬化是否依赖于词类? 如果它是短而密集的,不是更准确吗 词干分析和引理化的目标都是将单词的屈折形式和有时与派生词相关的形式简化为一个共同的基本形式 然而,这两个词的味道不同。词干分析通常指的是一个粗糙的启发式过程,即切掉词尾,希望在大多数情况下都能正确地实现这一目标,通常还包括去除派生词缀。引理化通常是指通过使用词汇和词形分析正确地处理事情,通常目的只是去除屈折词尾,并返回单词的基本形式或字典形式,即引理 从NLTK文档: 柠檬化和词干化是规范化的特例。它们确定了

我什么时候用

另外,NLTK的柠檬化是否依赖于词类? 如果它是短而密集的,不是更准确吗

词干分析和引理化的目标都是将单词的屈折形式和有时与派生词相关的形式简化为一个共同的基本形式

然而,这两个词的味道不同。词干分析通常指的是一个粗糙的启发式过程,即切掉词尾,希望在大多数情况下都能正确地实现这一目标,通常还包括去除派生词缀。引理化通常是指通过使用词汇和词形分析正确地处理事情,通常目的只是去除屈折词尾,并返回单词的基本形式或字典形式,即引理

从NLTK文档:

柠檬化和词干化是规范化的特例。它们确定了一组相关单词形式的规范代表

ianacl
但是我认为词干是一种粗糙的技巧,人们使用它将同一个词的所有不同形式简化为一个基本形式,而这个基本形式本身不需要是一个合法的词
类似波特词干分析器的东西可以使用简单的正则表达式来消除常见的单词后缀

柠檬化将一个词简化为其实际的基本形式,在不规则动词的情况下,它可能与输入词完全不同

类似于使用FST将名词和动词转换为基本形式的语素,正如MYYN指出的,词干是将屈折词缀和有时派生词缀转换为基本形式的过程,所有原始单词可能都与之相关。Lemmatization涉及到获得一个单词,它允许你将一组屈折形式组合在一起。这比词干分析更难,因为它需要考虑上下文(因此也需要考虑单词的含义),而词干分析忽略上下文

至于何时使用一个或另一个,则取决于应用程序在多大程度上依赖于在上下文中正确理解单词的含义。如果你在做机器翻译,你可能想要柠檬化来避免误译一个单词。如果您正在对10亿个文档进行信息检索,99%的查询范围为1-3个单词,那么您可以满足于词干分析


至于NLTK,WordNetLemmatizer确实使用词性,尽管您必须提供它(否则它默认为名词)。传递它“dove”和“v”产生“dive”,而“dove”和“n”产生“dove”。

词干和柠檬化的目的都是减少形态变异。这与更一般的“术语合并”程序形成对比,后者也可以处理词汇语义、句法或正交变化

词干化和柠檬化的真正区别有三:

  • 词干化将词形简化为(伪)词干,而柠檬化将词形简化为语言学上有效的引理。这种差异在形态更复杂的语言中很明显,但可能与许多IR应用无关

  • 柠檬化只处理屈折变化,而词干化也可以处理派生变化

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

  • 为了消除同音异义词的歧义,词性标记也可以支持柠檬化

    柠檬化茎干密切相关。区别在于 词干分析器在不知道上下文的情况下对单个单词进行操作, 因此,我们无法区分不同语言的单词 词义取决于词性。但是,词干分析器通常是 更容易实现,运行速度更快,降低的精度可能不会 这对于某些应用程序来说很重要

    例如:

  • “更好”这个词的引理是“好”。此链接被其他用户错过 词干分析,因为它需要字典查找

  • 单词“walk”是单词“walking”的基本形式,因此 在词干和柠檬化方面都是匹配的

  • 单词“meeting”可以是名词的基本形式,也可以是动词的基本形式 指动词(“to meet”),取决于上下文,例如,在我们的最后一个句子中 会议”或“我们明天再开会”。与词干不同, 引理化原则上可以选择适当的引理 取决于上下文


  • 来源:

    关于柠檬化和词干化之间差异的示例驱动解释:

    柠檬化处理将“汽车”与沿途的“汽车”匹配 将“汽车”与“汽车”匹配。

    词干处理处理将“car”匹配到“cars”

    引理化意味着更广泛的模糊词匹配,即 仍然由相同的子系统处理。它意味着某些技术 用于引擎内的低级别处理,也可能反映 工程术语优先

    […]以FAST为例, 他们的柠檬化引擎不仅处理诸如 单数vs.复数,但也有同义词表操作符,比如“hot” 匹配“温暖”

    当然,这并不是说其他引擎不处理同义词 确实如此,但低级别的实现可能是另一种方式 子系统,而不是处理基词干的子系统


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

  • 词干分析器将返回单词的词干,词干不必与单词的词根相同。这通常就足够了
    "beautiful" -> "beauti"
    "corpora" -> "corpora"
    
    "beautiful" -> "beauty"
    "corpora" -> "corpus"