Remove akaza-data/Makefile

This commit is contained in:
Tokuhiro Matsuno
2023-01-21 23:13:37 +09:00
parent f7c5fa3bf0
commit 59a00ceef3
2 changed files with 1 additions and 215 deletions

View File

@ -1,141 +0,0 @@
PREFIX ?= /usr
DATADIR ?= $(PREFIX)/share
DESTDIR ?=
all: data/bigram.model \
data/bigram.model \
data/SKK-JISYO.akaza
# -------------------------------------------------------------------------
# wikipedia の前処理
work/jawiki/jawiki-latest-pages-articles.xml.bz2:
mkdir -p work/jawiki/
wget --no-verbose --no-clobber -O work/jawiki/jawiki-latest-pages-articles.xml.bz2 https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
work/jawiki/jawiki-latest-pages-articles.xml: work/jawiki/jawiki-latest-pages-articles.xml.bz2
bunzip2 --keep work/jawiki/jawiki-latest-pages-articles.xml.bz2
work/jawiki/extracted/_SUCCESS: work/jawiki/jawiki-latest-pages-articles.xml
python3 -m wikiextractor.WikiExtractor --quiet --processes 8 --out work/jawiki/extracted/ work/jawiki/jawiki-latest-pages-articles.xml
touch work/jawiki/extracted/_SUCCESS
# -------------------------------------------------------------------------
# Unidic の処理
# -------------------------------------------------------------------------
work/unidic/unidic.zip:
mkdir -p work/unidic/
wget --no-verbose --no-clobber -O work/unidic/unidic.zip https://clrd.ninjal.ac.jp/unidic_archive/csj/3.1.1/unidic-csj-3.1.1.zip
work/unidic/lex_3_1.csv: work/unidic/unidic.zip
unzip -D -o -j work/unidic/unidic.zip -d work/unidic/
touch work/unidic/lex_3_1.csv
# -------------------------------------------------------------------------
# Vibrato トーカナイズ
work/vibrato/ipadic-mecab-2_7_0.tar.gz:
mkdir -p work/vibrato/
wget --no-verbose --no-clobber -O work/vibrato/ipadic-mecab-2_7_0.tar.gz https://github.com/daac-tools/vibrato/releases/download/v0.3.1/ipadic-mecab-2_7_0.tar.gz
work/vibrato/ipadic-mecab-2_7_0/system.dic: work/vibrato/ipadic-mecab-2_7_0.tar.gz
mkdir -p work/vibrato/
tar -xmzf work/vibrato/ipadic-mecab-2_7_0.tar.gz -C work/vibrato/
work/jawiki/vibrato-ipadic/_SUCCESS: src/subcmd/tokenize.rs mecab-user-dict.csv src/corpus_reader/wikipedia_extracted.rs work/jawiki/extracted/_SUCCESS work/vibrato/ipadic-mecab-2_7_0/system.dic
cargo run --release -- tokenize \
--reader=jawiki \
--user-dict=mecab-user-dict.csv \
--system-dict=work/vibrato/ipadic-mecab-2_7_0/system.dic \
work/jawiki/extracted \
work/jawiki/vibrato-ipadic/ \
-vvv
work/aozora_bunko/vibrato-ipadic/_SUCCESS: src/corpus_reader/aozora_bunko.rs work/vibrato/ipadic-mecab-2_7_0/system.dic
cargo run --release -- tokenize \
--reader=aozora_bunko \
--user-dict=mecab-user-dict.csv \
--system-dict=work/vibrato/ipadic-mecab-2_7_0/system.dic \
aozorabunko_text/cards/ \
work/aozora_bunko/vibrato-ipadic/ \
-vv
work/vibrato-ipadic.wfreq: work/jawiki/vibrato-ipadic/_SUCCESS src/subcmd/wfreq.rs work/aozora_bunko/vibrato-ipadic/_SUCCESS
cargo run --release -- wfreq \
--src-dir=work/jawiki/vibrato-ipadic/ \
--src-dir=work/aozora_bunko/vibrato-ipadic/ \
--src-dir=corpus/ \
work/vibrato-ipadic.wfreq -vvv
# threshold が 16 なのはヒューリスティックなパラメータ設定による。
# vocab ファイルを作る意味は、辞書の作成のためだけなので、わざわざ作らなくてもよいかもしれない。
work/vibrato-ipadic.vocab: work/vibrato-ipadic.wfreq src/subcmd/vocab.rs
cargo run --release -- vocab --threshold 16 work/vibrato-ipadic.wfreq work/vibrato-ipadic.vocab -vvv
# -------------------------------------------------------------------------
# 統計的仮名かな漢字変換のためのモデル作成処理
work/stats-vibrato-unigram.wordcnt.trie: work/vibrato-ipadic.wfreq
cargo run --release -- wordcnt-unigram \
work/vibrato-ipadic.wfreq \
work/stats-vibrato-unigram.wordcnt.trie
work/stats-vibrato-bigram.wordcnt.trie: work/stats-vibrato-unigram.wordcnt.trie work/stats-vibrato-unigram.wordcnt.trie src/subcmd/make_stats_system_bigram_lm.rs work/aozora_bunko/vibrato-ipadic/_SUCCESS
cargo run --release -- wordcnt-bigram --threshold=3 \
--corpus-dirs work/jawiki/vibrato-ipadic/ \
--corpus-dirs work/aozora_bunko/vibrato-ipadic/ \
work/stats-vibrato-unigram.wordcnt.trie work/stats-vibrato-bigram.wordcnt.trie
data/bigram.model: work/stats-vibrato-bigram.wordcnt.trie work/stats-vibrato-unigram.wordcnt.trie src/subcmd/learn_corpus.rs corpus/must.txt corpus/should.txt corpus/may.txt data/SKK-JISYO.akaza
cargo run --release -- learn-corpus \
--delta=2000 \
--may-epochs=10 \
--should-epochs=100 \
--must-epochs=10000 \
corpus/may.txt \
corpus/should.txt \
corpus/must.txt \
work/stats-vibrato-unigram.wordcnt.trie work/stats-vibrato-bigram.wordcnt.trie \
data/unigram.model data/bigram.model \
-v
data/unigram.model: data/bigram.model
# -------------------------------------------------------------------------
# システム辞書の構築。dict/SKK-JISYO.akaza、コーパスに書かれている語彙および work/vibrato-ipadic.vocab にある語彙。
# から、SKK-JISYO.L に含まれる語彙を除いたものが登録されている。
data/SKK-JISYO.akaza: work/vibrato-ipadic.vocab dict/SKK-JISYO.akaza src/subcmd/make_dict.rs corpus/must.txt corpus/should.txt corpus/may.txt work/unidic/lex_3_1.csv
cargo run --release -- make-dict \
--corpus corpus/must.txt \
--corpus corpus/should.txt \
--corpus corpus/may.txt \
--unidic work/unidic/lex_3_1.csv \
--vocab work/vibrato-ipadic.vocab \
data/SKK-JISYO.akaza \
-vvv
# -------------------------------------------------------------------------
evaluate: data/bigram.model
AKAZA_KEYMAP_DIR=../keymap/ AKAZA_ROMKAN_DIR=../romkan/ AKAZA_MODEL_DIR=data/ cargo run --release evaluate anthy-corpus -v
# -------------------------------------------------------------------------
install:
install -m 0755 -d $(DESTDIR)$(DATADIR)/akaza-data
install -m 0644 data/*.trie $(DESTDIR)$(DATADIR)/akaza-data
# -------------------------------------------------------------------------
test-data: work/vibrato/ipadic-mecab-2_7_0/system.dic
.PHONY: all install evaluate test-data

View File

@ -4,77 +4,4 @@
辞書および言語モデルの管理用のツールです。
## How to build this?
make
make install
## Dependencies
### Runtime Dependencies
* wikiextractor
* python3
* wget
### Buildtime dependencies
* rust
## How it works?
TODO: 書き直し
1. 日本語版 wikipedia の jawiki-latest-pages-articles.xml.bz2 を取得
2. bunzip2 で伸長
3. wikiextractor で text/ 以下に展開する
4. bin/wiki2text-runner.py で、kytea による読み推定を実施し、分かち書きして dat/ に保存。
5. cat で jawiki.txt に連結して保存する。
6. text2wfreq.py で頻度ファイルを生成する。 jawiki.wfreq
7. wfreq2vocab.py で語彙ファイルを生成する。jawiki.vocab
* ここの足切りラインを大きくすると変換精度は高まるが、生成データがでかくなる。
* 現在は、「ペパボ」が入るという理由で 16 回以上登場したものとしている。
## 生成されるデータ
### bigram.model, unigram.model
marisa-trie 形式のデータです。1gram, 2gram のデータが素直に格納されています。
フォーマットは、2gram の場合は以下のようになっています。
愛/あい\tは/は => -0.525252
浮動小数点数がスコアです。このスコアは、n-gram の確率の log10 をとって - をつけたものです。
## Size に関するメモ
以下でざっくりとした見積もりが書いてあるが、現実的にはトライ構造で圧縮されるため、その通りにはならないです。
* word1 + word2 + score
* 4byte + 4byte + 2byte
entries(bigram cutoff=3):
1gram: 297,228
bigram entries:
- 3: 5,744,624
- 10: 2,639,415
- 20: 1,603,540
- 50: 803,462
5M * 10 = 50MB
## 調整方法
誤変換が多いな、と思ったら。
* vibrato がトーカナイズできてなくてスコアがついてないな、と思った場合は mecab-user-dict.csv にエントリーを追加してください。
* akaza-data/ で make all したあとに、該当単語が work/jawiki/vibrato-ipadic.vocab に入っていなければ、mecab-user-dict.csv
に追加する必要があります
* このファイルには、明らかに必要な元号/国名などのみを追加してください。
* 固有名詞などは、入れたとて Wikipedia 内での記述回数が少ないために、スコアがつかないので無意味です。
詳細は、 `akaza-data help` を実行してみると良いと思います。