はじめに
同義語っぽいAPIを公開しました。こちらで公開しています。実体はWord2VecのDistance APIです。日本語Wikipedia全文にNeologdの辞書を適用して学習データにしました。今回はこの同義語っぽいAPIの動作を色々と見てみましょう。
サンプルコード
API
動作を見る
さっそく使ってみましょう。
「アディダス」を入力してみる
以前、Word2VecのAPIを公開したときの投稿でもご紹介しましたが、例えば「アディダス」を入力すると、以下の結果を返します。競合会社と製品が出てきますね。
単語 | コサイン距離(≒類似度) |
---|---|
ニューバランス | 0.753 |
アシックス | 0.751 |
アディダスジャパン | 0.713 |
ナイキ | 0.706 |
シューズ | 0.705 |
「太る」を入力してみる
一般動詞を入力してみましょう。最近の私の悩みである「太る」を入力すると、、、同義語ではないですね。反意語とネガティブな動詞が出てきました。「太る」の悩みは「老ける」の悩みに通じるものがあるのかもしれません。「老ける」人への励ましの言葉を少し改変すれば「太る」人への励ましの言葉を自動生成できるかもしれませんね。
単語 | コサイン距離(≒類似度) |
---|---|
痩せる | 0.806 |
老ける | 0.766 |
太れ | 0.753 |
臭う | 0.745 |
噛め | 0.742 |
「犬」を入力してみる
一般名詞を入力してみましょう。「犬」の場合は、、、近い動物が出てきました。同義語ではないですが、例えば「犬」を飼おうと迷っている人と「猫」を飼おうと迷っている人の悩みは共通するかもしれません。
単語 | コサイン距離(≒類似度) |
---|---|
猫 | 0.828 |
子犬 | 0.752 |
ネコ | 0.749 |
オオカミ | 0.738 |
イヌ | 0.730 |
「温かい」を入力してみる
形容詞もいってみましょうか。「温かい」の場合は、、、ほぼ同義語ですね。形容詞はそのまま検索クエリ拡張に使えそうです。
単語 | コサイン距離(≒類似度) |
---|---|
暖かい | 0.810 |
冷たい | 0.776 |
温かく | 0.739 |
暖まる | 0.706 |
あたたかい | 0.706 |
「十二国記」を入力してみる
個人的に大好きな小説「十二国記」を入力してみます。結果は、、、なんでしょう?少し調べてみたところ、どれも小説や漫画やゲームのようです。内容的に近いのでしょうか?ちょっと読書欲が湧いてきました。
単語 | コサイン距離(≒類似度) |
---|---|
黄塵 | 0.669 |
銀河戦国群雄伝ライ | 0.668 |
帝国千戦記 | 0.644 |
蒼天航路 | 0.643 |
閃光のナイトレイド | 0.641 |
分析する
上記の例の他に動作を色々と見たところ、だいたい以下な感じでした。
- 形容詞、形容動詞、副詞は(ほぼ)同義語が出る。同義語として使って問題なさそう。
- 固有名詞、名詞、動詞は同義語っぽいものが出る。入力単語と出力単語を入れ替えても文的に意味は通じる。質問サイトの類似回答を引っ張るのに使えるかも。
おわりに
非常に興味深いAPIが出来ました。Word2Vecは単語の意味をよく捉えていますね。色々とハックが進みそうです。こちらで無料で試せるので、ぜひ試してみて下さい。
2017/2/27追記
APIコールのRubyサンプルを追加しました。