3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LLM で日本語文章校正したいメモ

Posted at

とりあえずは BERT を試しました.

BERTのMasked Language Modelを利用して文の校正を行う
https://qiita.com/wwacky/items/0101b2797c89626d65b2

ありがとうございます.

https://huggingface.co/cl-tohoku/bert-large-japanese
(bert-large-japanese-char は単語単位なので文章校正とかにはむかなさそう)

を使うとちょっとはよい結果になりましたが, 「絵がとても上手い」はだめでした
「絵がとても上手です」は top_k 10 に入った!

DEBUG:models.bert_proofreader:top k word=['料理', '歌', 'ダンス', 'ピアノ', '音楽', '絵', 'ギター', '英語', '
声', 'トランペット']
INFO:models.bert_proofreader:が: True
DEBUG:models.bert_proofreader:top k word=['が', 'は', 'も', '、', ':', '-', 'って', 'とても', 'なんて', 'で']
INFO:models.bert_proofreader:とても: True
DEBUG:models.bert_proofreader:top k word=['お', 'とても', 'いちばん', '少し', '超', 'ちょっと', 'すごい', '大', 'あまり', '大変']
INFO:models.bert_proofreader:上手: True
DEBUG:models.bert_proofreader:top k word=['上手', '好き', '得意', '大好き', '下手', 'きれい', '綺麗', '苦手', '巧み', 'うま']
INFO:models.bert_proofreader:です: True
DEBUG:models.bert_proofreader:top k word=['。', ')', '!', '」', 'です', '?', 'で', 'な', '.', '(']
True

また, 人物など固有名詞があるとうまくいきません.

図書館で勉強している田中さんを見ました

DEBUG:models.bert_proofreader:top k word=['図書', '美術', '映画', '小学', '立命', '大使', '博物', '公民', '水
族', '天文']
INFO:models.bert_proofreader:館: True
DEBUG:models.bert_proofreader:top k word=['館', '室', '委員', 'センター', '倉庫', 'コーナー', '研', '売り場', '庫', '園']
INFO:models.bert_proofreader:で: True
DEBUG:models.bert_proofreader:top k word=['で', 'を', 'の', 'にて', 'に', 'と', '受験', 'が', 'も', 'は']
INFO:models.bert_proofreader:勉強: True
DEBUG:models.bert_proofreader:top k word=['読書', '勉強', '朗読', '作業', 'アルバイト', 'バイト', '講演', '休
憩', '整理', '活動']
INFO:models.bert_proofreader:し: True
DEBUG:models.bert_proofreader:top k word=['し', 'やっ', '##っ', '##張っ', '行っ', 'でき', '見', '立っ', '聞い', '##合っ']
INFO:models.bert_proofreader:て: True
DEBUG:models.bert_proofreader:top k word=['て', 'で', 'てる', 'に', 'ながら', 'って', 'ちゃ', 'つつ', 'た', '
と']
INFO:models.bert_proofreader:いる: True
DEBUG:models.bert_proofreader:top k word=['いる', '、', '初めて', 'た', 'から', 'いく', 'も', 'くれる', 'い', 'くる']
INFO:models.bert_proofreader:田中: False
DEBUG:models.bert_proofreader:top k word=['おじ', '奥', 'みな', '皆', 'おば', '橋本', '花子', '学生', '鈴木', '小林']
INFO:models.bert_proofreader:さん: True
DEBUG:models.bert_proofreader:top k word=['さん', '先生', 'くん', '裕子', '君', '氏', '久美子', '公平', '直樹', '涼子']
INFO:models.bert_proofreader:を: True
DEBUG:models.bert_proofreader:top k word=['を', 'が', 'も', '、', 'は', 'から', 'ちょっと', '初めて', 'と', '
夢']
INFO:models.bert_proofreader:見: True
DEBUG:models.bert_proofreader:top k word=['見', '見かけ', '見つけ', '訪ね', '撮り', '助け', '描き', '迎え', '
み', '映し']
INFO:models.bert_proofreader:まし: True
DEBUG:models.bert_proofreader:top k word=['まし', 'たかっ', 'られ', 'て', 'かね', '間違え', '##上げ', '始め', 'たく', '##つけ']
INFO:models.bert_proofreader:た: True
DEBUG:models.bert_proofreader:top k word=['た', 'て', '。', 'たら', '##ょ', '##く', 'たり', 'てる', '.', 'たい']
False

最初に Ginza などで固有名詞はマスクから除外するなどするとよいかもしれません.
文章がある程度まとまっているのであれば, ファインチューンで対応も考えられるかもしれません(未検証)

文章補完(?)したい

図書館で勉強してい人を見ました

みたいに欠けている(?)ときに 図書館で勉強している人を見ました と補完(?)したい.

DEBUG:models.bert_proofreader:top k word=['図書', '映画', '小学', '大使', '美術', '水族', '体育', '立命', '公
民', '博物']
INFO:models.bert_proofreader:館: True
DEBUG:models.bert_proofreader:top k word=['館', '室', 'センター', '委員', 'コーナー', '研', '園', '倉庫', '売
り場', 'ホール']
INFO:models.bert_proofreader:で: True
DEBUG:models.bert_proofreader:top k word=['で', 'の', 'を', 'に', 'にて', 'は', 'が', '、', 'さん', 'と']
INFO:models.bert_proofreader:勉強: True
DEBUG:models.bert_proofreader:top k word=['読書', '勉強', '作業', '整理', 'アルバイト', '朗読', '休憩', '活動', 'バイト', '勤務']
INFO:models.bert_proofreader:し: True
DEBUG:models.bert_proofreader:top k word=['し', 'やっ', '##張っ', '行っ', 'でき', '##っ', '見', '疲れ', '考え', '聞い']
INFO:models.bert_proofreader:て: True
DEBUG:models.bert_proofreader:top k word=['て', 'てる', 'に', 'ちゃ', 'た', 'で', 'あ', 'ながら', 'たり', '中']
INFO:models.bert_proofreader:い: False
DEBUG:models.bert_proofreader:top k word=['いる', 'くれる', 'いく', 'くる', 'ない', '働く', '2', '若い', 'みる
', '暮らす']
INFO:models.bert_proofreader:人: False
DEBUG:models.bert_proofreader:top k word=['テレビ', 'の', '映画', '夢', '授業', 'アニメ', '本', '鏡', 'た', '
ビデオ']
INFO:models.bert_proofreader:を: True
DEBUG:models.bert_proofreader:top k word=['を', 'が', 'に', 'から', 'も', 'は', 'と', '初めて', 'か', 'なら']
INFO:models.bert_proofreader:見: True
DEBUG:models.bert_proofreader:top k word=['見つけ', '助け', '集め', '見かけ', '見', '励まし', '呼び', '探し', '亡くし', '撮り']
INFO:models.bert_proofreader:まし: True
DEBUG:models.bert_proofreader:top k word=['まし', 'られ', 'たかっ', '間違え', 'て', 'かね', '始め', '##張っ', 'なかっ', '##上げ']
INFO:models.bert_proofreader:た: True
DEBUG:models.bert_proofreader:top k word=['た', 'て', '。', 'たら', 'たり', '##ょ', 'てる', '##く', 'ちゃ', '
ます']

一応候補にはでてきます.
ただ, こちらは Ginza などでの対応でも十分かもしれません.

より欠けが多い場合, text-generation で前と後が決まっているときに文章を生成や, Mask 内で生成される単語増やしたりできるのかしらん?

GPT とかで高みを目指したい

近いうちに, GPT-4 や, より大きな LLM とその処理ライブラリ(e.g. huggingface transformers)でなにかよりぺろっとやってくれそうな気もします! それまでは BERT あたりで予習しておくのがよいですかね.

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?