带词干的词频
Word frequency with stemming
我有一个问题,如何计算我认为具有相似含义的单词的总和,所以我想算作同一个单词。
例如,我有这个数据集:
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
不幸的是,我无法应用较早的词干提取,因为我收到的数据集如上所示。
你能给我一些关于如何获得这笔款项的建议吗?
您可以使用 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
我有一个问题,如何计算我认为具有相似含义的单词的总和,所以我想算作同一个单词。
例如,我有这个数据集:
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
不幸的是,我无法应用较早的词干提取,因为我收到的数据集如上所示。 你能给我一些关于如何获得这笔款项的建议吗?
您可以使用 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