2018-10-24に更新

A3RTとユーザーローカルの文章の自動要約を試してみた

先日ユーザーローカルが文章の自動要約ツールを公開しました。また、リクルートテクノロジーズが公開しているAI群であるA3RTにText Summarization APIという文章の自動要約APIがあります。それらを実際に使って文章の要約を試してみました。

自動要約 無料ツール by ユーザーローカル

Text Summarization API|PRODUCT|A3RT

ユーザーローカルの自動要約

こちらはAPIではなく、ブラウザ上で使う自動要約ツールとなっています。実際に下記の文章多めの記事で試してみました。コードは削除して試しています。

bosyuの募集一覧を勝手に作ってみた(機械学習解説付き) - Crieit

結果は下記のようになりました。

3行ダイジェスト

この機能はそのままクラス分類( Classification )というらしいです。 
ひとつのカテゴリにいくつでもキーワードを設定できるようにしました。 
分類されないものは全部「その他」カテゴリに入れています。

10行ダイジェスト

bo sy u. me の一覧ページを作成してみました。 
応募が来るとサービス上で簡単一覧できる便利なサービスです。 
(カテゴリの自動分類方法詳細は後述)、環境 
機械学習によるカテゴリの自動分類、サービスの肝です。 
この機能はそのままクラス分類( Classification )というらしいです。 
Watson Natural Language Classifier (自然言語分類) 
facebookresearch / fastText : Library for fast text representation and classification 
ひとつのカテゴリにいくつでもキーワードを設定できるようにしました。 
非常に的確にカテゴリ分類ができるようになりました。 
分類されないものは全部「その他」カテゴリに入れています。

どちらもいまいちではありますが、10行の方は多少それっぽくは見えます。

ユーザーローカルの自動要約は3行、5行、10行から選べるため一番それっぽいものを選ぶことができます。また、文章のどのあたりが重要な部分か、というのをマーカーやヒートマップで確認する機能もあるので、参考になります。

ただ、重要な部分を使って自動要約を行っているので、人間が作る要約とは違い文章の開始と終了が不自然だったりします。今回の3行の方等もそんな感じですね。

また、こちらは結果表示画面に精度向上のためのアンケートがあるので、無料で公開するかわりにみんなで協力してデータを集めて精度を高める実験中、という感じがします。

A3RTの自動要約

A3RTの方はText Summarization APIといって、プログラムから実行できるようなAPIとなっています。こちらは下記のような制限があります。

要約できる1文の最大文字数は200文字、且つ最大文章数は10です。

ということで、そのままでは長文には使えないので、記事の本文を上記に合うように区切って、それぞれを自動要約してくっつけることで試してみました。

bosyu.meの募集一覧ただ、ただほんとに一覧するだけだとTwitter上で#bosyuというハッシュタグを使って見ればいいだけなので、独自の機能としてカテゴリ分類機能を追加し、カテゴリ毎の募集を見られるようにしてみました。
8ce5b9af-16f5-d75a-536d-b62a6e57971e.pngカテゴリは選択たらすぐに画面が切り替わるのですが、Date Pickerはどうも選択時のcallbackが無いようだったので、仕方なく検索ボタンを押してもらう形にしました。
Google Cloud Natural Language APIGoogle Cloud Natural LanguageとりあえずGoogleなら何かあるだろ、と思って調べたら全くそのままのものがありました。
機能的にはこれで問題なかったのですが、とりあえず最初にGoogleのAPIを知ってしまったので学習が要らないAPIを引き続き探しました。
色々探しましたがGoogleのもののように良い感じに最初からカテゴリ分けされてるっぽいものはなさそうですし、ツイートであれば学習データを集めるのは特に難しいことではないし、学習させるというのも大事なことだと思ったためです。
ツイートなので文章が全体的に短すぎるのか、何時間かしかかけずに集めたデータが少なすぎたのか、おかしなカテゴリに入ってしまうものが多発しました。こういう場合にはわざわざ機械学習を導入せず、シンプルな方法を選択することも必要な場面はあると思います。

変な感じにはなっていますが、これは前述の通り適当な仕様で自動要約しているので、多分その作り方に問題がありそうです。長文の場合はもうちょっと考えて実装しないといけなそうですね。もしくはA3RT自体が対応してくれないと厳しいかもしれません。

こちらも要約後の文章数は指定できるので、いくつか出力して一番良いものを選ぶことはできそうです。

今回試しに作ったプログラムは下記で操作できるものを公開しています。

A3RT Text Summarization API Sample

プログラムはGitHubに公開しています。(最短で動作するように作ったので適当です)

dala00/a3rt-text-summarization-sample

まとめ

どちらの自動要約も十分なものか、と言われると微妙ですが、とりあえず大量に要約文を作りたい、という場合には良さそうです。ユーザーローカルは多分そのうち有料でもっと精度の高いAPIが実装されるのではないかと思いますが、A3RTであればなぜかはわかりませんが無料ですので、必要に応じて使っていくことは可能です。

今のところどちらも機能的に制約がありますが、機会があればぜひ試してみてください。


dala00

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年程。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel5, CakePHP3, JavaScript, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, Vue等色々

Crieitはαバージョンで開発中です。進捗は公式Twitterアカウントをフォローして確認してください。 興味がある方は是非記事の投稿もお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
関連記事

コメント