はじめに
先日、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とも特徴が異なっているので、これらを組み合わせると色々と単語拡張が出来ておもしろいかも?