LoginSignup
6
5

More than 3 years have passed since last update.

COTOHA API 使ってみた(GitHubにコードもあるよ)

Last updated at Posted at 2020-02-10

0. 関連記事

n番煎じ

1. 背景

プレゼント企画 を知ったため.

個人的にテキスト解析を前々からやろうとは思っていたため, これを機に決意.
とはいえ, 調べてみると公式からの各種言語に対応したAPIは出されていなかった.(この記事 の作者さんの所属がNTTっぽいのでもしかしたらこれが公式説はあったりする)

そこで, 勉強がてら作ってみる.

COTOHA API Portalへのリンク

2. 作成したAPIの説明

2.1 動作確認した環境

requestsが必要です.

windows

  • Windows 10 Home
  • Python 3.7.3

Linux

  • Ubuntu 18.04.3 LTS
  • Python 3.6.9

Mac

♰持ってない♰

2.2 Quick start

  1. まずCOTOHA API for Developersに無料登録
  2. 以下のコマンドを実行
git clone https://github.com/tsuji-tomonori/cotohapy.git
cd cotohapy
pip install -r requirements.txt
# config.json の作成
python demo.py
# もし, python3 環境の場合
python3 demo.py
# action!

config.json は以下のようになります.

{
    "access_token_publish_url": "",
    "developer_api_base_url": "",
    "clientid": "",
    "clientsecret": ""
}

アカウントホームに行くと以下のページが出てくるため, それをもとに設定してください. 対応表を下につけておきます.

key.png

2.3 使用方法

GitHub

git clone https://github.com/tsuji-tomonori/cotohapy.git

インポート

from cotohapy3 import CotohaAPI

ライブラリーは「cotohapy3」の中にすべて入っています. CotohaAPI 以外にもクラスはありますが, それは後程...

アクセストークン取得

初めに必ず行ってください.

api = CotohaAPI(
    developer_api_base_url=developer_api_base_url, 
    access_token_publish_url=access_token_publish_url
)
api.login(clientid=clientid, clientsecret=clientsecret)
def __init__(self, developer_api_base_url, access_token_publish_url)
引数 データ型 内容
developer_api_base_url str API Base URL
access_token_publish_url str Access Token Publish URL
def login(self, clientid, clientsecret)
引数 データ型 内容
clientid str Client ID
clientsecret str Client secret

構文解析: parse

# 実行例
api.parse("昨日母と銀座で焼き肉を食べた")
def parse(self, sentence, **kwargs)
引数 データ型 内容
sentence str 解析対象文
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

固有表現抽出: ne

# 実行例
api.ne("昨日は東京駅を利用した。")
def ne(self, sentence, **kwargs)
引数 データ型 内容
sentence str 解析対象文
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

照応解析: coreference

# 実行例
api.coreference("太郎は友人です。彼は焼き肉を食べた。")
def coreference(self, document, **kwargs)
引数 データ型 内容
document str / list 以下のどちらかの形式で指定
str: 解析対象の文
list: 解析対象の文集合
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

キーワード抽出: keyword

# 実行例
api.keyword("レストランで昼食を食べた。")
def keyword(self, document, **kwargs)
引数 データ型 内容
document str / list 以下のどちらかの形式で指定
str: 解析対象の文
list: 解析対象の文集合
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

類似度計算: similarity

# 実行例
api.similarity("近くのレストランはどこですか?", "このあたりの定食屋はどこにありますか?")
def similarity(self, s1, s2, **kwargs)
引数 データ型 内容
s1 str 類似度算出対象のテキスト
s2 str 類似度算出対象のテキスト
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

文タイプ判定: sentence_type

# 実行例
api.sentence_type("あなたの名前は何ですか?")
def sentence_type(self, sentence, **kwargs)
引数 データ型 内容
sentence str 解析対象文
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

ユーザー属性推定(β): user_attribute

# 実行例
api.user_attribute("私は昨日田町駅で飲みに行ったら奥さんに怒られた。")
def user_attribute(self, document, **kwargs)
引数 データ型 内容
document str / list 以下のどちらかの形式で指定
str: 解析対象の文
list: 解析対象の文集合
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

言い淀み除去(β): remove_filler

# 実行例
api.remove_filler(
    "えーーっと、あの、今日の打ち合わせでしたっけ。すみません、ちょっと、急用が入ってしまって。"
)
def remove_filler(self, text, **kwargs)
引数 データ型 内容
text str 解析対象テキスト
**kwargs その他任意のパラメタ (公式リファレンスのAPI参照)

音声認識誤り検知(β): detect_misrecognition

# 実行例
api.detect_misrecognition("温泉認識は誤りを起こす")
def detect_misrecognition(self, sentence, **kwargs)
引数 データ型 内容
sentence str 解析対象文
**kwargs 特になし(β版より念のため)

感情分析: sentiment

# 実行例
api.sentiment("人生の春を謳歌しています")
def sentiment(self, sentence)
引数 データ型 内容
sentence str 解析対象文

要約(β): summary

# 実行例
with open("summary.txt", "r", encoding="utf-8") as f:
    document = f.read()
api.summary(document, 1)
summary.txt
前線が太平洋上に停滞しています。一方、高気圧が千島近海にあって、北日本から東日本をゆるやかに覆っています。関東地方は、晴れ時々曇り、ところにより雨となっています。東京は、湿った空気や前線の影響により、晴れ後曇りで、夜は雨となるでしょう。
def summary(self, document, sent_len, **kwargs)
引数 データ型 内容
document str 入力文章
sent_len int 要約文数
**kwargs 特になし(β版より念のため)

3. 今後の予定

何か作ったやつを出したい

あるいは説明していない機能について説明したい

参考

pixivpy

6
5
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
6
5