您需要猜測一條推文是來自人類的遊戲,還是來自受推文類別訓練的神經網絡語言模型。
該項目使用以下開源項目來開發我們的模型:
用於從一組用戶名中刮除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 。