处理twibot-22数据踩过的坑:两个数据集id形式不对应
·
最近在做机器人账号检测的内容,twibot-22数据体量太大,打算先筛出一千个账号建模型
根据账号id找发过的tweet内容。我的代码思路是以账号循环,以账号为索引在tweet数据集里找这个账号发过的推文,代码如下:
for user_row in users_list[1:]: # 跳过首行标签
user_id = user_row[id_col] # 获取当前用户的ID
# 3. 筛选该用户的推文,并提取前200条文本
user_tweets = []
for tweet_row in tweet0_list[1:]: # 跳过首行标签
if tweet_row[author_id_col] == user_id:
print('winwin')
user_tweets.append(tweet_row[text_col])
if len(user_tweets) >= 200: # 最多取200条
break
with open("user_tweet0_used.pt",'a',encoding='utf-8') as f:#写入文件
for item in user_tweets:
f.write(item)
然而跑了一圈下来发现一条没存进。
最后发现users的数据集里,id内容是'u'+账号,也就是说,是个str;而tweet数据集里的author_id内容只有账号,即int,这就导致了二者完全配不上。
最后提前处理了下users的id数据,把所有的u删去,再转成Int型,终于可以用了。处理代码如下:
def str_to_int(user_id):
return int(user_id[1:])
id_col = users_list[0].index("id") # 找到 "id" 列的索引
for user_row in users_list[1:]:
user_id = user_row[id_col]
user_row[id_col] = str_to_int(user_id)
print(user_row[id_col])
这里要注意的是users数据我预先处理成了list形式,首行是标签,所以在for循环按行改id的时候,是从第‘1’行开始的,因为第‘0’行是标签
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)