首页 > 解决方案 > 去除低频词

问题描述

我有一个有 2 列的数据框,1 列有字符串,例如:

       Col1                 Col2
0       1          how to remove this word
1       5          how to remove the  word

我想删除在整个数据框中出现一次的所有单词(阈值 = 1),例如:(如果我可以指定阈值会更好)

       Col1                 Col2
1       5          how to remove word

有什么建议么 ?谢谢 !

标签: pythonpandasdataframetextreplace

解决方案


让我们在这里尝试使用Counter

  1. 将句子拆分成单词
  2. 计算全局词频
  3. 根据计算的频率过滤词
  4. 加入并重新分配

from collections import Counter
from itertools import chain

# split words into lists
v = df['Col2'].str.split().tolist() # [s.split() for s in df['Col2'].tolist()]
# compute global word frequency
c = Counter(chain.from_iterable(v))
# filter, join, and re-assign
df['Col2'] = [' '.join([j for j in i if c[j] > 1]) for i in v]

df
   Col1                Col2
0     1  how to remove word
1     5  how to remove word

推荐阅读