こちらの記事のsudachi版です。
[termextractを使って保持データから専門用語を抽出しmecabのユーザ辞書を作成する][1]
[1]:https://qiita.com/ldap2017/items/88fc6a48793c135c314e
macOS High Sierra 10.13
Python 3.6.5
mecab of 0.996
sudachi-0.1.1-SNAPSHOT
手順
手順1と2は上記の記事を見てください。
手順3.sudachi形式のユーザ辞書を作成
手順4.バイナリ辞書の作成
手順5.設定ファイルの修正
手順6.テスト
3.sudachi形式のユーザ辞書を作成
mecab形式で作ったテキストファイルから複合語のユーザ辞書を作成します。
# sudachiのユーザ辞書の作成
import termextract.mecab
import termextract.core
import collections
# ファイルを読み込む
input_text = open("input_mecab.txt", "r", encoding="utf-8").read()
# アウトプットするファイルを指定
f = open("sudachi_dic.csv", mode='w')
# bag-of-wordsする
frequency = termextract.mecab.cmp_noun_dict(input_text)
# LR(単名詞の左右の連接情報)を生成
LR = termextract.core.score_lr(frequency,
ignore_words=termextract.mecab.IGNORE_WORDS,
lr_mode=1, average_rate=1
)
# 重要度が高い順に並べ替えて出力
term_imp = termextract.core.term_importance(frequency, LR)
data_collection = collections.Counter(term_imp)
for cmp_noun, value in data_collection.most_common():
dic_noun = termextract.core.modify_agglutinative_lang(cmp_noun)
line = u"%s,5146,5146,8000,%s,名詞,普通名詞,一般,*,*,*,,%s,*,*,*,*,*" % (dic_noun,dic_noun,dic_noun)
#公式に名詞類の登録であれば、"5000 ~ 9000" を推奨とありましたので8000としました
f.write(line + "\n")
f.close()
4.バイナリ辞書の作成
作成した辞書をバイナリ化します。targetディレクトリ内にあるtarget/sudachi-XX.jar
を使って変換できます。
$java -cp Sudachi/target/sudachi-0.1.1-SNAPSHOT.jar \
com.worksap.nlp.sudachi.dictionary.UserDictionaryBuilder \
system_core.dic \ #Sudachi のシステム辞書
./sudachi_dic.csv \ #ユーザ辞書ソースファイル名
./sudachi_user.dic #出力するバイナリ辞書ファイル名
5.設定ファイルの修正
同じくtarget内にあるsudachi.json
を修正してユーザ辞書を利用可能にします。なお、ユーザ辞書は複数利用することも可能らしいです。複数利用したい場合はリスト形式でカンマ区切りで記述します。
{
"systemDict" : "system_core.dic",
"userDict" : ["sudachi_user.dic"], ←ユーザ辞書を追加
"inputTextPlugin" : [
{ "class" : "com.worksap.nlp.sudachi.DefaultInputTextPlugin" },
{ "class" : "com.worksap.nlp.sudachi.ProlongedSoundMarkInputTextPlugin",
"prolongedSoundMarks": ["ー", "-", "⁓", "〜", "〰"],
"replacementSymbol": "ー"}
],
....
6.テスト
ユーザ辞書は実行時にjsonファイルを指定して実行することで利用できます。
java -jar sudachi-0.1.1-SNAPSHOT.jar -r sudachi.json
おわりに
本当はユーザ辞書を作ってSudachiのPython版SudachiPyで利用したかったのですが、まだSudachiPyはユーザ辞書に対応していないようでした。。残念。。(2018.10.01現在)
参考サイト