WindowsにNEologdを再インストール
再インストール準備
たまに使う形態素解析パッケージ「MeCab」と辞書「NEologd」の組み合わせ。主にMacで使います。
久しぶりにWindows(10)で使おうとしたら、なぜか「NEologd」が動かなかったので、再インストールしました。
今後のために手順をメモしておきます。
まずは「NEologd」のインストールに使うファイル一式をダウンロードします。
なお、「R」はバージョン4.1.0から4.2.2にアップデートしました。
(今回使ったのは「Rコンソール」の方で「RStudio」ではありません)
GitHubからダウンロード
GitHubにブラウザでアクセスして、辞書ファイル作成に使うファイルをダウンロードしました。
画面右側の「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パソコンを使っています。」
(ChatGPT)
まず、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 というメッセージが出ました。」
(ChatGPT)
このエラーメッセージは、MeCabが辞書ファイルにアクセスできないことを示しています。具体的には、C:\Program Files\MeCab\dic\nologd_20230313にアクセスしようとして、アクセス許可がないためにエラーが発生したということです。
このエラーを解決するには、MeCabの辞書フォルダーに対するアクセス許可を変更する必要があります。以下の手順に従って、アクセス許可を変更してください。
フォルダーのプロパティを開きます。MeCabの辞書フォルダーである「C:\Program Files\MeCab\dic」を右クリックし、プロパティを選択します。
「セキュリティ」タブをクリックし、「編集」ボタンをクリックします。
「追加」ボタンをクリックして、自分自身のアカウントを追加します。
追加したアカウントを選択し、下部の「書き込み」にチェックを入れます。
「適用」ボタンをクリックして変更を保存します。
MeCabを再度実行し、エラーが解消されていることを確認してください。
この手順で解決しない場合は、管理者権限でコマンドプロンプトを開いてからMeCabを実行するという方法もあります。具体的には、スタートメニューから「コマンドプロンプト」と検索し、右クリックして「管理者として実行」を選択します。その後、MeCabをインストールしたディレクトリに移動し、MeCabを実行してください。