Apitore blog

Apitoreを運営していた元起業家のブログ

【API】同義語辞書 ~WordNetの一部を切り出すシリーズ~

はじめに

先日、WordNetをシンプルに使えるWebAPIを公開しました。簡単で分かりやすいWebAPIですが、用途によっては冗長な場合もあります。今回は同義語辞書だけを切り出したWebAPIを公開します。

API

サンプルコード

解説

TIPS

名詞はそのまま使えますが、動詞や形容詞は語尾が活用します。WordNetは標準形のみを入力に取ります。「標準形なんてわかんねーよ」って場合は、形態素解析を挟むと良いです。 例えば、Apitoreで公開しているkuromoji WebAPIに単語を入力すると、レスポンスの中にbaseFormというものがあります。これが標準形です。 例を挙げると、「やってみる」の形態素解析結果から標準形を取ると、「やる」「て」「みる」になります。

使ってみた

WordNetの公式ページはこちらです。商用利用可能です。以前Apitoreで公開したWord2Vec版の同義語辞書と比べると

という感じになります。 例を見てみましょう。 「オオカミ」を入力したときの各APIの出力は、 Word2Vec

"distances": [
  {
    "word": "キツネ",
    "distance": 0.8176941871643066
  },
  {
    "word": "ウサギ",
    "distance": 0.7847542762756348
  },
  {
    "word": "イノシシ",
    "distance": 0.7804362773895264
  },
  {
    "word": "ヒツジ",
    "distance": 0.7634271383285522
  },
  {
    "word": "クマ",
    "distance": 0.75556880235672
  }
]

WordNet

"entries": [
  {
    "labelen": "syns",
    "labelja": "同義語",
    "pos": "n",
    "words": [
      "狼",
      "ウルフ"
    ]
  }
]

こんな感じです。Word2Vecは文脈の類似度を評価しているのに対し、WordNetは人手で整備されています。Word2Vecは同義語というより、同文脈語というか・・・文脈類似語というか・・・。 一方で、単語の網羅率はWord2Vecの圧勝です。再学習も簡単なので、メンテナンスコストも低いです。例えば「魔女の宅急便」を入力するとこんな感じです。 Word2Vec

"distances": [
  {
    "word": "風の谷のナウシカ",
    "distance": 0.7520506381988525
  },
  {
    "word": "おもひでぽろぽろ",
    "distance": 0.7515535950660706
  },
  {
    "word": "天空の城ラピュタ",
    "distance": 0.7251278162002563
  },
  {
    "word": "となりのトトロ",
    "distance": 0.7243631482124329
  },
  {
    "word": "思い出のマーニー",
    "distance": 0.7131333947181702
  }
]

WordNet

"entries": []

おわりに

今回はWordNetの同義語辞書の部分だけを抜粋してWebAPIにしました。同義語は単体でよく使いたくなる機能だと思います。Word2Vecとも特徴が異なっているので、これらを組み合わせると色々と単語拡張が出来ておもしろいかも?