트위터 계정의 공개 트윗을 AI 텍스트 생성 도구(예: GPT-2 미세 조정을 위한 gpt-2-simple)에 적합한 형식으로 다운로드하기 위한 작은 Python 3 스크립트입니다.
/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
이 코드의 이전 버전에서는 스크래핑 라이브러리를 사용하여 트윗을 수집했습니다. 그 이후로 트위터는 더욱 강력한 트윗 수집 API를 제공하면서 스크래핑을 더욱 어렵게 만들었습니다. 이에 대한 응답으로 우리는 이 코드를 Twitter의 API에서만 실행되도록 포팅했습니다.
설정을 계속하려면 Twitter API에 액세스할 수 있도록 Twitter 앱을 생성하세요. 앱을 생성한 후 액세스 토큰을 생성하고 이를 아래 표시된 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 ]
감정 매개변수는 반환되는 감정 카테고리 수를 지정하는 정수를 허용합니다. 다양한 가능한 매개변수에 대한 감정 카테고리는 다음과 같습니다.
이 코드는 다른 트윗에 응답할 수 있는 AI를 훈련하기 위한 형식으로 트윗 수집을 지원합니다. 출력 형식은 Subreddit Simulator 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
)
@minimaxir의 download-tweets-ai-text-gen을 기반으로 한 Santiago Delgado(@santiagodc)
MIT
이 저장소는 Twitter Inc.와 아무런 관련이 없습니다.