LoginSignup
2
4

More than 5 years have passed since last update.

termextractからsudachiのユーザ辞書を作ってみた

Last updated at Posted at 2018-10-01

こちらの記事のsudachi版です。
termextractを使って保持データから専門用語を抽出しmecabのユーザ辞書を作成する

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形式で作ったテキストファイルから複合語のユーザ辞書を作成します。

termextract.py
#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を修正してユーザ辞書を利用可能にします。なお、ユーザ辞書は複数利用することも可能らしいです。複数利用したい場合はリスト形式でカンマ区切りで記述します。

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現在)

参考サイト

2
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
2
4