0. 関連記事
n番煎じ
1. 背景
プレゼント企画 を知ったため.
個人的にテキスト解析を前々からやろうとは思っていたため, これを機に決意.
とはいえ, 調べてみると公式からの各種言語に対応したAPIは出されていなかった.(この記事 の作者さんの所属がNTTっぽいのでもしかしたらこれが公式説はあったりする)
そこで, 勉強がてら作ってみる.
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
- まずCOTOHA API for Developersに無料登録
- 以下のコマンドを実行
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": ""
}
アカウントホームに行くと以下のページが出てくるため, それをもとに設定してください. 対応表を下につけておきます.
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. 今後の予定
何か作ったやつを出したい
あるいは説明していない機能について説明したい