Twitter API v2 및 Perspective API를 사용하여 트윗에서 독성 감지

20791 단어 pythonapitwitter
Perspective API을 통해 개발자와 연구원은 텍스트를 연구하고 분석하여 독성을 감지할 수 있습니다. 이 튜토리얼에서는 Perspective API와 in Python을 사용하여 Twitter 사용자의 멘션에서 독성을 감지하는 방법을 보여줍니다.

참고: 이것은 샘플 코드일 뿐입니다. Twitter는 Perspective API를 소유하지 않습니다. 이것은 Jigsaw과 Google의 악용 방지 기술 팀이 공동으로 연구한 결과입니다. 그들의 웹사이트에 따르면 그들은 '독성'을 누군가가 토론을 떠나게 만들 가능성이 있는 무례하고 무례하거나 불합리한 댓글로 정의합니다.

전제 조건



이 자습서에서는 Python의 코드를 사용하므로 시스템에 Python이 설치되어 있는지 확인하십시오. Twitter API v2로 를 얻으려면 Twitter API에 연결할 Bearer 토큰과 Twitter가 필요합니다. 마찬가지로 Perspective API를 사용하여 Twitter 사용자의 멘션을 분석하려면 Perspective API에 대한 액세스를 신청하고 API 키를 받아야 합니다.

Twitter 개발자 계정 신청 및 Twitter API v2용 전달자 토큰 받기



Twitter API v2에 대한 액세스 권한을 등록하려면 this page을 방문하여 지침에 따라 에 등록하십시오. 이 프로세스의 일부로 이메일을 확인하라는 메시지가 표시됩니다. 또한 API를 사용하려면 계정에 전화번호를 등록해야 합니다.

계정을 만든 후 몇 가지 기본적인 질문을 받게 됩니다.



개발자 계약 및 정책 검토 및 동의



다음으로 이메일을 확인하라는 메시지가 표시됩니다.



다음과 같은 이메일을 받아야 합니다.



확인을 클릭하면 개발자 포털로 이동합니다. 이름을 지정하여 앱을 만들 수 있습니다.



키 가져오기를 클릭하면 키와 전달자 토큰을 볼 수 있습니다. Twitter API v2에 연결하는 데 사용할 것이므로 안전한 곳에 보관하십시오.



Perspective API에 대한 액세스 신청 및 API 키 받기



Perspective API 개발자 계정에 가입하고 API 키를 얻는 방법에 대한 지침은 Perspective API developer documentation을 확인하십시오.

Python에 Tweepy 및 googleapiclient 패키지 설치



Python에서 Twitter API v2로 작업하려면 Tweepy package 을 사용합니다. 설치하려면 다음을 실행하십시오.

pip3 install tweepy


Python에서 Perspective API로 작업하려면 Google API Client 을 사용합니다. 설치하려면 다음을 실행하십시오.

pip3 install googleapiclient


Perspective API 사용을 위한 함수 빌드



트윗 텍스트를 입력으로 사용하고 해당 트윗 텍스트로 Perspective API를 호출하는 방법이 있습니다. 이 함수의 API_KEY 값을 Perspective의 고유한 API 키로 바꿉니다.

def analyze(text):

    # Replace with your own Perspective API key
    API_KEY = 'PERSPECTIVE_API_KEY'

    client = discovery.build(
        "commentanalyzer",
        "v1alpha1",
        developerKey=API_KEY,
        discoveryServiceUrl="https://commentanalyzer.googleapis.com/$discovery/rest?version=v1alpha1",
        static_discovery=False,
    )

    analyze_request = {
        'comment': {'text': text},
        'requestedAttributes': {
            'TOXICITY': {}
        }
    }

    return client.comments().analyze(body=analyze_request).execute()


Twitter API v2를 사용하여 사용자 멘션 가져오기



사용자의 Twitter 멘션을 얻으려면 get_users_mentions 메서드를 사용하고 user_id 에 전달해야 합니다. 기본적으로 API 호출당 10개의 멘션을 받게 되며 API 호출당 최대 100개의 멘션을 받을 수 있습니다. 추가 멘션을 원하시면 아래 limit 매개변수에 숫자를 지정하시면 됩니다.

    # Replace with the number of Tweets you'd like
    limit = 25
    # Replace your bearer token below
    client = tweepy.Client('TWITTER_BEARER_TOKEN')
    # Replace with the username of your choice
    user = client.get_user(username='twitterdev')
    user_id = user.data['id']
    for tweet in tweepy.Paginator(client.get_users_mentions, id=user_id, max_results=25).flatten(limit=limit):
        tweet_id = tweet['id']
        tweet_text = tweet['text']


분석을 위해 Perspective API에 트윗 텍스트 전달



트윗 텍스트를 analyze 메서드에 전달합니다. 분석 메서드의 응답은 다음과 같은 JSON입니다.

{
  "attributeScores": {
    "TOXICITY": {
      "spanScores": [
        {
          "begin": 0,
          "end": 99,
          "score": {
            "value": 0.010204159,
            "type": "PROBABILITY"
          }
        }
      ],
      "summaryScore": {
        "value": 0.010204159,
        "type": "PROBABILITY"
      }
    }
  },
  "languages": [
    "en"
  ],
  "detectedLanguages": [
    "en"
  ]
}


try 및 except 블록에서 analyze 메서드를 호출하고 이 응답에서 summaryScore에 관심이 있습니다. except 블록에서 오류의 원인을 인쇄합니다. 이 샘플에서 대부분의 경우 그 이유는 트윗이 Perspective API가 독성 감지를 지원하지 않는 언어로 되어 있기 때문입니다. 지원되는 언어 목록은 Perspective API documentation을 확인하십시오.

try:
    response = analyze(tweet_text)
    if 'attributeScores' in response:
        if 'TOXICITY' in response['attributeScores']:
            toxicity = response['attributeScores']['TOXICITY']
            summary_score = toxicity['summaryScore']
            toxicity_str = "Toxicity score: {}".format(summary_score['value'])
            print(tweet_id)
            print(tweet_text)
            print(toxicity_str)
except HttpError as error:
    print(error.reason)


함께 모아서



다음은 이 코드 샘플에 대한 전체 작업 스크립트입니다.

import tweepy
from googleapiclient.errors import HttpError
from googleapiclient import discovery


def analyze(text):
    # Replace with your own Perspective API key
    API_KEY = 'PERSPECTIVE_API_KEY'
    client = discovery.build(
        "commentanalyzer",
        "v1alpha1",
        developerKey=API_KEY,
        discoveryServiceUrl="https://commentanalyzer.googleapis.com/$discovery/rest?version=v1alpha1",
        static_discovery=False,
    )

    analyze_request = {
        'comment': {'text': text},
        'requestedAttributes': {
            'TOXICITY': {}
        }
    }

    return client.comments().analyze(body=analyze_request).execute()


def main():
    # Replace with the number of Tweets you'd like
    limit = 25
    # Replace your bearer token below
    client = tweepy.Client('TWITTER_BEARER_TOKEN')
    # Replace with the username of your choice
    user = client.get_user(username='twitterdev')
    user_id = user.data['id']
    for tweet in tweepy.Paginator(client.get_users_mentions, id=user_id, max_results=25).flatten(limit=limit):
        tweet_id = tweet['id']
        tweet_text = tweet['text']
        try:
            response = analyze(tweet_text)
            if 'attributeScores' in response:
                if 'TOXICITY' in response['attributeScores']:
                    toxicity = response['attributeScores']['TOXICITY']
                    summary_score = toxicity['summaryScore']
                    toxicity_str = "Toxicity score: {}".format(summary_score['value'])
                    print(tweet_id)
                    print(tweet_text)
                    print(toxicity_str)
        except HttpError as error:
            print(error.reason)


if __name__ == "__main__":
    main()



튜토리얼은 여기까지입니다. 이 가이드에 대한 질문이나 피드백이 있으면 언제든지 에서 저에게 연락해 주세요!

좋은 웹페이지 즐겨찾기