短文ニュースを作るAIの作成

短文ニュースを作るAIの作成の概要

深層学習を用いることでニュース本文からタイトルを自動生成することが出来ました。

前振り

以前にニュースサイト向けに原稿からタイトルを作れないか?という案件に携わることがありました。

そこで既存の手法について調べていたところ、朝日新聞がすでに似たような技術に着手していることが分かりました。

まあ、よそ様はよそ様。技術的に実現可能なことが分かったので自分でも作ってみることにしました。

技術的な詳細は商売の種なので関連するリンクを漁ってみたところで有用な情報は見当たりませんでした。同じようなニュース記事が見つかるばかりです。

調査

しかしまだ諦めるには早すぎます。

実用のレベルに達しているのであれば、当然のことながら研究のレベルはとうの昔に過ぎている筈です。ということは研究論文を調べるとヒットする可能性があります。

そして研究論文は、特に情報技術系統はGoogleScholarで検索すればPDFが容易にヒットする時代です。

個人的にはGoogleScholarよりもsemantic scholar の方が関連ワードや引用元へのアクセスが容易いのでこちらを主に利用しています。https://www.semanticscholar.org/

適当に"自然言語処理+要約"あたりでサクサクと検索したところ、


などが見つかりました。

これらの手法の骨子としては言語モデルに自動翻訳をさせる要領で、ニュース本文とタイトルの対を学習させるようです。

どうやら研究の方向性はタイトルの生成から、そこに文字数の制約を設けるところまで至っているようです。

おそらく文字数の制約という問題設定は表意文字の文化圏で強く顕在化しており、英語を対象とした論文は見つけられませんでした。

そうとなれば後は、教師データを集めて、モデルを記述し、計算機にかけるだけです。

れっつ どぅーいっと

実験

教師データは約二万対のニュース本文とタイトルを用意しました。

モデルはAlbertを参考に多段transformerを用ました。

これはアテンションによる深層学習系のモデルのため、学習にはGPUやTPUを必要とします。

元論文と同様にRNN系のモデルを用いてもよかったが、最近の流行はtransformer系統なのでこちらを用いました。

文献をいくつか読んだ限りでは計算効率や性能面もこちらの方がよさそうです。

環境の良さからpython/pytorchを用いました。道具が整備されており、車輪の再発明をせずに済み、記述が楽で素晴らしいです。

GPU 11GB*2*5days で途中経過を観察したところ、 数時間程度で出力結果は収束していました。

結果としては、まあそれなりに見られるものを出力するところまでは至りました。

文の中にいくつかの場所で不自然なものに置き換わっており、人間からすると不思議な間違い方をする傾向があります。

しかし、出力結果と本文を読めば、後は素人でも多少の修正を加えるだけでも実用に耐えるだろうと考えられます。

考察

トークンごとに意味ベクトルを学習させると、さらに結果が安定しました。といっても目視での評価ですが。

企業名や固有名詞に誤りが含まれるのは、モデルからすると些細な間違いだが、人間からすると大きな間違いとして認識されます。この点においては教師データの量を増やすか、コピーメカニズムをモデルに組み込むかのどちらかで対処するのが良いでしょう。

価格や年度といった数字に対しては非常に脆弱であることが分かりました。

それは数字の意味を把握するための機構がtransformerモデルには備わっていないので仕方がないことです。質疑応答システムに関する研究では、transformer系統の機構とは別に数字を扱うための別の機構を加えて、一つの大きなシステムを組み上げる手法がリーダーボードの上位を占めていた。なので、数字に弱いという弱点は既知のものなのでしょう。しかし、まだスマートな解決方法が見つかっていないのが正直なところのようです。

まとめ

文章を書くのも、要約するのも同じようなものとして深層学習の文脈では扱えます。

そして深層学習に共通する課題として教師データと学習資源の確保は必須です。

しかし、その点を解決できればそれなり以上の結果も得られます。


私にカフェオレを飲ませるためにサポートしてみませんか?