Help us understand the problem. What is going on with this article?

MeCab用化学物質辞書を入れてみた-MeCab(R/Python) Windows10 64bit

More than 1 year has passed since last update.

はじめに

MeCabは気軽に形態素解析できるのですがIPA辞書では上手く切れない事も多いですよね。
NEologdの辞書もありますが、化合物(化学物質)となると中々難しそうです。

JSTのJ-GLOBAL(旧:日本化学物質辞書)のデータから作成した
MeCab用の化合物辞書が有る事をアジア特許情報研究会の方に教えて頂きました。

早速R、PythonのMeCabで化合物の辞書が使えるように実装してみました。

環境

Windows10 64bit 言語:日本語
R 3.5.2 64bit
RStudio 1.1.463
MeCab 0.996-32bit
RMeCab 1.00
Python 3.6.8(anaconda3 5.3.0) 64bit

フォルダ構成

こちらのMeCabのフォルダ構成は以下の通りです。()内はショート形式の記載。
異なる場合はコードを適宜書き換えてください。

MeCab.exe

C:\Program Files (x86)\MeCab\bin\mecab.exe
(C:\PROGRA~2\MeCab\bin\mecab.exe)

IPA辞書フォルダ-SHIFT-JIS形式

C:\Program Files (x86)\MeCab\dic\ipadic
(C:\PROGRA~2\MeCab\dic\ipadic)

IPA辞書フォルダ-UTF-8形式

C:\Program Files (x86)\MeCab\dic\ipadic-UTF8
(C:\PROGRA~2\MeCab\dic\IPADIC~1)

導入方法

mecab_nikkaji.csvファイルの準備

csv辞書ファイルの入手

生命科学系データベースアーカイブの科学技術用語形態素解析辞書
https://dbarchive.biosciencedbc.jp/jp/mecab/desc.html
この中の日化辞辞書
https://dbarchive.biosciencedbc.jp/jp/mecab/data-3.html
より圧縮されたcsvフォーマットファイル(mecab_nikkaji.zip)をダウンロード。

zipファイルを展開しcsvファイルを作業フォルダに移動

mecab_nikkaji.zipを展開して出来た mecab_nikkaji.csvファイルを"C:\"に置きます。

SHIFT-JISのシステム(RMeCab、Windows等)に実装

SHIFTーJIS辞書の作成

コマンドプロンプトを管理者として(←ここ大事)起動します。
以下のコマンドで
Cドライブにおいたmecab_nikkaji.csvファイルからSHIFT-JIS形式のNikkaji.dicファイルを作成し、
dicファイルを辞書フォルダ(C:\Program Files\MeCab\dic\ipadic)に移動します。

cd "C:\Program Files (x86)\MeCab\bin"
mecab-dict-index.exe -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u Nikkaji.dic -f shift-jis -t shift-jis C:\mecab_nikkaji.csv
move Nikkaji.dic "C:\Program Files (x86)\MeCab\dic\ipadic"

ユーザー辞書の指定

C:\Program Files (x86)\MeCab\etcのmecabrcをエディタで開き以下を追加します。

userdic=C:\Program Files (x86)\MeCab\dic\ipadic\Nikkaji.dic

UTF-8のシステム(Python等)に実装する場合

UTF-8辞書の作成

PythonからMeCabを使われている方は以下の手順でUTF-8の辞書を作成も行います。
以下のコードでCドライブにおいたmecab_nikkaji.csvファイルからUTF-8形式のNikkaji-u.dicファイルを作成し、
dicファイルをUTF-8辞書フォルダ(C:\Program Files\MeCab\dic\ipadic-UTF8)に移動します。

cd "C:\Program Files (x86)\MeCab\bin"
mecab-dict-index.exe -d "C:\Program Files (x86)\MeCab\dic\ipadic-UTF8" -u Nikkaji-u.dic -f shift-jis -t UTF-8 C:\mecab_nikkaji.csv
move Nikkaji-u.dic "C:\Program Files (x86)\MeCab\dic\ipadic-UTF8"

動作確認

SHIFT-JIS辞書の確認

コマンドプロンプトから

以下のコマンドをコマンドプロンプトで実施して確認します。

cd "C:\Program Files\MeCab\bin"
mecab
(アミノメチレン)ビスホスホン酸を合成することとなった。
出力結果

image.png

RStudioから

一応RStudioでもうまく行く事を確認しておきます。

library(RMeCab)
unlist(RMeCabC("(アミノメチレン)ビスホスホン酸を合成することとなった。"))
出力結果

image.png

UTF-8辞書の確認

以下のコードでPythonを用い確認を行います。

import MeCab
m=MeCab.Tagger("-d C:/PROGRA~2/MeCab/dic/ipadic~1 -u C:/PROGRA~2/MeCab/dic/ipadic~1/Nikkaji-u.dic")
print(m.parse ("(アミノメチレン)ビスホスホン酸を合成することとなった。"))
出力結果

(アミノメチレン)ビスホスホン酸
名詞,一般,,,,,(アミノメチレン)ビスホスホン酸,,,Nikkaji,J286.944F,200906070082551055,C,CA06,0,UNKNOWN_2,(
アミノメチレン ) ビスホスホン 酸
を 助詞,格助詞,一般,,,,を,ヲ,ヲ
合成 名詞,サ変接続,
,,,,合成,ゴウセイ,ゴーセイ
する 動詞,自立,
,,サ変・スル,基本形,する,スル,スル
こと 名詞,非自立,一般,
,,,こと,コト,コト
と 助詞,格助詞,一般,,,,と,ト,ト
なっ 動詞,自立,
,,五段・ラ行,連用タ接続,なる,ナッ,ナッ
た 助動詞,
,,,特殊・タ,基本形,た,タ,タ
。 記号,句点,,,,,。,。,。
EOS

UTF-8辞書を-rオプションでmecabrcファイルで指定する方法(2019/1/27追記)

MeCab.Taggerに-rオプションでmecabrcファイルを指定できることが分かりました。
この場合以下のように指定します。

"C:\Program Files (x86)\MeCab\etc"にUTF-8用IPA辞書, Nikkaji辞書を以下のように指定したmecabrc-uファイルを作成。

dicdir = C:\Program Files (x86)\MeCab\dic\ipadic-UTF8
userdic=C:\Program Files (x86)\MeCab\dic\ipadic-UTF8\Nikkaji.dic

MeCabrc-uファイルを指定してMeCabを呼び出し形態素解析。

この場合のフォルダの区切りは"/"ではなく"\"で。

import MeCab
m=MeCab.Tagger("-r C:\progra~2\MeCab\etc\mecabrc-u")
print(m.parse ("(アミノメチレン)ビスホスホン酸を合成することとなった。"))

PythonでのMeCabの実装は先の以下投稿をご覧ください。
https://qiita.com/zincjp/items/55960801d99e55c9f2a6

おまけ

研究会内から品詞2が"一般"となっているのが残念との声が出てきました。
確かに、他の名詞と同じ"一般"だと形態素解析して化学物質だけ取り出すことが難しくなります。

辞書作成元のcsvファイルの"POS subcategory 1"列(Excelで開くとF列)の
"一般"を"化合物"に置換してから辞書を作成する事で、
品詞詳細が"化合物"になり後の解析で便利になりそう。
→自分はこの方式で辞書を作成しています。

謝辞

本検討はアジア特許情報研究会の活動の一環で行いました。
http://www.geocities.jp/patentsearch2006/asia-research.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした