備忘録 blog

Docker/Machine Learning/Linux

英文要約が欲しい

はじめに

要約の取得方法として、自然言語処理的な手法を用いて行いたいと考えた時、そのやり方は抽出型と生成型に分類できる。抽出型はそのものずばり、文集合のなかから要約に相当する文を抽出する手法である。たとえば、LexRank等の手法を使って、文のなかでグラフ構造を構築して代表となる文を抽出する、というやり方が考えられる。これに対して生成型は、要約となるような文を生成するモデルである。

多くのユースケースでは抽出型があれば十分だろう。例えばしかし1文自体が長かったり、格調高かったりすると、もう少し要約した文が欲しくなる場合がある。OPENAI は そうしたAPIのβ版を公開しており、例えばtl;dr 要約であったり、小学2年生でもわかるような文に要約するといったことを対話的に行うことが可能である。

実際に試してみると、tl;dr 要約だと基本的には1行要約になってしまって短すぎる、小学2年生でもわかるような文は語彙が簡単になりすぎるので、嬉しくない場合がある。では例えば小学6年生でわかるような文レベルで要約してくれるかというと、同じ文が連続して出力されたりするなど、ディープラーニング特有の解釈が難しい挙動のために実際はうまくかないこともある。

openai.com

そこでここでは、三行要約ぐらいの量の要約を得ることを目指して、無料で試せる範囲で、英文要約を試みてみたいと思う。

Transformers を試す

Python で使える Transformers というライブラリは、様々な自然言語処理のモデルが統一的なインターフェース上で利用可能な形で提供している。GoogleのT5(Text-to-text Transfer Transformer) モデルには、要約する機能が付いているので、それを利用してみたい。 ここで、適当に英語の論文を突っ込んでみたいと思う。今回要約のために利用した論文は以下のものである。

arxiv.org

!pip install transformers -U
from transformers import pipeline

summarizer = pipeline("summarization", model="t5-base", tokenizer="t5-base", framework="tf")

text = '''
<ここにアブストラクトを入れる>
'''
summarizer(text, min_length=25, max_length=150)
summarizer(text, min_length=200, max_length=300)

max_length パラメータを変えることで、出力される要約の量を調節することができる。500 words を越えるような文を要約しようとすると warning メッセージが表示されるので、それより短い単語量の文を入れることが推奨される。

1行目の場合の出力は以下であった。

attention mechanisms play a central role in recurrent neural network (RNN) models . a recent paper claims that attention is not explanation' . we propose four alternative tests to determine when/whether attention can be used as explanation .

大文字小文字のルールがおかしくなっているというのが気になるところであるが、文が選択され、それが一部縮約された形で表現されている。しかしこれはたまに問題があって、縮約前と縮約後で文意が代わってしまうことがある。たとえば、主語に対する限定修飾が抜けてしまって主語がクソデカになってしまう、といった場合が観測される(ここではそうした問題は発生していないが)。

しかし、2行目の場合(min_length=200にした場合)の出力は以下のようになっている。

attention mechanisms play a central role in NLP systems, especially within recurrent neural network (RNN) models . a recent paper claims that Attention is not Explanation\' . we propose four alternative tests to determine when/whether attention can be used as explanation . the results show that even when reliable adversarial distributions can be found, they don\'t perform well on the simple diagnostic - indicating that prior work does not disprove the usefulness of attention mechanisms for explainability, we show versiune . n s - \xad - n s " -- . .- s. ss s- .. n. .s ns -s . "

途中まではまともそうな文章にみえるが、途中から出力が意味を成さない文字列になっており、残念な感じになっている。存在しない単語までも出力されるようになってしまっている。

まとめと課題

Transformer ライブラリを用いて英文要約を試みた。出力が短いような場合では、うまくいく例もあるが、たまに挙動がおかしくなることがあるので注意も必要である。

論文であれば、アブストラクトを要約する必要はあまりない。本文は要約したいこともあるが、あまり長いとこのモデルに突っ込むことが難しくなる。そもそも、良い論文であれば各パラグラフの先頭の文を飛ばし読みすれば、それがだいたいの要約になっているということを期待しても良いはずであるが、それよりも”良い”要約がそもそも何であるか、というのは、まだ残された解決すべき問題である。個人的には、何らかの構造(起承転結など)があるのであれば、それを抜き出すという要約は期待したい気がする。あるいは、日本語話者として欲しいのは単なる全文翻訳かもしれない。