您需要猜测一条推文是来自人类的游戏,还是来自受推文类别训练的神经网络语言模型。
该项目使用以下开源项目来开发我们的模型:
用于从一组用户名中刮除Twitter数据的TWINT。对于一些较大的数据集,Scrapoxy用作避免Twitter IP黑名单的代理池。
拥抱面部变压器,以对其他数据进行微调开放的AI GPT-2模型。
将模型部署到实时HTTP端点的动物园模型。
前端React应用程序是静态推文数据集和模型Zoo HTTP端点周围的包装器。有关更多详细信息,请参见前端文档。
脚本download-tweets.sh包含我们用TWINT刮擦Twitter数据集的方法。该脚本接受单个参数$name ,并搜索文件sources/$name.txt该文件应指定twitter句柄的列表要从中刮下来。刮擦脚本应用了一些粗略的启发式方法,以试图过滤(1)回复其他推文和(2)中有链接的推文。这些启发式方法并不完美,但我发现它们的工作效果足够好。
在用TWINT准备几个数据集时,我发现Twitter经常在刮擦过程中几分钟将IP列入黑名单。为了解决这个问题,我使用EC2上的Crapoxy一次从五个不同的EC2代理实例中刮擦。
已经准备好几个数据集并在您可以免费使用的AWS上发布并发布:
| 数据集 | 来源文件 | AWS S3 URL |
|---|---|---|
| 风险投资 | https://github.com/model-zoo/twitter-turing-test/blob/master/sources/vc.txt | s3://modelzoo-datasets/text-generation/vc |
| 共和党人 | https://github.com/model-zoo/twitter-turing-test/blob/master/sources/republicans.txt | s3://modelzoo-datasets/text-generation/republicans |
| 民主党人 | https://github.com/model-zoo/twitter-turing-test/blob/master/sources/democrats.txt | s3://modelzoo-datasets/text-generation/democrats |
| 新冠肺炎 | https://github.com/model-zoo/twitter-turing-test/blob/master/sources/covid19.txt | s3://modelzoo-datasets/text-generation/covid19 |
感谢Minimaxir/Download-Tweets-ai-Textgen提供共和党和民主党Twitter手柄的列表。
脚本train.py包括加载预审计重量并微调模型的代码,这在很大程度上是由拥抱的面部语言建模示例改编而成的。每个模型均在单个K80 GPU上训练。除了COVID-19,所有模型均经过单个时期的训练,该模型是一个稍小的数据集,并接受了两个时期的训练。每种型号的模型训练需要在6-16小时之间。
通过高参数优化和其他实验,可以进一步改善训练过程。这是读者的练习:)
使用模型Zoo transformers支持和几行代码训练后自动部署该模型:
textgen = pipeline("text-generation", model=model, tokenizer=tokenizer)
modelzoo.transformers.deploy(
textgen,
model_name="..."
resources_config=modelzoo.ResourcesConfig(memory_mb=2048, cpu_units=1024),
)
请确保您在培训环境中运行$ modelzoo auth以创建或登录到模型动物园帐户。另外,您可以相应地设置环境变量MODELZOO_API_KEY 。
有关更多详细信息,请参见modelzoo.transformers.deploy 。