読者です 読者をやめる 読者になる 読者になる

よしだのブログ

サブタイトルはありません。

ニコニコ大百科でCloudSearchの日本語精度を探ってみる。

どうも!Amazon CloudSearch の日本語の精度はどの程度なのか軽く検証してみました。データはニコニコ大百科です。

追記 4/24:5月15日に、Amazon CloudSearch ネタでしゃべることになりました! - よしだのブログ

手順

1.ニコニコ大百科のデータを入手します

以下で公開されています。フォーマットは CSV でした。 http://www.nii.ac.jp/cscenter/idr/nico/nico.html

2.取得したデータをCloudSearch用に加工します

簡単なスクリプトを python で書いて、CSV から SDF*1 に変換しました。本文からタイトルを抽出する機能もついてます。変換スクリプトは以下で公開しました。

https://github.com/yoshi0309/nicopediaCsvToSDF

コマンドラインツールには、CSV から SDF に変換する機能も付いているので、直接 CSV を食わせても良かったのですが、タイトルを抽出したかったのと、ボディから不要なタグを削りたかったのでスクリプトを書いています。

3.SDFをコマンドラインツール経由で CloudSearch に投入します

cs-import-documents -d hoge2 -s rev201401.json

4.あとは検索しまくってみる!

色々いじってみた感想

全体的な印象しては、精度は高めだと感じました。特にスコアの評価は概ね適切なように思います。ひらがなの単語はイマイチという印象です。新語に限らず、変な位置で切れていたりします。意外とカタカナは精度高く扱えているように感じました。

悩ましいのは、CloudSearch では形態素解析用の辞書をいじったり、その他カスタマイズでチューニングすることができない点です。高い精度が求められる場合や、専門用語だらけのコンテンツを扱いたい場合はちょっとキツイかもしれません。

あと、精度とは関係ないのですが、サマリの出力がイマイチなものがあるのが気になりました。妙に短かったり、サマリにハイライト部分が含まれていなかったり。

以下スクリーンショットたち

カベ f:id:yoshi0309:20140415234638p:plain

サヴァイヴァー f:id:yoshi0309:20140415234642p:plain

モスキート音 f:id:yoshi0309:20140415234646p:plain

νガンダム f:id:yoshi0309:20140415234650p:plain

ひらがな苦手?

おにくだいすき!ゼウシくん f:id:yoshi0309:20140415234657p:plain

おにく f:id:yoshi0309:20140415234707p:plain

これくしょん f:id:yoshi0309:20140415234700p:plain

とっぴんぱらり f:id:yoshi0309:20140415234721p:plain f:id:yoshi0309:20140415234715p:plain

ここではきものを脱ぐ (きもの と はきもの) f:id:yoshi0309:20140415234724p:plain

f:id:yoshi0309:20140415234718p:plain

ノーマライズ

ヴァはバにノーマライズしてくれない f:id:yoshi0309:20140415234704p:plain

エとヱ f:id:yoshi0309:20140415234653p:plain

顔文字には対応していないですね

(`・ω・´) - ヒットしているけど、ω 以外は全てストップワード*2の模様。 f:id:yoshi0309:20140415234711p:plain

2013年の新語もやってみました

お・も・て・な・し - 中点は同じくストップワードですね。 f:id:yoshi0309:20140415234739p:plain f:id:yoshi0309:20140415234741p:plain

じぇじぇじぇ - わかりにくいですが、先頭の”じ”がハイライトされていないです。 f:id:yoshi0309:20140415234728p:plain

アベノミクス f:id:yoshi0309:20140415234731p:plain

ヘイトスピーチ f:id:yoshi0309:20140415234735p:plain

以上、ご参考まで!

*1:実体は jsonフォーマット。

*2:検索対象として扱われない文字。記号に多い。