[PYTHON] Ist Vtuber positiv? Ist es negativ

Einführung

Gibt es in Vtuber viele positive Menschen? Gibt es viele negative Menschen? Dieses Mal analysierte ich die Emotionen von Vtubers Tweets und maß den Grad der Positivität.

Als Ergebnis wurde festgestellt, dass Natori Sana positiv ist.

[('Neutral', 31), ('Positive', 12), ('Negative', 7)]
1.7142857142857142
Ein bisschen positiv

Wir haben auch Tweets von DWU und Massinary Tomoko analysiert.

Was zu verwenden

Einführung der COTOHA API

Dieses Mal werden wir Emotionen mit COTOHA API analysieren. COTOHA API ist eine von NTT Communications entwickelte API, die die Ergebnisse von 40 Jahren Forschung auf dem Gebiet der japanischen Technologie verwendet. Sie können störende Emotionen einfach analysieren, indem Sie einen Text senden. Zusätzlich zu der diesmal verwendeten Emotionsanalyse-API gibt es Syntaxanalyse- und Schlüsselwortextraktions-APIs.

Flow zur Messung der Positivität

  1. Holen Sie sich den Twitter-API-Schlüssel
  2. Holen Sie sich den API-Schlüssel für COTOHA API.
  3. Holen Sie sich die Tweets des Zielbenutzers mit tweepy.
  4. Bereinigen Sie den Tweet
  5. Führen Sie eine Emotionsanalyse mit [COTOHA API] durch (https://api.ce-cotoha.com/).
  6. Bestimmen Sie den Grad der Positivität anhand des Verhältnisses von positiven und negativen Tweets

Beurteilung von positiven und negativen Graden

Als Grundpolitik werden wir zunächst etwa 50 Emotionen analysieren. Wenn es von den 50 Tweets mehr positive als negative Tweets gibt, wird dies als positiv angesehen. Wenn das Gegenteil der Fall ist, wird es als negativ beurteilt. Danach habe ich versucht, ziemlich positiv und ein wenig positiv nach dem Sinneswert zu sortieren.

Implementierung

Dieses Mal habe ich es mit Google Colaboratory implementiert. Die detaillierte Implementierung finden Sie unter hier. Durch Umschreiben des API-Schlüssels von Twitter und des API-Schlüssels von COTOHA API können Sie die Positivität Ihres Lieblingsbenutzers messen.

BASE_URL = "https://api.ce-cotoha.com/api/dev/nlp/"
CLIENT_ID = "hogehoge"
CLIENT_SECRET = "hogehoge"

def auth(client_id, client_secret):
    token_url = "https://api.ce-cotoha.com/v1/oauth/accesstokens"
    
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8"
    }

    data = {
        "grantType": "client_credentials",
        "clientId": client_id,
        "clientSecret": client_secret
    }
    r = requests.post(token_url,
                      headers=headers,
                      data=json.dumps(data))
    
    return r.json()["access_token"]

def sentiment(sentence, access_token):
    base_url = BASE_URL
    
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8",
        "Authorization": "Bearer {}".format(access_token)
    }
    
    data = {
        "sentence": sentence,
        "type": "kuzure"
    }
    
    r = requests.post(base_url + "v1/sentiment",
                      headers=headers,
                      data=json.dumps(data))
    return r

def cleansing_tweet(tweet):
    clean_tweets = []
    for line in tweet:
        temp = line.text
        temp = re.sub('RT .*', '', temp)
        temp = re.sub('@.*', '', temp)
        temp = re.sub('http.*', '', temp)
        temp = re.sub('\n.*', '', temp)
        temp = re.sub('\u3000.*', '', temp)
        if len(temp) != 0:
            clean_tweets.append(temp)
        if len(clean_tweets) >= 50:
            break
    return clean_tweets

def check_positive(result):
    counter = Counter(result)
    print(counter.most_common())
    positive_negative = counter["Positive"]/counter["Negative"]
    print(positive_negative)
    if positive_negative > 1:
        if positive_negative > 4:
            print("Sehr positiv")
        elif positive_negative > 2:
            print("Positiv")
        elif positive_negative > 1:
            print("Ein bisschen positiv")
    elif positive_negative < 1:
        if positive_negative < 0.25:
            print("Sehr negativ")
        elif positive_negative < 0.5:
            print("Ist negativ")
        elif positive_negative < 1:
            print("Ein bisschen negativ")
    elif counter["Positive"] == 0 and counter["Negative"] == 0:
        print("Verlorene Gefühle")

Ergebnis

Lassen Sie uns zunächst die Tweets von Sunshine Ikezaki analysieren, um festzustellen, ob das positive Urteil richtig ist.

Analyseergebnisse von Sunshine Ikezaki

[('Neutral', 32), ('Positive', 16), ('Negative', 2)]
8.0
Sehr positiv

Es scheint, dass Sie richtig beurteilen können. Lassen Sie uns Vtuber analysieren.

Analyseergebnis von Sana Natori

[('Neutral', 31), ('Positive', 12), ('Negative', 7)]
1.7142857142857142
Ein bisschen positiv

Analyseergebnis von DWU

[('Neutral', 28), ('Negative', 15), ('Positive', 7)]
0.4666666666666667
Ist negativ

Analyseergebnis von Machinery Tomoko

[('Neutral', 27), ('Positive', 16), ('Negative', 7)]
2.2857142857142856
Positiv

Zusammenfassung

Dieses Mal bekam ich Tweets, analysierte Emotionen und beurteilte positive und negative Grade. In Bezug auf die Zukunftsaussichten erscheint es interessant, nicht nur die Emotionen des gesamten Satzes, sondern auch emotionale Wörter zu beurteilen.

Referenzlink

Recommended Posts

Ist Vtuber positiv? Ist es negativ
Negative / Positive Analyse 3 Twitter Negative / Positive Analyse (2)
Negative / Positive Analyse 1 Anwendung der Textanalyse