Code Interpreterに頼り切って英語の特許明細書を読んでみる。

# はじめに
前回はCode Interpreterを使った特許明細書の読解をしてみましたが、とても頼り切るレベルではありませんでした。

しかし、これは日本語の文章だからであり、英語の文章ならもっと頼り切れるのではないかと考え、今回試してみました。
# 特許データ
今回は、ダイソンの米国出願の特許明細書を使用します。データの作成は、前回同様、CLAIMとDESCRIPTIONの内容をワードファイルにコピペして、Code Interpreterへアップロードします。
# ChatGPTとのやり取り
以下にChatGPTとのやり取りをかいつまんで紹介します。なお今回から質問可能回数が3時間50回となりましたので、思う存分質問できることになりました。
## データアップロードと確認
### 入力
```
ダイソンの米国特許明細書をアップロードします。うまく読み込めるか確認してください。
CLAIMS.docx
```
### 出力
```
了解しました。アップロードされた「CLAIMS.docx」ファイルを開いて内容を確認します。少々お待ちください。

ファイル「CLAIMS.docx」の内容を読み込むことができました。こちらが最初の部分のプレビューです：
```
```
CLAIMS
1. A liquid heater comprising:
a chamber for receiving a liquid;
a pair of electrodes located within the chamber for applying electric current to the liquid;
input terminals for connection to a power supply;
a plurality of switches for connecting the electrodes to the input terminals; and
a control unit for controlling the switches,
wherein:
the switches are bi-directional;
the power supply supplies an alternating voltage having a frequency no greater than 60 Hz; and
the control unit controls the switches such that the electrodes are energised with an alternating voltage having a frequency no less than 150 kHz.

2. The liquid heater as claimed in claim 1, wherein the switches have a first state in which the electrodes are energised with a positive voltage and a second state in which the electrodes are energised with a negative voltage, and the control unit switches the switches between the first state and the second state at a switching frequency of at least 300 kHz.
...
```
```
どのように進めていきますか？
```
### 入力
```
発明の内容を簡単に教えてください。
```
### 出力
```
了解しました。「CLAIMS.docx」の内容を基に、発明の概要を以下にまとめます。

この発明は、液体を加熱する装置に関するものです。主な特徴は以下の通りです：

- 液体を受け入れるための**室**があります。
  
- この室の内部には、液体に電流を適用するための**電極**のペアが配置されています。

- 電源に接続するための**入力端子**があります。

- これらの電極を入力端子に接続するための**複数のスイッチ**があります。

- そして、これらのスイッチを制御するための**制御ユニット**があります。

この発明の特筆すべき点は以下の通りです：

1. スイッチは**双方向**です。

2. 電源は、60 Hz以下の周波数を持つ交互電圧を供給します。

3. 制御ユニットは、電極が150 kHz以上の周波数を持つ交互電圧で動作するようにスイッチを制御します。

この発明の目的は、特定の周波数範囲で液体を効率的に加熱するための新しい方法を提供することであると考えられます。特に、通常の電源からの低い周波数の交互電圧を、高い周波数の交互電圧に変換して液体を加熱する点が特徴的です。
```
### 入力
```
請求項の数は何個ありますか
```
### 出力
```
請求項は合計11個あります。
```
### 入力
```
正解は12個です。
```
### 出力
```
申し訳ございません。再度、請求項の数を正確に数え直します。

おっしゃる通り、請求項は合計12個あります。前回の確認が不正確で申し訳ございません。正確な情報を提供できずにすみませんでした。
```
### 入力
```
それでは、請求項1から12について、簡単に説明をお願いします。
```
### 出力
```
了解しました。請求項1から12までの内容を簡潔に説明します。
```
```
1. **液体ヒーター**:
   - 液体を受け入れる室。
   - 室内の電極ペアで液体に電流を適用。
   - 電源に接続する入力端子。
   - 電極を入力端子に接続するスイッチ。
   - スイッチ制御の制御ユニット。
   - スイッチは双方向。
   - 60Hz以下の交互電圧の電源。
   - 150kHz以上の交互電圧で電極を動作させる制御ユニット。

2. 請求項1に記載の液体ヒーターで、スイッチは正の電圧と負の電圧で電極を動作させる2つの状態を持ち、制御ユニットは300kHz以上のスイッチング周波数でスイッチを切り替える。

...（請求項2を基に、次の請求項は以前の請求項に基づいて新しい特徴を追加する形で進行します。）

請求項1の内容を元に、請求項2から12までの内容を抽出して、それぞれの追加される特徴や変更点を説明します。

請求項2から12までの内容を以下に簡潔に説明します：

2. 請求項1に記載の液体ヒーターで、スイッチは正の電圧と負の電圧で電極を動作させる2つの状態を持ち、制御ユニットは300kHz以上のスイッチング周波数でスイッチを切り替える。

3. 請求項1に記載の液体ヒーターで、複数の電極ペア、複数のスイッチ状態、異なる電極構成での異なる電気抵抗を持つ。

4. 請求項3に記載の液体ヒーターで、少なくとも6つの電極構成を持つ。

5. 請求項3に記載の液体ヒーターで、各電極ペアは異なる電気抵抗を持つ。

6. 請求項3に記載の液体ヒーターで、電極ペアの電気抵抗は最大Rmax、最小Rminを持ち、Rmax/Rminは少なくとも10。

7. 請求項3に記載の液体ヒーターで、電極構成の電気抵抗は、特定の条件下での最大・最小値を持つ。

8. 請求項3に記載の液体ヒーターで、液体の温度を感知するセンサーを持ち、制御ユニットは液体の温度と設定温度に基づいて電極構成を選択する。

9. 請求項1に記載の液体ヒーターで、液体の温度を感知するセンサーを持ち、制御ユニットは液体の温度と設定温度に基づいて電極に電圧を適用する。

10. 請求項1に記載の液体ヒーターで、制御ユニットは70%以上の可変デューティで電極に電圧を適用する。

11. 請求項1に記載の液体ヒーターで、制御ユニットは特定の設定下で、電源の交互電圧の各Nth半周期ごとにのみ電極を動作させる。

12. 請求項1に記載の液体ヒーターで、電源は交互電圧を供給し、制御ユニットは特定の設定下で、電源の交互電圧の各半周期の一部のみで電極を動作させる。
```
```
これが請求項2から12までの簡単な説明です。何か他に質問や詳細を知りたいことがございましたら、お知らせください。
```
### 入力
```
[0055] の内容を説明してください。
```
### 出力
```
了解しました。セクション[0055]の内容を以下に説明します。

---

**[0055]セクションの内容**：

- 電極構成内のエネルギー化状態間、または2つの電極構成間で切り替える際、制御ユニット47はスイッチSnの状態を制御して、シュートスルーを避けつつ、任意の誘導電流の経路を提供します。
  
- 図6は、図4のエネルギー化状態1と2の間で切り替える際の状態遷移のシーケンスを示しています。
  
  - シーケンスは、図6(a)で始まり、スイッチS1とS8が閉じているため、正の電圧が第1の電極ペアE1に適用されます。
  
  - 次に、図6(b)では、スイッチS1とS8が閉じたままで、正の電圧が電極ペアE1に継続して適用されます。しかし、スイッチS2とS7は今、ダイオードモードになっています。具体的には、G1がONになり、G2がOFFになるため、スイッチS2、S7は図6(b)に示されている方向で伝導します。
  
  - シーケンスは、図6(c)に移行し、スイッチS1とS8が開きます。この時点で、電極ペアE1に電圧は適用されず、電極はエネルギー化されなくなります。S2とS7はダイオードモードのままで、誘導電流の流れる経路を提供し、図6(c)の矢印で示されています。
  
  - シーケンスは、図6(d)で終了し、スイッチS2とS7が閉じられ、負の電圧が電極ペアE1に適用されます。

---

これがセクション[0055]の内容の説明です。何か他に質問や詳細を知りたいことがございましたら、お知らせください。
```
### コメント
請求項数を間違えましたので、やはり構造化されていない文章については、すんなりとは処理できず、人間のサポートが必要となりました。

## 明細書の内容の分析
### 入力
```
この発明の液体ヒーターの用途について明細書には何か言及されていますか？
```
### 出力
```
発明の液体ヒーターの用途に関連する内容を以下に抜粋しました：

1. **[0005]**: 電極を交互電圧でエネルギー化することにより、電極の電気分解を避けることができる。電極を高い周波数でエネルギー化することにより、電気分解が発生せずに比較的高い電気パワーを供給するために小さな電極を使用することができる。従って、市販のヒーターで高いパワー密度を達成できる。

2. **[0008]**: このヒーターは、幅広い導電性を持つ液体を加熱するために使用できる。さまざまな電極構成を持つことで、そのような液体の加熱をより良く制御できる。例えば、電極構成は、液体の導電性に応じて選択されることができ、導電性に関係なく同じまたは類似の加熱レベルが達成できる。

3. **[0015]**: 液体ヒーターは、液体の温度を感知する温度センサーを備えることができ、制御ユニットは、液体の温度と温度設定点に基づいて電極に電圧を適用する。

4. **[0077]**: 上記で説明したヒーター10は、AC電圧を供給する電源50を使用することを目的としているが、ヒーター10は、DC電圧を供給する電源50を使用しても同様に使用することができる。

5. **[0078]**: 制御システム40は、液体の出力温度を感知する温度センサー44を備えている。制御ユニット47は、この温度測定を使用して、電源設定または電極構成を選択または調整する。制御システム40は、制御ユニット47が電源設定や電極構成を選択・調整するのに使用する可能性がある追加のセンサーを備えることができる。

これらのセクションから、液体ヒーターは様々な液体の導電性に対応するためのものであり、特定の温度制御が可能であること、さらにはAC電源やDC電源の両方で使用することができることが言及されています。特に、電極の電気分解を避けるための方法や、市販のヒーターで高いパワー密度を達成するための方法について詳細に説明されています。
```
### 入力
```
液体とは水ですか？
```
### 出力
```
文書の中で「液体」に関する言及をいくつか見つけましたが、具体的に「水」であると明確に言及されている部分は見当たりませんでした。ただし、以下の内容に関する記述がありました：

- 液体の出力温度を感知する温度センサーがある。
  
- 液体の導電性を間接的に測定するための手段が提案されている。

- 液体の流れの速度を測定するためのフローセンサーや、室内を流れる液体の流れの速度を制御するためのフローバルブなどの手段がある。

これらの記述から、液体ヒーターは特定の液体の加熱に使用される可能性がありますが、その液体が具体的に「水」であるかは文書内で明示されていないようです。
```
### 入力
```
電極の電気分解とは、電極の金属材料が分解するという意味でしょうか。
```
### 出力
```
いいえ、電極の電気分解とは電極の金属材料が分解することを指すわけではありません。

電気分解は、電流を流すことで物質を化学的に分解するプロセスを指します。液体中で電気分解が行われると、通常、液体（例えば水）が分解されます。たとえば、水の電気分解の場合、正の電極（アノード）で酸素が生成され、負の電極（カソード）で水素が生成されます。

\[ 2H_2O(l) \rightarrow 2H_2(g) + O_2(g) \]

この文脈での電気分解の言及は、電極に電圧を適用したときに液体が化学的に分解される現象を指しており、電極自体の金属が分解するわけではありません。ただし、電気分解の過程で電極の腐食が進行することがあるので、それを避けるための対策が必要な場合があります。
```
### 入力
```
そうすると、本明細書の液体とは水であるといえるのではないでしょうか。
```
### 出力
```
確かに、電気分解の文脈での液体として一般的に考えられるのは水です。そして、多くの場合、液体ヒーターで考慮される液体として水が最も一般的です。ただし、明細書に「水」という言及が明示的にされていないため、完全に断定することは難しいです。

しかし、電気分解の懸念があるとの記載から、液体が電気的に分解可能なもの、特に水のようなものである可能性が高いと考えられます。

具体的な液体の種類やその特性に関する詳しい記述が明細書の別の部分にあるかもしれません。必要であれば、その部分も詳しく調査することができます。
```
### コメント
一応、明細書の全文を参照して、読解を試みているようです。
## テキストマイニング処理
### 入力
```
何かテキストマイニングの処理を用いて、この明細書の面白い分析などすることはできますか？
```
### 出力
```
はい、テキストマイニングを利用して特許明細書を分析することで、様々な面白い情報や傾向を抽出することが可能です。以下は、テキストマイニングを利用して実施できる分析の一部です：

1. **頻出語分析**: 文書全体で最も頻繁に現れる単語やフレーズを抽出し、発明のキーポイントや焦点を明らかにすることができます。

2. **共起語分析**: ある単語が他の単語とどれだけ頻繁に一緒に現れるかを分析し、関連する概念や技術の関係性を探ることができます。

3. **センチメント分析**: 明細書の各部分や段落の感情やトーンを分析して、特定の技術や概念に対するポジティブまたはネガティブな言及を識別することができます（ただし、特許明細書は客観的な文書であるため、この分析の有用性は限定的かもしれません）。

4. **トピックモデリング**: 文書内の主要なトピックやテーマを自動的に識別することができます。

5. **文書の時系列分析**: 複数の明細書を分析する場合、発明の進化や技術トレンドの変遷を追うことができます。

具体的にどのような分析を行いたいか、またはどの分析がこの明細書に適しているかによって、適切な手法を選択することができます。どの分析を試してみたいか、または特定の情報や洞察を得たいかについて、具体的な要望や方向性を教えていただければと思います。
```
### 入力
```
トピックモデリングをお願いします。
```
### 出力
```
トピックモデリングを実施した結果、以下の5つの主要なトピックと、それぞれのトピックに関連する上位の単語を特定しました：

1. **Topic 1**:
   - voltage
   - power
   - input
   - electrodes
   - electrical
   - cycle
   - half
   - control
   - fig
   - electrode

2. **Topic 2**:
   - electrical
   - total
   - electrodes
   - resistance
   - configurations
   - range
   - electrode
   - dynamic
   - resistances
   - fig

3. **Topic 3**:
   - temperature
   - control
   - electrode
   - power
   - liquid
   - configuration
   - unit
   - 47
   - electrical
   - setpoint

4. **Topic 4**:
   - electrodes
   - voltage
   - control
   - switches
   - liquid
   - alternating
   - unit
   - energised
   - heater
   - temperature

5. **Topic 5**:
   - configurations
   - electrode
   - electrodes
   - electrical
   - liquid
   - resistance
   - total
   - input
   - control
   - different

これらのトピックは、明細書の中での主要な概念やテーマを示しています。たとえば、トピック3は液体の温度制御や設定点に関連することが示唆されています。同様に、トピック4は電極、電圧、そして液体ヒーターの制御に関連している可能性があります。

これらのトピックを基に、明細書の全体的な内容や焦点をより深く理解することができます。
```
### 入力
```
視覚化を行うことはできますか？
```
### 出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3110569/1e85fd85-e426-c1f4-ddce-8cb8f84f1dd5.png)
```
各トピックの上位10単語を示すバーチャートを作成しました。これらの図は、各トピックの主要な単語とその重要性を視覚的に理解するのに役立ちます。

- **Topic 1**では、「voltage」、「power」、「input」、「electrodes」、「electrical」などが主要な単語として挙げられています。
- **Topic 2**では、「electrical」、「total」、「electrodes」、「resistance」、「configurations」などが重要な単語です。
- **Topic 3**では、「temperature」、「control」、「electrode」、「power」、「liquid」などが注目されます。
- **Topic 4**では、「electrodes」、「voltage」、「control」、「switches」、「liquid」などが重要な単語として挙げられています。
- **Topic 5**では、「configurations」、「electrode」、「electrodes」、「electrical」、「liquid」などが主要な単語として挙げられています。

これらの図から、それぞれのトピックが特定の単語や概念に焦点を当てていることがわかります。
```
### 入力
```
頻出語処理を行いワードクラウドで出力することはできますか？
```
### 出力
```
申し訳ございませんが、再度問題が発生しました。3文字以上の単語をフィルタリングした結果、ワードクラウドを生成するのに十分な単語が見つからなかったようです。

この問題を解決するために、3文字以上の単語の頻度リストを確認し、再度ワードクラウドを生成します。

申し訳ございません。3文字以上の単語をフィルタリングした結果、適切な単語が一つも見つからないことが確認されました。

この問題は、トークン化の方法やフィルタリングの方法に起因するものと考えられます。

再度、トークン化の手法を見直して、ワードクラウドの生成を試みます。

申し訳ございませんが、エラーが発生しました。文書全体のテキストを取得する際に問題が生じています。

テキストの取得方法を修正して、再度トークン化とワードクラウドの生成を行います。

申し訳ございませんが、NLTKの必要なリソースがこの環境に存在しないため、エラーが発生しました。そのため、NLTKの`word_tokenize`関数を使用することができません。

代わりに、シンプルなトークン化の手法を使用して、再度トークン化とワードクラウドの生成を行います。

3文字以上の単語に限定してワードクラウドを生成しました。

このワードクラウドでは、「electrode」、「control」、「liquid」などの単語が大きく表示されており、これらの単語は明細書内で頻繁に現れることを示しています。

何か他に質問やリクエストがございましたら、お知らせください。
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3110569/a197f4a5-70c5-495d-05fa-879d06ea6992.png)
### コメント
英語なのでテキストマイニング処理もできました。しかし、使えないライブラリも多いようで、かなり四苦八苦して処理しています。
## サポート要件チェック
### 入力
```
特許明細書において重要なのがサポート要件となります。これは請求項に使用されるすべての用語がDESCRIPTION内で説明されていることが必要となります。請求項１のサポート要件のチェックをお願いすることは可能でしょうか。
```
### 出力
```
請求項1のサポート要件をチェックするためには、以下の手順を実施します：

1. 請求項1のテキストを取得し、その中の重要な用語やフレーズを抽出します。
2. DESCRIPTIONセクションのテキストを取得します。
3. 請求項1の各用語やフレーズがDESCRIPTIONセクションに含まれているかを確認します。

この手順を実施して、請求項1のサポート要件をチェックします。まず、請求項1のテキストを取得し、重要な用語やフレーズを抽出します。

申し訳ございませんが、以前の実行結果の一部が失われており、請求項1のテキストを取得する際にエラーが発生しました。

再度、請求項1のテキストを取得し、重要な用語やフレーズを抽出します。

再度、エラーが発生しました。申し訳ございませんが、以前の実行結果を再利用する際に一部のデータが破損してしまっているようです。

請求項1のテキストを再取得し、その後、サポート要件のチェックを行います。

大変申し訳ございません。再取得の際にもエラーが発生してしまいました。

請求項1のテキストの取得方法を修正して、再度トークン化とサポート要件のチェックを行います。

申し訳ございません。再度エラーが発生しました。今回のエラーは、以前の分析結果を再利用しようとした際に、必要なデータが失われていることが原因です。

最初から文書を読み込み、請求項1のテキストを取得し、サポート要件のチェックを行うことにします。まず、文書を読み込んで請求項1のテキストを取得します。

申し訳ございませんが、エラーが再発しました。一部のライブラリの機能がこの環境で利用できないようです。

代わりの手法として、以前に取得した請求項のリストから、請求項1を取得して進めます。

再度エラーが発生しました。お手数をおかけして申し訳ございません。請求項1のテキストを取得する方法を再度見直します。

まず、文書を再読み込みし、請求項を再度解析して、請求項1のテキストを取得します。その後、サポート要件のチェックを行います。

しかし、現在の環境の制限のため、文書の再読み込みは困難であることが確認されました。請求項1のテキストを再取得する代わりの方法として、ご提供いただいた特許明細書を再アップロードしていただく方法も考えられます。再アップロードをお願いしてもよろしいでしょうか？
```
### 入力
```
CLAIMSの1.以下が請求項1です。
CLAIMS.docx
```
### 出力
```
ありがとうございます。アップロードいただいたファイルから請求項1のテキストを取得し、サポート要件のチェックを行います。

申し訳ございませんが、再度エラーが発生しました。環境の制約により、`docx`ライブラリの一部の機能が利用できないようです。

代替の方法として、請求項1のテキストの内容を直接入力していただく方法も考えられます。この方法で進めてもよろしいでしょうか？
```
### 入力
```
1. A liquid heater comprising:
a chamber for receiving a liquid;
a pair of electrodes located within the chamber for applying electric current to the liquid;
input terminals for connection to a power supply;
a plurality of switches for connecting the electrodes to the input terminals; and
a control unit for controlling the switches,
wherein:
the switches are bi-directional;
the power supply supplies an alternating voltage having a frequency no greater than 60 Hz; and
the control unit controls the switches such that the electrodes are energised with an alternating voltage having a frequency no less than 150 kHz.
```
### 出力
```
ありがとうございます。請求項1のテキストを受け取りました。

次に、この請求項内の重要な用語やフレーズがDESCRIPTIONセクションに含まれているかどうかを確認することで、サポート要件をチェックします。

請求項1の用語やフレーズを抽出し、それらがDESCRIPTIONセクションに存在するかを確認します。

申し訳ございませんが、エラーが発生しました。先ほどのエラーと同様、nltkライブラリの特定の機能がこの環境で利用できないようです。

シンプルなトークン化の方法を用いて、再度請求項1のサポート要件のチェックを行います。

申し訳ございませんが、以前に取得した変数の情報が破損してしまっています。そのため、請求項1のテキストの変数を再度設定し、サポート要件のチェックを行います。

再度、エラーが発生しました。前回の文書の読み込み結果が失われてしまっているため、DESCRIPTIONセクションのテキストが利用できません。

この問題を解決するために、最初にアップロードしていただいた特許明細書の全文からDESCRIPTIONセクションのテキストを再取得し、サポート要件のチェックを行います。しかし、環境の制約により、文書の再読み込みは困難であることが確認されました。

そのため、以下の2つの方法を提案させていただきます：

1. 請求項1のテキストを利用してサポート要件のチェックを行うため、DESCRIPTIONセクションのテキストを再アップロードしていただく。
2. 請求項1のテキストを利用して、他の分析や処理を行う。

どちらの方法を選択されますか、または他にご希望の処理があればお知らせください。
```
### 入力
```
よろしくお願いします。
DESCRIPTION.txt
```
### 出力
```
ありがとうございます。アップロードいただいたDESCRIPTIONセクションのテキストファイルを読み込み、請求項1のサポート要件のチェックを行います。

請求項1のテキストから抽出された各用語が、提供されたDESCRIPTIONセクションに存在するかどうかをチェックしました。

結果として、請求項1のすべての用語がDESCRIPTIONセクションに含まれていることが確認されました。これにより、請求項1に関してサポート要件が満たされていると言えます。

何か他に質問やリクエストがございましたら、お知らせください。
```
### コメント
読み込みエラーが多発しましたが、なんとかサポート要件のチェックをすることができました。

なお、このサポート要件のチェックは参考程度と考えた方がよさそうです。サポート要件OKとの結果が出たからといって、本当にOKかは実際に明細書を読んで確認する必要があります。

ただし、ここで、サポート要件NGとの結果が出た場合には、本当にNGの可能性が高いので、最初のチェックには十分使えると思います。
# 感想
英文明細書だからといって、頼り切って処理できるわけではないことがわかりました。結局のところ、Code Interpreterが処理しやすくなるよう、人間が適宜サポートする必要があります。

ただし、英文の明細書の内容について、日本語で議論できるのはありがたいと感じました。

また、英語の場合には自然言語処理を行うことができるので、日本語明細書よりは、変わった出力を得ることもできました。