はじめに
社会人は日々つらいことが多く、twitterをはじめとするSNSで嘆きたくなることも多いと思います。
ただ、ネガティブな発言は周りの人を不快にさせてしまうことがあるため、代わりに__「にゃーん」__と呟いて周りを和ませたりします。
これを__社会性フィルター__といいます。
今回はこの社会性フィルターを実装していきたいと思います。
![図です](https://pbs.twimg.com/media/CqXNP7XUMAEg_HT?format=jpg&name=small) — 4869 (@sh4869sh) 2016年8月21日
実装方針
COTOHA APIの__感情分析API__を使っていきます。
感情分析APIは、__文章のPositive/Negative/Neutral__を返し、感情語が含まれれば感情語と感情を返します。
文章がNegativeである場合には、文章を「にゃーん」にします。
また、Negativeであろう単語が含まれる場合には、文章全体がPositiveであろうと「にゃーん」にする厳しいモードも作成します。
ソースコード
すぐ動かせるcolaboratoryのコードはこちらから。
ソースコードはこちら
必要なものをインポート
import sys
import requests
tokenを取得する関数
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 sentiment(access_token, sentence):
base_url = BASE_URL
headers = {
"Content-Type": "application/json",
"charset": "UTF-8",
"Authorization": "Bearer {}".format(access_token)
}
data = {
"sentence": sentence,
"type": "kuzure"
}
r = requests.post(base_url + "v1/sentiment",
headers=headers,
data=json.dumps(data))
return r
社会性フィルター
def social_filter(sentence, response, filter_level="low"):
result = response.json()["result"]
negative_list = ["悲しい", "不安", "恥ずかしい", "嫌", "切ない", "N"]
if result["sentiment"] == "Negative":
return "にゃーん"
else:
if filter_level == "high":
if len([line for line in result["emotional_phrase"] if line["emotion"] in negative_list]) == 0:
return sentence
else:
return "にゃーん"
else:
return sentence
社会性フィルターにかける
args = sys.argv
sentence = args[1]
response = sentiment(access_token, sentence)
social_filter(sentence, response, args[2])
実行結果
python social_filter.py "毎日会社と家の往復でしんどい・・・" low
'にゃーん'
フィルターのレベルが低いと、ポジティブな表現が多いときに取りこぼしてしまう
python social_filter.py "学生の頃は毎日がバラ色で、何もなくても最高に楽しかった。でも今はつらい" low
'学生の頃は毎日がバラ色で、何もなくても最高に楽しかった。でも今はつらい'
フィルターのレベルをあげることで対処できる。
python social_filter.py "学生の頃は毎日がバラ色で、何もなくても最高に楽しかった。でも今はつらい" high
'にゃーん'
まとめ
今回はCOTOHA APIを使うことで、簡単に社会性フィルターの実装を行いました。
普段のツイートがネガティブなのか、「にゃーん」と呟いたほうがいいのか迷ったときにお使いください。