「ぎなた読みの自動生成の試み」で用いたコード
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE.txt
README.md
convert_unidic.py
discover-ginata.cpp
ngram_filter.py
result_filter.py

README.md

なぎた読みの自動作成の試み

Apache License

Requirements

  1. 自分でn-gramコーパスを用意するか,NINJAL Web Japanese Corpusから以下のファイルをダウンロード・展開する
    • NWJC-surface-1gram.zip
    • NWJC-surface-2gram.zip (または任意のn-gram)
    • このn-gram作成に使われた辞書と,ぎなた読み探索に用いる辞書が一致するとは限らないことに留意
  2. UniDicのウェブサイトから現代書き言葉UniDicをダウンロード・展開する
  3. wlsp2unidicをダウンロード・展開する
  4. MeCabをインストールし,ライブラリを利用できるようにする

Usage

# 頻度が300回以上の1gram, 2gramを抽出
#  形態素単位はUniDicとは限らないことに注意
zcat data/NWJC-surface-1gram/*gz | nkf -w | python3 ./ngram_filter.py -n 1 --th 300 > data/1gram.300.txt
zcat data/NWJC-surface-2gram/*gz | nkf -w | python3 ./ngram_filter.py -n 2 --th 300 > data/2gram.300.txt

# オリジナルのUnidicを加工したMeCab辞書を作成
#  1-gramが一定数以上ある形態素のみ使う
#  記号などは除外
#  BOS/EOSとの連接コストは0になる
python3 ./convert_unidic.py --unidic /path/to/unidic --freq data/1gram.300.txt -o data/mydic

# C++プログラムをコンパイル
g++ -lmecab ./discover-ginata.cpp -o discover-ginata

# 異分割の探索
cat ./data/2gram.300.txt | ./discover-ginata -d ./data/mydic/bin | gzip > data/result.2gram.gz

# 分類語彙表を使って結果をフィルタリングする
#   コスト差を示す先頭カラムが追加される
#   ここでは異分割に食料を意味する形態素を含む場合のみを出力している
zcat data/result.2gram.gz | python3 ./result_filter.py -b ./data/wlsp2unidic/BunruiNo_LemmaID.txt --key 体-生産物-食料-食料 --after

Related Work

LICENSE