【GPT2】AI에 자신의 트윗을 학습시켜 트윗을 생성한다

하나 전에 GPT2를 사용하여 ↓ 이런 기사를 썼습니다.
재미 있었기 때문에 이번은 트윗으로 해 보겠습니다.

【GPT2】AI에 라노베의 타이틀을 만들어 보자

Twitter Developer에서 인증을 위한 키 데이터 얻기



우선은 트윗을 취득하기 전 준비로서 Twitter Developer 에 로그인해 어플리케이션 등록을 해 다음의 정보를 취득합니다.

· Consumer Key
· Consumer Secret
・Access Token
・Access Token Secret

↓여기에서 자세히 해설되고 있습니다.
파이썬에서 트위터 API를 사용하여 다양한 플레이

자신의 트윗 얻기



Colab 준비



Google 공동체 로 이동하여 새 Notebook을 만듭니다.
※트윗을 취득하는 것만이라면 GPU는 사용하지 않아도 괜찮기 때문에 Notebook settings는 변경하지 않아도 괜찮습니다.

또한 검색된 트윗을 저장하기 위해 Google 드라이브를 탑재합니다.
↓Notebook을 트리 표시해 나오는 Drive의 아이콘을 클릭하면 마운트 할 수 있습니다.


트윗 얻기



먼저 pip에서 tweepy를 설치합니다.
!pip install tweepy

그리고 트윗을 얻는 파이썬 코드입니다.
↓이쪽을 참고로 하고 일부 개량하고 있습니다.

트위터 짹짹을 한 번에 대량 받기

여기서 조심해야 할 점은 Twitter의 API 제한입니다.
얻기 위해서는 특히 다음 사항에 유의해야합니다.
・1 리퀘스트로 취득할 수 있는 트윗 수는 100
· 15분 동안 180 요청까지
트윗 수가 많은 분은 취득에 나름대로 시간이 걸린다고 생각합니다.
import tweepy
import csv
import pprint
import pandas as pd
import os
import time

#ここはお決まりです。
consumer_key = 'xxxxxxxx'
consumer_secret = 'xxxxxxxx'
access_token = 'xxxxxxxx'
access_token_secret = 'xxxxxxxx'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

#ツイートを保存するGoogle Driveのディレクトリです。事前に作っておきましょう。
drive_path = '/content/drive/MyDrive/xxxxx/'
#学習用のデータセットで必要なツイート数を指定しています。
max_tweets = 10000

def getMtTweet():
  #取得したツイートを格納するための配列
  tweets = []
  num = 0
  i = 1
  print('page ' + str(i))
  #自分のタイムラインを取得するためuser_timelineを使用します。1リクエストで取得できるツイートの上限数は100です。
  tweet_data = api.user_timeline(count=100)
  if(len(tweet_data) > 0):
    for tweet in tweet_data:
      #データセット用に各ツイートの最後に<|endoftext|>をつけて整形します。
      tweets.append([tweet.text+"<|endoftext|>"])
      num += 1
    i += 1
    next_max_id = tweet_data[-1].id
    while True:
      print('page ' + str(i))
      tweet_data = api.user_timeline(count=100, max_id=next_max_id-1)
      if(len(tweet_data) > 0):
        next_max_id = tweet_data[-1].id
        for tweet in tweet_data:
          tweets.append([tweet.text+"<|endoftext|>"])
          num += 1
        if(num >= max_tweets):
          break
        i += 1
        #Twitter API制限の上限でエラーにならないようにディレイをかけています。
        time.sleep((15*60)/180)
      else:
        break
      saveTweets(tweets)
  else:
    print('zero tweet')


def saveTweets(tweets):
  ut = time.time()
  #csv使ってますがデータセット用にテキストファイルで保存します。
  file_path = drive_path+'myTweets_' + str(ut) + '.txt'
  file = open(file_path, 'w')
  w = csv.writer(file)
  w.writerows(tweets)
  file.close()

  with open(file_path) as f:
      print(f.read())

getMtTweet()

이제 트윗이 텍스트 파일에 저장되었습니다.

학습에서 생성



그리고는 ↓ 이쪽을 바탕으로 학습과 생성을 하면 완료입니다.
【GPT2】AI에 라노베의 타이틀을 만들어 보자

덧붙여서 자신의 결과는 ↓ 이런 느낌이었습니다.

어쩐지 미묘하게 말을 돌리는 것이 나쁘지 않지만,
자신의 트윗을 바탕으로 생성했다고 생각하면 정말 말할 수 없는 감정에 습격당하네요. 🤔

@usbに接続した音楽データが自動で再生へ持ってこいの時は自動でPOIが終了するって話じゃなかったんだな
========
PS3とMSIの対応の違いって、どう違うのかな?
========
Flex_IPが10MBって超超便利すぎ。
========
scalaはGLSLのコードで実装する。pdfとかThunderbirdとかTouchDesignerって言ったらあれだけどね。
========
@touchdのserviceの値がnullに変わってる
========
TwitterでFOMAのことしかできない人は多い。
========
Twitterのつぶやきはこういうのもあるよー。「おいしそうなものがたくさんあるぞ」ってね。

좋은 웹페이지 즐겨찾기