Hatena::ブログ(Diary)

mizchi log

@mizchiの雑記帳

2010-11-26

DBCLS 11/26


最近何やったかを書いてなかったので完全にニート化しているように思われてるので、とりあえず進捗
扱える範囲にある辞書をどんどんmecab辞書化している

lifedb-dicを辞書化

dBCLSで扱えるlifedb-dicをmecab辞書化公開できない

wikipedia辞書

タイトルだけで130万件程度
wikipediaのインデックス一覧をmecab辞書化
格助詞が名詞化されていたのを削除
短い平仮名の単語が邪魔をしたので ^[あ-ん]{1, 2},.*\n な行を削除

はてなキーワードを辞書化

20万件程度
精度の面で、wikipediaにくわれ気味だが単体でもいい仕事する


それぞれを mecab-formatのcsv化してしまう。
これら三つを組み合わせてid:y_benjoとゴニョゴニョしてakuma.dicとした

build

mecab-dict-indexはportかbrewかで変わってくるけど

以上のものを
build.sh

mv akuma.dic akuma-old.dic
cat wikipedia.csv > akuma.csv
cat hatena.csv >> akuma.csv
cat costed_lifedb.csv >> akuma.csv
/usr/local/Cellar/mecab/0.98/libexec/mecab/mecab-dict-index  -d /usr/local/Cellar/mecab/0.98/lib/mecab/dic/ipadic -u ~/workplace/mecab-dic/akuma.dic -f utf-8 -t utf-8 ~/workplace/mecab-dic/akuma.csv

この辞書を使えば形態素解析の精度がぐんと上がる

専門用語抽出部分の作り直し


最初に作った単語連携の部分が微妙なので辞書部分を強化して精度を上げた
ngramの転置インデックスまでは作ったので以上の論文を

考えてること

wikipediaの用語が13万件もあるので後者の論文からうまくパラメータを抽出できそう。

2010-07-22

g86鯖いじりしました


少しだけいじりました @
自分が扱うデータはサーバー側が大量にもっているのだけど、さすがに全部ローカルに持ってくるのは骨が折れるしセキュリティ的にもアレなので、サーバー上に開発環境を作った。
自分の.emacs.d は githubに丸投げしてあるのでローカルに持ってくる
mizchi’s emacs_setting at master - GitHub
$ git clone git@github.com:mizchi/emacs_setting.git
*1

githubからcloneするとき、認証キーがおかしいぞ!と怒られたが、新しくsshkeygenしてユーザーアカウントの設定からgithubに通知してやったらおk
~/.emacs.el には (load "~/emacs_setting/init.el") とだけ記述

VirtualEnv

同じサーバーの中で他にPython使ってる人いないらしいけど、何かがバックエンドで使ってると破滅しかねないので、開発環境を独立させることにした。

$ sudo easy_install virtualenv
$ sudo easy_install virtualenvwrapper
$ sudo easy_install pip

virtualenv, virtualenvwrapper, pip を使う方法 - Ian Lewis
Virtualenv - Play safely with a Python (Logilab.org)
日本語の解説なにかがおかしかったので、結局英語の方をよんだ mkvirtualenv ってコマンドないんじゃ

$ virtualenv sandbox
$ source sandbox/bin/activate
(sandbox)$ 

sandbox環境に入る。


MacOS標準のPython には問題があって 仮想環境下にも関わらずeasy_installを使うと/Library/Python/2.X 以下にインストールしてしまうそうなので、virtualenvの中ではpipをsu抜きで使う
MacPortsなら問題ないそうだけど、僕はパスを勝手に変えられて破滅したくないので標準のPythonをつかっている。頃合いをみてPortsのPython2.7に移行したい。

(sandbox)$ pip install jinja2
(sandbox)$ pip install ipython
(sandbox)$ ipython # 使える
(sandbox)$ deactivate #仮想環境から抜ける
$ ipython #使えない

~/sandbox/lib/Python2.6/site-packages/ 以下にインストールされてました
抜けるときは (sandbox)$ deactivate

*1:一部X環境に依存してる部分があるので修正する

2010-07-08

全文検索について調べた


バイトで調べた話。

  • Namazu
  • HyperEstraier
  • TokyoCabinet/TokyoTyrant
  • Apache Lucene

mixi Engineers’ Blog » 3行でできる超お手軽全文検索
OSM記事:新世代検索エンジン大集合
全文検索サーバ: これからSolrを始める人のためのApache Solr概要と便利な情報リスト集 | イージーネット Tech Blog

TokyoCabinet/Tyrant


Snow Leopardでやろうとしたらリンカがおかしくてインストール出来なかった。解決策はあとで探す。
しょうがないのでUbuntu10.4でやることに。

sudo apt-get install libzzip-dev
wget http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.23.tar.gz
tar xzvf tokyotyrant-1.1.23.tar.gz
cd tokyotyrant-1.1.23
./configure
make
sudo make install

cd ..
wget http://1978th.net/tokyotyrant/tokyotyrant-1.1.40.tar.gz
tar xzvf tokyotyrant-1.1.40.tar.gz
cd tokyotyrant-1.1.40
./configure
make sudo make install


使ってみる

sudo ttservctl start
tcrmgr put localhost foo bar
tcrmgr get localhost foo #=> bar

sudo ttservctl restart
tcrmgr get localhost foo #=> bar


デフォルトのportは1978

Python用ラッパ
sudo easy_install pytyrant

from pytyrant import Tyrant
con = Tyrant.open()
con.set("hoge","aaa")
print con.get("hoge") #=> "aaa"



HyperEstraier


さっくり portsでいれた

$ sudo port install qdbm
$ sudo port install hyperestraier

$ mkdir test
$ cd test
$ cp ~/Dropbox/aozora/*.txt .  (何か適当な検索用ファイル)
$ estcmd gather -il ja -sd -cm -cl casket .
$ estcmd search -vh casket '検索'

http://gyazo.com/2925c9529e7cc01ab2c1b072888a2ba6.png

一応それなりに動くのだけど、なんかportsから入れてしまったせいでNgramしか適用されてない悪寒
MeCabが適用されないと意味が無いのだが... あとでアンインストールしてつくり直すか