为了账号安全,请及时绑定邮箱和手机立即绑定

带词干的词频

带词干的词频

大话西游666 2023-08-03 16:41:29
我有一个问题,如何获得我认为具有相似含义的单词的总和,所以我想算作同一个单词。例如,我有这个数据集:    Word    Frequency0   game    520551   laura   249532   luke    211333   story   207394   dog     170545   like    127927   character   88459   play    842011  characters  808112  people  793316  good    649618  10      630919  gameplay619522  revenge 592225  bad     533126  end     502727  feel    483328  killed  477931  kill    454533  graphics437234  time    427235  cat     424444  great   346645  ending  3379...50  love    305951  never   296552  new     296353  killing 2955这是一个包含两列的数据集:一列包含单词,另一列包含单词在文档中出现的频率。我需要将以下内容视为相同的词:杀,杀,杀;性格和性格;结束,结束。我认为这应该可以通过使用 portstemmer 轻松完成。但是,我还需要将它们的频率计算为总和。所以,举例来说,28  killed  477931  kill    454553  killing 2955应该31 kill 12279不幸的是,我无法应用早期的词干提取,因为我收到的数据集如上所示。您能给我一些关于如何获得这笔钱的建议吗?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您可以使用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()

输出(对于您分享的作品):


Stem

10           6309

bad          5331

cat          4244

charact     16926

dog         17054

end          8406

feel         4833

game        52055

gameplay     6195

good         6496

graphic      4372

great        3466

kill        12279

laura       24953

like        12792

love         3059

luke        21133

never        2965

new          2963

peopl        7933

play         8420

reveng       5922

stori       20739

time         4272

Name: Frequency, dtype: int64


查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信