「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行まとめの動作確認の説明でした。