作業メモ:kagomeのシステム辞書を更新する

概要

辞書項目追加したので作業記録の自分用メモ.

作業

必要なもの

  • go-bindata コマンド
    • 自分のレポジトリにある改造したやつ

作業ディレクト

kagome/cmd/_dictool 以下で作業する

キーワードを追加する

  • IPADIC
    • mecab-ipadic-2.7.0-20070801 を用意する (github.com/taku910/mecab にあるものでもいい)
    • 差分がとれるように編集するファイルをコピーする
    • EUC-JP で項目を追加
    • diff -up <original> <updated> で差分をとって patch 以下に記録しておく
    • ファイルを更新
  • UniDIC
    • unidic-mecab-2.1.2_src を用意する
    • 差分がとれるように編集するファイルをコピーする
    • utf8 で項目を追加
    • diff -up <original> <updated> で差分をとって patch 以下に記録しておく
    • ファイルを更新

辞書ビルド

IPADIC

$ mkdir ./dic
$ mkdir ./dic/ipa
$ go run main.go  ipa -mecab ./mecab-ipadic-2.7.0-20070801 -output ./dic/ipa -z false
$ go run main.go ipa -mecab ./mecab-ipadic-2.7.0-20070801

UniDIC

$ mkdir ./dic/uni
$ go run main.go  uni -mecab ./unidic-mecab-2.1.2_src -output ./dic/uni -z=false
$ go run main.go uni -mecab ./unidic-mecab-2.1.2_src

ipa.dic と uni.dic を kagome/_sample にコピーして更新

go-bindata

go-bindata -o bindata.go -nomemcopy -separate -pkg=data dic/...

直下に gindata*.go というファイルが生成される.これを kagome/internal/dic/data 以下にコピーする

17:35 $ ls -lah ../../internal/dic/data/
total 432920
drwxr-xr-x@ 24 ikawaha  staff   768B  4 16 16:31 ./
drwxr-xr-x@ 23 ikawaha  staff   736B  2 16 13:09 ../
-rw-r--r--   1 ikawaha  staff   7.7K  4 16 16:31 bindata.go
-rw-r--r--   1 ikawaha  staff   5.9M  4 16 16:31 bindata00.go
-rw-r--r--   1 ikawaha  staff   7.7M  4 16 16:31 bindata01.go
-rw-r--r--   1 ikawaha  staff    20M  4 16 16:31 bindata02.go
-rw-r--r--   1 ikawaha  staff   9.4M  4 16 16:31 bindata03.go
-rw-r--r--   1 ikawaha  staff   7.5M  4 16 16:31 bindata04.go
-rw-r--r--   1 ikawaha  staff   3.0M  4 16 16:31 bindata05.go
-rw-r--r--   1 ikawaha  staff   3.9M  4 16 16:31 bindata06.go
-rw-r--r--   1 ikawaha  staff   4.3M  4 16 16:31 bindata07.go
-rw-r--r--   1 ikawaha  staff   3.6M  4 16 16:31 bindata08.go
-rw-r--r--   1 ikawaha  staff   3.5M  4 16 16:31 bindata09.go
-rw-r--r--   1 ikawaha  staff   3.7M  4 16 16:31 bindata10.go
-rw-r--r--   1 ikawaha  staff   8.6M  4 16 16:31 bindata11.go
-rw-r--r--   1 ikawaha  staff    21M  4 16 16:31 bindata12.go
-rw-r--r--   1 ikawaha  staff    18M  4 16 16:31 bindata13.go
-rw-r--r--   1 ikawaha  staff    18M  4 16 16:31 bindata14.go
-rw-r--r--   1 ikawaha  staff    16M  4 16 16:31 bindata15.go
-rw-r--r--   1 ikawaha  staff    10M  4 16 16:31 bindata16.go
-rw-r--r--   1 ikawaha  staff    12M  4 16 16:31 bindata17.go
-rw-r--r--   1 ikawaha  staff    16M  4 16 16:31 bindata18.go
-rw-r--r--   1 ikawaha  staff    14M  4 16 16:31 bindata19.go
-rw-r--r--   1 ikawaha  staff   4.2M  4 16 16:31 bindata20.go

念のため go fmt する

$ go fmt ../../internal/dic/data/

テスト

項目を追加/削除していれば項目の全体数が合わなくなるのでそのテストが失敗するはず.

$ go test ./...
?       github.com/ikawaha/kagome/cmd/kagome    [no test files]
?       github.com/ikawaha/kagome/cmd/kagome/lattice    [no test files]
?       github.com/ikawaha/kagome/cmd/kagome/server [no test files]
?       github.com/ikawaha/kagome/cmd/kagome/tokenize   [no test files]
ok      github.com/ikawaha/kagome/internal/da   (cached)
--- FAIL: TestSystemDic (1.58s)
    sysdic_test.go:30: got 392127, expected 392126
--- FAIL: TestSystemDicSimple (1.55s)
    sysdic_test.go:41: got 392127, expected 392126
--- FAIL: TestSystemDicIPAMorphs01 (1.42s)
    sysdic_test.go:65: got 392127, expected 392126
--- FAIL: TestSystemDicIPASimpleMorphs01 (1.32s)
    sysdic_test.go:75: got 392127, expected 392126
--- FAIL: TestSystemDicUniMorphs01 (8.42s)
    sysdic_test.go:85: got 756466, expected 756463
--- FAIL: TestSystemDicUniSimpleMorphs01 (7.43s)
    sysdic_test.go:95: got 756466, expected 756463
--- FAIL: TestSystemDicIPAContents01 (1.25s)
    sysdic_test.go:105: got 392127, expected 392126
--- FAIL: TestSystemDicUniContents01 (7.75s)
    sysdic_test.go:125: got 756466, expected 756463
FAIL
FAIL    github.com/ikawaha/kagome/internal/dic  113.520s
?       github.com/ikawaha/kagome/internal/dic/data [no test files]
ok      github.com/ikawaha/kagome/internal/lattice  17.673s
ok      github.com/ikawaha/kagome/splitter  (cached)
--- FAIL: TestAnalyze02 (0.00s)
    tokenizer_test.go:68: got 関西国際空港(0, 6)KNOWN[372978], expected 関西国際空港(0, 6)KNOWN[372977]
FAIL
FAIL    github.com/ikawaha/kagome/tokenizer 20.071s

テストを修正する.

  • 項目数が増えることによる修正
    • 全体のエントリ数
    • 単語IDのずれ

/以上