一个小型 Python 3 脚本,用于将 Twitter 帐户中的公共推文下载为适合 AI 文本生成工具的格式(例如用于微调 GPT-2 的 gpt-2-simple)。
您可以在/examples
文件夹中查看使用此工具检索的数据集中 AI 生成的推文示例。
首先,将此存储库克隆到您的系统上,并使用以下命令安装依赖项:
git clone https://github.com/sdelgadoc/download-tweets-ai-text-gen-plus.git
cd download-tweets-ai-text-gen-plus
pip3 install -r requirements.txt
此代码的早期版本使用抓取库来收集推文。从那时起,Twitter 加大了抓取难度,同时提供了更强大的推文收集 API。作为回应,我们将此代码移植为仅与 Twitter 的 API 一起运行。
要继续设置,请创建一个 Twitter 应用程序,以便您可以获得对 Twitter API 的访问权限。创建应用程序后,生成访问令牌,并将其输入到如下所示的keys.py
文件的部分中。
keys = { 'consumer_key' : "" ,
'consumer_secret' : "" ,
'access_token' : "" ,
'access_token_secret' : "" }
最后,转到 Twitter API 的开发环境页面,为 Full Archive API 生成开发环境,并将环境名称输入到如下所示的keys.py
文件的label
部分。
label = ""
该脚本通过命令行界面运行。 cd
进入终端中存储脚本的目录后,运行:
python3 download_tweets.py < twitter_username > 100
例如,如果您想从 Twitter 用户 @santiagodc 下载 100 条推文(无转发/回复/引用推文),请运行:
python3 download_tweets.py santiagodc 100
注意:Twittter API 的免费套餐的收集限制为每月 5,000 条推文,因此请设置推文限制以避免过快达到限制
该脚本还可以一次下载多个用户名的推文。为此,首先创建一个包含用户名列表的文本文件 (.txt)。然后,运行引用文件名的脚本:
python3 download_tweets.py < twitter_usernames_file_name > 100
推文将下载到标题为<usernames>_tweets.csv
的单列 CSV 中。
您可以(按位置或显式)传递到命令行界面的参数包括:
@
用户标签[默认值:False]#
标签[默认值:False]情绪参数将情绪类别添加到推文文本中。该信息允许用户通过更改参数来训练和生成具有不同情感的文本。
使用“简单”文本格式的输出格式如下:
[ Sentiment category ]
[ Tweet text for the tweet that was collected ]
情绪参数接受一个整数,指定返回的情绪类别的数量。不同可能参数的情绪类别如下:
该代码支持以某种格式收集推文,以训练可以回复其他推文的人工智能。输出格式基于用于训练 Reddit Subreddit 模拟器 Reddit 社区的格式。
输出格式如下:
**** ARGUMENTS
ORIGINAL or REPLY: Whether the tweet is an original tweet or a reply
SENTIMENT: If the sentiment parameter is used, text describing the tweet text's sentiment
**** PARENT
[ Tweet text for the topmost tweet in a reply thread ]
**** IN_REPLY_TO
[ Tweet text for the tweet that is being responded to ]
**** TWEET
[ Tweet text for the tweet that was collected ]
要通过运行以下语句来收集具有此回复格式的推文:
python3 download_tweets.py < twitter_username > None True False False False 3 reply
通过指定日期,脚本将下载从值timeframe
到现在的推文。默认情况下,它将下载从 2006 年 3 月 22 日(第一条推文发送当天)开始的给定用户(或多个用户)的每条推文。 timeframe
参数是精确的,它允许您输入所需的年、月、日、小时和分钟以按顺序下载推文。 timeframe
参数接受的格式类似于YYYYMMDDHHMM
。
gpt-2-simple 对于单列 CSV 有一个特殊情况,它将自动处理文本以实现最佳训练和生成。 (即通过添加<|startoftext|>
和<|endoftext|>
到每条推文,允许独立生成推文)
您可以使用此 Colaboratory 笔记本(针对此用例针对原始笔记本进行了优化)在您下载的推文上训练模型,并从中生成大量推文。请注意,如果没有大量数据,模型可能很容易过拟合;您可能想要训练更少的steps
(例如500
)。
生成时,您始终需要包含某些参数来解码推文,例如:
gpt2 . generate ( sess ,
length = 200 ,
temperature = 0.7 ,
prefix = '<|startoftext|>' ,
truncate = '<|endoftext|>' ,
include_prefix = False
)
Santiago Delgado (@santiagodc) 基于 @minimaxir 的 download-tweets-ai-text-gen
麻省理工学院
此存储库与 Twitter Inc. 没有任何关系。