T5によるテキスト要約【Python・Transformers】

T5によるテキスト要約【Python・Transformers】 機械学習

「Pythonでテキスト要約を気軽に試したい」
「英語ページの情報収集を効率的に行いたい」

このような場合は、「T5 One Line Summary」の利用を考えてみましょう。
テキストの自動要約を行う上では、非常にハードルが低いです。

本記事の内容

  • T5 One Line Summaryとは?
  • T5による1行まとめのシステム要件
  • T5による1行まとめの動作確認

それでは、上記にそって解説していきます。

T5 One Line Summary

T5 One Line Summary
https://huggingface.co/snrspeaks/t5-one-line-summary

T5 One Line Summaryとは、370,000の研究論文を対象に学習されたT5モデルのことです。
このモデルを使えば、論文の内容や要旨を1行に要約できます。
もちろん、論文以外のニュースといったものも要約可能です。

また、T5 One Line SummaryはHugging Face社のTransformersライブラリに登録されています。
このことにより、非常に簡単にT5 One Line Summaryを利用できます。

どれくらい簡単であるのかは、後述(動作確認)のコードで確認しましょう。
ここでは、T5 One Line Summaryによる実際の結果を確認しておきます。

「T5による1行まとめ」の精度・レベルを確認する、ということです。

Japanese Cultural Festival Opens in Russia
https://www.nippon.com/en/news/yjj2021100300110/

上記は、適当に見つけた英語のニュースです。
この記事をT5で1行にまとめた結果は、以下となります。

['The 13th annual J-Fest Japanese cultural festival in Russia', 
 'The 13th annual J-Fest Japanese cultural festival in Moscow', 
 'The 13th J-Fest Japanese Cultural Festival in Moscow']

上記では、3つの結果を表示しています。
実際のタイトルは、「Japanese Cultural Festival Opens in Russia」です。

比較してみた結果は、どうでしょうか?
ここでは、良し悪しは置いておいておきます。

それよりも、複数のタイトルが表示されることについてどう感じますか?
個人的には、情報収集が効率的に行えると感じています。

記事の内容を見なくても、次の情報を取得できています。

  • J-Festは今回で13回目である
  • J-Festはモスクワで実施される

これだけで、J-Festについて少し詳しくなれました。

以上、T5 One Line Summaryについて説明しました。
次は、T5による1行まとめを実現するためのシステム要件を確認します。

T5による1行まとめのシステム要件

T5による1行まとめのシステム要件は、以下。
非常にシンプルです。

  • PyTorch
  • Transformers

それぞれを以下で説明します。

PyTorch

Transformersは、PyTorch以外でもインストール可能です。
そして、T5モデルはTensorflowでも問題ありません。

モデルと機械学習フレームワークの対応表
https://huggingface.co/transformers/

ただ、PyTorchをインストールした方が賢明でしょう。
理由は、最も多くのモデルに対応しているからです。

PyTorchのインストールは、次の記事で解説しています。

今回は、次のコマンドでインストールしています。

pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

各自の環境により、コマンドは異なります。
そのため、上記記事を参考に各自の環境に適したコマンドを利用しましょう。

Transformers

Transformersと言えば、自然言語処理です。
そして、Transformersには多くのモデルが対応しています。

Transformersのインストールは、次の記事で説明しています。

次のコマンドでインストールが可能です。

pip install transformers

以上、T5による1行まとめのシステム要件を説明しました。
最後に、T5による1行まとめの動作確認を行います。

T5による1行まとめの動作確認

動作確認が可能なコードは、以下となります。

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer 
import pprint 
# 利用モデル 
model_name = "snrspeaks/t5-one-line-summary" 
abstract = """ 
文字列 
文字列 
文字列 
""" 
model = AutoModelForSeq2SeqLM.from_pretrained(model_name) 
tokenizer = AutoTokenizer.from_pretrained(model_name) 
input_ids = tokenizer.encode("summarize: " + abstract, return_tensors="pt", add_special_tokens=True) 
generated_ids = model.generate(input_ids=input_ids, num_beams=5, max_length=50, repetition_penalty=2.5, 
                               length_penalty=1, early_stopping=True, num_return_sequences=3) 
preds = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True) for g in generated_ids] 
pprint.pprint(preds)

以下にテキストを設定するだけです。

abstract = """ 
文字列 
文字列 
文字列 
"""

もちろん、テキストをtxtファイルに保存して、それを読み込んでもよいでしょう。
たったこれだけのコードで、長文テキストが1行に要約できます。

インストールも簡単です。
そして、コードも簡単と言えます。

以上、T5による1行まとめの動作確認の説明でした。

タイトルとURLをコピーしました