MeCabの辞書の文字コードにハマった件

日本語のテキスト解析をRで行うにあたっては、tidytext()をかける前に、MeCabを使って「分かち書き」をする必要があります。

(分かち書きの例)今日 は よい お 天気 です ね 。

※MeCabで何をするかわからない人は、こちらのスライドを参照。
https://ymattu.github.io/TokyoR64/apply/apply.html#/

http://chasen.naist.jp/chaki/t/2009-09-30/doc/mecab-cabocha-nlp-seminar-2009.pdf

1. 前提条件

業務用PCはセキュリティが厳しく、Program Filesへのパラメタ等の書き込みができない。

2.インストール

最初、Program FilesにINSTしたら、辞書の書き換えなどができず断念。

次に、C:\にINSTしたら、「Program Filesにファイルがありません」という意地悪を言われた (´・ω・`)

3.開発者に質問

まずはRのパッケージRMeCabの開発者にTwitter経由で質問を投げると、パラメータファイルを設定すればいいという情報を得た。3回のやり取りで回答がもらえなくなったので、断念。

そもそもRがまともに動いていないので、RMeCabを触る前にMeCabが使えるようになるべしと悟り、githubのソースを見たら、別の人(写真付き)が64ビット版を載せていてくれたのでこちらを使うことに。
https://github.com/ikegami-yukino/mecab/releases

メアドが載っていたので質問したら、マニュアルに載っていない下記サイトのリンクを教えてくれた。

http://namazu.asablo.jp/blog/2006/04/04/315244

4.解決

C:\MeCabにINST。忘れず、環境設定でbinにPATHを通しておきませう。

辞書フォルダdicの下にあるIPADICを、ipadicSJIS、ipadicUTF8にコピーして、それぞれの文字コードで辞書を作成。 作り方はこちら

各辞書フォルダの中に、dicrcというファイルがあるので、その中の辞書の文字コードを該当するものに合わせる。盲点※これに気づいたのは、偶然にもエラーメッセージがdicrcがないよと言ってくれたから。

./Mecab/etc/mecabrcを開いて、dicdir=”hogehoge”のところを、それぞれ文字コードごとに作った辞書のフォルダを指定して、mecabrcUTF8、mecabrcSJISとして保存。※設定の効果は疑問?

5.使い方

コマンドラインでMeCabを起動する際に、-r オプションで読み込むテキストの文字コードに該当するrcファイルを指定する

C:\MeCab\bin>mecab -r c:\mecab\etc\mecabrcSJIS

プロンプトも何も出ないが、テキストを適当に入力する。

(例1)
今日は良いお天気ですね。
今日 名詞,副詞可能,,,,,今日,キョウ,キョー
は 助詞,係助詞,,,,,は,ハ,ワ
良い 形容詞,自立,,,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ
お 接頭詞,名詞接続,,,,,お,オ,オ
天気 名詞,一般,,,,,天気,テンキ,テンキ
です 助動詞,,,,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,
,,,,ね,ネ,ネ
。 記号,句点,
,,,*,。,。,。
EOS

(例2)
すもももももももものうち
すもも 名詞,一般,,,,,すもも,スモモ,スモモ
も 助詞,係助詞,,,,,も,モ,モ
もも 名詞,一般,,,,,もも,モモ,モモ
も 助詞,係助詞,,,,,も,モ,モ
もも 名詞,一般,,,,,もも,モモ,モモ
の 助詞,連体化,,,,,の,ノ,ノ
うち 名詞,非自立,副詞可能,,,*,うち,ウチ,ウチ
EOS

6.課題

もしかしたら文字コードを直接指定するオプションがあるのかもしれない。



Linux MintをX31にインストールする

Windows対応のUSBメモリ(セキュリティソフトつき)が読めずに困っていたら、友人が「古いPCならあるよ。捨てるつもりだったからあげる。」とX31をくれた。X31はIBM時代のThinkPadで往年の名機でもある。
インタフェースは、パラレル、シリアル、USB、PCMCIA、IrDA、LANが揃っているという凝り様で、内蔵HDDは容量は小さいもののSSDに換装されている。

最初はWindowsマシンにしようとしていたのだが、そもそもOSが外されているのか初期設定されているのかわからないが、いずれにしても現在サポートされているWindows7や10が動くマシンではないので、早々に諦め、Linuxマシンにすることにした。

Ubuntuの系列であるLinux MINTの最新版18/Taraを使うことにした。

最初、図書館に行ってLinuxマガジンの付録DVDからインストールすることを目論んだが、肝心な付録がついた版が貸出中。帰りに自転車がパンクする憂き目に合うも、自宅のPCで2GBのファイルのダウンロードを半日かけて行った。

SHA256のチェックをしても特に問題なさそう。

ISOイメージをDVDに焼き付けるために、Braseroをダウンロードして作成。

ここまでは時間は要したものの手戻りなく進んだ。しかし・・・

DVDを使ってX31を起動しようとすると、最初のMATEの立ち上がり画面が出るものの、その先は「paeに対応したカーネルを選んでください」という内容のエラーメッセージが出て止まってしまう。(´・ω・`)

paeってなんだ

ぐぐってみると、古いCPUを使っている場合には出るメッセージのようで、対応方法も紹介されていた。助かったのは、起動時にF6を押せばオプションが選択できるということがわかったことで、起動画面にはそのようなメッセージがまったく表示されなかったので、右往左往するところだった。

F6で起動オプションがあっさりと出てきて、その中にpaeを強制するというオプションも用意されていたので、設定してリブート。

起動に成功した。

早速、インストールする。

パーティションがWindows用に切られていたので、それはとりあえず残しておき、半分の30GBをMINTに割り当てた(これが最大容量)。

古いマシンなのでWiFiなど当然についていない。机の中にしまいこんでいたPCMCIAの無線LANカード(懐かしい響き)を差し込んでみたら、簡単に認識。


Ubuntu BeaverへのWINEインストールに再チャレンジ

かつて失敗した、WINEのインストール。
また、窓ソフトを使わざるを得ない状況が生じて再度挑戦してみることにした。

こちらを参照。

Ubuntu日本語フォーラム:Wineがインストールできない
* https://forums.ubuntulinux.jp/viewtopic.php?pid=118386

#32ビットアーキテクチャを有効にする
{user}@{terminal}:~$ sudo dpkg --add-architecture i386
#レポジトリを追加する
{user}@{terminal}:~$ wget -nc https://dl.winehq.org/wine-builds/Release.key
{user}@{terminal}:~$ sudo apt-key add Release.key
{user}@{terminal}:~$ sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu
#インストールする
{user}@{terminal}:~$ sudo apt update
{user}@{terminal}:~$ sudo apt-get update
{user}@{terminal}:~$ sudo apt-get install --install-recommends winehq-stable
#念押しのUpdate
{user}@{terminal}:~$ sudo apt update
{user}@{terminal}:~$ sudo apt upgrade

この後に
HOMEの.wineがない状態で、

WINEARCH=win32 wineboot

としておく。

{user}@{terminal}:~$ WINEARCH=win32 wineboot
wine: WINEARCH set to win32 but '/home/naoharu/.wine' is a 64-bit installation.

このおまじないが効いたかどうかは不明。

とりあえず目的のWindowsプログラムを走らせる(その前に、Nautilusでプロパティを開き、hoge.exeの起動ソフトを、wineにしておく。

すると、文字化けメッセージとともに、wine-monoをインストールしてほしそうなメッセージが出るので、Yesを選択。

次いで、wine-geckoをインストールしてほしそうなので、こちらも素直にYesを選択。

いまだ文字化けが出る。これまでと大きく違うのは、漢字ではなくアスキー文字が文字化けして日本語は普通に表示されるところ。(´・ω・`)

以下の対策を打つ。

winetricksによるWineの文字化け(アルファベットが豆腐)を解消
* https://symfoware.blog.fc2.com/blog-entry-2228.html