在列中提取词干

Stemming words within a column

我需要使用词干提取

   D            Words
0   2020-06-19  excellent
1   2020-06-19  make
2   2020-06-19  many
3   2020-06-19  game
4   2020-06-19  play
... ... ...
3042607 2020-07-28  praised
3042608 2020-07-28  playing
3042609 2020-07-28  made
3042610 2020-07-28  terms
3042611 2020-07-28  bad
 

我试过使用 Portstemmer 来做如下:

from nltk.stem import PorterStemmer 
from nltk.tokenize import word_tokenize 
   
ps = PorterStemmer() 
for w in df.Words: 
    print(w, " : ", ps.stem(w)) 

但我没有得到想要的输出(词干词)。我需要保留日期 (D) 信息,所以最后我应该有一个类似的数据集,但带有词干词),但我想 运行 通过 Words 列词干词,以便得到类似于此的内容:

 D          Words
    0   2020-06-19  excellent
    1   2020-06-19  make
    2   2020-06-19  many
    3   2020-06-19  game
    4   2020-06-19  play
    ... ... ...
    3042607 2020-07-28  praise
    3042608 2020-07-28  play
    3042609 2020-07-28  make
    3042610 2020-07-28  terms
    3042611 2020-07-28  bad

欢迎任何提示。

当我运行你的代码

ps = PorterStemmer() 
for w in df.Words: 
    print(w, " : ", ps.stem(w)) 

它正确地打印了 word : stem 结构(至少根据 PorterStemmer)。

如果您想将词干作为数据框中的一列,您需要通过在整个 Words 列上应用 ps.stem 函数来创建一个新列,如下所示:

df['stem'] = df1.Words.apply(ps.stem)

这会将您的数据框变成这种形式:

    D           Words     stem
0   2020-06-19  excellent excel
1   2020-06-19  make      make
2   2020-06-19  many      mani
3   2020-06-19  game      game
4   2020-06-19  play      play

现在您可以使用 stem 列进行任何进一步分析,而无需删除其余数据。