BETA

COTOHA APIを触ってみた

投稿日:2020-02-14
最終更新:2020-02-25

はじめに

コトハ アピをはじめ、COTOHA APIを使用した記事をたくさん目にしたので触ってみることにしました。
APIを使用するにはアカウントが必要になりますので、もし興味がある方は作成してみてください。(それほど時間を掛けずに利用開始できました)
本記事では、こちらのAPIを使用して形態素解析結果を得るところまで行います。

まずは認証

import requests  
import json  

BASE_URL = "https://api.ce-cotoha.com/api/dev/nlp/"  
CLIENT_ID = "CLIENT_ID" #発行されたIDを入力  
CLIENT_SECRET = "CLIENT_SECRET" #発行されたsecretを入力  


# アクセストークンを取得  
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"]  


if __name__ == "__main__":  
    access_token = auth(CLIENT_ID, CLIENT_SECRET)  
    # print(access_token)  

アクセストークンを出力するのはどうかと思います(一応コメントアウトしてあります)が、認証を行い、トークンを取得することでAPIの呼び出しが可能になります。

形態素解析(構文解析)

import requests  
import json  
import sys  

BASE_URL = "https://api.ce-cotoha.com/api/dev/nlp/"  
CLIENT_ID = "CLIENT_ID"  # 発行されたIDを入力  
CLIENT_SECRET = "CLIENT_SECRET"  # 発行されたsecretを入力  


# アクセストークンを取得  
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 parse(sentence, access_token):  
    base_url = BASE_URL  
    headers = {  
        "Content-Type": "application/json",  
        "charset": "UTF-8",  
        "Authorization": "Bearer {}".format(access_token)  
    }  
    data = {  
        "sentence": sentence,  
        "type": "default"  
    }  
    r = requests.post(base_url + "v1/parse",  
                      headers=headers,  
                      data=json.dumps(data))  
    return r.json()  


if __name__ == "__main__":  
    document = "テスト"  
    args = sys.argv  
    if len(args) >= 2:  
        document = str(args[1])  

    access_token = auth(CLIENT_ID, CLIENT_SECRET)  
    parse_document = parse(document, access_token)  
    print(parse_document)  

今回は構文解析のAPIを使用しましたが、こちらに用意されてるものであればすぐに使用できます。

実行

python auth.py 私は鳥です  

結果

{'result': [{'chunk_info': {'id': 0, 'head': 1, 'dep': 'D', 'chunk_head': 0, 'chunk_func': 1, 'links': []}, 'tokens': [{'id': 0, 'form': '私', 'kana': 'ワタシ', 'lemma': '私', 'pos': '名詞', 'features': ['代名詞'], 'dependency_labels': [{'token_id': 1, 'label': 'case'}], 'attributes': {}}, {'id': 1, 'form': 'は', 'kana': 'ハ', 'lemma': 'は', 'pos': '連用助詞', 'features': [], 'attributes': {}}]}, {'chunk_info': {'id': 1, 'head': -1, 'dep': 'O', 'chunk_head': 0, 'chunk_func': 1, 'links': [{'link': 0, 'label': 'aobject'}], 'predicate': []}, 'tokens': [{'id': 2, 'form': '鳥', 'kana': 'トリ', 'lemma': '鳥', 'pos': '名詞', 'features': [], 'dependency_labels': [{'token_id': 0, 'label': 'nmod'}, {'token_id': 3, 'label': 'cop'}], 'attributes': {}}, {'id': 3, 'form': 'です', 'kana': 'デス', 'lemma': 'です', 'pos': '判定詞', 'features': ['終止'], 'attributes': {}}]}], 'status': 0, 'message': ''}  

おわりに

アカウントの取得もスムーズで、すぐに利用できて便利でした。
形態素解析は実業務でも触れる機会があり、個人的に興味もある分野です。
現在は無料で登録しているのでfor Developersですが、for Enterpriseの専門用語辞書や拡張も興味があるので機会があれば触ってみたいです。
COTOHA APIでなんかしたいと思っていますが、発想力がないのでアイデアが全く浮かびません…
思いつき次第なにか投稿したいと思います。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

だいたいめもたまにめも

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう