2013年1月24日木曜日

Homebrewの前にMacTexを入れてしまった

MacにTex環境を整えようと,Homebrewで

$ brew install tex

と打つと,「MacTexを使って入れてね☆(ゝω・)v」と言われます.


そのまま何も考えずに,MacTexのホームページからMacTex.pkgをダウンロード.
pkgからインストーラを起動し,「続ける」を連打した結果.

/usr/local/bin/

にghostscriptやらのフォルダがroot権限で出来上がりました.
(/usr/local/binはHomebrewが管理するファイルが格納される場所)

もちろん,Homebrewの管理下はないため,
几帳面な人にとっては非常に精神衛生上よろしくないことに.


てなわけで綺麗にしていきます。

ghostscript

$ brew install ghostscript

でインストール

最後,リンクがうまくいかないのでやり直してと言われる.

$ brew link --overwrite --dry-run ghostscript

と打つと,MacTexで入れたghostscript関連の競合しているファイルがリストで表示される.

$ brew link --overwrite ghostscript

と打つと,リストのファイルが全て上書きされる.

しかし,まだエラーが

$ brew link --overwrite ghostscript
Linking /usr/local/Cellar/ghostscript/9.06... Warning: Could not link ghostscript. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/ghostscript/9.06/share/ghostscript/Resource
/usr/local/share/ghostscript is not writable. You should change its permissions.

権限を変更しろといわれるので

$ sudo chown -R ユーザ名:admin /usr/local/share/ghostscript

でOK。

その後、

$ brew link ghostscript
とすれば、
Linking /usr/local/Cellar/ghostscript/9.06... 61 symlinks created


となる。

また、
brew doctor
とすると、
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man/de
    /usr/local/share/man/de/man1

となったので、さっきの要領でこちらも権限を変更する。

$ sudo chown -R ユーザ名:admin /usr/local/share/man

OK。


imagemagick

$ brew install imagemagick
と、打つ。

Warning: Could not link imagemagick. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link imagemagick'

ここでも、リンクが上手くいかないといわれるので解決する。

$ brew link --overwrite --dry-run imagemagick
Would remove:
/usr/local/etc/ImageMagick/type.xml
/usr/local/etc/ImageMagick/type-windows.xml
/usr/local/etc/ImageMagick/type-ghostscript.xml
/usr/local/etc/ImageMagick/type-dejavu.xml
/usr/local/etc/ImageMagick/thresholds.xml
/usr/local/etc/ImageMagick/quantization-table.xml
/usr/local/etc/ImageMagick/policy.xml
/usr/local/etc/ImageMagick/mime.xml
/usr/local/etc/ImageMagick/magic.xml
/usr/local/etc/ImageMagick/log.xml
/usr/local/etc/ImageMagick/delegates.xml
/usr/local/etc/ImageMagick/colors.xml
/usr/local/etc/ImageMagick/coder.xml
/usr/local/bin/convert
/usr/local/share/man/man1/convert.1

こんもり。全部上書きします。

$ brew link --overwrite imagemagick
Linking /usr/local/Cellar/imagemagick/6.8.0-10... Warning: Could not link imagemagick. Unlinking...

Error: Permission denied - /usr/local/etc/ImageMagick/type.xml

権限がないと言われたので、権限を変更、その後再度実行。

$ sudo chown -R inabakengo:admin /usr/local/etc/ImageMagick

$ brew link --overwrite imagemagick
Linking /usr/local/Cellar/imagemagick/6.8.0-10... 71 symlinks created

OK。

MacTex


公式のMacTex.pkgからインストーラを起動。
途中のInstalation Type画面のカスタマイズボタンを押し、
GhostscriptとConvert-IMのチェックを外しておく。

後はそのまま。

インストールが完了したら、TexLive Utilityを起動し、自動アップデートを行う。

更新情報がうまくダウンロードできなかったらリポジトリのURLを変えてみる。
設定→リポジトリを管理→好きなサイトを選択。

その後、「作業→すべてのパッケージを更新」とする。




2013年1月22日火曜日

igo-phpを使って形態素解析をする方法

XAMPP for MacのPHPでMecabを使おうとして挫折した愚か者のメモ。

形態素解析をもっと簡単に使える方法を探す
igo-phpを発見。

READMEによると、

これは「Igo - Java形態素解析器」の PHP による実装です。 Igo は、MeCab由来の辞書フォーマットを用い、ほぼ MeCab と同様の解析結果を提供する形態素解析プログラムです。 Igo-phpは、Igoと同様の形態素解析と分かち書きの機能を提供します。

とのこと。素晴らしい。ちなみにigoの本家はこちら

早速、READMEに書かれている手順でインストール。


igo-phpのダウンロード
展開後、好きな場所にコピーし、php.iniのinclude_pathに追加する。

igo本体のダウンロード
mecabの辞書をダウンロード
jarファイルと辞書フォルダを両方共ホームディレクトリにコピー。
以下のコマンドを入力する。

$ java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

と、何やらエラー

### Build word trie
### Build word dictionary
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
at java.lang.StringBuilder.append(StringBuilder.java:119)
at net.reduls.igo.dictionary.build.WordDic.buildWordInfo(Unknown Source)
at net.reduls.igo.bin.BuildDic.main(Unknown Source)

このエラーはJava heap spaceが不足していることが原因だそうなので、javaコマンドに-Xmxオプションで適当なヒープサイズ(最大値)を指定しておく。
-Xmx1024mを追加。
再度、実行。

java -Xmx1024m -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

### Build word trie
### Build word dictionary
### Build matrix
### Build char-category dictionary
DONE

出来たっぽい。
あとは、作成されたipadicフォルダを適当な場所にコピーすれば、辞書が使用可能に。

とりあえず、PHPから形態素解析をしてみる。
<?php
    require_once 'Igo.php';

    $igo = new Igo("/home/user/ipadic");
    $result = $igo->parse("すもももももももものうち");
    print_r($result);
    ?>

実行結果

Array
(
    [0] => Morpheme Object
        (
            [surface] => すもも
            [feature] => 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
            [start] => 0
        )

    [1] => Morpheme Object
        (
            [surface] => も
            [feature] => 助詞,係助詞,*,*,*,*,も,モ,モ
            [start] => 3
        )

    [2] => Morpheme Object
        (
            [surface] => もも
            [feature] => 名詞,一般,*,*,*,*,もも,モモ,モモ
            [start] => 4
        )

    [3] => Morpheme Object
        (
            [surface] => も
            [feature] => 助詞,係助詞,*,*,*,*,も,モ,モ
            [start] => 6
        )

    [4] => Morpheme Object
        (
            [surface] => もも
            [feature] => 名詞,一般,*,*,*,*,もも,モモ,モモ
            [start] => 7
        )

    [5] => Morpheme Object
        (
            [surface] => の
            [feature] => 助詞,連体化,*,*,*,*,の,ノ,ノ
            [start] => 9
        )

    [6] => Morpheme Object
        (
            [surface] => うち
            [feature] => 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
            [start] => 10
        )

)
以上。

SUMOのOSMの変換時の問題

SUMO(Simulation of Urban MObility)に関するページ。

openstreetmapからダウンロードした.osmファイルをnetconvertで.net.xmlファイルに変換しようとするとエラー。
→マルチバイト文字が原因。
→日本語を消せば(他の文字に変換すれば)解決。
→sedコマンド等を使って全て変換してしまいましょう。
※正しい解決方法かどうかはしらない。

XAMPP for Macでの日本語化にまつわるエラー

解説サイトなどで、php_mbstring.dllをコメントアウトを外す〜などが書かれているが、
これはWindows向けの解説であり、Macには対応していない。

そもそも、Macには.dllファイルの代わりに.soファイルがある。

端末などでphp関連のコマンドを実行した際、
PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/php_mbstring.dll' - dlopen(/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/php_mbstring.dll, 9): image not found in Unknown on line 0
などとエラーが出る場合は、php.iniの該当する.dllファイルをコメントアウトすれば解決する。