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

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

「Pythonで英語の長文を自動要約したい」
「英語ページの情報収集を効率的に行いたい」

このような場合は、Googleが発表した文章要約モデルPegasusを利用しましょう。

本記事の内容

  • Pegasusとは?
  • Pegasusによるテキスト要約のシステム要件
  • Pegasusによるテキスト要約の動作確認

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

Pegasusとは?

Pegasusは、Transformerベースのモデルです。
Pegasusを用いれば、抽象型の文章要約を行うことが可能になります。

抽象型であるため、新たに文章を作成します。
その点では、抽出型の文章要約よりも複雑な処理を行います。

言葉で抽象型と言ってもイメージが掴みにくいと思います。
実際に、Pegasusでできることを確認しましょう。

You Don’t Really Need to Upgrade to Windows 11, but It’s Good
https://gizmodo.com/you-dont-really-need-to-upgrade-to-windows-11-but-its-1847779289

上記は、長文の英語記事です。
どれくらい長文であるのかは、実際に各自で確認してみてください。

その長文が、Pegasusで次のように要約されます。
(※見やすいように改行しています)

(Thankfully, you can still left-align the Windows 11 Taskbar just by going to the Personalization menu and scrolling down to the Taskbar section.)
In short, the upgrade to Windows 11 is a bit of an adventure, but so far, it’s been a relatively rewarding one because quite frankly, a lot of changes in Windows 11 were long overdue.
A Fresh Face for Windows One of the biggest reservations a lot of longtime Windows users have about Windows 11 is that it looks too much like macOS, and they’re not entirely off base.

日本語の訳文(DeepL翻訳)を載せておきます。

(ありがたいことに、Windows 11のタスクバーを左寄せにするには、「個人設定」メニューを開き、「タスクバー」セクションまでスクロールしてください)。)
要するに、Windows 11へのアップグレードはちょっとした冒険ですが、今のところ、比較的やりがいのあるものになっています。というのも、率直に言って、Windows 11の多くの変更は長い間待ち望まれていたものだからです。
Windowsの新しい顔 Windows 11について、長年のWindowsユーザーの多くが懸念しているのは、macOSに似すぎているということですが、それはあながち的外れではありません。

要約を見るだけで、Windows 11の雰囲気は掴めそうです。
個人的には、macOSに似ているのは知りませんでした。

Pegasusの精度に関しては、まだまだというところがあるでしょう。
しかし、英語の長文を読む際の参考にはなりそうです。

以上、Pegasusについて説明しました。
次は、Pegasusによるテキスト要約のシステム要件を確認します。

Pegasusによるテキスト要約のシステム要件

Pegasusによるテキスト要約のシステム要件は、以下。

  • PyTorch
  • Transformers
  • SentencePiece

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

PyTorch

Transformersを動かすには、機械学習のフレームワークが必要となります。
PyTorchかTensorflowかの二択になることが多いでしょう。

Pegasusモデルに関して言えば、どちらでも動きます。
ただ、個人的には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

ただし、これはこのまま使うのはNG。
上記記事をもとに、各自の環境にあったインストールコマンドを用意しましょう。

Transformers

自然言語処理と言えば、Transformersとなりつつあります。
2021年10月時点では、Transformersにおいて17,460個のモデルが公開されています。

モデルに加えて、データセットも公開しているようです。
もう、TransformersはNLPのプラットフォームであると言えますね。

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

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

pip install transformers

SentencePiece

SentencePieceは、簡単に言うとトークナイザーです。
字句解析を行います。

SentencePieceについては、次の記事でまとめています。
インストール方法についても説明しています。

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

pip install sentencepiece

以上、Pegasusによるテキスト要約のシステム要件を説明しました。
最後に、Pegasusによるテキスト要約の動作確認を行います。

Pegasusによるテキスト要約の動作確認

動作確認を行う前に、長文の英語テキストを用意します。

今回は、上記で触れた次の記事内容をコピーしてinput.txtに保存。
「You Don’t Really Need to Upgrade to Windows 11, but It’s Good」

では、動作確認を行っていきます。
動作確認が可能なコードは、以下となります。

from transformers import PegasusForConditionalGeneration, PegasusTokenizer 
import torch 

txt_path = "input.txt" 

src_text = "" 

with open(txt_path, encoding="utf-8") as f: 
    src_text = f.read() 

# モデル読み込み 
model_name = 'google/pegasus-large' 

device = 'cuda' if torch.cuda.is_available() else 'cpu' 
tokenizer = PegasusTokenizer.from_pretrained(model_name) 
model = PegasusForConditionalGeneration.from_pretrained(model_name).to(device) 
batch = tokenizer(src_text, truncation=True, padding='longest', return_tensors="pt").to(device) 
translated = model.generate(**batch) 
tgt_text = tokenizer.batch_decode(translated, skip_special_tokens=True) 

print(tgt_text)

上記を実行すると、初回だけモデルがダウンロードされます。
注意すべきは、2G越えのデータが存在するということです。

Downloading: 100%|██████████| 2.12G/2.12G [03:22<00:00, 11.3MB/s]

ダウンロードには、時間がそこそこかかります。
もちろん、ディスク容量もその分だけ必要となります。

問題なければ、実行結果が表示されます。
それが、「Pegasusとは?」に記載した次の記事の要約です。

「You Don’t Really Need to Upgrade to Windows 11, but It’s Good」

以上、Pegasusによるテキスト要約の動作確認の説明でした。

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