「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で次のように要約されます。
(※見やすいように改行しています)
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の新しい顔 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によるテキスト要約の動作確認の説明でした。