考えていること
処方箋を解析
医学用語を意味情報で区別できるといいけどな
大別
一般
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