LoginSignup
10
3

More than 3 years have passed since last update.

COTOHA APIを使って数行で言語処理(形態素解析、感情分析)をする

Last updated at Posted at 2019-11-24

はじめに

COTOHA Community SlackでCOTOHA APIのレスポンスを読みやすくするライブラリが紹介されていました (恐らく非公式)
今回は、そのライブラリを使って五行で形態素解析したいと思います。

事前準備

環境

Python 3.9.0
cotohappy 0.4.2

インストール

ライブラリの名前はcotohappyです。

インストールは簡単にpipでできます。
pip install cotohappy

Python 3.7 and 3.8 are supported

とのことなので注意が必要です。

認証情報をおく

Payload.json に認証情報を記述して置いておくと、accesstokenも取得してくれます。
名前を指定すればPayloadじゃなくても大丈夫そうです。
参考: https://github.com/278Mt/cotohappy/blob/master/examples/sjgyoen.py

Payload.json
{
  "AccessTokenPublishURL": "https://api.ce-cotoha.com/v1/oauth/accesstokens",
  "APIBaseURL"           : "https://api.ce-cotoha.com/api/dev/",
  "ClientId"             : "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456",
  "ClientSecret"         : "7890abcdefghijkl"
}

使い方

形態素解析

cotohappyをimportして、parseに文章を投げるだけです。
form以外を表示する場合は少しだけ長くなります。

形態素解析のソースコード
parser.py
import cotohappy

coy = cotohappy.API()
parse_li = coy.parse("すもももももももものうち")
for parse in parse_li:
    for token in parse.tokens:
        print(token)

出力
すもも    0,スモモ,李,名詞,*,*,*,*,*
も  1,モ,も,連用助詞,*,*,*,*,*
もも   2,モモ,桃,名詞,*,*,*,*,*
も  3,モ,も,連用助詞,*,*,*,*,*
もも   4,モモ,桃,名詞,*,*,*,*,*
の  5,ノ,の,格助詞,連体,*,*,*,*
うち   6,ウチ,内,名詞,連用,*,*,*,*

formだけとりたい場合

formだけを表示させる場合はより簡単にできます。
これなら五行ですね。

form取得のソースコード
form.py
import cotohappy
coy = cotohappy.API()
parse_li = coy.parse("すもももももももものうち")
for parse in parse_li:
    print(parse.form)

出力
すももも
ももも
ももの
うち

固有表現抽出

coy.ne に書き換えるだけです。
固有表現があれば、抽出して情報を列挙してくれます。

固有表現抽出のソースコード
ne.py
import cotohappy

coy = cotohappy.API()
ne_li = coy.ne("ドナルドトランプはアメリカの大統領で、11月19日現在、73歳で、資産は30億ドルとも言われている.") 
for ne in ne_li:
    print(ne)

出力
ドナルドトランプ     0,8,ドナルドトランプ,ART,,*,basic
アメリカ     9,13,アメリカ,LOC,,*,basic
11月19日   19,25,11月19日,DAT,,*,basic
30億ドル  36,41,30億ドル,MNY,,*,basic
大統領    14,17,大統領,ART,,*,basic
73歳    28,31,73歳,NUM,,*,basic

照応解析

照応関係があれば、抽出して情報を列挙してくれます。

照応解析のソースコード
coref.py
import cotohappy

coy = cotohappy.API()
coreference = coy.coreference("花子は友人です。彼女は焼き肉を食べた。") 
for content in coreference.coreference:
    for referent in content.referents:
        print(referent)

出力
花子     0,0,0,0
彼女     1,0,5,5

キーワード抽出

重要なキーワードを抽出して情報を列挙してくれます。

キーワード抽出のソースコード
keyword.py
import cotohappy

coy = cotohappy.API()
keyword_li = coy.keyword("オリンピックの開催まであと242日") 
for keyword in keyword_li:
    print(keyword)

出力
242日    12.97184
オリンピック     7.0874
開催     5.84348

類似度判定

二つの文の類似度判定して情報を列挙してくれます。

類似度判定のソースコード
similarity.py
import cotohappy

coy = cotohappy.API()
similarity = coy.similarity("最近咳が止まらない", "熱がある") 
print(similarity)

出力
0.5262752

文タイプ判定

発話行為のタイプを判定して情報を列挙してくれます。

文タイプ判定のソースコード
sentence_type.py
import cotohappy

coy = cotohappy.API()
sentence_type = coy.sentence_type("体調はいかがですか?") 
print(sentence_type)

出力
interrogative    information-seeking,*,*,*,*

ユーザ属性推定

文章からユーザーの年代などの情報を推定して列挙してくれます。

ユーザ属性推定のソースコード
user_attribute.py
import cotohappy

coy = cotohappy.API()
user_attribute = coy.user_attribute("俺は田町駅で飲みに行ったら奥さんに怒られた。") 
print(user_attribute)

出力
60歳以上,*,*,男性,*,*,*,*,*,*,*,ANIMAL,CAMERA,COOKING,FISHING,FORTUNE,*,*

言い淀み除去

文章の言いよどみを除去して列挙してくれます。

言い淀み除去のソースコード
remove_filler.py
import cotohappy

coy = cotohappy.API()
remove_filler_li = coy.remove_filler("えーっと、それでは今からプレゼンを、始めさせていただこうかと思います") 
for remove_filler in remove_filler_li:
    print(remove_filler)

出力
えーっと、それでは今からプレゼンを、始めさせていただこうかと思います     
それでは今からプレゼンを、始めさせていただこう かと思います

音声認識誤り検知

音声認識の誤りを検知して列挙してくれます。

音声認識誤り検知のソースコード
detect_misrecognition.py
import cotohappy

coy = cotohappy.API()
detect_misrecognition = coy.detect_misrecognition("温泉入力は誤認識を起こす")
for candidate in detect_misrecognition.candidates:
    print(candidate)

出力
温泉     0,2,0.9999975896797001,音声,おんせい,混線,モンセン,厭戦

感情分析

感情語を抽出して列挙してくれます。

感情分析のソースコード
sentiment.py
import cotohappy

coy = cotohappy.API()
sentiment = coy.sentiment("花子さんは泣き虫だ")
emotional_phrase_li = sentiment.emotional_phrase
for emotional_phrase in emotional_phrase_li:
    print(emotional_phrase)

出力
泣き虫だ         N,*,*,*,*

まとめ

  • よくわからなくてもAPIを使える(APIを叩くとか意識しなくていい)
  • 要約APIがあるらしいけど、cotohappyは対応してない
  • versionが3.7~なのでcolaboratoryで動かない
  • 出力まで0.3秒くらい
  • APIが10個もあって大変だった
10
3
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
10
3