📜  Snowball Stemmer – NLP

📅  最后修改于: 2022-05-13 01:58:08.937000             🧑  作者: Mango

Snowball Stemmer – NLP

Snowball Stemmer:它是一种词干算法,也称为 Porter2 词干算法,因为它是 Porter Stemmer 的更好版本,因为它的一些问题已在该词干分析器中得到解决。

首先,让我们看看什么是词干——

词干提取:这是将单词简化为词干的过程,该词干附加到后缀和前缀或称为引理的词的词根上。在简单的词中,词干提取是将一个词减少到它的基本词或词干,这样类似的词就位于一个共同的词干之下。例如——care、careed 和caring 位于同一个词干“care”下。词干在自然语言处理 (NLP) 中很重要。

Snowball 词干的一些常见规则是:

Few Rules:
ILY  -----> ILI
LY   -----> Nill
SS   -----> SS
S    -----> Nill
ED   -----> E,Nill
  • Nill表示后缀没有被替换,只是被删除了。
  • 可能存在这些规则因词而异的情况。与后缀“ ed”的情况一样,如果单词是“cared”和“bumped”,它们的词干将是“ care ”和“ bump ”。因此,这里的后缀仅被视为'd'而不是'ed' 。还有一个有趣的事情是一个词“朵朵”它会被替换词“”,而不是“朵朵”。因此,后缀取决于单词。

让我们看几个例子:-



Word           Stem
cared          care
university     univers
fairly         fair
easily         easili
singing        sing
sings          sing
sung           sung
singer         singer
sportingly     sport

代码:使用NLTK库的Snowball Stemmer Python代码实现

import nltk
from nltk.stem.snowball import SnowballStemmer
  
#the stemmer requires a language parameter
snow_stemmer = SnowballStemmer(language='english')
  
#list of tokenized words
words = ['cared','university','fairly','easily','singing',
       'sings','sung','singer','sportingly']
  
#stem's of each word
stem_words = []
for w in words:
    x = snow_stemmer.stem(w)
    stem_words.append(x)
      
#print stemming results
for e1,e2 in zip(words,stem_words):
    print(e1+' ----> '+e2)

输出:

cared ----> care
university ----> univers
fairly ----> fair
easily ----> easili
singing ----> sing
sings ----> sing
sung ----> sung
singer ----> singer
sportingly ----> sport

您还可以使用滚雪球网站快速检查给定一个或多个词返回的词干。在它的演示部分,你可以很容易地看到这个算法对各种不同的词做了什么。

其他词干算法:

  • Porter Stemmer:这是一种古老的词干提取算法,由 Martin Porter 在 1980 年开发。与其他算法相比,它是一种非常温和的词干提取算法。
  • Lancaster Stemmer:这是最激进的词干算法。当我们使用 NLTK 包实现它时,我们也可以在这个算法中添加我们自己的自定义规则。由于它具有侵略性,因此有时也会产生奇怪的词干。

还有其他词干算法。

Porter Stemmer 和 Snowball Stemmer 的区别:

  • Snowball Stemmer 比 Porter Stemmer 更具侵略性。
  • Porter Stemmer 中的一些问题已在 Snowball Stemmer 中得到修复。
  • 这两者的工作只有一点点不同。
  • 像“公平”和“运动”这样的词在滚雪球词干分析器中的词干是“公平”和“运动”,但是当您使用搬运工词干分析器时,它们会被词干为“ fairli ”和“ sportingli ”。
  • 两种算法之间的差异可以从“Sportingly”一词的词干中清楚地看出。显然,Snowball Stemmer 将其阻止为更准确的词干。

Stemming 的缺点:

  • 词干过多和词干不足的问题可能会导致词干不那么有意义或不合适。
  • Stemming 不考虑这个词是如何使用的。例如-字“”将被梗为“”本身,但它不会被认为是这个词是否被用作一个名词或上下文中的动词。出于这个原因,使用词形还原是因为它考虑了这个事实,并且会根据单词“saw”是用作动词还是名词来返回“see”或“saw”。