如何从Twitter API存储的JSON文件中提取推文文本用于情感分析?
嗨,我来帮你搞定这个问题!你已经用Tweepy连好Twitter API了,接下来只需要从返回的推文对象里提取纯文本,再做简单清洗,就能为后续的情感分析做好准备啦。
1. 提取推文纯文本
先补全你的代码,重点是从每个推文对象里直接抓取text字段(这就是你要的纯推文内容),其他无关信息自动忽略就行。这里给你完整的示例:
import tweepy import json # 替换成你的密钥信息 consumerKey = "xxx" consumerSecret = "xxx" accessToken = "xxx" accessTokenSecret = "xxx" # 完成认证流程 auth = tweepy.OAuthHandler(consumerKey, consumerSecret) auth.set_access_token(accessToken, accessTokenSecret) # 创建API对象,开启速率限制等待避免报错 api = tweepy.API(auth, wait_on_rate_limit=True) # 替换成你的目标搜索词 search_query = "你的搜索关键词" # 获取指定数量的推文(count可按需调整) tweets = api.search_tweets(q=search_query, count=100) # 提取纯文本并收集 cleaned_tweets = [] for tweet in tweets: # 只取推文文本,其他字段直接跳过 tweet_text = tweet.text cleaned_tweets.append(tweet_text) # 把纯文本列表保存到JSON文件 with open("tweets_text_only.json", "w", encoding="utf-8") as f: json.dump(cleaned_tweets, f, ensure_ascii=False, indent=4)
运行这段代码后,你得到的JSON文件里就只有每条推文的纯文本内容啦。
2. 推文文本清洗(为情感分析优化)
因为要做情感分析,干净的文本能让结果更准确。这里给你一个实用的清洗函数,涵盖了常见的清理操作:
import re def clean_tweet(text): # 去掉@提及的用户名 text = re.sub(r'@[A-Za-z0-9_]+', '', text) # 去掉所有URL链接 text = re.sub(r'https?://\S+', '', text) # 去掉多余的空格、换行符 text = ' '.join(text.split()) # 可选:把文本转为小写(根据你用的情感模型需求决定) # text = text.lower() return text # 把清洗函数应用到所有推文上 cleaned_tweets = [clean_tweet(tweet.text) for tweet in tweets]
你可以根据自己的需求调整清洗步骤,比如要不要保留话题标签#,或者要不要去掉表情符号(如果模型不支持的话)。
小提示:如果用Twitter API v2
现在官方更推荐用API v2,提取文本的方式略有不同,这里给你快速示例:
client = tweepy.Client(bearer_token="你的Bearer Token") response = client.search_recent_tweets(query=search_query, max_results=100) # 提取纯文本 cleaned_tweets = [tweet.data['text'] for tweet in response.data if tweet.data]
这样处理后,你就得到了干净的推文文本,直接拿去做情感分析就好啦!
内容的提问来源于stack exchange,提问作者abadawi
相关产品推荐
相关产品推荐

