Pour plus d'informations ici (je suis très heureux d'avoir une étoile!)
Si vous souhaitez l'utiliser rapidement, veuillez vous référer au code ci-dessous.
$ 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 = 'Un service d'API qui réalise une analyse très précise du langage naturel du japonais. Vous pouvez facilement utiliser la technologie d'analyse du langage naturel qui utilise les résultats de recherche du groupe NTT depuis plus de 40 ans avec l'API COTOHA.'
cotoha_call('keyword', sentence)
# Return
"""
[{'form': 'Haute précision', 'score': 20.0},
{'form': 'La concrétisation', 'score': 16.8278},
{'form': 'Facile', 'score': 10.8133},
{'form': 'résultat de la recherche', 'score': 10.0},
{'form': 'cotoha api', 'score': 10.0}]
"""
Déjà une explication très simple sur la façon d'utiliser COTOHA (j'ai essayé d'utiliser l'API COTOHA qui aurait été facile à gérer le traitement du langage naturel en Python et "Mentos et Le résultat d'avoir COTOHA résumer "Memories of Go". Avec le tutoriel le plus rapide de COTOHA)
[Plan de présentation de l'API Qiita x COTOHA] Je l'ai écrit moi-même ・ Parce qu'il est difficile de créer un environnement, utilisez Google Colab! ・ Vous pouvez l'utiliser avec une seule copie sans penser à rien!
Je voulais quelque chose comme ça, alors je l'ai publié sous forme d'article.
Si vous lisez cet article, vous pourrez l'analyser instantanément avec un seul exemplaire ...! (Devrait).
python
cotoha_call("ne", "Je veux manger du tonnerre noir")
Si vous entrez Le résultat de l'analyse "** Black Thunder veut manger **" (il s'agit d'une extraction d'expression unique) est renvoyé.
===> Extraction d'expression unique ===> {'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}
Le "ne" peut être changé en (il devrait couvrir tous les apis disponibles chez les développeurs)
Nom de l'API | contribution |
---|---|
Analyse | parse |
Extraction d'expression unique | ne |
Extraction de mots-clés | keyword |
Analyse de correspondance | coref |
Calcul de similarité | simi |
Jugement de type de phrase | sen_type |
Estimation des attributs utilisateur(β) | user_at |
Suppression de la stagnation(β) | filter |
Détection d'erreur de reconnaissance vocale(β) | detect |
Analyse des émotions | senti |
emballer(β) | summary |
Quand j'essaye tout en utilisant l'instruction for, ça ressemble à ceci →
python
for api_type in ["ne", "parse", "coref", "keyword", "simi", "sen_type", "user_at", "filter", "detect", "senti", "summary"]:
cotoha_call(api_type, "Je veux manger du tonnerre noir.")
print("\n") #Des pauses pour rendre les résultats plus visibles
print("Analyse terminée!")
<détails> ===>
Extraction d'expression unique
===>
{'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} ===>
Analyse
===>
{'message': '',
'result': [{'chunk_info': {'chunk_func': 2,
'chunk_head': 1,
'dep': 'D',
'head': 1,
'id': 0,
'links': []},
'tokens': [{'attributes': {},
'features': [],
'form': 'noir',
'id': 0,
'kana': 'noir',
'lemma': 'noir',
'pos': 'nom'},
{'attributes': {},
'dependency_labels': [{'label': 'compound', 'token_id': 0},
{'label': 'case', 'token_id': 2}],
'features': [],
'form': 'Tonnerre',
'id': 1,
'kana': 'Tonnerre',
'lemma': 'Tonnerre',
'pos': 'nom'},
{'attributes': {},
'features': ['Utilisation continue'],
'form': 'à',
'id': 2,
'kana': 'wo',
'lemma': 'à',
'pos': 'assistant de cas'}]},
{'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': 'manger',
'id': 3,
'kana': 'Tabe',
'lemma': 'manger',
'pos': 'racine du verbe'},
{'attributes': {},
'features': ['End'],
'forme': 'tai',
'id': 4,
'kana': 'Thaïlande',
'lemma': 'tai',
'pos': 'suffixe de verbe'},
{'attributes': {},
'features': [],
'form': '。',
'id': 5,
'kana': '',
'lemma': '。',
'pos': 'Phrase'}]}],
'status': 0} ===>
Analyse de correspondance
===>
{'message': 'OK',
'result': {'coreference': [],
'jetons': [[['Black', 'Thunder', 'Eat', 'Want', '. ']]},
'status': 0} ===>
Extraction de mots-clés
===>
{'message': '', 'result': [{'form': 'Black Thunder', 'score': 10.0}], 'status': 0} ===>
Calcul de similarité
===>
{'message': 'OK', 'result': {'score': 0.99846786}, 'status': 0} ===>
Jugement de type de phrase
===>
{'message': '',
'result': {'dialog_act': ['information-providing'],
'modality': 'declarative'},
'status': 0} ===>
Estimation des attributs utilisateur (β)
===>
{'message': 'OK',
'result': {'état civil': 'marié',
'hobby': ['ANIMAL',
'COOKING',
'FISHING',
'FORTUNE',
'GYM',
'INTERNET',
'SHOPPING',
'STUDY']},
'status': 0} ===>
Élimination de la stagnation (β)
===>
{'message': 'OK',
'result': [{'fillers': [],
'fixed_sentence': 'Je veux manger du tonnerre noir. ',
'normalized_sentence': 'Je veux manger du tonnerre noir. '}],
'status': 0} ===>
Détection d'erreur de reconnaissance vocale (β)
===>
{'message': 'OK',
'result': {'candidates': [{'begin_pos': 4,
'correction': [{'correct_score': 0.709220240165901, 'form': 'danseur'},
{'correct_score': 0.6137611877341953, 'form': 'bander'},
{'correct_score': 0.6054945064139393, 'form': 'thunder'},
{'correct_score': 0.5943849175403254, 'form': 'Sanda'},
{'correct_score': 0.5878497568567171, 'form': 'Zander'}],
'detect_score': 0.05464221591729093,
'end_pos': 8,
'form': 'Thunder'}],
'score': 0.05464221591729093},
'status': 0} ===>
Analyse des émotions
===>
{'message': 'OK',
'result': {'emotional_phrase': [],
'score': 0.38033421036210907,
'sentiment': 'Neutral'},
'status': 0} ===>
Résumé (β)
===>
{'result': 'Je veux manger du tonnerre noir. ',' état ': 0} Analyse terminée! -Inscrivez-vous en tant qu'utilisateur depuis API COTOHA et obtenez client_id et client_secret (l'enregistrement de l'utilisateur était assez facile à comprendre). ・ Si vous êtes dans l'état "Python est quoi?" Mais que vous voulez l'essayer, c'est une explication très simple (j'ai essayé d'utiliser l'API COTOHA, qui est censée être capable de gérer facilement le traitement du langage naturel. Veuillez lire / gossy5454 / items / 83072418fb0c5f3e269f)). plus tard L'analyse commence à! Ceux qui participent au projet Faisons de notre mieux!
Recommended Posts
Avant de copier
Code à copier
Code à copier summary>
Réécrire l'ID client et le secret client après la copie
# -*- coding:utf-8 -*-
#Référence: 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 = "identité du client"
client_secret = "Secret du client"
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 #Réglez sur 0 si vous ne voulez pas que le nom de l'API soit affiché dans le résultat de sortie
def cotoha_call(api_type, sentence_1, sentence_2 = "Je veux manger du tonnerre blanc", sent_len = 1, ):
#Obtenez un jeton d'accès
def getAccessToken():
#Spécification d'URL d'acquisition de jeton d'accès
url = access_token_publish_url
#Spécification d'en-tête
headers={
"Content-Type": "application/json;charset=UTF-8"
}
#Demander les spécifications du corps
data = {
"grantType": "client_credentials",
"clientId": client_id,
"clientSecret": client_secret
}
#Encoder la spécification du corps de la requête en JSON
data = json.dumps(data).encode()
#Demande de génération
req = urllib.request.Request(url, data, headers)
#Envoyez une demande et recevez une réponse
res = urllib.request.urlopen(req)
#Obtenir le corps de la réponse
res_body = res.read()
#Décoder le corps de la réponse à partir de JSON
res_body = json.loads(res_body)
#Obtenir un jeton d'accès à partir du corps de la réponse
access_token = res_body["access_token"]
return access_token
#Spécification d'URL de l'API
if api_type == "parse":
api_name = "Analyse"
base_url_footer = "v1/" + api_type
request_body_type = 1
elif api_type == "ne":
api_name = "Extraction d'expression unique"
base_url_footer = "v1/" + api_type
request_body_type = 1
elif api_type == "keyword":
api_name = "Extraction de mots-clés"
base_url_footer = "v1/" + api_type
request_body_type = 2
elif api_type == "coref":
api_name = "Analyse de correspondance"
base_url_footer = "v1/coreference"
request_body_type = 2
elif api_type == "simi":
api_name = "Calcul de similarité"
base_url_footer = "v1/similarity"
request_body_type = 3
elif api_type == "sen_type":
api_name = "Jugement de type de phrase"
base_url_footer = "v1/sentence_type"
request_body_type = 1
elif api_type == "user_at":
api_name = "Estimation des attributs utilisateur (β)"
base_url_footer = "beta/user_attribute"
request_body_type = 2
elif api_type == "filter":
api_name = "Élimination de la stagnation (β)"
base_url_footer = "beta/remove_filler"
request_body_type = 4
elif api_type == "detect":
api_name = "Détection d'erreur de reconnaissance vocale (β)"
base_url_footer = "beta/detect_misrecognition"
request_body_type = 1
elif api_type == "senti":
api_name = "Analyse des émotions"
base_url_footer = "v1/sentiment"
request_body_type = 1
elif api_type == "summary":
api_name = "Résumé (β)"
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
#Spécification d'en-tête
headers={
"Authorization": "Bearer " + getAccessToken(), #access_token,
"Content-Type": "application/json;charset=UTF-8",
}
#Demander les spécifications du corps
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
}
#Encoder la spécification du corps de la requête en JSON
data = json.dumps(data).encode()
#Demande de génération
req = urllib.request.Request(url, data, headers)
#Envoyez une demande et recevez une réponse
try:
res = urllib.request.urlopen(req)
#Que faire si une erreur se produit dans la demande
except urllib.request.HTTPError as e:
#Si le code d'état est 401 Non autorisé, réacquérir le jeton d'accès et demander à nouveau
if e.code == 401:
access_token = getAccessToken()
headers["Authorization"] = "Bearer " + access_token
req = urllib.request.Request(url, data, headers)
res = urllib.request.urlopen(req)
#Si l'erreur est différente de 401, la cause est affichée.
else:
print ("<Error> " + e.reason)
#sys.exit()
#Obtenir le corps de la réponse
res_body = res.read()
#Décoder le corps de la réponse à partir de JSON
res_body = json.loads(res_body)
#Obtenir le résultat de l'analyse à partir du corps de la réponse
return res_body
python
cotoha_call("contribution", "Le texte que vous souhaitez analyser")
Postscript
référence