特許文章版 分散表現：word2vecの学習済モデル ver1.0



# 分散表現公開
[前回作った分散表現](https://qiita.com/niship2/items/3b2592fd32bf557909c9)のバージョンアップ版（ver1.0）

[特許版word2vec学習モデル(.model)](https://storage.googleapis.com/patent_word2vec_300/ver1.0/patent_w2v_d300_20200208.model)<font color="red">214MB注意<font/>
[特許版word2vec学習モデル(.model.wv.vectors.npy)](https://storage.googleapis.com/patent_word2vec_300/ver1.0/patent_w2v_d300_20200208.model.wv.vectors.npy)<font color="red">3160MB注意<font/>
[特許版word2vec学習モデル(.model.trainables.syn1neg.npy)](https://storage.googleapis.com/patent_word2vec_300/ver1.0/patent_w2v_d300_20200208.model.trainables.syn1neg.npy)<font color="red">3160MB注意<font/>


* 2013～2015年に日本国特許庁で発行された全公開公報（150万件ほど）の全文を用いて学習
* tokenizeはMeCab+NEologdです。
* 次元数は300次元
* <font color="red">ただし、データが重すぎてエラーが出てcolaboratoryでは動かない場合があります。動作が確認できたのはGCEの n1-highmem-8 (8 vCPUs, 52 GB memory)　です。これくらいのスペックがないと動かないかもしれません。</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/4d2b5a3d-7312-90c4-c6c2-e631b3ab0b3e.png)

です。

```python
model.corpus_count #77222
model.vector_size #300
len(model.wv.vocab) #2831509

```

# 使い方
使い方は他の公開モデルと大体同じ↓
上記3つのファイルを同じフォルダに入れて、
/path/to/model/patent_w2v_d300_20200208.modelを適宜ファイルの場所に置き換えてもらい、
使ってください。

```python
from gensim.models.word2vec import Word2Vec
model_path = '/path/to/model/patent_w2v_d300_20200208.model'
model = Word2Vec.load(model_path)
```

読み込みできれば、分散表現を作るなり、

```python
word=""
results = model.wv.most_similar(positive=[word])
for r in results:
    print(r)
```
などで類似語を抽出するなり。


# 実験
[2014年で既にword2vecモデルを作成、実験されたサイト](http://blog.createfield.com/entry/2014/04/07/203125)(以下、「2014モデル」）があったので、それとの比較を。
※tokenizeや学習元のデータやパラメータが違うと思うので厳密な比較ではありませんが。

## 類似語

```python
word = "情報処理装置" #@param {type:"string"}
results = model.wv.most_similar(positive=[word],topn=10)
wds =[]
for r in results:
    wds.append(r[0])
print(" ".join(wds))
```

|比較|今回モデル(類似度上位10)|2014モデル|
|---|---|---|
|筆記具 |ボールペン マーキングペン シャープペンシル 筆記用具 万年筆 ボールペンレフィル 筆記 ペン先 プラスチックチップ レフィル|ボールペン 筆記 万年筆 消しゴム 水性ボールペン 水性インキ 筆記具用インキ 筆記用具 サインペン|
|自動車| 車両 自動車用 輸送機器 内装部品 車両用 自動車部品 内装材 自動車分野 産業機器 車載用|乗用車 オートバイ 車両 車輌 車輛 二輪車 乗り物 乗物  |
|スマートフォン|携帯電話 ノート型パソコン タブレット端末 モバイル機器 携帯情報端末 タブレットコンピュータ パソコン ノート型パーソナルコンピュータ ノートPC カーナビゲーションシステム|ＰＤＡ　携帯情報端末　パソコン　pda　携帯型コンピュータ　カーナビ|
|ラーメン|激戦区 うどん 中華料理 春雨 稲庭うどん ロングパスタ そうめん ウドン 日本そば きしめん|うどん 味噌汁 スープ 麺類 麺 玉子|
|情報処理装置|演算処理装置 携帯型 ハードウェア構成 コンピュータ 制御装置 基板処理システム 処理システム 入力装置 CPU(CentralProcessingUnit) CPU|情報処理システム データ処理装置 コンピュータ装置 多機能周辺装置 情報処理プログラム|
|煩雑|面倒 高コスト 煩雑化 複雑 コスト高 煩雑さ 手間 繁雑 不要 非効率|繁雑 面倒 煩わしい 煩瑣 手間|
|円滑|スムーズ 効率的 速やか スムース 確実 迅速 安定的 容易 効果的 定常的|スムーズ スムース 確実 容易 迅速 速やか|

ラーメン⇒「激戦区」は明らかに類義語ではない・・・w

## 類推語

```python
positive = "プリンタ,カメラ"
negative = "印刷"results= model.wv.most_similar(positive=positive.split(","), negative=negative.split(","), topn=5)

wds=[]
for r in results:
    wds.append(r[0])
print("{}→({})".format(positive.split(",")[0]," ".join(wds)))
```


|比較|今回モデル(類似度上位10)  |2014モデル|
|---|---|---|
|印刷→プリンタ 通信→?|通信→(コントローラ 通信装置 CPU(CentralProcessingUnit) 外部装置 通信インターフェース)|通信→(通信制御装置 ＬＡＮ データ通信 無線通信回線 無線通信網 ゲートウェイ装置 通信機器)|
|プリンタ→印刷　カメラ→?|カメラ→(デジタルカメラ 撮像装置 ビデオカメラ プリンター 着脱マウント)|カメラ→(撮影　撮像　被写体　撮像カメラ　ステレオ撮影　テレビカメラ)|



## 今回のモデルを使って出力してみた他の例：

```python
positive = "飛行機" 
negative = "翼"
飛行機→(電車 オートバイ 乗り物 電動カート バイク)

positive = "水素自動車,電気自動車"
negative = "電池"
水素自動車→(燃料電池自動車 水素スタンド 天然ガス自動車 圧縮天然ガス ハイブリット自動車)

positive = "信州"
negative = "蕎麦"
信州→(日刊工業新聞 誠文堂新光社 アンダーラボラトリーズ 技報堂 宝島社)

positive = "人間,ロボット"
negative = "心"
人間→(操作者 ロボットアーム ユーザ 作業者 使用者)

```
人間から「心」を取ると「作業者」や「使用者」になってしまうのですな。心しようと思いました。


## その他

そのうちこんな形の[実験](https://blog.hoxo-m.com/entry/2020/02/20/090000)しないとです。