最近在做机器人账号检测的内容,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’行是标签

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐