からくりインターネット
からくりインターネット アレクサンドリア図書館から次世代ウェブ技術まで [丸善ライブラリー]
- 作者: 相澤彰子,内山清子,池谷瑠絵
- 出版社/メーカー: 丸善
- 発売日: 2010/03/16
- メディア: 新書
- クリック: 6回
- この商品を含むブログ (1件) を見る
本日借りた本と買った本
大学の図書館で目についたので借りてみた。
- 作者: タラ・ハント津田大介(解説),村井章子
- 出版社/メーカー: 文藝春秋
- 発売日: 2010/03/11
- メディア: 単行本
- 購入: 5人 クリック: 292回
- この商品を含むブログ (81件) を見る
- 作者: 中居良介,岡野真也,船井裕,松尾貴史
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/12/23
- メディア: 大型本
- 購入: 6人 クリック: 312回
- この商品を含むブログ (10件) を見る
nltkとMeCabとpython
というわけでMeCabをPython2.7でなら使えるようになりました。ということはnltkも2.7で使いたい!しかしnltkの公式ではどうも2.4~2.6しか対応していないというような旨が書かれています。
しかし2.7でなんとか行けないものか、と思い、以下のサイトを参考に2.7でnltkを使える環境を整えました。しばらく使ってみて不都合がなければ良いのですが。
http://www.richard-careaga.com/archives/3474
2.7ではインタラクティブシェルで日本語が入力できなかったので、以下を参考に修正。
http://yogi.bz/~suzu/wp3/?p=110
MeCab Pythonバインディングのインストール
かなりはまってしましました。。
mecabを入れるところまでは良かったのでですが、Pythonバインディングを入れるところにて、mecab-python-0.98をダウンロードし、
これで大丈夫よし、と思いましたが、
% python
>>> import MeCab
Traceback (most recent call last):
File "", line 1, in
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MeCab.py", line 25, in
_MeCab = swig_import_helper()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MeCab.py", line 21, in swig_import_helper
_mod = imp.load_module('_MeCab', fp, pathname, description)
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_MeCab.so, 2): Symbol not found: __ZN5MeCab12createTaggerEPKc
Referenced from: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_MeCab.so
Expected in: flat namespace
in /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_MeCab.so
>>>
うーむエラー。どうやら_MeCab.soというバイナリファイルをうまく読み込んでくれていないといってようなことが原因かな、という程度までは分かったのですが、いくらググっても同じ状況の方が見つからず、途方に暮れました。
macab-python-0.98/buildというディレクトリをふと覗くと、
lib.macosx-10.3-fat-2.6
というディレクトリが。自分は今macosx 10.6なので、osのヴァージョンに対応したコンパイルがされていない??
その後さまよい、pythonの2.7を入れて、再度mecab-python-0.98のインストールを試みると、先ほどのディレクトリにて、
lib.macosx-10.6-intel-2.7
が作られた!
その後、python27を使えばちゃんとMeCabをimportして使えるようになりました。
良かったー。
集合知プログラミング
「集合知プログラミング」を購入しました。「言語処理のための機械学習入門」を読み進める中、クラスタリングや分類のアルゴリズムなど、「実装。。果たして自分にできるのか。。?」と不安でしたが、様々なデータ処理方法の実装が沢山載っている本書は、永遠のプログラミング素人の自分に大いに役立ってくれそうな気がします。何より目次見て、パラパラページをめくってなんだか楽しそう!とわくわくしたのが最大の購入理由ですね。しかもPython。
- 作者: Toby Segaran,當山仁健,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/07/25
- メディア: 大型本
- 購入: 91人 クリック: 2,220回
- この商品を含むブログ (277件) を見る
やはりMacが欲しい
今日は入門自然言語処理、p490のあたり、Mecabを使ってみよう♪の箇所を進めました。自分は今Windows環境なのですが、以下のサイト
http://d.hatena.ne.jp/aidiary/20101121/1290339360
を参考にしてpythonからMecabをimportして使えるようになりました。
がしかし、Mecabをshift-jisで入れ、一方トークン分けのためにimport するjptokenizerではどうやらMecabがutf-8で使われることを想定している?っぽくて、p492のprint ' '.join(reader.words()[20:80]とするところで
File "C:\Python26\lib\site-packages\jptokenizer.py", line 15, in tokenize
return result.decode('utf-8').strip().split(' ')
File "C:\Python26\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 33-35: invalid d
ata
このようなエラー。まあ、何から何まで文字コードをutf-8にすればこういうことに悩まないで済むような気はするのですが、Windows環境では標準出力の時とかshift-jisに変換するのがまた面倒そうだし。。
やはりMacを買おう、という考えに至ります。
追記
集中力切れの頭でjptokenizer.pyのコードを見ると
def tokenize(self, text):
result = self.mecab.parse(text.encode('utf-8'))
return result.decode('utf-8').strip().split(' ')
という処理があり、やはりmecabにutf-8で渡し、返ってきたものをutf-8だと見なしてdecodeするという処理ですね。この箇所をshift-jisに変えれば良いとは思うのですが、、面倒なのでMacを買います。
形態素解析にて、コスト最小法
今日は全然何も進んだ気がしない。。以下一応やったことをメモしとこうとは思います。
「入門自然言語処理」,12章のp.477のコスト最小法による形態素解析のところをプログラムを理解しながらよいしょよいしょと打ち込み、本の通りの結果が出力されることを確かめ、終了。単語単体での出現頻度のコストと、品詞と品詞の接続におけるコストの両方を合計して、最小のものを出力するという。なるほどなるほど。
ここでメインに働いているanalyze関数は、与える2つの「function型の引数」を調整することで、「形態素最小法」や「文節数最小法」といったヒューリスティックが実現できるようになっています。これは便利だしいろいろと試して結果を比べてみると良さそう。
さて、どこかで夕飯食べて電車で本読みながら帰ろう。昨日買ったのは以下の「検索エンジンはなぜ見つけるのか」という本です。webマイニングに関することもこれから行う研究テーマの一部分にしたいので、基本事項をしっかり勉強するのみです。
- 作者: 森大二郎
- 出版社/メーカー: 日経BP社
- 発売日: 2011/03/10
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 1,195回
- この商品を含むブログ (27件) を見る