ポンコツエンジニアがAIの力に頼って業務効率化？　OpenAIのGPT-3で、高度な文書要約に挑戦してみる。VS Code + Python 



# OpenAIのGPT-3で、高度な文書要約に挑戦してみる。VS Code + Python + OpenAI

　
業務で裁判所の判例判決を読む機会が増えてきたのですが
ど素人でポンコツエンジニアの自分には、判例判決に書いてあることの意味を全く理解できません。

『あっ、そうだ。 AIに頼ろう。 AIに頼っちゃおう。　AIに解釈の仕方を教えてもらおう。』

そんなわけでOpenAIのGPT-3を使って、高度な文書要約に挑戦してみようと思います。


　

　
OpenAIのGPT-3でどんな要約ができるのか簡潔に知りたい方は
以下をご参考くださいませ。

<details><summary>今回、要約に使用したデータ</summary><div>

出典：https://www.courts.go.jp/app/files/hanrei_jp/341/038341_hanrei.pdf

```
- 1 -
主 文
原判決中，上告人敗訴部分を破棄する。
前項の部分につき，被上告人の控訴を棄却する。
控訴費用及び上告費用は被上告人の負担とする。
理 由
上告代理人宮嵜良一，同堀江亮介の上告受理申立て理由について
１ 本件は，上告人と被上告人との共有に係る不動産から生ずる賃料を被上告人
が単独で取得したとして，上告人が被上告人に不当利得返還請求をしたのに対し，
被上告人が，上記賃料収入のうち上告人に帰属する部分を含め被上告人の不動産所
得に係る収入金額に計上して所得税の確定申告をした結果同税及び市県民税を過大
に支払ったことが事務管理に当たるなどとして，事務管理に基づく費用償還請求権
との相殺を主張して争う事案である。
２ 原審の適法に確定した事実関係の概要等は，次のとおりである。
(1) 上告人と被上告人は兄弟であり，第１審判決別紙物件目録１記載３～５の
各不動産及び同目録２記載の不動産（以下，併せて「本件各不動産」という。）
を，共有持分各２分の１の割合で共有している。
(2) 被上告人は，本件各不動産を第三者に賃貸するなどして管理し，平成元年
１月から同１８年１２月までの間に合計７０９１万１７００円の賃料収入を得た。
被上告人は，平成元年分～同１８年分の所得税の各確定申告において，上記賃料収
入全額を被上告人の不動産所得に係る収入金額として申告をした。
(3) 上記賃料収入の２分の１に当たる３５４５万５８５０円は，本件各不動産
の共有者である上告人に帰属すべきものであったから，上告人は，被上告人に対
- 2 -
し，同額の不当利得返還請求権を取得した。
(4) 他方，被上告人は，本件各不動産に係る固定資産税，修繕費等を支払い，
また，父及び母の相続の際に上告人が負担すべき相続税を納付したことなどによ
り，上告人に対し，事務管理に基づく費用償還請求権等として合計２１５１万２２
９１円の反対債権を取得した。
(5) 上告人の被上告人に対する不当利得返還請求権の額は，上記(4)の反対債権
との相殺の結果，１３９４万３５５９円となった。
３ 原審は，被上告人が本件各不動産に係る賃料収入のうち上告人に帰属する部
分を含めて被上告人の不動産所得に係る収入金額として確定申告した結果過大に支
払うこととなった所得税及び市県民税合計２３０万７８００円についても，被上告
人は，上告人に対し，事務管理に基づく費用償還請求権を有すると判断して，同請
求権と上告人の被上告人に対する不当利得返還請求権との相殺を認め，上告人の請
求を１１６３万５７５９円の支払を求める限度で認容すべきものとした。
４ しかしながら，原審の上記判断は是認することができない。その理由は，次
のとおりである。
所得税は，個人の収入金額から必要経費及び所定の控除額を控除して算出される
所得金額を課税標準として，個人の所得に対して課される税であり，納税義務者は
当該個人である。本来他人に帰属すべき収入を自己の収入として所得金額を計算し
たため税額を過大に申告した場合であっても，それにより当該他人が過大に申告さ
れた分の所得税の納税義務を負うわけではなく，申告をした者が申告に係る所得税
額全額について納税義務を負うことになる。また，過大な申告をした者が申告に係
る所得税を全額納付したとしても，これによって当該他人が本来負うべき納税義務
- 3 -
が消滅するものではない。
したがって，共有者の１人が共有不動産から生ずる賃料を全額自己の収入として
不動産所得の金額を計算し，納付すべき所得税の額を過大に申告してこれを納付し
たとしても，過大に納付した分を含め，所得税の申告納付は自己の事務であるか
ら，他人のために事務を管理したということはできず，事務管理は成立しないと解
すべきである。このことは，市県民税についても同様である。
５ 以上と異なる原審の判断には，判決に影響を及ぼすことが明らかな法令の違
反がある。論旨は理由があり，原判決中上告人敗訴部分は破棄を免れない。そし
て，前記事実関係の下においては，上告人の請求を１３９４万３５５９円の限度で
認容した第１審判決は正当であるから，被上告人の控訴は棄却すべきである。
よって，裁判官全員一致の意見で，主文のとおり判決する。
```

</div></details>






<details><summary>GPT-3による要約の結果</summary><div>

```
まとめ
・上告人は被上告人に対して不当利得返還請求をした。
・被上告人は、所得税の申告において、上告人に帰属する賃料収入を自己の収入として申告した。
・原審は、被上告人の申告により過大に納付した所得税及び市民税についても、上告人に対して費用償還請求権を認めた。
・しかしながら、原審の判断は認められない。
・以上と異なる原審の判断には、判決に影響を及ぼすことが明らかな法令の違反がある。
```

</div></details>







 
 
　
　











## なぜGPT-3なのか？

GPT-3は、OpenAIが開発した次世代文章生成言語モデルです。
あまりにも優秀すぎることから開発陣から「危険すぎる」という評価を受けてしまうほどの性能で話題になりました。

これまでの文書要約AIは文書から単純に重要そうな文章を抜粋するだけで、要約と呼べるよる内容を吐き出せるものはなかったと認識しています。
GPT-3では、文書を解釈した上で要約することができるということで、期待が高まります。

データサイエンティストの見解をまとめたブログによると
GPT-3のトレーニングモデルは他のトレーニング済モデルの比較しても、トレーニング量が格段に多いことがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/233aec0b-5c21-25c3-1ed0-c8b40eebc7b1.png)

>OpenAIは最近、新しい強力な言語モデルGPT-3のプレプリントをリリースしました。その前身のGPT-2のはるかに大きくて優れたバージョンです。実際、175Bに近いトレーニング可能なパラメーターを使用すると、GPT-3は、他のどのパラメーターとも比較して、サイズの点ではるかに大きくなります。これは、最近人気のある事前トレーニング済みNLPモデルのパラメーター数の比較です。GPT-3は明らかに際立っています。

出典：Towards Data Science
https://towardsdatascience.com/gpt-3-the-new-mighty-language-model-from-openai-a74ff35346fc






## 環境構築
個人的な理由ですが
PCが新しくなってしまい環境がないので、環境構築から行います。

### 想定環境
Windows11

Visual Studio Code（以下、VSCode）
https://azure.microsoft.com/ja-jp/products/visual-studio-code/

Python 3.10.5
https://www.python.org/downloads/

### 環境準備
VSCode、Pythonをインストールし
VSCodeにPythonプラグインを入れます。


#### VSCodeにPython環境を作成

作成といっても下記のようにプラグインを入れるだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/91924b5e-936f-5b15-b985-7640b0e39d5a.png)



#### OpenAIのインストール

ターミナルから、以下のpipコマンドを実行するだけです。

　```
pip install openai
　```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/3aad3581-6f90-8477-2e0d-bdc79d46cfac.png)


### Open AIの準備

#### 下記URLからサインアップする
https://openai.com/api/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/f6606587-1ee1-f421-69a5-016999d1dc52.png)


#### サインアップしたらAPI Keyを入手します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/3e2d1125-132f-0c7c-3b04-cb299fe99579.png)




## OpenAIのGPT-3を使った文書要約を試す




### ソースコードを準備します

```
import openai

openai.api_key = "APIKeyをいれる"

# インプットテキスト
input_text = '''
ここに要約したい文書を入れる
'''
def youyaku(prompt):
    response = openai.Completion.create(
    # エンジンを指定
    engine="text-davinci-002",
    prompt=prompt,
    # 0～2で出力する単語のランダム性を指定する。0なら固定。
    temperature=0.7,
    # 生成する文章の単語数。
    max_tokens=600,
    #temperatureパラメータの反対で確度を指定する値、小さいほど確度が高くなる。
    top_p=1.0,
    #-2.0～2.0で既出の単語を使用するか否かを指定。値が大きいほど既出単語を使用しなくなる。
    presence_penalty=0.0,
    #presence_penaltyと同じ考え方。出現頻度が多いほどペナルティが高くなる。
    frequency_penalty=0.0,
    )
    # 結果出力
    return response["choices"][0]["text"]

# 結果出力
print(youyaku(input_text + Tl;dr))

```



### 裁判所の判例を要約してみる

うーん、インプットの文書は何を言わんとしているのかよくわかりません。
GPT-3大先生の力で理解できる内容に要約してみます。

##### インプット（要約のために取り込んだ文書）
https://www.courts.go.jp/app/files/hanrei_jp/341/038341_hanrei.pdf

```
- 1 -
主 文
原判決中，上告人敗訴部分を破棄する。
前項の部分につき，被上告人の控訴を棄却する。
控訴費用及び上告費用は被上告人の負担とする。
理 由
上告代理人宮嵜良一，同堀江亮介の上告受理申立て理由について
１ 本件は，上告人と被上告人との共有に係る不動産から生ずる賃料を被上告人
が単独で取得したとして，上告人が被上告人に不当利得返還請求をしたのに対し，
被上告人が，上記賃料収入のうち上告人に帰属する部分を含め被上告人の不動産所
得に係る収入金額に計上して所得税の確定申告をした結果同税及び市県民税を過大
に支払ったことが事務管理に当たるなどとして，事務管理に基づく費用償還請求権
との相殺を主張して争う事案である。
２ 原審の適法に確定した事実関係の概要等は，次のとおりである。
(1) 上告人と被上告人は兄弟であり，第１審判決別紙物件目録１記載３～５の
各不動産及び同目録２記載の不動産（以下，併せて「本件各不動産」という。）
を，共有持分各２分の１の割合で共有している。
(2) 被上告人は，本件各不動産を第三者に賃貸するなどして管理し，平成元年
１月から同１８年１２月までの間に合計７０９１万１７００円の賃料収入を得た。
被上告人は，平成元年分～同１８年分の所得税の各確定申告において，上記賃料収
入全額を被上告人の不動産所得に係る収入金額として申告をした。
(3) 上記賃料収入の２分の１に当たる３５４５万５８５０円は，本件各不動産
の共有者である上告人に帰属すべきものであったから，上告人は，被上告人に対
- 2 -
し，同額の不当利得返還請求権を取得した。
(4) 他方，被上告人は，本件各不動産に係る固定資産税，修繕費等を支払い，
また，父及び母の相続の際に上告人が負担すべき相続税を納付したことなどによ
り，上告人に対し，事務管理に基づく費用償還請求権等として合計２１５１万２２
９１円の反対債権を取得した。
(5) 上告人の被上告人に対する不当利得返還請求権の額は，上記(4)の反対債権
との相殺の結果，１３９４万３５５９円となった。
３ 原審は，被上告人が本件各不動産に係る賃料収入のうち上告人に帰属する部
分を含めて被上告人の不動産所得に係る収入金額として確定申告した結果過大に支
払うこととなった所得税及び市県民税合計２３０万７８００円についても，被上告
人は，上告人に対し，事務管理に基づく費用償還請求権を有すると判断して，同請
求権と上告人の被上告人に対する不当利得返還請求権との相殺を認め，上告人の請
求を１１６３万５７５９円の支払を求める限度で認容すべきものとした。
４ しかしながら，原審の上記判断は是認することができない。その理由は，次
のとおりである。
所得税は，個人の収入金額から必要経費及び所定の控除額を控除して算出される
所得金額を課税標準として，個人の所得に対して課される税であり，納税義務者は
当該個人である。本来他人に帰属すべき収入を自己の収入として所得金額を計算し
たため税額を過大に申告した場合であっても，それにより当該他人が過大に申告さ
れた分の所得税の納税義務を負うわけではなく，申告をした者が申告に係る所得税
額全額について納税義務を負うことになる。また，過大な申告をした者が申告に係
る所得税を全額納付したとしても，これによって当該他人が本来負うべき納税義務
- 3 -
が消滅するものではない。
したがって，共有者の１人が共有不動産から生ずる賃料を全額自己の収入として
不動産所得の金額を計算し，納付すべき所得税の額を過大に申告してこれを納付し
たとしても，過大に納付した分を含め，所得税の申告納付は自己の事務であるか
ら，他人のために事務を管理したということはできず，事務管理は成立しないと解
すべきである。このことは，市県民税についても同様である。
５ 以上と異なる原審の判断には，判決に影響を及ぼすことが明らかな法令の違
反がある。論旨は理由があり，原判決中上告人敗訴部分は破棄を免れない。そし
て，前記事実関係の下においては，上告人の請求を１３９４万３５５９円の限度で
認容した第１審判決は正当であるから，被上告人の控訴は棄却すべきである。
よって，裁判官全員一致の意見で，主文のとおり判決する。
```



##### アウトプット（GPT-3による要約結果）

以下は、AIがよしなにまとめてくれた結果です。
ど素人のポンコツエンジニアでもこの判決の結果の意味を理解することができます。　

```
1. 共有不動産から生ずる賃料は、全額を収入として所得税の申告・納付をすることができません。
2. そのために過大な所得税を申告して納付した場合も、事務管理に基づく費用償還請求権は成立しません。
3. 上記２点に関連して、市県民税についても同様であり、事務管理に基づく費用償還請求権は成立しません。
```

　

### その他の要約実行結果

要約のパラメータに乱数を設定しているので、要約を実行する度に
要約の結果が変わります。
同じパラメータで、全部で４回要約を試したので、その他の要約結果を以下に貼っておきます。
　
#### GPT-3による、その他の要約結果１回目
まぁ、わかりやすい要約です。


```
「所得税は個人の収入金額から必要経費及び所定の控除額を控除して算出される所得金額を課税標準として
個人の所得に対して課される税であり，納税義務者は当該個人である。」
「本来他人に帰属すべき収入を自己の収入として所得金額を計算したため税額を過大に申告した場合であっても，それにより当該他人が過大に 
申告された分の所得税の納税義務を負うわけではなく，申告をした者が申告に係る所得税額全額について納税義務を負うことになる。」
とあるので、自分で申告した税額 を取り戻すことはできない、ということです。
```


　
#### GPT-3による、その他の要約結果２回目
簡潔すぎます。

```
被上告人は上告人に負担した所得税を返還する義務があります。
```



　
#### GPT-3による、その他の要約結果３回目
たまにこのように英語で結果を出力してくれる場合もあります。
（なぜだろう。パラメータは特に変えてない。）

```
1. The main opinion quashes the portion of the appellant's appeal that was dismissed by the lower court ruling. With regard to the portion in the preceding paragraph, the respondent's appeal is dismissed. The respondent shall bear the costs of the appeal and the costs of the appeal.
1. 2. The relevant facts as confirmed by the lower court's ruling are as follows. (1) The appellant and the respondent are brothers and sisters, and they share 
each of the real properties listed in Appendix 1 of the lower court's ruling (hereinafter referred to as "the subject real properties") in a ratio of 2/1.(2) The respondent leased out the subject real properties to third parties and earned a total of 7,091,700 yen in rent income during the period from January to December of the first year of Heisei. The respondent included the entire amount of the rent income in the income amount from real property owned 
by the respondent as income on its respective income tax return for the year Heisei 1-18.(3) One-half of the rent income, amounting to 3,545,850 yen, should have belonged to the appellant as a co-owner of the subject real properties, and the appellant therefore acquired a claim for restitution of unjust enrichment in the amount of the same from the respondent.(4) On the other hand, the respondent acquired a claim for reimbursement of expenses based on management in the amount of 2,151,2291 yen from the appellant by paying real property taxes, repair costs, etc. related to the subject real properties, and 
also by paying the inheritance taxes that the appellant should have borne at the time of the succession of the father and mother.(5) As a result of the offset of the claim in the preceding paragraph against the claim of the appellant for restitution of unjust enrichment from the respondent, the amount of 
the claim became 1,394,3559 yen.3. The lower court held that the respondent had a claim for reimbursement of expenses based on management with respect to the overpayment of income tax and city and prefectural resident tax totaling 2,307,800 yen as a result of including in the income from real property owned by the respondent the portion of the rent income from the subject real properties that should have belonged to the appellant, and allowed the claim of the appellant in the amount of 1,163,5759 yen.4. However, the lower court's aforementioned decision cannot be approved. The reason is as follows.Income 
tax is a tax imposed on income calculated by subtracting necessary expenses and prescribed deductions from the income amount of an individual, and the taxpayer is the individual concerned. Even if one person who is a co-owner of real property reports the entire amount of rent income from the co-owned real property as his or her own income and calculates the amount of income from real property as a result, and as a result reports and pays an amount of tax 
that is too large, the person who reported and paid the tax is not liable for the payment of the income tax that should have been paid
```




### 最後に

今までの文書要約AIとは一線を画した結果を出していると思います。


・・・がソースコードのパラメータを見ていただくと何となく理解いただけるかと思いますが
GPT-3の要約結果には、乱数を使用しているため、何度か試して一番結果が良かったときの結果を掲載しています。

乱数を取り除いて、固定の結果を出力するといったことも可能ですが
固定の出力が微妙な結果だった場合、調整の余地がないため、乱数を設定して今回掲載した結果を紹介させてもらっています。


100%に近い結果を求められる実業務だとちょっと厳しいのかなといった印象でした。
何回か試行した実行結果については、次項をご覧くださいませ。
　
　
　
　
　
　
### おまけ：桃太郎の要約

ついでに桃太郎を要約してみました。
ポンコツエンジニアの自分が桃太郎を要約するとしたら、以下のような要約になりますが


#### 参考：ポンコツエンジニアによる要約（GPT-3の要約じゃないよ）

ポンコツエンジニアが作成した要約なので、内容がポンコツですがざっくりとしたストーリーが伝わるかと思います。

```
「桃から産まれた桃太郎が犬と猿とキジを連れて鬼ヶ島に鬼を退治するお話です。」
```

GPT-3が桃太郎を要約したら、どのような要約になるのか気になったので試してみました。
期待値とは少し違いましたが、人間（ポンコツエンジニア）以上の解釈と文書力があることがわかりました。　裁判所の判例を要約した結果より正直面白いです。




#### GPT-3による要約１回目

```
おじいさんとおばあさんは山にしば刈りに、川で洗濯をしていました。
おばあさんが川で洗濯をしていると大きな桃が流れてきました。
桃から大きな赤ん坊が出てきたのです。
```

実際の物語は、おじいさんとおばあさんは別行動して、それぞれ山へ芝刈りに川へ洗濯に行ったと思いますが
この要約では、おじいさんとおばあさんが仲良く二人で芝刈りと洗濯に出かけたような内容になっています。
また、物語の予告編のような要約になってしまっています。

　
　

　


#### GPT-3による要約２回目

```
おじいさんとおばあさんが住んでいた所は山へしば刈りに行き、川へ洗濯に行く所だった。
おばあさんが川で洗濯をしていると大きな桃が流れてきて、そこから赤ん 坊が出てきた。二人は驚いたけれども、とても喜び、「桃太郎」と名付けた。
桃太郎は鬼ケ島に悪い鬼が住んでいると聞き、おじいさんとおばあさんに日本一のきび団子を作ってもらい、鬼退治に向かった。
```

要約というかあらすじですね・・・
あらすじとしては、よくまとまっていて非常に有能だと思います。
　
　


#### GPT-3による要約３回目

```
桃太郎は赤ん坊のまま担ぐ
生き物を家来に勧誘し、最後は3匹だった
最初に鉄棒を振り回していた大きな鬼が、「生意気な小僧」と言ってから逃げ出す
```

ちょっと日本語が少しおかしいですね。
「桃太郎は赤ん坊のまま担ぐ」っといった解釈は意味不明です。
また、犬と猿とキジを３匹の生き物としてグルーピングして表現しています。　そうきたか！って感じですね。
これまでの要約に登場しなかった鬼が出てきました。　まぁ、解釈の結果としてはなかなか面白い内容です。



　
　




#### GPT-3による要約４回目

```
犬、猿、キジと悪い鬼たちが出てきます。
犬は桃太郎に一つ団子をもらい家来になりました。
猿は門に登り鍵を開けました。
キジは鬼の目をつつきました。
```

犬と猿とキジが主役になっています。
犬と猿とキジのそれぞれの活躍がピックアップされています。
実際の物語では、桃太郎はリーダーシップを発揮しているものの、中心となって活躍しているのは、犬と猿とキジです。
なのでこの要約はかなり正しい精度で要約できていると思います。
また、期待値とは異なりますが内容が面白いか面白くないかで言ったら、この要約は面白いので点数をつけるとしたら100点だと思います。


　
#### GPT-3による桃太郎の要約でわかったこと

期待値通り要約できたかはさておき
人間（ポンコツエンジニアの自分）が要約するより、GPT-3が要約した文章のほうが面白くはあります。
（特に４回目）

また登場人物の誰を主役として捉えるのか、登場人物をどう解釈するのか？　等、これまでの文書要約AIとは違い
GPT-3の解釈が加わった要約ができる点が非常に面白いと感じました。