Stemmers vs Lemmatizers

时间:2013-06-26 10:19:02

标签: nlp wordnet stemming text-analysis lemmatization

自然语言处理(NLP),尤其是英语,已经发展成为如果存在“完美”的词典,词干将成为一种古老技术的阶段。这是因为词干分析器将单词/标记的表面形式改变为一些无意义的词干。

然后,“完美”变形器的定义是值得怀疑的,因为不同的NLP任务需要不同级别的词形还原。例如。 Convert words between verb/noun/adjective forms

Stemmers

[in]: having
[out]: hav

Lemmatizers

[in]: having
[out]: have
  • 所以问题是,英语词干器今天有用吗?由于我们有大量的英语词汇化工具

  • 如果没有,那么我们应该如何继续构建强大的引理器呢? 可以采用nounifyverbifyadjectifyadverbify 预处理

  • 如何将词形还原任务轻松扩展到其他语言 与英语有相似的形态结构?

4 个答案:

答案 0 :(得分:79)

Q1:“[..]英语词干器今天有用吗?因为我们有大量的英语词形还原工具”

是。 Stemmers比lemmatizers更简单,更小,通常更快,对于许多应用来说,它们的结果足够好。使用lemmatizer是浪费资源。例如,考虑信息检索中的维数减少。在搜索到的文档和查询中,您可以通过 driv 替换所有驱动器/驱动。你不在乎它是驱动器驱动还是 x17a $ ,只要它将不相关的词汇聚集在一起。

Q2:“[..]我们应该如何继续构建强大的引理器,这些引理器可以采用名词化,动词化,广告化和广告预处理?

你的引理的定义是什么,是否包括派生(驱动 - 驱动程序)或仅包含变形( drive < / em> - 驱动器 - 开车)?它是否考虑了语义?

如果你想要包括派生(大多数人会说包括修改名词等),请记住,派生比变形更强烈不规则。有许多idiosincracies,差距等。你真的想要更改更改火车)和更改(作为硬币)以获得相同的引理?如果没有,你在哪里绘制边界?怎么样神经 - unnerve 地球 - 发掘 - 地球,...这实际上取决于应用程序。

如果您考虑语义银行将被标记为 bank-money bank-river 根据具体情况而定,你有多深(你是否将银行机构银行建设区分开来)?有些应用程序可能根本不关心这个问题,有些应用程序可能想要区分基本语义,有些可能希望它被罚款。

问题3:“如何将词形还原任务轻松扩展到与英语具有相似形态结构的其他语言?”

“与英语相似的形态结构”是什么意思?英语的屈折形态非常少。对于其他形态类型的语言(真正的屈折,凝聚,模板......),有很好的词形推理器。

除了粘合语言之外,我认为查找表(比如说压缩的trie)是最好的解决方案。 (可能有一些未知单词的备份规则,如专有名称)。查找之后是某种消歧(范围从微不足道 - 采取第一个,或采取与POS标签一致的第一个,更复杂)。更复杂的消歧通常是监督的随机算法(例如TreeTaggerFaster),尽管机器学习和手动创建的规则的组合也已经完成(参见例如this)。

显然,对于大多数语言,您不希望通过以下方式创建查找表    而是从形态的描述中产生它    那种语言。对于屈折语言,您可以进行工程设计    捷克的Hajic或俄语的Mikheev的方式,或者,如果你大胆,    你使用两级形态。或者你可以在两者之间做点什么,    例如Hana(我自己)(注意这些都是满的    形态分析器,包括词形还原)。或者你可以学习    lematizer以无人监督的方式la Yarowsky and Wicentowski,可能需要手动后处理,纠正    最常见的词。

有太多的选择,它实际上取决于你想要对结果做什么。

答案 1 :(得分:5)

词干化或词形还原的一个经典应用是搜索引擎结果的改进:通过对查询应用词干(或词形还原)以及(在索引之前)索引所有标记,用户搜索,例如“拥有” “能够找到包含”has“的结果。

(可以说,动词在大多数搜索查询中有点不常见,但同样的原则适用于名词,尤其是在名词形态丰富的语言中。)

为了提高搜索结果的目的,干(或引理)是否有意义(“有”)是否有意义(“hav”)实际上并不重要。它只需要能够代表有问题的词及其所有的屈折形式。事实上,有些系统使用数字或其他类型的id-strings而不是词干或引理(或基本形式或任何它可能被称为)。

因此,这是一个应用程序的示例,其中词干分析器(根据您的定义)与词形变换器一样好。


但是,我并不完全相信你的(隐含的)“词干分子”和“词形变换器”的定义是普遍接受的。我不确定这些术语是否有任何普遍接受的定义,但我定义它们的方式如下:

Stemmer:使用已知后缀的规则和列表,将屈折形式减少为词干或基本形式的函数。

Lemmatizer:一个执行相同缩减的函数,但使用全面的完整形式字典来处理不规则形式。

基于这些定义,一个词形变换器本质上是一个更高质量(也更昂贵)的词干分析器版本。

答案 2 :(得分:2)

答案很大程度上取决于我们所讨论的自然语言处理(NLP)中的任务或特定研究领域。

值得指出的是,已经证明在某些特定任务中,例如情感分析(这是NLP中最喜欢的子字段),使用 Stemmer Lemmatizer 作为系统开发中的一项功能(训练机器学习模型),无论工具有多棒,都不会对模型的准确性产生明显影响。即使它使性能更好一点,但还有更重要的功能,如依赖性解析,这些功能在此类系统中具有相当大的潜力。

重要的是要提到我们正在研究的语言的特征也应该被考虑在内。

答案 3 :(得分:0)

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

  1. 如果您将“关怀”这个词词形化,它会返回“关怀”。如果您使用词干,它会返回“Car”,这是错误的。
  2. 如果您在动词上下文中将单词“Stripes”词形化,它将返回“Strip”。如果您在名词上下文中将其词形还原,它将返回“条纹”。如果你只是阻止它,它只会返回 'Strip'。
  3. 无论是词形还原还是词干词,例如walking、running、swing...到walk、run、swim等,您都会得到相同的结果。
  4. 词形还原在计算上很昂贵,因为它涉及查找表等等。如果您有大型数据集并且性能有问题,请使用 Stemming。请记住,您还可以将自己的规则添加到 Stemming。如果准确性至高无上且数据集不庞大,请使用词形还原。