带词干的词频

我有一个问题,如何获得我认为具有相似含义的单词的总和,所以我想算作同一个单词。


例如,我有这个数据集:


    Word    Frequency

0   game    52055

1   laura   24953

2   luke    21133

3   story   20739

4   dog     17054

5   like    12792

7   character   8845

9   play    8420

11  characters  8081

12  people  7933

16  good    6496

18  10      6309

19  gameplay6195

22  revenge 5922

25  bad     5331

26  end     5027

27  feel    4833

28  killed  4779

31  kill    4545

33  graphics4372

34  time    4272

35  cat     4244

44  great   3466

45  ending  3379

...

50  love    3059

51  never   2965

52  new     2963

53  killing 2955

这是一个包含两列的数据集:一列包含单词,另一列包含单词在文档中出现的频率。我需要将以下内容视为相同的词:


杀,杀,杀;

性格和性格;

结束,结束。

我认为这应该可以通过使用 portstemmer 轻松完成。但是,我还需要将它们的频率计算为总和。


所以,举例来说,


28  killed  4779

31  kill    4545

53  killing 2955

应该


31 kill 12279

不幸的是,我无法应用早期的词干提取,因为我收到的数据集如上所示。您能给我一些关于如何获得这笔钱的建议吗?


大话西游666
浏览 110回答 1
1回答

holdtom

您可以使用nltk(df作为您共享的输入数据框):from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize ps = PorterStemmer() df["Stem"] = df["Word"].apply(ps.stem)res = df.groupby("Stem")["Frequency"].sum()输出(对于您分享的作品):Stem10           6309bad          5331cat          4244charact     16926dog         17054end          8406feel         4833game        52055gameplay     6195good         6496graphic      4372great        3466kill        12279laura       24953like        12792love         3059luke        21133never        2965new          2963peopl        7933play         8420reveng       5922stori       20739time         4272Name: Frequency, dtype: int64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python