これはなんの記事?
COTOHA APIの新API(言い淀み除去API / 感情分析API)紹介・実践記事です。
NTTコミュニケーションズ Advent Calendar 2018 20日目の投稿でもあります。
いよいよ大詰めですね。
はじめに
みなさん自然言語してますか?
前回、COTOHA APIのチュートリアル的な記事を書きましたが、今回は打って変わって新作情報のリークです。
この記事を書いている現在のCOTOHA APIの提供APIラインナップは以下になります。(2018年12月時点)
- 構文解析
- 固有表現抽出
- 照応解析
- キーワード抽出
- 類似度算出
- 文タイプ判定
- ユーザ属性推定
リリースから半年、上記7つのAPIを皆様にお届けしてきましたが、来年頭に新たなAPIがCOTOHA APIファミリーに加わります。
今回紹介する新メンバーは以下の2人です!
- 言い淀み除去
- 感情分析
この記事では両APIについて、実際のリクエストを交えながら紹介していきたいと思います。
言い淀み除去
名前の通り、入力されたテキストから言い淀みを除去してくれるAPIです。
察しの言い方はお気づきかもしれませんが、このAPIは今までのAPIとは少し毛色が違います。
現在提供しているAPIは、テキスト解析や対話への利用を想定して作られていますが、このAPIは音声認識のサポートを主目的としているのです!
音声認識APIとしては以下のサービス達が有名でしょうか。
- Google Cloud Platform: Cloud Speech-to-Text
- Amazon Web Service: Amazon Transcribe
- Microsoft Azure: Speech Services
- IBM Watson: Speech to Text
いつかはCOTOHA APIでも音声認識をしてみたいですね。
(現在COTOHA APIでは音声認識機能を提供しておりません)
それはさておき、COTOHA APIでも音声認識サービスと組み合わせて、音声から情報を取得しようとするユースケースが存在します。
そのような中、実際に音声認識を利用する上で、困ることがありました。
それが言い淀みです。
利用する音声認識サービスにもよりますが、生成後のテキストに「あー」や「えっと」などの言い淀みが含まれていることが多々あります。
これらは、会話的に意味の薄いフレーズとなり、後段の処理の際にノイズとなってしまうケースが散見されています。
このような状況を打破すべく考案されたのが、この言い淀み除去APIです!
では実際に実行例のイメージを見てみましょう。
今回は、Google Cloud Platform: Cloud Speech-to-Textで音声認識したテキストを使わせていただきました。
$ curl -X POST \
> https://api.ce-cotoha.com/api/nlp/beta/remove_filler \
> -H 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
> -H 'Content-Type: application/json' \
> -d '{
> "text":"はいそれでは録音を始めますえーと言い澱み検出 API は発話の中の言い澱みをこう削除してくれると言ったような API にそのなっております以上です",
> "do_segment":true
> }'
{
"result": [
{
"normalized_sentence": "はい、それでは録音を始めます。",
"fixed_sentence": "はい、それでは録音を始めます。"
},
{
"normalized_sentence": "えーと言い、澱み検出 api は発話の中の言い澱みをこう削除してくれると言ったような api にそのなっております。",
"fixed_sentence": "言い澱み検出 api は発話の中の言い澱みを削除してくれると言ったような api になっております。"
},
{
"normalized_sentence": "以上です。",
"fixed_sentence": "以上です。"
}
],
"status": 0,
"message": "OK"
}
色々出ていますが、ざっくりと解説します。
入力は、音声認識されたテキストです。
具体的な入力文は以下ですね。
"はいそれでは録音を始めますえーと言い澱み検出 API は発話の中の言い澱みをこう削除してくれると言ったような API にそのなっております以上です"
更にリクエストパラメータとして、"do_segment":true
としてあげることで、入力文を句読点で分割した後に処理を行ってくれます。
現在世に出ている音声認識サービスは、出力時に句読点を付けてくれないものも数多く存在します。
しかしながら、自然言語処理を行う際に必要な句読点がついていないと、精度が下がってしまう危険性があります。
そのような背景から、言い淀み検出APIでは"do_segment"
の存在が非常に重要になっています。
解析結果は文ごとに出力され、入力文を正規化したもの、言い淀みを除去したもの、が得られます。
今回の出力結果をまとめると、
"はい、それでは録音を始めます。言い澱み検出 api は発話の中の言い澱みを削除してくれると言ったような api になっております。以上です。"
となります。
いい感じに句読点がついて言い淀みが削除できていますね!
感情分析
こちらも名前の通りですね。
入力テキストの感情分析を行うAPIです。
実は開発中にセンチメント分析と感情分析で名前について揉めた時期がありました。
感情はそんなに単純なものじゃないらしいです。
しかし、結局感情分析になりました。
わかりやすさ重視ですね。
閑話休題、以下が感情分析のリクエスト・レスポンスイメージです。
$ curl -X POST \
> https://api.ce-cotoha.com/api/nlp/v1/sentiment \
> -H 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
> -H 'Content-Type: application/json' \
> -d '{
> "sentence":"我が世の春を謳歌する。"
> }'
{
"result": {
"sentiment": "Positive",
"score": 0.15528858565366763,
"emotional_phrase": [
{
"form": "謳歌する",
"emotion": "喜ぶ"
}
]
},
"status": 0,
"message": "OK"
}
入力は、感情を分析したい自然文です。
従来のAPIと同じようなフォーマットですね。
出力は、文のポジネガ判定結果("sentiment"
)とそのスコア("score"
)。
さらに、文中の感情フレーズ("emotional_phrase"
)まで引っ張ってきてくれています。
上記の例"我が世の春を謳歌する"
だと、"謳歌する"
が幸福感などを表すポジティブフレーズとして認識され、文全体もややポジティブになっていることがわかります。
別の例も試してみましょう。
$ curl -X POST \
> https://api.ce-cotoha.com/api/nlp/v1/sentiment \
> -H 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
> -H 'Content-Type: application/json' \
> -d '{
> "sentence":"どうなるかと心配だったが、思いの外悪くない結果になった。"
> }'
{
"result": {
"sentiment": "Positive",
"score": 0.41137035923173715,
"emotional_phrase": [
{
"form": "思いの外",
"emotion": "驚く"
},
{
"form": "心配だった",
"emotion": "PN"
},
{
"form": "思いの外悪くない",
"emotion": "P"
}
]
},
"status": 0,
"message": "OK"
}
"思いの外"
、"心配だった"
、"思いの外悪くない"
といった感情フレーズが取れてますね。
中でも、"思いの外悪くない"
をポジティブとしてとってこれているのはいい感じですね。
文全体もそこそこポジティブな文と解析できています。
感情は人によって曖昧なものですが、大多数の方に納得いただける結果になっているのではないでしょうか。
おわりに
以上、言いよどみ除去APIと感情分析APIについて実際のリクエスト例も交えながら説明してきました。
正直まだ開発中なので、リリース時には仕様が変わってたりする可能性もありますが、雰囲気だけでも味わっていただければこの記事も浮かばれることでしょう。
(現在も鋭意モデル更新中なので、出力例はほぼ間違いなく変わると思われます)
詳しいリリース時期などが決まりましたら、COTOHA APIポータルサイトにてお伝えいたしますので、期待して待っていてください。
[P.S.]
明日は別のアドベントカレンダーにCOTOHA APIを使ってゲーム作ってみた的な記事を投稿予定なので、是非そちらも読んでみてください!