再インストール準備
たまに使う形態素解析パッケージ「MeCab」と辞書「NEologd」の組み合わせ。
主にMacで使います。
久しぶりにWindows(10)で使おうとしたら、なぜか「NEologd」が動かなかったので、再インストールしました。
今後のために手順をメモしておきます。
まずは「NEologd」のインストールに使うファイル一式をダウンロードします。
なお、「R」はバージョン4.1.0から4.2.2にアップデートしました。
(今回使ったのは「Rコンソール」の方で「RStudio」ではありません)
GitHubからダウンロード
GitHubにブラウザでアクセスして、辞書ファイル作成に使うファイルをダウンロードしました。
GitHub URL: https://github.com/neologd/mecab-ipadic-neologd.git
画面右側の「Code」メニューから「Download ZIP」を選びます。
「mecab-ipadic-neologd-master.zip」がダウンロードできました。
解凍
解凍します。
複数のフォルダが取得できます。
まず辞書本体の元データが入っている「seed」フォルダを確認します。
CSVを取得
「seed」フォルダ内に「.yz」ファイルが入っています。
7zipツールで解凍します。
解凍するとCSVが取得できます。
辞書ファィルの元となります。
整理しやすいように、解凍したファイルをProgram Filesディレクトリの「MeCab」の辞書フォルダ下にコピーしておきます。
コマンドプロンプトを管理者として実行
コマンドプロンプトを右クリックして「管理者として実行」します。
管理者として実行しないと、辞書ファイル生成時に
dictionary.cpp(500) [bofs] permission denied
というメッセージが出て処理が止まることがあります。
辞書ファイル(.dic)の作成(コンパイル)に使う「mecab-dict-index」コマンドがあるディレクトリに移動します。
C:\WINDOWS\system32>cd C:\Program Files\MeCab\bin
辞書作成コマンドを実行
以下のコマンドを実行します。
mecab-dict-index -d "C:\Program Files\MeCab\dic\ipadic" -u "C:\Program Files\MeCab\dic\nologd_20230313\neologd.dic" -f utf-8 -t utf-8 "C:\Program Files\MeCab\dic\nologd_20230313\mecab-user-dict-seed.20200910.csv"
reading C:\Program Files\MeCab\dic\nologd_20230313\mecab-user-dict-seed.20200910.csv ... 3224584
emitting double-array: 100% |###########################################|
done!
「“C:\Program Files\MeCab\dic\nologd_20230313\neologd.dic”」が生成する辞書名を指定し、
「“C:\Program Files\MeCab\dic\nologd_20230313\mecab-user-dict-seed.20200910.csv”」が「.dic」ファイル作成に使う辞書の元データです。
「utf-8」で文字コードがUTF-8の辞書の作成を指定しています。
Shift-JIS用の辞書を作る場合は「utf-8」の部分を「shift_jis」に変えて実行します。
mecab-dict-index -d "C:\Program Files\MeCab\dic\ipadic" -u "C:\Program Files\MeCab\dic\nologd_20230313\neologd_sjis.dic" -f shift_jis -t shift_jis "C:\Program Files\MeCab\dic\nologd_20230313\mecab-user-dict-seed.20200910.csv"
WindowsのターミナルでUTF-8の辞書を使って「MeCab」を実行すると文字化けします。
C:\Program Files\MeCab\bin>mecab
今日呪術回線の映画を見ました。
今日呪術回線の 險伜捷,荳闊ャ,*,*,*,*,*
f 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
險伜捷,荳闊ャ,*,*,*,*,*
謔 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
見ました 險伜捷,荳闊ャ,*,*,*,*,*
B 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
EOS
ターミナルがUTF-8に対応していないためですが、「R」では文字化けは起こりません。
設定ファイルの内容を変更
最後に、NEologdの辞書を使えるように設定ファイル「mecabc」の内容を変更します。
「mecabc」は「etc」フォルダにあります。
以下の2行を追加しています。
dicdir = C:\Program Files\MeCab\dic\ipadic
userdic = C:\Program Files\MeCab\dic\nologd_20230313\neologd.dic
この設定でNEolodは動くようになりました。
デフォルト辞書がNEologdに
今回色々と試す過程で「C:\Program Files\MeCab\dic\ipadic」の下にも「neologd.dic」を置いています。
このファイルが有効になっているようで、「R」のデフォルトの辞書が「neologd.dic」に変わりました。
(「C:\Program Files\MeCab\dic\ipadic」の下にある「neologd.dic」を削除すると、「R」が落ちてしまいました)
まだ調べている途中ですが、本来上記の設定では「デフォルトはipadicのシステム辞書」、ユーザー辞書のオプションパラーメータを指定して「userdic = C:\Program Files\MeCab\dic\nologd_20230313\neologd.dic」を使う、という振る舞いになるようです。
オプションパラメータを指定しなくても「neologd.dic」を使えるようになっている点は、後で調べるつもりです。
dicdr=標準辞書指定は?
「mecabc」全体は以下のようになっています。
「dicdir = $(rcpath)\..\dic\ipadic」という記述は、「dicdir = C:\Program Files\MeCab\dic\ipadic」という設定があるので不要にも思えるのですが、現状正常に動いているので、「dicdr」の振る舞いも後で検証するつもりです。
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
dicdir = C:\Program Files\MeCab\dic\ipadic
userdic = C:\Program Files\MeCab\dic\nologd_20230313\neologd.dic
;
dicdir = $(rcpath)\..\dic\ipadic
; userdic = /home/foo/bar/user.dic
; output-format-type = wakati
; input-buffer-size = 8192
; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n
Rでテスト
「R」での実行結果です。
> library(RMeCab)
> res <- RMeCabC("五条悟と夏油傑の高専時代の物語")
> unlist (res)
名詞 助詞 名詞 助詞 名詞 名詞 助詞 名詞
"五条悟" "と" "夏油傑" "の" "高専" "時代" "の" "物語
Rコンソールを使用しています。
「五条」と「悟」、「夏油」と「傑」に分かれずに名詞として認識しているので、「NEologd」を使っているのが確認できました。
「RStudio」用にも「NEologd」をインストール・設定する必要があるので、それは別の機会に行います。
上記については、その後個別のインストールはしないでで済むことがわかりました。
自分の環境については、「RStudio」の画面上の「Tools」→「Global Options」→「General」から「R version」を変更することで今回入れた「NEolodd」の設定が使えました。
「ChatGPT」から教えてもらいました。
CahtGPTに聞く
微妙に間違える回答も少なくないのですが、何が間違えているのかをべたり、聞き方を変えて正しい情報を取得したりすることで、スキルが上がる感じがします。
今回上述の「mecab-dict-index コマンド」は「ChatGPT」から得た回答を使っています。
mecab-dict-index コマンドを使って NEologd の辞書を作る手順を教えてくれますか。 Windowsパソコンを使っています。
- まず、NEologdの辞書をダウンロードしてください。以下のサイトから、最新版の「mecab-ipadic-NEologd」をダウンロードします。 https://github.com/neologd/mecab-ipadic-neologd
- ダウンロードしたファイルを解凍し、
NEologd
というフォルダーを任意の場所に置いてください。 - コマンドプロンプトを開き、以下のコマンドを実行して、MeCabのインストールフォルダに移動してください。
cd C:\Program Files\MeCab\bin
※MeCabのインストール先が異なる場合は、上記のパスを適宜変更してください。
- 以下のコマンドを実行して、NEologdの辞書をインストールします。
mecab-dict-index -d "C:\Program Files\MeCab\dic\ipadic" -u "path/to/neologd.dic" -f utf-8 -t utf-8 "path/to/NEologd/seed/mecab-user-dict-seed.20210802.csv"
※上記のコマンドで、以下の部分をそれぞれ適宜変更してください。
path/to/neologd.dic
:作成する辞書ファイルのパスを指定します。例えば、C:\neologd.dic
など。path/to/NEologd/seed/mecab-user-dict-seed.20210802.csv
:NEologdの辞書作成用のシードデータが入っているCSVファイルのパスを指定します。解凍したNEologdフォルダーの中にseed
というフォルダーがあり、その中にあるCSVファイルを指定します。
また、同じく上述している「管理者権限でコマンドプロンプト実行」も「ChatGPT」から答えを得ました。
dictionary.cpp(500) [bofs] permission denied: C:\Program Files\MeCab\dic\nologd_20230313 というメッセージが出ました。
このエラーメッセージは、MeCabが辞書ファイルにアクセスできないことを示しています。具体的には、C:\Program Files\MeCab\dic\nologd_20230313
にアクセスしようとして、アクセス許可がないためにエラーが発生したということです。
このエラーを解決するには、MeCabの辞書フォルダーに対するアクセス許可を変更する必要があります。以下の手順に従って、アクセス許可を変更してください。
- フォルダーのプロパティを開きます。MeCabの辞書フォルダーである「
C:\Program Files\MeCab\dic
」を右クリックし、プロパティを選択します。 - 「セキュリティ」タブをクリックし、「編集」ボタンをクリックします。
- 「追加」ボタンをクリックして、自分自身のアカウントを追加します。
- 追加したアカウントを選択し、下部の「書き込み」にチェックを入れます。
- 「適用」ボタンをクリックして変更を保存します。
- MeCabを再度実行し、エラーが解消されていることを確認してください。
この手順で解決しない場合は、管理者権限でコマンドプロンプトを開いてからMeCabを実行するという方法もあります。具体的には、スタートメニューから「コマンドプロンプト」と検索し、右クリックして「管理者として実行」を選択します。その後、MeCabをインストールしたディレクトリに移動し、MeCabを実行してください。
mecabのインストール
今回、「MeCab」と「RMeCab」はインストール済の状態から始めています。
「MeCab」をインストールする場合、「ChatGPT」に「Windowsにmecabをインストールする方法を教えてくれますか。」と聞くと必要な情報を教えてくれます。
「MeCabの公式サイト(https://taku910.github.io/mecab/#download)から、Windows版の「32/64bit版」をダウンロードします。」
という回答をもらえました。
RMeCabのインスト―ルは?
「次にRMeCabをインストールしたいです。」という質問には「install.packages(“RMeCab”)」を実行するように返事が戻ってきます。
これはうまくいきません。
質問の仕方を変えて何度か聞きましたが、「RMeCab」のインストール方法はわかりませんでした。
とりあえずどうしたかというと、Rのコンソールで
install.packages("RMeCab", repos = "https://rmecab.jp/R", type = "source")
を実行して表示された以下のメッセージから、「https://rmecab.jp/R/src/contrib/RMeCab_1.07.tar.gz」にアクセスして「RMeCab_1.07.tar.g」をダウンロードしています。
を ‘C:/Users/username/Documents/R/win-library/4.1’ 中にインストールします
(‘lib’ が指定されていないため)
URL 'https://rmecab.jp/R/src/contrib/RMeCab_1.07.tar.gz' を試しています
Content type 'application/x-gzip' length 1473940 bytes (1.4 MB)
downloaded 1.4 MB
* installing *source* package 'RMeCab' ...
** using staged installation
** libs
*** arch - i386
system(cmd) で警告がありました: 'make' not found
ERROR: compilation failed for package 'RMeCab'
「ChatGPT」に「tar.gzを使ったインストール方法」を聞いたところ
install.packages("RMeCab_1.07.tar.gz", repos = NULL, type="source")
RMeCabをインストールするためには、ダウンロードした「RMeCab_1.07.tar.gz」ファイルのパスを指定して、上記のコマンドを実行します。
という答えをもらったので、実行しましたが、「RMeCab_1.07.tar.gz’ had non-zero exit status」というメッセージが出てうまくいきませんでした。
最終的に「ChatGPT」から得た情報を元に、「RMeCab_1.07.zip」をダウンロードして以下のようにインストールできました。
しかし、「RMeCab_1.07.zip」の取得先を何度聞き直してもわからなくなってしまいました。
> install.packages("C:/Users/username/Downloads/RMeCab_1.07.zip", repos = NULL, type = "win.binary")
パッケージを ‘C:/Users/username/Documents/R/win-library/4.1’ 中にインストールします
(‘lib’ が指定されていないため)
package ‘RMeCab’ successfully unpacked and MD5 sums checked
> library(RMeCab)
>
現状「RMeCab」を使えてはいるのですが、ChatGPTからは
RMeCabのバージョン1.07は、2021年6月時点でR 4.1.xに対応していました。最新のR 4.2.xに対応しているかどうかは分かりませんが、RMeCabの開発者が新しいRのバージョンに対応するために更新を行う可能性があります。
というコメントをもらって気になり始めたので、色々と調べるつもりです。
「ChatGPT」は2022年以降の情報を持っていないようなので、次は「Bing AI」に聞いてみようと考えています。