見出し画像

LangChainチュートリアルメモ4 [LangChain&GPT-3で文章を要約する]

注意:この記事は書きかけの状態で公開しています。

参考(以下のチュートリアルを日本語訳+補足した内容になります。

LangChainのSummarization機能を用いて、ドキュメントを要約します。
要約を行うプログラムの前に、ドキュメントを要約する方法(CombineDocuments Chain)について学ぶ必要があります。

CombineDocuments Chainsについて

CombineDocuments Chainは、複数のドキュメントに対して言語を実行する必要がある場合に便利です。
一般的な使用例としては、

  • 質問応答

  • ソース付き質問応答

  • 要約

などがあります。詳細は、こちらの概要をご覧ください。

https://langchain.readthedocs.io/en/latest/use_cases/combine_docs.html

1.Stuffing

スタッフィングとは,言語モデルに渡すコンテキストとして,プロンプトに関連するデータをすべて詰め込むという最もシンプルな方法です。これはLangChainにStuffDocumentsChainとして実装されています。

長所:LLMへの呼び出しは一度だけ。テキストを生成する際、LLMは一度にすべてのデータにアクセスすることができる。

欠点:ほとんどの LLM はコンテクスト長を持っており、大きなドキュメント(または多くのドキュメント)の場合、コンテクスト長よりも大きなプロンプトになるため、この方法はうまくいかない。

この方法の主な欠点は、小さなデータしか扱えないことです。多くのデータを扱うようになると、この方法はもはや実行不可能になる。次の2つの方法は、この問題に対処するためのものです。

2.Map Reduce

この方法では、データの塊ごとに最初のプロンプトを実行する(要約タスクの場合はその塊の要約、質問応答タスクの場合はその塊のみに基づく回答)。次に、すべての初期出力を結合するために、別のプロンプトが実行される。これはLangChainの中でMapReduceDocumentsChainとして実装されています。

長所:StuffDocumentsChainよりも大きなドキュメント(およびより多くのドキュメント)にスケールすることができる。個々の文書に対するLLMの呼び出しは独立しているため、並列化できる。

短所:StuffDocumentsChainよりも多くのLLMの呼び出しを必要とする。最終的な結合の呼び出しで、一部の情報を失う。

3.Refine

この方法では、最初のデータの塊に対して最初のプロンプトが表示され、何らかの出力が生成される。残りの文書については、その出力が次の文書とともに渡され、LLMに新しい文書に基づいて出力を改良するよう依頼する。

長所:MapReduceDocumentsChainよりも関連性の高いコンテキストを取り込むことができ、損失が少ない可能性がある。

短所:StuffDocumentsChainよりも多くのLLMへの呼び出しを必要とする。また、この呼び出しは独立ではない。つまり、MapReduceDocumentsChainのように並列化することはできない。また、ドキュメントの順序に依存する可能性もある。

4.Map-Rerank

この方法では、各データチャンクに対して初期プロンプトを実行し、タスクを完了させようとするだけでなく、その答えがどの程度確かであるかをスコアで示します。そして、このスコアに従って回答がランク付けされ、最も高いスコアが返されます。

長所:MapReduceDocumentsChainと同様の長所。MapReduceDocumentsChainと比較すると、呼び出し回数が少ない。

短所:ドキュメント間の情報を結合することができない。つまり、1つのドキュメントに1つの単純な答えがあると予想される場合に最も有効である。

Stuffingを用いて文章を要約してみる

1.サンプル

今回は、Apple創業者、スティーブ・ジョブズ氏の2005年の演説字幕をYoutubeにて取得し、サンプルとして用いました。
サンプルは公開しておりますので、以下よりダウンロードすることが可能です。


2.コード

from langchain import OpenAI, PromptTemplate, LLMChain
from langchain.text_splitter import CharacterTextSplitter
from langchain.chains.mapreduce import MapReduceChain
from langchain.docstore.document import Document
from langchain.chains.summarize import load_summarize_chain

import os
os.environ["OPENAI_API_KEY"] = "..."

llm = OpenAI(temperature=0)

text_splitter = CharacterTextSplitter()

#要約するファイルを開く
with open('text_model_ENG.txt') as f:
    state_of_the_union = f.read()

texts = text_splitter.split_text(state_of_the_union)
docs = [Document(page_content=t) for t in texts[:3]]

chain = load_summarize_chain(llm, chain_type="stuff")
print(chain.run(docs))

3.出力結果

Steve Jobs, the co-founder of Apple, gave a commencement address at Stanford University in 2005. He shared three stories from his life, including his decision to drop out of college, his firing from Apple, and his battle with cancer. He encouraged the graduates to find what they love, to not settle, and to stay hungry and foolish.

DeepL
アップルの共同創業者であるスティーブ・ジョブズは、2005年にスタンフォード大学の卒業式で講演を行った。大学を中退したこと、アップルを解雇されたこと、ガンとの闘いなど、人生の3つのエピソードを披露した。そして、「好きなことを見つけること」「妥協しないこと」「ハングリーであること」「愚直であること」を卒業生に呼びかけました。

ChatGPTで要約した内容と比較してみる

1.ChatGPT

In his 2005 Stanford Commencement Address, Steve Jobs talked about his life and the importance of following one's passion and intuition. He dropped out of college after six months because he couldn't see the value in it and wasn't sure what he wanted to do with his life. However, he continued to attend classes that interested him, and one of these classes, calligraphy, ended up influencing the design of the Macintosh computer a decade later. Jobs also talked about the ups and downs of his career, including being fired from Apple, the company he co-founded. Despite this setback, Jobs found success again by following his passion and intuition. The message he conveyed was to trust that the dots will connect in the future, to have the confidence to follow one's heart, and to believe in something greater.

DeepL
スティーブ・ジョブズは、2005年のスタンフォード大学卒業式の講演で、自分の人生と、情熱と直感に従うことの大切さについて語りました。彼は、大学に価値を見出せず、自分の人生をどうしたいのかがわからなくなり、半年で大学を中退した。しかし、興味のある授業には参加し続け、その中の一つであるカリグラフィーは、10年後のマッキントッシュ・コンピュータのデザインに影響を与えることになった。また、共同設立したアップル社を解雇されるなど、キャリアの浮き沈みについても語られました。しかし、ジョブズは自分の情熱と直感に従うことで、再び成功を手に入れたのです。点と点がつながっていくことを信じること、自分の心に従う自信を持つこと、そして、より大きなものを信じることが、ジョブズからのメッセージです。

2.Stuffing

Steve Jobs, the co-founder of Apple, gave a commencement address at Stanford University in 2005. He shared three stories from his life, including his decision to drop out of college, his firing from Apple, and his battle with cancer. He encouraged the graduates to find what they love, to not settle, and to stay hungry and foolish.

DeepL
アップルの共同創業者であるスティーブ・ジョブズは、2005年にスタンフォード大学の卒業式で講演を行った。大学を中退したこと、アップルを解雇されたこと、ガンとの闘いなど、人生の3つのエピソードを披露した。そして、「好きなことを見つけること」「妥協しないこと」「ハングリーであること」「愚直であること」を卒業生に呼びかけました。


この記事が気に入ったらサポートをしてみませんか?