知財業務に生成AIを活用する (4/4)

第4回 生成AI、Excel、自作のツールを駆使して特許調査を行う

ポイント:生成AIに特許分析用補助ツールを作ってもらう

 生成AIを特許データの分析に使えることは分かってきました。また、生成AIには不得意なことがあることも明らかになってきました。「現時点」の生成AIは言語処理を得意としていますが、数値計算や統計分析は苦手です。それでも頼めば頑張って分析をしてくれますが、結果は違っていることが多いです。

 例えば、今回使ったNTT様画像AI特許134件のIPCコードの分類を生成AIに頼むと、IPCコード74種類で合計248件が正しい値ですが、生成AIはIPCコードが68種類、計193件という結果になりました。

 ざっくりと分かればいいならばこれでも良いですが、これから洞察や仮説立案をしようとする場合、不正確なデータから出発するのは躊躇してしまいます。生成AIとうまく付き合うには、生成AIの弱みを別な手段で補完しながら仕事を進めることが重要です。特許分析はExcel主体だと思いますので、数値計算や統計処理、グラフ表示などはexcelツールで補完します。

 ところが、問題となるのが、生成AIのプロンプト文字制限です。特許は巨大な文字情報の塊なので、気をつけないとすぐにオーバフローとなります。それを避けるポイントの一つは、分析の対象範囲のテキストだけに絞りデータを切り出し、生成AIにインプットすることです。

 ただ、これにはExcelの標準機能ではかゆいところに手が届かず、手作業でカバーせざるを得ないことも多いかと思います。Excelのマクロでも書けたならば…と思ったことはないでしょうか。ここでその一例をご紹介しましょう。

———————————————————————————————————–

出願年,IPC

2019,G06T7/00

2019,G06F13/00

2019,G06Q10/04

2019,G06N3/08

2019,G06F17/28

2019,G06F17/28

2019,G06F40/40

2019,G06F40/44

2019,G06F40/56

2019,G10L25/84

2019,G10L15/04

2019,G10L15/10

2019,G10L21/0308

2019,G06T7/00

———————————————————————————————————–

 このIPCコードリストは先ほどの134件の特許の出願年×IPCコードでペアリストを作成したものです。生成AIに分析してもらうためにIPCコードと出願年データだけに絞って作成しました。

 IPCコードは1特許に複数個あり、それぞれは、”|” で区切られています。それを手作業で分解して、出願年と合わせてペアを作るのは結構大変です。ピボットで分析させるにしても区切り文字で分割してからでないと正確な統計は出せません。この作業にはフラストレーションを感じます。

 ここで、もう一つの生成AIの使い方を提案したいと思います。

それは、自分用の便利ツールを生成AIに作ってもらうことです。このデータも生成AIが作成したExcelのユーザ関数の出力です。チームにVBAマクロやPythonプログラムを書ける人がいたら、生成AIなどに頼む必要はありませんが、そのようなスキルがチームになければ、生成AIに頼んでみてはどうでしょう。調査・分析の生産性が一挙に広がります。

 生成AIは一般的にはPythonプログラムの生成が得意なようです。ここであえてVBAを提案するのは、特許分析の現場ではExcelが主流だからです。また素人にはPyhonを動かす環境を作ることはかなり難しいでしょう。VBAはExcelがあれば動きます。コーディングの知識は一切不要ですが、やりたいことを生成AIに正しく伝える必要があります。

 当事例のデータを作成するユーザ関数の作成を生成AIに頼んだ時のプロンプトをご紹介しましょう。生成AIの種類によって同じプロンプトでも対応が異なります。いまのところChatGPTは優秀です。

———————————————————————————————————–

プロンプト例:2つの列を指定して、データのペアリストを自動作成するユーザ関数の作成を依頼する

excelユーザシート関数を作成して下さい。data:sheet1の表データです

関数のparameterは、列1位置と列2位置と列2のデータの区切文字です

入力データ1と2の列範囲は任意です

requirements: 指定列を順番に読み込み、列1データと列2データをカンマで繋いでペアデータを作成します。もし列2データに指定の区切り文字がある場合は、区切り文字で列2データを分割し、分割されたデータを列1データとカンマで繋ぎペアデータとして別に記録します。例えば、列1データ:2019、列2データipc1|ipc2の場合、2つのIPCデータが生成され、それぞれに列1データ2019がペアとなります。

分割時にデータ2の前後の空白は削除してください。データ2の分割処理をすべて終えたら、次の行に移り処理を繰り返します。

———————————————————————————————————–

 少々長いプロンプトですが、やってもらいたい仕事と、入力データ、出力データと条件を明確にプロンプトに書けば一瞬でプログラムを作成してくれます。エラーがでることもありますが、エラーの内容を報告すると、すぐに修正案を出してきます。それを何回か繰り返すと問題なく動くプログラムができあがります。

 利用者はマクロのコードを読めなくても対応できます。読めたほうがもちろんよいですが。トラブルを回避するコツは、複雑な仕事を頼まないこと自分は素人であることをプロンプトの冒頭で宣言すること、ファイルの場所や名前は明確に指定することです。ぜひ試してみてください。

 ちなみに、このプロンプトでChatGPTが作成してくれた関数はトラブルなく一発で動作しました。そのユーザ関数を以下に載せましたので、コピーしてExcelに組み込んでいただければ、前述のような部分データ切り出しが簡単にできます。

———————————————————————————————————–

生成したVBAユーザ関数

Function PairData(dataRange As Range, data1Column As Long, data2Column As Long, delimiter As String) As String

    Dim pairDataArray() As String

    Dim pairIndex As Long

    Dim row As Range

    ReDim pairDataArray(1 To dataRange.Rows.Count) As String

    pairIndex = 1

    For Each row In dataRange.Rows

        Dim data1 As String

        Dim data2 As String

        data1 = Trim(row.Cells(1, data1Column).Value)

        data2 = Trim(row.Cells(1, data2Column).Value)

        If delimiter <> “” And InStr(data2, delimiter) > 0 Then

            Dim dataArray() As String

            dataArray = Split(data2, delimiter)

            Dim i As Long

            For i = LBound(dataArray) To UBound(dataArray)

                pairDataArray(pairIndex) = data1 & “,” & Trim(dataArray(i)) & vbCrLf

                pairIndex = pairIndex + 1

            Next i

        Else

            pairDataArray(pairIndex) = data1 & “,” & data2 & vbCrLf

            pairIndex = pairIndex + 1

        End If

    Next row

    PairData = Join(pairDataArray, vbCrLf)

End Function

———————————————————————————————————–

 この関数の使い方は通常のExcel関数と同じく、空いているセルに以下のように関数を記入します。

=GeneratePairDatax(5, 7, “|”)

 この例では5列(出願年)のデータと7列(IPCコード)のデータをペアにし、もし|でIPCコードデータが区切られていたら、分解して出願年のデータとペアをつくりリストを返してきます。

 注)生成されたペアのデータのテキスト長が1024文字を超えるとエラーになります。セルの「表示」文字数最大ユーザ関数1024だからです。シート関数でなくマクロから呼び出せばそのような制限は起きませんが、しかしそうなると、話が難しくなりお手上げになる方もいらっしゃるので、まずはシート関数で対応できるレベルで作業補完をしていくのが手です。もしくは、生成AIにマクロを作成してもらうか。

 この関数を実行すると前述のような出願年×IPCコードリストが出ます。そのまま生成AIに入力データとしてインプットすれば、正確な情報をもとにした推論や分類が開始できます。

———————————————————————————————————–

ご参考:マクロやユーザ関数の組み込みをしたことがないかたは

1.Excel画面に「開発」のタブを表示させる:Excelのフォルダ>オプション>リボンのユーザ設定>右ペインの「開発」のセレクトボックスを選択 これでexcelの画面に「開発」タブがでるようになります。

2.Excelの「開発」タブ選択>左端の「Visual Basic」選択>VBエディター画面

3.VBエディターの挿入タブ選択>標準モジュール選択>プログラム記述の空白パレットが出るので、そこに生成AIが作った関数を貼り付ける。

これで、シートから関数をよびだすことができます。

———————————————————————————————————–

 少し、VBAプログラミングに近い話になってしまいましたが、従来ならば敬遠していたことが、生成AIのおかげでできるようになりました。生成AIは高度な洞察や推論、仮説立案だけでなく、身近なデータ分析作業の補完にも役立てることができるのではないでしょうか。

 ただし、生成AIに頼り過ぎにはご注意を。人間による検証が必要であることは変わりません。ニーズエクスプローラ社は生成AIによる知財業務の改革をご支援いたします。

キーワード:VBAマクロプログラムの作成、ユーザ関数の作成、特許分析の補完ツール

Needs Explorerによる課題発掘のトライアルのご案内

弊社ではより良い仕組み作成のため、AI×特許で企業様が興味ある新課題探索(上記サービスのニーズ探索・調査・分析)を期間限定の特別価格で実施させていただきます。企業様の強みや公開特許情報の事前ヒアリングの場をもたせていただきます。