[PYTHON] PyPI-Paket für die supereinfache Verwendung von Cotoha in Google Colab

2020/04/10 PyPI-Paket wurde veröffentlicht!

Weitere Informationen hier (Ich freue mich sehr, einen Stern zu haben!)

Wenn Sie es schnell verwenden möchten, lesen Sie bitte den folgenden Code.

$ pip install cotoha_at_python

from cotohacall.main  import cotoha_call
import os

os.environ['CLIENT_ID'] = 'Your ID'
os.environ['CLIENT_SECRET'] = 'Ypur Secret'

sentence = 'Ein API-Service, der eine hochpräzise Analyse der natürlichen Sprache von Japanisch realisiert. Mit der COTOHA-API können Sie problemlos die Technologie zur Analyse natürlicher Sprache verwenden, die die Forschungsergebnisse der NTT-Gruppe seit mehr als 40 Jahren nutzt.'
cotoha_call('keyword', sentence)

# Return
"""
[{'form': 'Hohe Präzision', 'score': 20.0},
 {'form': 'Realisierung', 'score': 16.8278},
 {'form': 'Einfach', 'score': 10.8133},
 {'form': 'Reaserch-Ergebnis', 'score': 10.0},
 {'form': 'cotoha api', 'score': 10.0}]
"""

Vorwort

Bereits eine supereinfache Erklärung zur Verwendung von COTOHA (Ich habe versucht, die COTOHA-API zu verwenden, die angeblich einfach mit der Verarbeitung natürlicher Sprache in Python zu handhaben ist und "Mentos und Das Ergebnis der Zusammenfassung von "Memories of Go" durch COTOHA. Mit COTOHAs schnellstem Tutorial

Ich habe es selbst geschrieben ・ Verwenden Sie Google Colab, da das Erstellen einer Umgebung schwierig ist! ・ Sie können es mit nur einer Kopie verwenden, ohne an irgendetwas zu denken!

Ich wollte so etwas, also habe ich es als Artikel veröffentlicht.

Wenn Sie diesen Artikel lesen, können Sie ihn sofort mit nur einer Kopie analysieren ...! (Sollte).

Was Sie mit diesem Beispiel für Kopie + Implementierung tun können

python


cotoha_call("ne", "Ich möchte schwarzen Donner essen")

Wenn Sie eingeben Das Analyseergebnis von "** Black Thunder will essen **" (dies ist eine einzigartige Ausdrucksextraktion) wird zurückgegeben.

===> Einzigartige Ausdrucksextraktion ===> {'message': '', 'result': [{'begin_pos': 0, 'class': 'ART', 'end_pos': 8, 'extended_class': 'Product_Other', 'form': 'Black Thunder', 'source': 'basic', 'std_form': 'Black Thunder'}], 'status': 0}

Das "ne" kann in geändert werden (es sollte alle in Entwicklern verfügbaren APIs abdecken)

API-Name Eingang
Parsing parse
Einzigartige Ausdrucksextraktion ne
Schlüsselwortextraktion keyword
Korrespondenzanalyse coref
Ähnlichkeitsberechnung simi
Urteilsurteil sen_type
Benutzerattributschätzung(β) user_at
Beseitigung der Stagnation(β) filter
Spracherkennungsfehlererkennung(β) detect
Emotionsanalyse senti
einpacken(β) summary

Wenn ich alles mit der for-Anweisung versuche, sieht es so aus →

python


for api_type in ["ne", "parse", "coref", "keyword", "simi", "sen_type", "user_at", "filter", "detect", "senti", "summary"]:
    cotoha_call(api_type, "Ich möchte schwarzen Donner essen.")
    print("\n") #Pausen, damit die Ergebnisse besser sichtbar sind
print("Analyse beendet!")
Ausgabe
> ===> Einzigartige Ausdrucksextraktion ===> {'message': '', 'result': [{'begin_pos': 0, 'class': 'ART', 'end_pos': 8, 'extended_class': 'Product_Other', 'form': 'Black Thunder', 'source': 'basic', 'std_form': 'Black Thunder'}], 'status': 0} > > ===> Parsing ===> {'message': '', 'result': [{'chunk_info': {'chunk_func': 2, 'chunk_head': 1, 'dep': 'D', 'head': 1, 'id': 0, 'links': []}, 'tokens': [{'attributes': {}, 'features': [], 'form': 'schwarz', 'id': 0, 'kana': 'schwarz', 'Deckspelze': 'schwarz', 'pos': 'Nomen'}, {'attributes': {}, 'dependency_labels': [{'label': 'compound', 'token_id': 0}, {'label': 'case', 'token_id': 2}], 'features': [], 'Form': 'Donner', 'id': 1, 'kana': 'Donner', 'Deckspelze': 'Donner', 'pos': 'Nomen'}, {'attributes': {}, 'Features': ['Dauerbetrieb'], 'Form zu', 'id': 2, 'kana': 'wo', 'Lemma': 'bis', 'pos': 'Fallassistent'}]}, {'chunk_info': {'chunk_func': 1, 'chunk_head': 0, 'dep': 'O', 'head': -1, 'id': 1, 'links': [{'label': 'object', 'link': 0}], 'predicate': []}, 'tokens': [{'attributes': {}, 'dependency_labels': [{'label': 'dobj', 'token_id': 1}, {'label': 'aux', 'token_id': 4}, {'label': 'punct', 'token_id': 5}], 'features': ['A'], 'form': 'essen', 'id': 3, 'kana': 'Tabe', 'Lemma': 'essen', 'pos': 'Verbstamm'}, {'attributes': {}, 'Features': ['Ende'], 'form': 'tai', 'id': 4, 'kana': 'Thailand', 'lemma': 'tai', 'pos': 'Verbsuffix'}, {'attributes': {}, 'features': [], 'form': '。', 'id': 5, 'kana': '', 'lemma': '。', 'pos': 'Phrase'}]}], 'status': 0} > > ===> Korrespondenzanalyse ===> {'message': 'OK', 'result': {'coreference': [], 'Token': [[['Schwarz', 'Donner', 'Essen', 'Wollen', '. ']]}, 'status': 0} > > ===> Schlüsselwortextraktion ===> {'message': '', 'result': [{'form': 'Black Thunder', 'score': 10.0}], 'status': 0} > > ===> Ähnlichkeitsberechnung ===> {'message': 'OK', 'result': {'score': 0.99846786}, 'status': 0} > > ===> Urteilsurteil ===> {'message': '', 'result': {'dialog_act': ['information-providing'], 'modality': 'declarative'}, 'status': 0} > > ===> Benutzerattributschätzung (β) ===> {'message': 'OK', 'Ergebnis': {'Zivilstatus': 'verheiratet', 'hobby': ['ANIMAL', 'COOKING', 'FISHING', 'FORTUNE', 'GYM', 'INTERNET', 'SHOPPING', 'STUDY']}, 'status': 0} > > ===> Stagnationsentfernung (β) ===> {'message': 'OK', 'result': [{'fillers': [], 'fixed_sentence': 'Ich möchte schwarzen Donner essen. ', 'normalized_sentence': 'Ich möchte schwarzen Donner essen. '}], 'status': 0} > > ===> Spracherkennungsfehlererkennung (β) ===> {'message': 'OK', 'result': {'candidates': [{'begin_pos': 4, 'Korrektur': [{'korrekter_Wert': 0.709220240165901, 'Form': 'Tänzer'}, {'rect_score ': 0.6137611877341953,' form ':' bander '}, {'correct_score': 0.6054945064139393, 'form': 'thunder'}, {'rect_score ': 0.5943849175403254,' form ':' Sanda '}, {'rect_score ': 0.5878497568567171,' form ':' Zander '}], 'detect_score': 0.05464221591729093, 'end_pos': 8, 'form': 'Thunder'}], 'score': 0.05464221591729093}, 'status': 0} > > ===> Emotionsanalyse ===> {'message': 'OK', 'result': {'emotional_phrase': [], 'score': 0.38033421036210907, 'sentiment': 'Neutral'}, 'status': 0} > > ===> Zusammenfassung (β) ===> {'Ergebnis': 'Ich möchte schwarzen Donner essen. ',' status ': 0} > > Analyse beendet! >

Vor dem Kopieren

・ Wenn Sie sich im Status "Python ist was?" Befinden, es aber ausprobieren möchten, ist dies eine supereinfache Erklärung (Ich habe versucht, die COTOHA-API zu verwenden, die angeblich die Verarbeitung natürlicher Sprache problemlos handhaben kann. Bitte lesen Sie / gossy5454 / items / 83072418fb0c5f3e269f)).

Zu kopierender Code

Zu kopierender Code

Schreiben Sie die Client-ID und das Client-Geheimnis nach dem Kopieren neu


# -*- coding:utf-8 -*-
#Referenz: https://qiita.com/gossy5454/items/83072418fb0c5f3e269f#python%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F

import os
import urllib.request
import json
import configparser
import codecs
import sys

client_id = "Kunden ID"
client_secret = "Kundengeheimnis"

developer_api_base_url = "https://api.ce-cotoha.com/api/dev/nlp/"
access_token_publish_url = "https://api.ce-cotoha.com/v1/oauth/accesstokens"

api_name_show_switch = 1 #Setzen Sie diesen Wert auf 0, wenn der API-Name nicht im Ausgabeergebnis angezeigt werden soll

def cotoha_call(api_type, sentence_1, sentence_2 = "Ich möchte weißen Donner essen", sent_len = 1, ):
    #Zugriffstoken erhalten
    def getAccessToken():
        #Zugriff auf die URL-Angabe für die Token-Erfassung
        url = access_token_publish_url

        #Header-Spezifikation
        headers={
            "Content-Type": "application/json;charset=UTF-8"
        }

        #Körperspezifikation anfordern
        data = {
            "grantType": "client_credentials",
            "clientId": client_id,
            "clientSecret": client_secret
        }
        #Codieren Sie die Anforderungshauptteilspezifikation in JSON
        data = json.dumps(data).encode()

        #Anforderungsgenerierung
        req = urllib.request.Request(url, data, headers)

        #Senden Sie eine Anfrage und erhalten Sie eine Antwort
        res = urllib.request.urlopen(req)

        #Antwortkörper erhalten
        res_body = res.read()

        #Dekodieren Sie den Antworttext von JSON
        res_body = json.loads(res_body)

        #Holen Sie sich das Zugriffstoken vom Antworttext
        access_token = res_body["access_token"]

        return access_token

    #API-URL-Spezifikation
    if api_type == "parse":
        api_name = "Parsing"
        base_url_footer = "v1/" + api_type
        request_body_type = 1
    elif api_type == "ne":
        api_name = "Einzigartige Ausdrucksextraktion"
        base_url_footer = "v1/" + api_type
        request_body_type = 1
    elif api_type == "keyword":
        api_name = "Schlüsselwortextraktion"
        base_url_footer = "v1/" + api_type
        request_body_type = 2
    elif api_type == "coref":
        api_name = "Korrespondenzanalyse"
        base_url_footer = "v1/coreference"
        request_body_type = 2
    elif api_type == "simi":
        api_name = "Ähnlichkeitsberechnung"
        base_url_footer = "v1/similarity"
        request_body_type = 3
    elif api_type == "sen_type":
        api_name = "Urteilsurteil"
        base_url_footer = "v1/sentence_type"
        request_body_type = 1
    elif api_type == "user_at":
        api_name = "Benutzerattributschätzung (β)"
        base_url_footer = "beta/user_attribute"
        request_body_type = 2
    elif api_type == "filter":
        api_name = "Stagnationsentfernung (β)"
        base_url_footer = "beta/remove_filler"
        request_body_type = 4
    elif api_type == "detect":
        api_name = "Spracherkennungsfehlererkennung (β)"
        base_url_footer = "beta/detect_misrecognition"
        request_body_type = 1
    elif api_type == "senti":
        api_name = "Emotionsanalyse"
        base_url_footer = "v1/sentiment"
        request_body_type = 1
    elif api_type == "summary":
        api_name = "Zusammenfassung (β)"
        base_url_footer = "beta/summary"
        request_body_type = 5
    else :
        print("Api Type Error.")
        sys.exit()

    if api_name_show_switch == 1:
        print("===>\n" + api_name + "\n===>")
    
    url = developer_api_base_url + base_url_footer

    #Header-Spezifikation
    headers={
        "Authorization": "Bearer " + getAccessToken(), #access_token,
        "Content-Type": "application/json;charset=UTF-8",
    }
    #Körperspezifikation anfordern
    if request_body_type == 1:
        data = {
            "sentence": sentence_1
        }
    elif request_body_type == 2:
        data = {
            "document": sentence_1
        }
    elif request_body_type == 3:
        data = {
            "s1": sentence_1,
            "s2": sentence_2
        }
    elif request_body_type == 4:
        data = {
            "text": sentence_1
        }
    elif request_body_type == 5:
        data = {
            "document": sentence_1,
            "sent_len": sent_len
        }

    #Codieren Sie die Anforderungshauptteilspezifikation in JSON
    data = json.dumps(data).encode()
        #Anforderungsgenerierung
    req = urllib.request.Request(url, data, headers)
        #Senden Sie eine Anfrage und erhalten Sie eine Antwort
    try:
        res = urllib.request.urlopen(req)
    #Was tun, wenn in der Anforderung ein Fehler auftritt?
    except urllib.request.HTTPError as e:
        #Wenn der Statuscode 401 Unauthorized lautet, fordern Sie das Zugriffstoken erneut an und fordern Sie es erneut an
        if e.code == 401:
            access_token = getAccessToken()
            headers["Authorization"] = "Bearer " + access_token
            req = urllib.request.Request(url, data, headers)
            res = urllib.request.urlopen(req)
        #Wenn der Fehler nicht 401 ist, wird die Ursache angezeigt.
        else:
            print ("<Error> " + e.reason)
            #sys.exit()

    #Antwortkörper erhalten
    res_body = res.read()
    #Dekodieren Sie den Antworttext von JSON
    res_body = json.loads(res_body)
    #Holen Sie sich das Analyseergebnis vom Antworttext
    return res_body

später

python


cotoha_call("Eingang", "Der Text, den Sie analysieren möchten")

Die Analyse beginnt bei!

Nachtrag

Diejenigen, die am Projekt teilnehmen Lassen Sie uns unser Bestes geben!

Referenz

Ich habe versucht, die COTOHA-API in Python zu verwenden, die angeblich einfach in der Verarbeitung natürlicher Sprache zu handhaben ist

Recommended Posts

PyPI-Paket für die supereinfache Verwendung von Cotoha in Google Colab
Einfaches Verständnis von Python für & Arrays (für Super-Anfänger)
So registrieren Sie ein Paket in PyPI (Stand September 2017)
Verwenden Sie music21 in Google Colaboratory
Einfache Installation von OpenCV auf RaspberryPi 3+
Untersuchung zur praktischen Anwendung von BlockChain
Verwenden Sie ndb.tasklet mit Google App Engine
Registrieren Sie das Paket bei PyPI
Spielen Sie mit Turtle auf Google Colab
Erzeugt halbautomatisch eine Beschreibung des Pakets, das in PyPI registriert werden soll
Verwenden Sie edump anstelle von var_dump, um das Debuggen und das effiziente Verständnis von Dateninhalten (PHP) zu vereinfachen.
Rufen Sie die Paketliste des angegebenen Benutzers aus den in PyPI registrierten Paketen ab
Lernen Sie mit Shogi AI Deep Learning auf Mac und Google Colab Verwenden Sie Google Colab