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

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐