python - 去除低频词
问题描述
我有一个有 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
有什么建议么 ?谢谢 !
解决方案
让我们在这里尝试使用Counter
:
- 将句子拆分成单词
- 计算全局词频
- 根据计算的频率过滤词
- 加入并重新分配
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
推荐阅读
- eclipselink - EclipseLink MOXy - DynamicType 是 maxOccurs 大于 1
- javascript - 在每行之后将 div 添加到表中
- html - 如何将数据从角度 6 传递到 Nodejs?
- java - 如何在没有语言错误的情况下将字符串转换为uri?
- sql - 从 SQL Server 中 JSON 中的数组获取值
- c - 具有运算符优先级的宏函数是否显示异常结果?
- python - 日期操作周期
- java - Jersey/REST:在不重复代码的情况下将请求委托给不同的子资源?
- utf-8 - 转换 UTF-8 iso-8859 字节 - String.to_charlist
- reactjs - 我的 browserHistory 和 react-router 有错误