見出し画像

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」をダウンロードします。

GitHubからダウンロード

解凍

解凍します。
複数のフォルダに展開されます。
まず辞書本体の元データが入っている「seed」フォルダを確認します。

解凍

CSVを取得

「seed」フォルダ内に「.yz」ファイルが入っています。
7zipツールで解凍します。

「seed」フォルダ内の「.yz」は解凍する

解凍するとCSVが取得できます。
これが辞書ファィルの元となります。

解凍後

整理しやすいように、解凍したファイルをProgram Filesディレクトリの「MeCab」の辞書フォルダ下にコピーしておきます。

今回は「neologd_20230313」フォルダを作成してここにコピー

コマンドプロンプトを管理者として実行

コマンドプロンプトを右クリックして「管理者として実行」します。

コマンドプロンプトを「管理者として実行」

管理者として実行しないと、辞書ファイル生成時に

dictionary.cpp(500) [bofs] permission denied

というメッセージが出て処理が止まることがあります。

辞書ファイル(.dic)の作成(コンパイル)に使う「mecab-dict-index」コマンドがあるディレクトリに移動します。

C:\WINDOWS\system32>cd C:\Program Files\MeCab\bin
「mecab-dict-index」コマンドがあるディレクトリに移動

辞書作成コマンドを実行

以下のコマンドを実行します。

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の辞書の作成を指定しています。

「neologd.dic」を生成

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」フォルダにあります。

「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)

  1. まず、NEologdの辞書をダウンロードしてください。以下のサイトから、最新版の「mecab-ipadic-NEologd」をダウンロードします。 https://github.com/neologd/mecab-ipadic-neologd

  2. ダウンロードしたファイルを解凍し、NEologdというフォルダーを任意の場所に置いてください。

  3. コマンドプロンプトを開き、以下のコマンドを実行して、MeCabのインストールフォルダに移動してください。

cd C:\Program Files\MeCab\bin

※MeCabのインストール先が異なる場合は、上記のパスを適宜変更してください。

  1. 以下のコマンドを実行して、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の辞書フォルダーに対するアクセス許可を変更する必要があります。以下の手順に従って、アクセス許可を変更してください。

  1. フォルダーのプロパティを開きます。MeCabの辞書フォルダーである「C:\Program Files\MeCab\dic」を右クリックし、プロパティを選択します。

  2. 「セキュリティ」タブをクリックし、「編集」ボタンをクリックします。

  3. 「追加」ボタンをクリックして、自分自身のアカウントを追加します。

  4. 追加したアカウントを選択し、下部の「書き込み」にチェックを入れます。

  5. 「適用」ボタンをクリックして変更を保存します。

  6. MeCabを再度実行し、エラーが解消されていることを確認してください。

この手順で解決しない場合は、管理者権限でコマンドプロンプトを開いてからMeCabを実行するという方法もあります。具体的には、スタートメニューから「コマンドプロンプト」と検索し、右クリックして「管理者として実行」を選択します。その後、MeCabをインストールしたディレクトリに移動し、MeCabを実行してください。


いいなと思ったら応援しよう!