0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

COTOHA APIを触ってみた

Last updated at Posted at 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 parse.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でなんかしたいと思っていますが、発想力がないのでアイデアが全く浮かびません…
思いつき次第なにか投稿したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?