[テキスト誤り訂正]pycorrectorフレームワークテスト


pycorrector:https://github.com/shibing624/pycorrector

pycorrector


中国語テキスト誤り訂正ツール.音似、形似誤字(または変体字)訂正は、中国語のピンイン、筆画入力法の誤り訂正に用いることができる.python3.6開発.
pycorrectorは言語モデルに基づいて誤字位置を検出し、ピンイン音似特徴、筆画五筆編集距離特徴及び言語モデル困惑度特徴によって誤字を修正する.

Question


中国語テキスト誤り訂正タスク、一般的なエラータイプは以下のとおりです.
  • ハーモニーワード、例えば副眼-副眼鏡
  • 混同音字詞、例えば流浪織女-牛郎織女
  • ウディエレン-エレンウディ
  • 字词补全,如爱有天意-如爱有天意
  • 形似字エラー、例えば高梁-コウリャン
  • 中文拼音全拼,如xingfu-幸福
  • 中国語ピンイン略語、例えばsz-深セン
  • 文法が間違っていて、想像が難しい-想像しにくい
  • もちろん、異なるビジネスシーンに対して、これらの問題は必ずしもすべて存在するわけではありません.例えば、入力法では前の4種類を処理する必要があり、検索エンジンではすべてのタイプを処理する必要があります.音声認識後のテキスト誤り訂正は前の2種類を処理する必要があります.そのうち、「形似字誤り」は主に5筆または筆画手書き入力などです.

    Install

  • 全自動インストール:pip install pycorrector
  • 半自動インストール:
  • git clone https://github.com/shibing624/pycorrector.git
    cd pycorrector
    python setup.py install
    

    以上の2つの方法のいずれかでインストールを完了できます.インストールしたくない場合はgithubソースパッケージをダウンロードし、インストールしてから使用してください.

    インストール依存

  • kenlmインストール
  • pip install https://github.com/kpu/kenlm/archive/master.zip
    
  • その他のパッケージのインストール
  • pip install -r requirements.txt
    

    Usage

  • テキスト誤り訂正
  • import pycorrector
    
    corrected_sent, detail = pycorrector.correct(' ')
    print(corrected_sent, detail)
    

    output:
      [[(' ', ' ', 4, 6)], [(' ', ' ', 10, 11)]]
    

    ルール・メソッドのデフォルトでは、kenlm言語モデル・ファイルがパス~/.pycorrector/datasets/zh_giga.no_cna_cmn.prune01244.klmからロードされ、ファイルが検出されない場合、プログラムは自動的にネットワーク・ダウンロードされます.もちろん、モデルファイル(2.8 G)を手動でダウンロードしてその場所に配置することもできます.
  • エラー検出
  • import pycorrector
    
    idx_errors = pycorrector.detect(' ')
    print(idx_errors)
    

    output:
    [[' ', 4, 6, 'word'], [' ', 10, 11, 'char']]
    

    戻りタイプは、list,[error_word, begin_pos, end_pos, error_type],posインデックス位置が0で始まる.
  • クローズワード粒度誤り訂正
  • import pycorrector
    
    error_sentence_1 = ' '
    correct_sent = pycorrector.correct(error_sentence_1)
    print(correct_sent)
    
    

    output:
    ' ', [[' ', ' ', 12, 14], [' ', ' ', 14, 15]]
    

    上記の例では エラー訂正が発生し、以下のコードはワード粒度誤り訂正を閉じる.
    import pycorrector
    
    error_sentence_1 = ' '
    pycorrector.enable_char_error(enable=False)
    correct_sent = pycorrector.correct(error_sentence_1)
    print(correct_sent)
    
    

    output:
    ' ', [[' ', ' ', 12, 14]]
    

    デフォルトのワード粒度、ワード粒度の誤り訂正はすべて開いており、一般的には単語エラーの発生は少なく、ワード粒度の誤り訂正精度は低い.ワード粒度誤り訂正をオフにすることで、誤り訂正精度を向上させ、誤り訂正速度を向上させることができる.
    デフォルトenable_char_errorメソッドのenableパラメータはTrueであり、すなわち誤字訂正を開くことで、字粒度エラーをリコールすることができるが、全体の精度は低い.
    リコール率ではなく精度を追求する場合は、enableFalseに設定し、誤語のみで訂正することをお勧めします.
  • カスタム混同セットのロード
  • カスタム混同セットをロードすることで、ユーザーが既知のエラーを修正することをサポートします.2つの機能があります.1)エラー補完リコール;2)誤殺加白.
    import pycorrector
    
    pycorrector.set_log_level('INFO')
    error_sentences = [
        ' iPhone , ',
        ' 、 、 ',
    ]
    for line in error_sentences:
        print(pycorrector.correct(line))
    
    print('*' * 53)
    pycorrector.set_custom_confusion_dict(path='./my_custom_confusion.txt')
    for line in error_sentences:
        print(pycorrector.correct(line))
    
    

    output:
    (' iPhone , ', [])   # "iPhone " , "iphoneX"
    (' 、 、 ', [[' ', ' ', 14, 17]]) # " " , 
    *****************************************************
    (' iPhoneX, ', [['iPhone ', 'iPhoneX', 1, 8]])
    (' 、 、 ', [])
    

    詳細はexample/useを参照してください.custom_confusion.py、./my_custom_confusion.txtのコンテンツフォーマットは、スペース間隔で次のようになります.
    iPhone  iPhoneX 100
       
    
    set_custom_confusion_dictメソッドのpathパラメータは、ユーザのために混同セットファイルパスをカスタマイズする.
  • カスタム言語モデルのロード
  • デフォルトでダウンロードして使用できるkenlm言語モデルzh_giga.no_cna_cmn.prune01244.klmファイルは2.8 Gで、メモリの小さいパソコンでpycorrectorプログラムを使用するのは骨が折れるかもしれません.
    ユーザーが自分の訓練をロードするkenlm言語モデルをサポートしたり、2014版人民日報データ訓練のモデルを使用したりして、モデルは小さく(20 M)、精度は低い.
    from pycorrector import Corrector
    
    pwd_path = os.path.abspath(os.path.dirname(__file__))
    lm_path = os.path.join(pwd_path, './people_chars_lm.klm')
    model = Corrector(language_model_path=lm_path)
    
    corrected_sent, detail = model.correct(' ')
    print(corrected_sent, detail)
    
    

    output:
      [[(' ', ' ', 4, 6)], [(' ', ' ', 10, 11)]]
    

    詳細はexample/loadを参照してください.custom_language_model.py,./people_chars_lm.klmはカスタム言語モデルファイルである.