Pandas统计数据集Top20高频词时如何排除标点符号
调整方案
只要在词频统计前增加过滤步骤,排除标点、特殊转义标记即可,有两种常用实现方式:
- 精准排除已知标点/特殊标记
从你给出的输出结果看,需要排除的非词汇项包括:逗号、句号、左右括号转义标记、成对的引号转义符。可以先定义排除集合,再反向过滤:# 定义需要排除的非词汇token集合,可根据实际情况补充 exclude_tokens = {',', '.', '-LRB-', '-RRB-', "''", '``'} # 过滤后做词频统计,存在空值可额外加.dropna() top20 = dataset.loc[~dataset['token'].isin(exclude_tokens), 'token'].dropna().value_counts()[:20] - 通用规则过滤(无需手动列所有标点)
如果后续可能出现其他类型的标点/特殊符号,可以通过正则匹配只保留纯字母构成的有效词汇,一次性过滤所有非字母类token:# 仅保留全字母组成的token top20 = dataset.loc[dataset['token'].str.fullmatch(r'[a-zA-Z]+'), 'token'].dropna().value_counts()[:20]
注意事项
- 如果你的语料中存在带数字、连字符的合法词汇(比如
tahun-2024这类),不要直接用纯字母正则规则,需要根据实际语料调整正则匹配逻辑,避免误删有效词汇。 - 你看到的
-LRB-/-RRB-是NLP预处理流程中常见的括号转义形式,不属于有效词表内容,常规词频统计中都会主动过滤。
内容的提问来源于stack exchange,提问作者Sarada
相关产品推荐
相关产品推荐

