COTOHA APIを触ってみた

## はじめに
[コトハ アピ](https://qiita.com/Harusugi/items/f499e8707b36d0f570c4)をはじめ、[COTOHA API](https://api.ce-cotoha.com/contents/index.html)を使用した記事をたくさん目にしたので参考にしつつ触ってみることにしました。
APIを使用するにはアカウントが必要になりますので、もし興味がある方は作成してみてください。(それほど時間を掛けずに利用開始できました。)
本記事では、こちらのAPIを使用して形態素解析結果を得るところまで行います。


## まずは認証

``` python
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の呼び出しが可能になります。


## 形態素解析(構文解析)
``` python
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を使用しましたが、[こちら](https://api.ce-cotoha.com/contents/reference/apireference.html#parsing)に用意されてるものであればすぐに使用できます。

### 実行
```
python parse.py 私は鳥です
```

### 結果
``` json
{'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でなんかしたいと思っていますが、発想力がないのでアイデアが全く浮かびません…
思いつき次第なにか投稿したいと思います。