はじめに
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
{
"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以外を表示する場合は少しだけ長くなります。
形態素解析のソースコード
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取得のソースコード
import cotohappy
coy = cotohappy.API()
parse_li = coy.parse("すもももももももものうち")
for parse in parse_li:
print(parse.form)
すももも
ももも
ももの
うち
固有表現抽出
coy.ne
に書き換えるだけです。
固有表現があれば、抽出して情報を列挙してくれます。
固有表現抽出のソースコード
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
照応解析
照応関係があれば、抽出して情報を列挙してくれます。
照応解析のソースコード
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
キーワード抽出
重要なキーワードを抽出して情報を列挙してくれます。
キーワード抽出のソースコード
import cotohappy
coy = cotohappy.API()
keyword_li = coy.keyword("オリンピックの開催まであと242日")
for keyword in keyword_li:
print(keyword)
242日 12.97184
オリンピック 7.0874
開催 5.84348
類似度判定
二つの文の類似度判定して情報を列挙してくれます。
類似度判定のソースコード
import cotohappy
coy = cotohappy.API()
similarity = coy.similarity("最近咳が止まらない", "熱がある")
print(similarity)
0.5262752
文タイプ判定
発話行為のタイプを判定して情報を列挙してくれます。
文タイプ判定のソースコード
import cotohappy
coy = cotohappy.API()
sentence_type = coy.sentence_type("体調はいかがですか?")
print(sentence_type)
interrogative information-seeking,*,*,*,*
ユーザ属性推定
文章からユーザーの年代などの情報を推定して列挙してくれます。
ユーザ属性推定のソースコード
import cotohappy
coy = cotohappy.API()
user_attribute = coy.user_attribute("俺は田町駅で飲みに行ったら奥さんに怒られた。")
print(user_attribute)
60歳以上,*,*,男性,*,*,*,*,*,*,*,ANIMAL,CAMERA,COOKING,FISHING,FORTUNE,*,*
言い淀み除去
文章の言いよどみを除去して列挙してくれます。
言い淀み除去のソースコード
import cotohappy
coy = cotohappy.API()
remove_filler_li = coy.remove_filler("えーっと、それでは今からプレゼンを、始めさせていただこうかと思います")
for remove_filler in remove_filler_li:
print(remove_filler)
えーっと、それでは今からプレゼンを、始めさせていただこうかと思います
それでは今からプレゼンを、始めさせていただこう かと思います
音声認識誤り検知
音声認識の誤りを検知して列挙してくれます。
音声認識誤り検知のソースコード
import cotohappy
coy = cotohappy.API()
detect_misrecognition = coy.detect_misrecognition("温泉入力は誤認識を起こす")
for candidate in detect_misrecognition.candidates:
print(candidate)
温泉 0,2,0.9999975896797001,音声,おんせい,混線,モンセン,厭戦
感情分析
感情語を抽出して列挙してくれます。
感情分析のソースコード
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個もあって大変だった