CreateField Blog

オープンソースを使って個人でWebサービスを開発・運営していたブログ

特許データで学習させたSpherical Text Embeddingの結果を眺める

はじめに

これは、情報検索・検索エンジン Advent Calendar 2019 の 22日目の記事です。

かなり遅れてしまいましたが、Advent Calendar 2019の記事を書きます。

意味的に類似するドキュメントを検索するために活用される技術の1つとして、Word Embeddingがあります。 今回は、Word Embedding系の技術で最近提案されたSpherical Text Embedding - JoSE(Joint Spherical Embedding)を特許データで試してみます。

  • 論文

https://arxiv.org/pdf/1911.01196.pdf

  • スライド

https://yumeng5.github.io/files/Spherical-Text-Embedding.pdf

Spherical Text Embedding について

Spherical Text Embeddingは、周囲の単語だけでなく、段落/文書全体とも意味的に一貫しているべきという理論にもとづき、球面埋め込み空間を利用して学習して、単語、文書の分散表現を得る手法のようです。

以下は、論文中より単語類似度の精度比較です。Word2VecやfastTextより精度が良い結果が得られているそうです。

f:id:naoa_y:20191224213003p:plain
Spherical Text Embedding https://arxiv.org/pdf/1911.01196.pdf より抜粋

学習時間も早くリーズナブルそうです。

f:id:naoa_y:20191225122227p:plain
Spherical Text Embedding https://arxiv.org/pdf/1911.01196.pdf より抜粋

GitHubに実装が公開されています。文ベクトルの出力オプションもありそうです。

github.com

$ ./src/jose
Parameters:
        -train <file> (mandatory argument)
                Use text data from <file> to train the model
        -word-output <file>
                Use <file> to save the resulting word vectors
        -context-output <file>
                Use <file> to save the resulting word context vectors
        -doc-output <file>
                Use <file> to save the resulting document vectors
        -size <int>
                Set size of word vectors; default is 100
        -window <int>
                Set max skip length between words; default is 5
        -sample <float>
                Set threshold for occurrence of words. Those that appear with higher frequency in the
                training data will be randomly down-sampled; default is 1e-3, useful range is (0, 1e-3)
        -negative <int>
                Number of negative examples; default is 2
        -threads <int>
                Use <int> threads; default is 20
        -margin <float>
                Margin used in loss function to separate positive samples from negative samples; default is 0.15
        -iter <int>
                Run more training iterations; default is 10
        -min-count <int>
                This will discard words that appear less than <int> times; default is 5
        -alpha <float>
                Set the starting learning rate; default is 0.04
        -debug <int>
                Set the debug mode (default = 2 = more info during training)
        -save-vocab <file>
                The vocabulary will be saved to <file>
        -read-vocab <file>
                The vocabulary will be read from <file>, not constructed from the training data
        -load-emb <file>
                The pretrained embeddings will be read from <file>

Examples:
./jose -train text.txt -word-output jose.txt -size 100 -margin 0.15 -window 5 -sample 1e-3 -negative 2 -iter 10

試行結果

30万件約20GBの特許データで学習させてみました。

単語ベクトルの類似結果を見てみます。

query: 自動車
---
('乗用車', 0.8404606580734253), 
('車両', 0.8378781080245972), 
('車輌', 0.7979249358177185), 
('自動二輪車', 0.7885137796401978), 
('自転車', 0.782609224319458), 
('オートバイ', 0.7789096236228943), 
('航空機', 0.7780036330223083), 
('電気自動車', 0.7770860195159912),
('二輪車', 0.7740814685821533),
('乗り物', 0.7717453837394714),
('車載', 0.7691519260406494),
('鉄道車両', 0.7605024576187134), 
('乗物', 0.7498664855957031)
...
]
query: プリンタ
----
[
('印刷装置', 0.8641186952590942),
('画像形成装置', 0.8083310723304749),
('印刷', 0.7867810726165771),
('プリント', 0.7860059142112732),
('MFP', 0.7771070599555969),
('画像形成', 0.7665582895278931),
('複写機', 0.7597976922988892),
('インクジエツト記録装置', 0.7596516609191895),
('画像形成部', 0.7595673203468323),
('スキヤナ', 0.7568787932395935),
...
]
query:  レーザ
[
('レーザ光', 0.7883974313735962),
('レーザビーム', 0.7772529721260071),
('フアイバーレーザ', 0.7631707191467285),
('CO2レーザ', 0.7576791048049927),
('レーザー装置', 0.7439086437225342),
('レーザー光', 0.7391970753669739),
('レーザービーム', 0.7351175546646118),
...
]
query: 携帯電話
-----
[
('スマートフオン', 0.9211865663528442),
('携帯情報端末', 0.8552143573760986),
('携帯電話機', 0.8257875442504883),
('テレビ', 0.8204030990600586),
('タブレツト端末', 0.8194489479064941),
('ノートパソコン', 0.8147341012954712),
('タブレツトPC', 0.8041720986366272),
('携帯', 0.7919098138809204),
('スマートウオツチ', 0.7867792844772339),
('スマートホン', 0.7841475009918213), 
...
]
[
query: アルコール
----
('グリセリン', 0.7986409664154053),
('エタノール', 0.7715713977813721),
('脂肪酸', 0.7600075006484985),
('エステル', 0.7566314935684204),
('エーテル', 0.7565040588378906),
('脂肪族アルコール', 0.7549535036087036),
('プロピレングリコール', 0.7479276061058044),
('多価アルコール', 0.7424640655517578),
('アルキルエーテル', 0.7266831994056702),
...
]

単語ベクトルとしては、それなりの結果がでているように見えますが、過去に試した他のWord embeddingsに比べると、感覚的には、若干いまいちのように感じます。(試したときの学習量の違いかもしれません)

また、文書ベクトルの類似結果を見てみます。今回は何も考えず、全文を入力させています。なお、特許の全文はかなり長いです。

query: 自動車 要約 課題 ポート噴射弁 筒内噴射弁 燃料 供給 する 燃料供給装置 振動 大きく なつ 音 発生 する の 抑制 する 解決 手段 燃料供給装置 燃料タンク 燃料タンク 燃料 ポート噴射弁 接続 さ れ 通路 供給 する ポンプ 通路 設け られ 逆止弁 通路 逆止弁 ポート噴射弁 側 燃料 加圧 し 筒内噴射弁 接続 さ れ 通路 供給 する ポンプ 有する ポート噴射弁 供給 する 燃料 燃圧 目標 燃圧 なる よう ポンプ 制御 する エンジン 運転開始時 目標 燃圧 所定 燃圧 設定 し その後 エンジン 回転数 燃料供給装置 共振 領域 外 なつ とき 目標 燃圧 所定 燃圧 低い 所定 燃圧 切り替える 選択 図 図3
----
0.8253768086433411, 自動車 要約 課題 エンジン ポート噴射弁 筒内噴射弁 燃料 供給 する 燃料供給装置 振動 し 音 発生 する の 抑制 する 解決 手段 燃料供給装置 燃料タンク 燃料タンク 燃料 ポート噴射弁 接続 さ れ 通路 供給 する ポンプ 通路 設け られ 逆止弁 通路 逆止弁 ポート噴射弁 側 燃料 加圧 し 筒内噴射弁 接続 さ れ 通路 供給 する ポンプ 有する ポート噴射弁 供給 する 燃料 目標 燃圧 基づく 目標回転数 ポンプ 回転 する よう ポンプ 制御 する もの 目標 燃圧 低下 応じ ポート噴射弁 供給 する 燃料 燃圧 ポート 側 燃圧 低下 し いる 際 ポート 側 燃圧 脈動 程度 所定 程度 以上 とき 所定 程度 未満 とき 目標回転数 大きく する 選択 図 図3...
0.8230206966400146,  ハイブリツド自動車 要約 課題 粒子状物質除去フイルタ 再生 行なう 機会 多く する 解決 手段 排気 系 粒子状物質 除去 する 粒子状物質除去フイルタ 有する エンジン 走行 用 >動力 出力 する モータ 所定 車速 未満 エンジン 間欠 運転 許可 し 運転者 要求 する 要求 パワー 走行 する よう エンジン モータ 制御 する 制御装置 備える ハイブリツド自動 車 粒子状物質除去フイルタ 粒子状物質 堆積量 堆積量 以上 推定 し とき 車速 所定 車速 小さい 所定 車速 以上 所定 車速 未満 状態 所定 時間 継続 し とき エンジン 間欠 運>転 禁止 する 選択 図 図2
0.8182553648948669, 車両用制御装置 要約 課題 モータ 温度 許容上限温度 超える こと 抑制 し モータ 走行 走行 する 機会 多く する 解決 手段 エンジン 停止 さ れ モータ 回転数 所定回転数 以下 モータ 出力 さ れる トルク 所定トルク 以上 状態 時間 以上 経過 し とき モータ モータ ロツク状態 判定 し 時間 長い 時間 以内 モータ モータ ロツク状態 判定 さ れ 回数 所定 回数 以上 なつ とき エンジン 始動 する これ モータ 温度 許容上限温度 超える こと 抑制 し モータ 走行 走行 する 機会 多く する こと できる 選択 図 図4 ...
query: プリンタ 要約 課題 同じ プリンタメカ 形成 さ れ 幅 異なる 記録 紙 対応 し プリンタ 各々 記録 紙 印刷 さ れ いる 黒 マーク 検出 する こと できる プリンタ 提供 する 解>決 手段 印字ヘツド 記録 紙 印字 なさ れる プリンタ 搬送 さ れる 前記 記録 紙 案内 する ガイド 前記 記録 紙 検出 する センサ 前記 センサ 実装 さ れる 基板 有し 前記 ガイド 前記 センサ 露出 さ せる ため 複数 穴 設け られ おり...
----
0.762130081653595,  電子機器 要約 課題 コスト プリント基板上 回路素子 発生 さ せる ノイズ 伝搬 効果 的 抑える こと できる 電子機器 提供 する 解決 手段 表面 グラウンドパターン 形成 さ れ プリント基板 プリント基板 表面 対向 する よう 配置 さ れる シールド部材 備える シールド部材 グラウンドパターン 対向 し プリント基板 側 突出 し 帯状 領域 有し 当該 帯>状 領域 内 設け られ 複数 ねじ 穴 それぞれ 通る ねじ プリント基板 締結 さ れ シールド部材
0.7610459327697754, 画像形成装置 要約 課題 発光素子 受光素子 迷光 抑制 し 発光素子 受光素子 配置 自由度 高める こと 目的 する 解決 手段 光センサ 被検知領域 光 出射 する 発光素子 被検知領域 反射 さ れ 光 受光 する 受光素子 被検知領域 拡散反射 さ れ 光 受光 する 受光素子 素子 設け られる 基板 備える 基板 被検知領域 対向 する 面 当該 面 被検知領域 反対 側 面 B 面 面 B 貫通 する 貫通 部 C 有する 素子 うち 2つ 素子 基板 面 配置 さ れ...
0.7596758604049683.  プリント 基板接続構造 要約 課題 実装 面積 極小 し プリント基板 間 任意 トポロジ 安定 接続 する こと できる プリント 基板接続構造 提供 する 解決 手段 プリント 基板接続構造 接触 型 コネクタ 接触 型 コネクタ 挟ん 配置 さ れ 接触 型 コネクタ 接続 さ れる プリント基板 接触 型 コネクタ 挿入 さ れ 接触 型 コネクタ 高さ 対応 する 厚み 有>する フレーム 有し いる 選択 図 図1 請求項 接触 型 コネクタ 前記 接触 型 コネクタ 挟ん 配置 さ れ 前記 接触 型 コネクタ 接続 さ れる プリント基板 前記 接触 型 コネクタ 挿入 さ れ 前記 接触 型 コネクタ 高さ 対応 する 厚み 有する フレーム 有する プリント 基板接続構造 請求項 前記 フレーム 

多少の類似性はとれていそうですが、長文として特徴を捉えられているかというと微妙な感じですね。もう少し検証が必要そうです。

おわりに

今回は時間がなかったのでテスト的に30万件20GBのデータで試しましたが、今後、1000万件以上、600GB以上の全特許データに適用させて、もうちょっとちゃんとした検証をしたいと思います。 現在、その他には、BERTの特徴量抽出ベースでの類似検索も検討しています。

検証して精度が出るようであれば、今後、私が個人で開発し、事業化した自社サービス https://patentfield.com に適用していきます。

弊社のPatentfieldのサービスでは、全文検索エンジンにGroongaを採用しており、ベクトル検索エンジンや機械学習エンジンも独自に内部に組み込んで、大量のデータであっても全てをメモリに乗せる必要なく、高速且つ柔軟に検索に組み合わせて利用できるようにしています。

Patentfieldでは、創業から3期が経過し、顧客法人数100社を超え、売上もだいぶ立ち上がってきました。来年はさらに加速度的に大きくしていきます。弊社での開発に興味があれば、お気軽にご連絡下さい。

お問合せ・お申込み | Patentfield