日本語品質スコアリングモデル

現在は 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 正規化ください.

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 正規化ください.

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

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The model has no library tag.