Twitter API v2 및 Perspective API를 사용하여 트윗에서 독성 감지
참고: 이것은 샘플 코드일 뿐입니다. 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()
튜토리얼은 여기까지입니다. 이 가이드에 대한 질문이나 피드백이 있으면 언제든지 에서 저에게 연락해 주세요!
Reference
이 문제에 관하여(Twitter API v2 및 Perspective API를 사용하여 트윗에서 독성 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/suhemparack/detecting-toxicity-in-tweets-using-the-twitter-api-v2-and-the-perspective-api-50f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)