You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除非英文字符/单词,实现推特抓取后的词频统计?

嘿,针对你推特抓取后做词频统计遇到的非英文内容清理问题,我这儿有几个高效的方案,分场景给你拆解:

一、先搞定字符串列表的清理

要同时移除非英文字符和非英文单词,推荐正则表达式+英文单词库的组合,既能过滤乱码、符号、非英文字符,又能确保留下的是真正有意义的英文单词。

先上代码示例:

import re
from nltk.corpus import words
from collections import Counter

# 第一次运行需要下载英文单词库,后续可注释掉
import nltk
nltk.download('words')
english_word_set = set(words.words())  # 转成集合,查询效率更高

def clean_tweet_text(text):
    # 第一步:移除所有非英文字母+空格的字符(比如中文、数字、@#$这类符号)
    only_letters = re.sub(r'[^a-zA-Z\s]', '', text)
    # 第二步:分割成单词,转小写,过滤掉不在英文单词库的内容
    valid_words = [word.lower() for word in only_letters.split() if word.lower() in english_word_set]
    return valid_words

# 测试字符串列表处理
raw_tweets = ["Hello! 这是一条test推特,混着123数字", "Another tweet with @mention and #hashtag"]
cleaned_tweet_words = [clean_tweet_text(tweet) for tweet in raw_tweets]
二、处理字典列表的清理

假设你的字典列表是类似[{"text": "推特内容", "id": 1}, ...]的结构,直接循环遍历每个字典,对目标字段调用上面的清理函数即可:

# 示例字典列表
raw_tweet_dicts = [
    {"id": 1, "text": "Hi! 我是example内容,带中文"},
    {"id": 2, "text": "More content with $symbols and 中文汉字"}
]

# 循环清理每个字典的text字段(可以替换原字段,也可以新增cleaned字段)
for tweet_dict in raw_tweet_dicts:
    tweet_dict["cleaned_words"] = clean_tweet_text(tweet_dict["text"])
三、高效生成词频统计

清理完所有内容后,用collections.Counter来做词频统计是最优解,比手动写循环计数高效太多:

# 把所有清理后的单词合并成一个大列表
all_valid_words = []
for words_list in cleaned_tweet_words:
    all_valid_words.extend(words_list)
# 如果是字典列表,就换成:
# for tweet_dict in raw_tweet_dicts:
#     all_valid_words.extend(tweet_dict["cleaned_words"])

# 生成词频统计
word_frequency = Counter(all_valid_words)
# 输出前10个高频词
print(word_frequency.most_common(10))
额外优化建议
  • 如果你觉得nltk的单词库太庞大(包含很多生僻词),可以自己整理一份常用英文单词的txt文件,读取后转成集合来过滤,更轻量化。
  • 要是允许保留带连字符的复合词(比如state-of-the-art),可以把正则调整为r'[^a-zA-Z\s-]',再后续处理连字符即可。
  • 数据量很大时,用生成器表达式替代列表推导式,能节省内存:比如(word for words_list in cleaned_tweet_words for word in words_list)

内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:24:28