5月15日 AWSプロダクトシリーズ|よくわかるAmazon CloudSearch(東京都)
少し CloudSearch を触ったことがある、という状態で行ってみました。
英語の話はわからないのでは…と不安でしたが、逐次日本語訳を付けて頂けたので何とかついていけました。
以下、自分の興味のあったところなど。
■CloudSearch Technical Deep Dive
インデックス作成時は下記の流れで文章を処理しているとのこと。
・トークナイズ (日本語なら形態素解析)
・ノーマライズ
・英語なら小文字に寄せる
・日本語だと半角カナを全角カナに寄せる。ただし「ヴ」の扱いなどまだ微妙なものも。
・ステミング (活用している語を自立語にするなど)
・stop word を取り除く (冠詞を除く? 日本語なら助詞を除くなど)
・シノニムを加える
・シノニムには1方向の alias と双方向?の group がある。
今はできないこと (将来の課題?)
・N-gram
・形態素解析辞書のカスタマイズ
■Impression of using CloudSearch
・ドキュメントの追加・削除はなるべくまとめてしないとお金がかかる。
・頼めばインスタンスとパーティションを増やしてもらうことはできるが、ウォームアップはできない。
・VPC のセキュリティグループ使えない。
■感想というか、今後の希望。
・グルーピングの機能がほしいのでお願いします!!!
例えば、色・サイズごとに在庫数があって、グルーピングしつつ在庫のあるものだけをひっかける、とかしたいです!
・ウォームアップもほしいです。発売日とかセールとか、アクセスが跳ね上がるケースってあると思うので…
・N-gram と辞書のカスタマイズも…
・ちょっとデータ入れて検索を試してみる、というところまではシンプルなので
グルーピングや精度にうるさい全文検索が不要なら使えるのでは、と思いました。
アクセス数が特に跳ね上がらなければ普通にオートスケールもあるとのことですし。
・話にもあまり上がらなかったし、自分でも試せていないのですが、
latlon の検索がどんな感じなのか、気になります…
少し CloudSearch を触ったことがある、という状態で行ってみました。
英語の話はわからないのでは…と不安でしたが、逐次日本語訳を付けて頂けたので何とかついていけました。
以下、自分の興味のあったところなど。
■CloudSearch Technical Deep Dive
インデックス作成時は下記の流れで文章を処理しているとのこと。
・トークナイズ (日本語なら形態素解析)
・ノーマライズ
・英語なら小文字に寄せる
・日本語だと半角カナを全角カナに寄せる。ただし「ヴ」の扱いなどまだ微妙なものも。
・ステミング (活用している語を自立語にするなど)
・stop word を取り除く (冠詞を除く? 日本語なら助詞を除くなど)
・シノニムを加える
・シノニムには1方向の alias と双方向?の group がある。
今はできないこと (将来の課題?)
・N-gram
・形態素解析辞書のカスタマイズ
■Impression of using CloudSearch
・ドキュメントの追加・削除はなるべくまとめてしないとお金がかかる。
・頼めばインスタンスとパーティションを増やしてもらうことはできるが、ウォームアップはできない。
・VPC のセキュリティグループ使えない。
■感想というか、今後の希望。
・グルーピングの機能がほしいのでお願いします!!!
例えば、色・サイズごとに在庫数があって、グルーピングしつつ在庫のあるものだけをひっかける、とかしたいです!
・ウォームアップもほしいです。発売日とかセールとか、アクセスが跳ね上がるケースってあると思うので…
・N-gram と辞書のカスタマイズも…
・ちょっとデータ入れて検索を試してみる、というところまではシンプルなので
グルーピングや精度にうるさい全文検索が不要なら使えるのでは、と思いました。
アクセス数が特に跳ね上がらなければ普通にオートスケールもあるとのことですし。
・話にもあまり上がらなかったし、自分でも試せていないのですが、
latlon の検索がどんな感じなのか、気になります…
#
by tokage-shippo
| 2014-05-16 12:27
| プログラミング
参考
Wikipediaのダウンロードできるデータファイル一覧 | mwSoft
Wikipedia:データベースダウンロード - Wikipedia
Wikipedia のデータはクロール禁止になっている。
代わりにダンプがダウンロードできる。
最新のファイル → http://dumps.wikimedia.org/jawiki/latest/
■全体的に
データ量が多いので、ダウンロードもデータの投入も加工も何もかも時間がかかる。
■ページの情報
ページのタイトル等のみの情報(page)と本文(text)がある。
jawiki-latest-pages-articles.xml.bz2 をダウンロード。
解凍 → 加工 → MySQL に投入という手順。
解凍すると xml が出てくるので、sql にするために xml2sql を使う。Data dumps/xml2sql - Meta
Windows なら zip をダウンロードして解凍すれば使える。
ただ、xml ファイルをそのまま xml2sql に渡すと
「unexpected element <ns>」のようなエラーが出るので sed で加工してから渡す。
Windows7 のコマンドプロンプトだとエスケープがうまく書けなかったので
MinGW で下記のコマンドを実行した。(パス通してなければ xml2sql はフルパスで書く)
cat jawiki-latest-pages-articles.xml | sed -e 's/<ns>.*<\/ns>\|<ns.*\/>\|<parentid>.*<\/parentid>\|<parentid.*\/>\|<sha1>.*<\/sha1>\|<sha1.*\/>\|<model>.*<\/model>\|<model.*\/>\|<format>.*<\/format>\|<format.*\/>\|<redirect>.*<\/redirect>\|<redirect.*\/>//' | xml2sql
Mac のデフォルトの sed だとうまくいかないかもしれないのでだめなら GNU sed を使う。
brew install gnu-sed → brew link gnu-sed → gsedコマンド使う(sedコマンドの代わりに)
データベースを用意する。スキーマは mediawiki のものを利用する。
http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/maintenance/tables.sql
■カテゴリの情報
jawiki-latest-categorylinks.sql.gz をダウンロード。
解凍後 MySQL にそのまま投入する。
■本文情報として abstract.xml は利用できないの?
どうも 1行目しかないっぽく、画像の指定しか入ってなかったりするものもあって、
残念ながら自分にとっては役に立たなさそうだった。
Wikipediaのダウンロードできるデータファイル一覧 | mwSoft
Wikipedia:データベースダウンロード - Wikipedia
Wikipedia のデータはクロール禁止になっている。
代わりにダンプがダウンロードできる。
最新のファイル → http://dumps.wikimedia.org/jawiki/latest/
■全体的に
データ量が多いので、ダウンロードもデータの投入も加工も何もかも時間がかかる。
■ページの情報
ページのタイトル等のみの情報(page)と本文(text)がある。
jawiki-latest-pages-articles.xml.bz2 をダウンロード。
解凍 → 加工 → MySQL に投入という手順。
解凍すると xml が出てくるので、sql にするために xml2sql を使う。Data dumps/xml2sql - Meta
Windows なら zip をダウンロードして解凍すれば使える。
ただ、xml ファイルをそのまま xml2sql に渡すと
「unexpected element <ns>」のようなエラーが出るので sed で加工してから渡す。
Windows7 のコマンドプロンプトだとエスケープがうまく書けなかったので
MinGW で下記のコマンドを実行した。(パス通してなければ xml2sql はフルパスで書く)
cat jawiki-latest-pages-articles.xml | sed -e 's/<ns>.*<\/ns>\|<ns.*\/>\|<parentid>.*<\/parentid>\|<parentid.*\/>\|<sha1>.*<\/sha1>\|<sha1.*\/>\|<model>.*<\/model>\|<model.*\/>\|<format>.*<\/format>\|<format.*\/>\|<redirect>.*<\/redirect>\|<redirect.*\/>//' | xml2sql
Mac のデフォルトの sed だとうまくいかないかもしれないのでだめなら GNU sed を使う。
brew install gnu-sed → brew link gnu-sed → gsedコマンド使う(sedコマンドの代わりに)
データベースを用意する。スキーマは mediawiki のものを利用する。
http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/maintenance/tables.sql
mysql -uroot -pマシンスペックにもよるが、すごく時間がかかる。待つ。
create database wikipedia;
exit
mysql -uroot -p wikipedia < tables.sql
mysqlimport --default-character-set=utf8 -uroot -p -d -L wikipedia page.txt
mysqlimport --default-character-set=utf8 -uroot -p -d -L wikipedia revision.txt
mysqlimport --default-character-set=utf8 -uroot -p -d -L wikipedia text.txt
■カテゴリの情報
jawiki-latest-categorylinks.sql.gz をダウンロード。
解凍後 MySQL にそのまま投入する。
■本文情報として abstract.xml は利用できないの?
どうも 1行目しかないっぽく、画像の指定しか入ってなかったりするものもあって、
残念ながら自分にとっては役に立たなさそうだった。
#
by tokage-shippo
| 2014-03-03 18:33
Windows7 で JDK を新しく入れてパスを変えました。
最初 Eclipse の起動をしようとしてエラーになり、コマンドプロンプトで java -version をやってもエラー。
(ファイルパスの頭の方は手を加えています。)
ググったところ、ファイルがないからだとか書かれていて、
確かにその場所にファイルはないが別の場所をパスに指定したつもりなんだよ…!と
思ったりもしたのですが、ぴったりなものがありました。
Java path..Error of jvm.cfg - Stack Overflow
この回答通り、 c:\windows\system32 に java.exe、javaw.exe、javaws.exe がありました。
これらを消したところ解消しました。
最初 Eclipse の起動をしようとしてエラーになり、コマンドプロンプトで java -version をやってもエラー。
(ファイルパスの頭の方は手を加えています。)
Error: could not open
`C:XXXXXX\jre7\lib\amd64\jvm.cfg'
ググったところ、ファイルがないからだとか書かれていて、
確かにその場所にファイルはないが別の場所をパスに指定したつもりなんだよ…!と
思ったりもしたのですが、ぴったりなものがありました。
Java path..Error of jvm.cfg - Stack Overflow
Delete the “java.exe” file from “c:\windows” and “c:\windows\system32″.
この回答通り、 c:\windows\system32 に java.exe、javaw.exe、javaws.exe がありました。
これらを消したところ解消しました。
#
by tokage-shippo
| 2014-02-14 13:59
1機種でしか見ていないのでタイトル釣りっぽい…。
書いたもの → ポケモンのマーキングをメモできるよ
下記の通り、自分の端末ではこれで困らないからいいや、としている部分が多いので
他の機種で動作するかはわからないです。
■環境
GALAXY S III SC-06D (Android 4.1.2)
■目的
ポケモンで個体値を教えてくれる人がいますが、マーキングするまで覚えていられないので
メモするために6種類のマーク * 6セットをオンオフできるだけのページを書きました。
■マークのサイズが揃わない
マークは ● ▲ ■ ♥ ◆ ★ です。
自分の環境だと PC ではハートマークが細く、
GALAXY s3 ではハートと星が大きくなってしまい、サイズが揃いませんでした。
仕方ないのでそれぞれのマークは画像にして切り替えています。
■タップしても反応が遅かった
各マークを押したときを click イベントで拾おうとしたら
PC は良かったのですが Android ですごく遅かったです。
touchstart イベントを使うようにしたところ、PC と同様の感覚で操作できるようになりました。
touchstart を click 代わりにするのは、スクロールしようとしたら反応してしまう、
といった問題があるようですが、今回は特にページが長くないので気にしないことにしました。
■連打してるとどうしてもページが拡大されてしまった
GALAXY s3 でマークを連打すると、ページの拡大が発動してしまいました。
viewport の設定とか結構悩んだのですがうまく解決できず、
touchstart のイベントで e.preventDefault(); を呼んで
ブラウザの既定の動作をキャンセルして回避しました。
これ作ってたので、最近ポケモンのタマゴ孵化させてないです。本末転倒。
書いたもの → ポケモンのマーキングをメモできるよ
下記の通り、自分の端末ではこれで困らないからいいや、としている部分が多いので
他の機種で動作するかはわからないです。
■環境
GALAXY S III SC-06D (Android 4.1.2)
■目的
ポケモンで個体値を教えてくれる人がいますが、マーキングするまで覚えていられないので
メモするために6種類のマーク * 6セットをオンオフできるだけのページを書きました。
■マークのサイズが揃わない
マークは ● ▲ ■ ♥ ◆ ★ です。
自分の環境だと PC ではハートマークが細く、
GALAXY s3 ではハートと星が大きくなってしまい、サイズが揃いませんでした。
仕方ないのでそれぞれのマークは画像にして切り替えています。
■タップしても反応が遅かった
各マークを押したときを click イベントで拾おうとしたら
PC は良かったのですが Android ですごく遅かったです。
touchstart イベントを使うようにしたところ、PC と同様の感覚で操作できるようになりました。
touchstart を click 代わりにするのは、スクロールしようとしたら反応してしまう、
といった問題があるようですが、今回は特にページが長くないので気にしないことにしました。
■連打してるとどうしてもページが拡大されてしまった
GALAXY s3 でマークを連打すると、ページの拡大が発動してしまいました。
viewport の設定とか結構悩んだのですがうまく解決できず、
touchstart のイベントで e.preventDefault(); を呼んで
ブラウザの既定の動作をキャンセルして回避しました。
これ作ってたので、最近ポケモンのタマゴ孵化させてないです。本末転倒。
#
by tokage-shippo
| 2013-11-01 00:10
「mailx 添付ファイルになる」でぐぐっても
あまりよくわからなかったのでメモ。
■前提
・body.txt に UTF-8 で日本語の文章が書いてある
・cat body.txt | mailx -s "title" "自分のメールアドレス" でメールを送る
・みたいなコマンドをシェルスクリプトに書いて cron で動かす
・すると、cron で動かし、かつ、本文に日本語が含まれる時だけ、
本文が空っぽで、本文になるはずの内容が添付ファイルで送られてくる。
・本文に日本語がなければこの現象は起きない。
・手動での実行でも起きない。
■対策
スクリプトの先頭に export LC_CTYPE=ja_JP.UTF-8 を記載する。
もしくは
0 15 * * * LANG=ja_JP.UTF-8 動かすスクリプト
みたいに cron の設定の中に文字コードの設定を書いておく。
■原因
mailx コマンドでは LC_CTYPE に設定されている文字コードが使われるらしい。
手動と cron で locale コマンドを実行すると結果が異なり、
手動では LC_CTYPE="ja_JP.UTF-8" などとなっていても
cron での実行だと LC_CTYPE="POSIX" のようになってしまう。
■参考
【嵌りました】CRONで動かない! cron jobに環境変数LANGは引継がれず: Pythonと自分 ~ a python life
+++ 上野メモ帳 +++ cronだとLANGとかLC_CTYPEが反映されない
あまりよくわからなかったのでメモ。
■前提
・body.txt に UTF-8 で日本語の文章が書いてある
・cat body.txt | mailx -s "title" "自分のメールアドレス" でメールを送る
・みたいなコマンドをシェルスクリプトに書いて cron で動かす
・すると、cron で動かし、かつ、本文に日本語が含まれる時だけ、
本文が空っぽで、本文になるはずの内容が添付ファイルで送られてくる。
・本文に日本語がなければこの現象は起きない。
・手動での実行でも起きない。
■対策
スクリプトの先頭に export LC_CTYPE=ja_JP.UTF-8 を記載する。
もしくは
0 15 * * * LANG=ja_JP.UTF-8 動かすスクリプト
みたいに cron の設定の中に文字コードの設定を書いておく。
■原因
mailx コマンドでは LC_CTYPE に設定されている文字コードが使われるらしい。
手動と cron で locale コマンドを実行すると結果が異なり、
手動では LC_CTYPE="ja_JP.UTF-8" などとなっていても
cron での実行だと LC_CTYPE="POSIX" のようになってしまう。
■参考
【嵌りました】CRONで動かない! cron jobに環境変数LANGは引継がれず: Pythonと自分 ~ a python life
+++ 上野メモ帳 +++ cronだとLANGとかLC_CTYPEが反映されない
#
by tokage-shippo
| 2013-04-30 16:01
| その他
