岡田テクノ特許事務所

単純ベイズ分類法を用いて特許仕分けを行ってみる



 機械学習の一手法である単純ベイズ分類法を用いて、特許に含まれる複数のタームから特許の仕分けを試みてみます。
 ここで言う仕分けとは、母集団の特許集合の中から着目している技術に関する特許集合を抽出することです。

 具体的にはR言語環境において単純ベイズ法に基づいたプログラムを作成します(コアの部分は既存のプログラム)。
 そのプログラムにより、あらかじめ人間が仕分けした調査結果を学習してモデルを作り、その調査とは異なる特許集合に対して前記モデルを用いて機械に特許を仕分けさせてみます。

 例として、歯間清掃ツールの特許集合を用いて、当該集合の中から特定の技術である「フロス」に関する特許の仕分けを行ってみました。

特許仕分け結果


1)歯間清掃ツールについて

 調査例のテーマとして、歯間清掃ツールを選びましたが、私的に関心が強いだけで他意はありません。
 (最近、歯医者や歯科衛生士からやたら勧められる。。。)

 歯間清掃ツールには、主にフロスと歯間ブラシとがあるようです。フロスは糸状繊維の束で、歯の接触面から歯間に挿入して使用するのに対して、歯間ブラシは楊枝のような棒状部材の先端にブラシが付いたもので、歯の側面から歯間に挿入して使用します。

 両者は形状が異なるので、図面を参照すれば分類するのは比較的容易ですが、今回は請求項等のテキストデータから、「フロス」に関連するものを抽出してみます。



2)単純ベイズ分類(Simple Bayesian classifier)について

 単純ベイズ分類では、注目している複数のターム(例えば、「歯」or「糸」等)が、特許文書の中に使われている場合に「該当」である確率、例えば「フロス」に関する特許である確率を求めます。今回の場合、「フロス」に関するものなのか、そうではないのか、の2択分類なので、確率が50%以上であれば、「該当」であると判断することにします。

 以下に、今回の検討に即して、単純ベイズ分類のアルゴリズムの自分なりの解釈を整理しました。

 尚、アルゴリズムの説明や詳細については専門書が多々ありますが、Rによる機械学習に関する書籍1)や金明哲先生の書籍2)が簡潔でわかりやすいと思います。

 もっとも、アルゴリズムの詳細を理解しなくても、下記のようにr言語のパッケージを利用して、動作・性能を確認することはできます。

特許件数ランキングプロット


3)利用した特許データについて

 母集合の特許情報データは、例えば特許検索データベースの1つであるSRPARTNER(日立システムズ)から入手します。もちろん、Jplatpat等他のデータベースから入手しても構わないのですが、それぞれのデータベースで若干フォーマットが異なることに注意を要します。

 下表にSRPARTNERから入手した特許情報データ構造の一部(抜粋)を示します。今回はテキストデータからのタームを抽出するので、各特許文献ごとに「発明等の名称」「要約」「請求の範囲」が含まれるデータを取得します。

 尚、今回は、トレーニング用特許集合として102件、テスト用特許集合として101件用意しました。

   その全てについて事前に内容を人間(わたくし)が確認して、下記表の右端列のようにマニュアル評価のデータ(人間が評価したデータ)を付加しています。下記例では、「フロス」に関する特許とそれ以外という観点で「●×」を付記しています。

SRPARTNERのダウンロードデータ


4)ドキュメントvsタームマトリックスの作成

 各特許文献(ドキュメント)ごとにタームの有無を表したドキュメントvsタームマトリックスを作成します。上記のように、「発明等の名称」「要約」「請求の範囲」の項目に分けられているが、文献ごとにこの3つをマージした上で、各特許文献のテキストにタームが含まれるか否かを1,0で記したものです。

 実際には、各特許文献に含まれる全てのタームについてのマトリックスを作るのでなく、適当なタームを選択して作成します。今回の例では、数千wordの中から30~40個のタームを選択しました。基本的には仕分け(分別)のポイントとなるタームを選ぶことになりますが、実際には、このタームの選択が意外とシビアに効いてくるようです。ここではこれ以上触れません。

 尚、一般には、ドキュメントvsタームマトリックスは各タームの頻度(ドキュメントに含まれる個数)で作成するようですが、特許分類に用いる場合は頻度に必ずしも重点を置いてません。つまり、頻度が低くても注目すべきタームが存在するので、頻度を重要視しすぎる方が危険と思うからです。このため、単に1,0のマトリックスとしています。

 マトリックスの右端列には、上記で求めたマニュアル評価のデータをマージしています。このデータがいわゆる機械学習でいうところの「目的変数」であり、他のマトリックスの要素が「説明変数」となります。

DocumentvsTermMatrix

5)モデルのトレーニング


5-0)利用パッケージ

 単純ベイズ分類のR言語における実装プログラムとしては、既存のパッケージ1071を利用しました。

 この詳細については、CRAN(The Comprehensive R Archive Network)に詳細が掲示されています。
Searchで"1071"とすれば、マニュアルを見つけることができます。


    #packageのインストール
    
    install.packages("e1071")
    library(e1071)
    

5-1)トレーニング用のドキュメントvsタームマトリックスを読み込む

 4)のドキュメントvsタームマトリックスはあらかじめcsv形式でShift-JISで作成しておけば、以下のようにR環境に読み込むことができます。

 下記でstringsAsFactorsの指定は必ずしも必要ないが、少なくとも、目的変数(class vector)はFactorである必要があります。


    #training用Document-Term Matrixの読み込み
    
    dat_train<-read.csv("DocTermMrxdat_train.csv",
      stringsAsFactors=TRUE,
      fileEncoding = "Shift-JIS")

    #1列目の公報番号を削除
    
    dat_train<-dat_train[,-1]
    

5-2)ベイズ分類器モデルの作成

 上記データをトレーニングデータとして、ベイズ分類器モデルを作成します。


    bayes_model <- naiveBayes(dat_train ,dat_train$Evaluation ,laplace =1)
    

ここで、

 第1引数:トレーニングデータを含むデータフレーム名
   (今回の場合はドキュメントvsタームマトリックス名)
 第2引数:目的変数(class vector)
   (今回はマニュアル評価結果の列をEvaluationというベクトルにしているのでこのベクトルを指定する)
 第3引数:ラプラススムージングのための正数。1か0で良い1)


6)特許仕分け及びその評価

 テスト用データのドキュメントvsタームマトリックスに対して、上記で作成したベイズ分類器モデルを用いて、特許仕分け(予測)を行います。

 テスト用データのドキュメントvsタームマトリックスは、上記トレーニング用のドキュメントvsタームマトリックスの特許集合とは異なる集合です。


6-1)ドキュメントvsタームマトリックスの読み込み

テスト用のデータセットであるドキュメントvsタームマトリックスを読み込みます。


    test_dataset<-read.csv("DocTermMrxdat_test.csv",
          stringsAsFactors=TRUE,
          fileEncoding = "Shift-JIS")
    

6-2)予測関数predictの呼び出し

予測関数predictにモデルとテストデータセットを渡して、特許仕分けの予測を行います。


    predict_result <- predict(bayes_model, test_dataset)
    

6-3)予測結果の評価

マニュアルの評価と予測した評価を比較しました。

本来、機械による特許仕分けでは、事前に人間が仕分けすることはナンセンスですが、今回は機械による特許仕分けの評価が目的なのでなので、テスト用データもマニュアル評価しています。そこで、あらかじめマニュアル評価していた結果と比較しました。

具体的には、tableを用いてマニュアルの評価と予測した評価との比較表を作成しました。また、比較表のデータから正答率を計算しました。

以上の具体的な関数の使い方や評価方法については、小林雄一郎先生の文献等がわかりやすくコンパクトにまとまっており、大変参考になります1),3)


    #比較テーブル作成
    
    result_table<-table(test_dpat$Evaluation,predict_data)

    #予測結果と正解率を出力

    cat("----------------------- \n")
    print(result_table)
    cat("----------------------- \n")

    print(sum(diag(prediction_result))/sum(prediction_result))
    cat("----------------------- \n")
    

「フロス」についての特許仕分けの予測は以下のような結果となりました。

特許仕分けの機械予測結果

マニュアル評価で「該当」であった23件のうち、22件は機械も「該当」と予測しましたた。
一方、マニュアル評価で「非該当」であった78件のうち、73件を機械も「非該当」と予測しました。

また、具体的な特許データとマニュアル評価、機械評価を整理した表(抜粋)を示します。

特許仕分け結果

本来、該当でなければならないのに非該当としたケース、非該当であるべきものを該当としたケースがあることがわかります。

上記では、正解率94%とかなり良い結果となったが、「フロス」等の特徴的なタームの有無で判断容易な事例だったためと考えられます。

尚、「フロス」の特許仕分けと同様に、「ブラシ」についても機械による特許仕分けの予測を行ったが、正答率は90%と「フロス」より下がりました。歯間ブラシの場合は「ブラシ」だけでは判断が難しい場合が多いからと思われます(判断タームが多数あって、分散してしまうとつらいようです。)。


7)総括

 ・ドキュメントvsタームマトリックスと評価データを作成しておけば、それほど労せず単純ベイズ分類モデルを作成することができる。

 ・個々のタームの出現確率が元になっているので、「該当」「非該当」が共に確率が低い場合には良い結果が出ない。従って、タームの選別が必要となる。
  同様の理由で、あまりたくさんのタームがある場合の分析には向かないようである。

 ・一方、トレーニング事例が多くても、確率を求めているだけなので、過学習みたいなことは起こらず、その意味では扱いやすい。

 ・実際の調査(分類分け)に100%信用して使用することはできないが、確認検証に使える可能性はある。



参考文献

1)ブレット・ランツ(翻訳:長尾高弘) Rによる機械学習 翔泳社
2)金 明哲 テキストアナリティクス 共立出版
3)小林雄一郎 Rによるやさしいテキストマイニング オーム社

特許情報プローブへ戻る