--- language: - ja tags: - scoring license: odc-by --- ## 日本語品質スコアリングモデル 現在は KenLM モデルのみ提供されています. ## KenLM model - kenlm_model-wiki-nfkc-char.bin Wikipedia データセットに対して, NFKC 正規化を行い, 文字単位で train したもの. - kenlm_model-wiki-nfkc-wakachi.bin Wikipedia データセットに対して, NFKC 正規化を行い, Fugashi で分かち書きして train したもの. 9 GB ほどあります. ### 利用例 文字単位の場合. 必要に応じて `unicodedata.normalize` などで入力文章を NFKC 正規化ください. ```py import kenlm import os MODEL_BIN='kenlm_model-wiki-nfkc-char.bin' if __name__ == '__main__': if not os.path.exists(MODEL_BIN): raise Exception("model file not found: {}".format(MODEL_BIN)) model = kenlm.LanguageModel(MODEL_BIN) for txt in [ "脱字が存在する文章です。", "脱字が存在する文章す。", '東京はッ晴れ。', '東京は元気です。', '吾輩は猫である。 名前はまだない。', '吾輩は猫である。 名前はまだな。', '東京は晴れ', '東京は晴れ。' ]: sentence = " ".join(txt.strip()) prob = model.score(sentence, bos=True, eos=True) perplexity = model.perplexity(sentence) print(perplexity, prob, txt) ``` ``` 43.35517516360913 -21.281532287597656 脱字が存在する文章です。 97.87160125641132 -23.887880325317383 脱字が存在する文章す。 436.3376833313477 -21.118581771850586 東京はッ晴れ。 28.211570751481222 -13.053845405578613 東京は元気です。 10.25990652099858 -17.189437866210938 吾輩は猫である。 名前はまだない。 18.742658903324944 -20.365299224853516 吾輩は猫である。 名前はまだな。 1707.9430028946922 -19.394840240478516 東京は晴れ 62.91522904283418 -12.591290473937988 東京は晴れ。 ``` 分かち書きする場合. 分かち書き処理には, SudachiPy など利用でもよいでしょう. 必要に応じて `unicodedata.normalize` などで入力文章を NFKC 正規化ください. ```py import kenlm import os from fugashi import Tagger MODEL_BIN='kenlm_model-wiki-nfkc-wakachi.bin' tagger = Tagger('-Owakati') if __name__ == '__main__': if not os.path.exists(MODEL_BIN): raise Exception("model file not found: {}".format(MODEL_BIN)) model = kenlm.LanguageModel(MODEL_BIN) # 句点ごとの文に対してスコア計算が理想である for txt in [ "脱字が存在する文章です。", "脱字が存在する文章す。", '東京はッ晴れ。', '東京は元気です。', '吾輩は猫である。 名前はまだない。', '吾輩は猫である。 名前はまだな。', '東京は晴れ', '東京は晴れ。' ]: sentence = tagger.parse(txt.strip()) prob = model.score(sentence, bos=True, eos=True) perplexity = model.perplexity(sentence) print(perplexity, prob, txt) ``` ``` 799.5157517342569 -23.22261619567871 脱字が存在する文章です。 1427.360337285063 -25.236268997192383 脱字が存在する文章す。 3103.9820393600435 -20.951515197753906 東京はッ晴れ。 186.32902872137998 -13.621683120727539 東京は元気です。 25.350235809904472 -16.8477840423584 吾輩は猫である。 名前はまだない。 113.43313945517427 -24.656879425048828 吾輩は猫である。 名前はまだな。 17985.3170652363 -17.019672393798828 東京は晴れ 354.6946680891273 -12.749273300170898 東京は晴れ。 ``` ## License odc-by