78

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

再一次,“完美”词形还原器的定义是有问题的,因为不同的 NLP 任务将需要不同级别的词形还原。例如在动词/名词/形容词形式之间转换单词

词干

[in]: having
[out]: hav

词形还原剂

[in]: having
[out]: have
  • 所以问题是,英语词干分析器今天有用吗?因为我们有大量的英语词形还原工具

  • 如果不是,那么我们应该如何继续构建可以接受 、 和 预处理的强大词nounifyverbify还原 器adjectifyadverbify

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

4

4 回答 4

87

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

是的。词干提取器比词形还原器更简单、更小并且通常更快,并且对于许多应用程序,它们的结果已经足够好。为此使用词形还原器是一种资源浪费。例如,考虑信息检索中的降维。您在搜索的文档和查询中都替换了所有驱动器/驱动器。你不关心它是驱动器还是驱动器或x17a $,只要它将屈折相关的词聚集在一起。

Q2:“[..]我们应该如何继续构建可以进行名词化、动词化、形容词化和副词化预处理的强大词形还原器?

对引理的定义是什么,它包括派生(驱动器驱动)还是仅包括变形(驱动驱动器驱动?它是否考虑语义?

如果您想包括派生(大多数人会说包括动词名词等),请记住派生远比屈折变化更不规则。有很多特质、差距等。你真的想换火车)和(作为硬币)有相同的引理吗?如果不是,你在哪里划界?神经-神经地球-挖掘-地球,...这真的取决于应用程序。

如果您考虑语义银行将根据上下文被标记为银行货币银行河流),您会走多远(您将银行机构银行建设区分开来)?有些应用程序可能根本不关心这一点,有些可能想要区分基本语义,有些可能希望它细粒度。

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

“与英语相似的形态结构”是什么意思?英语几乎没有屈折形态。对于其他形态类型的语言(真正的屈折、粘着、模板等),有很好的词形还原器。

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

显然,对于大多数语言,您不想手动创建查找表,而是从该语言的形态描述中生成它。对于屈折语言,您可以采用 Hajic 的捷克语或 Mikheev 俄语的工程方式,或者,如果您有胆量,您可以使用两级形态。或者您可以在两者之间做一些事情,例如Hana(我自己)(请注意,这些都是包含词形还原的完整形态分析器)。或者,您可以像 Yarowsky 和 ​​Wicentowski那样以无人监督的方式学习词形还原器,可能通过手动后处理来纠正最常用的单词。

有太多的选择,这完全取决于你想对结果做什么。

于 2013-06-26T12:46:55.000 回答
6

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

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

出于改进搜索结果的目的,词干(或引理)是否有意义(“have”)与否(“hav”)实际上并不重要。它只需要能够表示所讨论的单词及其所有屈折形式。事实上,一些系统使用数字或其他类型的 id 字符串而不是词干或引理(或基本形式或任何可能被称为的形式)。

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


但是,我不太相信您对“stemmer”和“lemmatizer”的(暗示)定义被普遍接受。我不确定这些术语是否有任何普遍接受的定义,但我定义它们的方式如下:

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

Lemmatizer:执行相同归约的功能,但使用全面的全格式字典能够处理不规则形式。

基于这些定义,词形还原器本质上是词干分析器的更高质量(和更昂贵)版本。

于 2013-06-27T06:03:38.270 回答
3

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

值得指出的是,已经证明在某些特定任务中,例如情感分析(这是 NLP 中最喜欢的子领域),使用StemmerLemmatizer作为系统开发中的特征(训练机器学习model) 对模型的准确性没有明显影响,无论该工具多么出色。尽管它使性能稍微好一点,但还有一些更重要的特性,比如依赖解析,在这样的系统中具有相当大的潜力。

值得一提的是,我们正在研究的语言的特性也应该被考虑在内。

于 2015-03-10T00:08:16.377 回答
1

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

  1. 如果您将“关怀”一词进行词形还原,它将返回“关怀”。如果您停止,它将返回“ Car ”,这是错误的。
  2. 如果您在动词上下文中对单词“ Stripes ”进行词形还原,它将返回“ Stripes ”。如果您在名词上下文中对其进行词形还原,它将返回“ Stripe ”。如果你只是阻止它,它只会返回' Strip '。
  3. 无论您将诸如walk 、running、swim之类的词进行词形还原或词干化,您都会得到相同的结果……to walk、run、swim等。
  4. 词形还原在计算上是昂贵的,因为它涉及查找表等等。如果您有大型数据集并且性能存在问题,请使用 Stemming。请记住,您还可以将自己的规则添加到词干。如果准确性是最重要的并且数据集不是巨大的,请使用 Lemmatization。
于 2021-01-19T13:52:44.540 回答