LoginSignup
4
4

More than 5 years have passed since last update.

形態素解析を使ってみる

Last updated at Posted at 2018-03-10

考えていること

処方箋を解析
医学用語を意味情報で区別できるといいけどな

大別

一般

Python による日本語自然言語処理
https://github.com/nltk/nltk_book/blob/master/book-jp/ch12jp.rst

Natural Language

エンティティ判別をしてみたけど、詳しい意味情報まではわからなかった。
人名とかはある程度わかりそう。
もしかすると、日本語だからかもな。
一度翻訳すればいけるのかも?

mecab

MeCabでオリジナル辞書を作成する - Qiita
https://qiita.com/nnahito/items/16c8e214d71fbc23ed8e

コストについて

日本テレビ東京で学ぶMeCabのコスト計算 | mwSoft
http://www.mwsoft.jp/programming/munou/mecab_nitteretou.html

素性 フィールドの比較

MeCab辞書について | Yuta Hayashibe
https://hayashibe.jp/tr/mecab/dictionary/

Juman

公式

KNP - KUROHASHI-KAWAHARA LAB
http://nlp.ist.i.kyoto-u.ac.jp/index.php?KNP

公式ドキュメント
http://lotus.kuee.kyoto-u.ac.jp/nl-resource/jumanpp/jumanpp-manual-1.01.pdf

ドメインとかカテゴリとか分類の仕方自体が既に意味のある知識だな

最初に見た記事

MeCabより高精度?RNNLMの形態素解析器JUMAN++ - DeepAge
https://deepage.net/machine_learning/2017/01/16/juman++.html

大規模コーパス

概要がわかる

自動獲得というのはJUMANの頃から行われていることで、Wikipediaなどをベースに語彙を獲得していることです。
現在は X は テキスト (ウェブテキストのこと)、Wikipedia、Wiktionary の3種類だと思います。

なるほど、便利

インストールで詰まるところをフォローできた記事
若干時間がかかるけど割とスマート

Juman++を試そうと思ったら詰まったので解決方法を模索した話 - EnsekiTT Blog
http://ensekitt.hatenablog.com/entry/tree3

自分で辞書にするかもしれないしメモ

Juman のユーザ辞書の作り方 - Solr, Python, MacBook Air in Shinagawa Seaside
http://d.hatena.ne.jp/knaka20blue/20110320/1300627864

neologd辞書をJumanで使うスクリプト、試してみた

https://qiita.com/Kensuke-Mitsuzawa/items/403256129e812b09c461
https://github.com/fumankaitori/neologd2juman

brewで入れているとjumanpp(じゅーまんぷらぷら)で辞書追加がよくわからなかった
ちゃんと使うならビルドしたほうがいいかも

半角スペースは全角に変換してjumanにかけるべし

JUMAN++で遊んでる時にValueErrorが出ちゃう原因と対策の話 - EnsekiTT Blog
http://ensekitt.hatenablog.com/entry/juman

JUMAN++の形態素解析辞書についてのメモ | 北白川日記
https://www.shirayu.net/diary/2016/09/30

JUMAN++辞書の動詞
さて,「意味情報」が充実しているのがJuman辞書の特徴です.

ツール

FUMI
http://www.nysol.sakura.ne.jp/fumi/jp/index.html

FUMI: mjumandic.rb CSVからJUMAN辞書への変換
http://www.nysol.sakura.ne.jp/fumi/jp/sect-mjumandic.html

FUMI: テキストマイニングコマンド
http://www.nysol.sakura.ne.jp/fumi/jp/sect0003.html

インストール - NYSOL
http://www.nysol.jp/install

neologd辞書

有名なやつ、とりあえずREADMEに従って見た
薬品名の意味情報までは取れないな

クラウド

irbを使ってインタラクティブシェルで試せる

ネットから取ってくる

wikipediaのタイトルからとる

薬品の辞書

薬品名を3文字入力できる辞書を作ったから公開するよ【DL可】
https://yakkyokujimu.com/2016/07/yakuhin-zisho.html

ファイルはリンク切れっぽい

医療機関コードから住所や医療機関名称を入力できるようにする方法
https://yakkyokujimu.com/2016/06/iryokikan-code.html

厚生労働省の資料からデータを取ってくるのか
だいぶフォローできそうだな

ComeJisyo

薬名とかはいまいち取れないな

ComeJisyo プロジェクト日本語トップページ - OSDN
https://ja.osdn.net/projects/comedic/

良さそう。2013年が最終更新か。

MeCabでComeJisyoを使おう | DATUM STUDIO株式会社
https://datumstudio.jp/blog/mecab%E3%81%A7comejisyo%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86

ComeJisyoとは、医療単語を3万語ほど登録しているMeCab用の辞書です。ここではMacにインストールする場合を示します。

Word2Vec, MeCab, ComeJisyo で病気の症状類似語を出してみた - Qiita
https://qiita.com/quvo/items/9ef250d58971eadf6e1a

全体的に見て、Wikipediaの方が類似度が高くなっている。これはWikipediaの方が圧倒的に登録語数が多いからだろうか

政府情報

薬価基準収載品目リスト及び後発医薬品に関する情報について(平成28年3月31日まで)|厚生労働省
http://www.mhlw.go.jp/topics/2014/03/tp0305-01.html

ほか

MEDNLP 医療言語処理グループ
http://mednlp.jp/resource.html

色々やって見た結果

ディスク容量が10Gほど減っていた。
Jumanが意味情報という意味ではよさげなので、政府情報をもとに辞書にするか。
意外と量は少なそうだし。
Jumanの辞書を作って見た。コストの設定がよくわからなくて、
単語が被ったらwikipedia辞書がヒットしてしまう。
Makefileの順番を変えればいいのか、juman.dicを書き換えるのか。。
Makefileでの順番を変えたりwikipedia.mdicを空っぽにしたりするとinvalid posidが出てしまった。。
jumanpp.mdicへperlを使って集約する時点でwikipediaが勝ってユーザー辞書の単語が無視されてるな。
mecabでいっか。sudachiかな。。

適当なコマンドメモ

alias python3=~/.anyenv/envs/pyenv/versions/3.6.1/bin/python3
pyenv global 3.6.1
sudo bash neologd2juman.sh mecab-user-dict-seed.csv
sudo bash install-dictionary.sh


git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | iconv -f euc-jp -t utf-8 > keywordlist_furigana.csv
curl -L http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0
ls
ruby make.rb
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index  -d /usr/local/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv


nkf -Lw ComeJisyoV5-0993/ComeJisyoV5.csv > ComeJisyoV5-0993/ComeJisyoV5-utf8.csv
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index  -d /usr/local/lib/mecab/dic/ipadic  -u comejisyo.dic -f utf-8 -t utf-8 ComeJisyoV5-0993/ComeJisyoV5-utf8.csv

辞書作り

一旦、手作業で読みは適当

^.*$
(名詞 (普通名詞 ((読み $0)(見出し語 ($0))(意味情報 "自動獲得:厚生労働省のエクセル エンティティ:医薬品メーカー"))))

^.*$
(名詞 (普通名詞 ((読み $0)(見出し語 ($0))(意味情報 "自動獲得:厚生労働省のエクセル エンティティ:医薬品;商品名;短縮"))))
([A-Z]|[々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF])+?\)\(見出し語
)(見出し語

[0-90-9.,]+(μg|カプセル|カリウム|シート|セット|万単位|丸|個|包|単位|本|瓶|筒|管|袋|鉄|錠|%|IR|JAU|MBq|g|mEq|mL|mg)

((シロップ|カプセル)|「.*?」|(.*?)|〈.*?〉|〔.*?〕)

[0-90-9.,]*?/.+$

 .+$

^.{1,2}$

([\u30A1-\u30FA])([々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF])+$
$1

([々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF]+[0-9.,A-Z]+[々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF])+$

漢字、ひらがな、カタカナにマッチさせる方法 | 正規表現
https://so-zou.jp/software/tech/programming/tech/regular-expression/meta-character/variable-width-encoding.htm

jumanからmecabへの適当変換めも

# Makefile変更
SCRIPT_DIR=scripts
JUMANPM_DIR=scripts/lib/

DIC_DIRS=userdic
MDIC_LIST=$(addsuffix .mdic,$(DIC_DIRS))
BASIC_DICTS=$(shell find dic -name "*.dic"|grep -v "Rengo.dic"|grep -v "ContentW.dic")

.PHONY: jumanpp 
all: jumanpp

scripts/lib/Grammar.pm: grammar/JUMAN.katuyou grammar/JUMAN.grammar grammar/JUMAN.kankei
    rm -f scripts/lib/Grammar.pm
    perl -I scripts/lib/ scripts/mkgrammarpm grammar -o scripts/lib/Grammar.pm 

jumanpp: $(MDIC_LIST) scripts/lib/Grammar.pm
    mkdir -p jumanpp_dic &&\
    cat $(MDIC_LIST) | perl -I$(SCRIPT_DIR) -I$(JUMANPM_DIR) $(SCRIPT_DIR)/jumandic2morphdic.perl --nominalize --okurigana > my.csv

#grep エンティティ jumanpp.mdic | sed -e 's/名詞,普通名詞,/名詞,普通名詞,\*,\*,/g' > my.csv

#mecabモデルファイル
bzip2 -d mecab-ipadic-2.7.0-20070801.model.bz2
nkf --overwrite -Ew mecab-ipadic-2.7.0-20070801.model

#convert
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -m mecab-ipadic-2.7.0-20070801.model -d /usr/local/lib/mecab/dic/ipadic  -u my.dic -f utf-8 -t utf-8 my.csv
mecab -u my.dic

作った辞書

日本の厚生労働省の公開しているデータを元にした辞書

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4