File size: 3,844 Bytes
44e3dca
 
af5206a
 
0fc73c6
ba95365
44e3dca
af5206a
 
 
 
52add50
 
 
 
 
 
 
 
 
 
 
 
 
 
af5206a
52add50
 
 
af5206a
7665c5f
af5206a
7665c5f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
af5206a
 
ba95365
af5206a
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
license: cc-by-sa-4.0
language:
- ja
widget:
- text: "これは日本語の誤植を検出する真相学習モデルです。"
---

# モデルの概要
  - 日本語の文章を入力すると各文字ごとに誤植である確率を出力します
  - 本モデルは日本語の文章が入力されることを前提としています
  - 各ラベルの意味は以下の通りです
    |id|label|meaning|
    |--|--|--|
    |0 | OK|  誤字なし|
    |1 |deletion| 1文字の抜け
    |2 | insertion_a|  余分な1文字の挿入
    |3 | insertion_b | 直前の文字列と一致する2文字以上の余分な文字の挿入
    |4 | kanji-conversion_a  |同一の読みを持つ漢字の入れ替え(誤変換)
    |5 | kanji-conversion_b  |近い読みを持つ漢字の入れ替え(誤変換)
    |6 | substitution  |1文字の入れ替え
    |7 | transposition  |隣接する2文字間の転置
    |8 | others  | その他の入力誤り
    - 誤り種類の詳細については学習データセットの元論文をご参照ください
      -  [日本語 Wikipedia の編集履歴に基づく 入力誤りデータセットと訂正システムの改良](https://www.anlp.jp/proceedings/annual_meeting/2021/pdf_dir/E8-3.pdf)

# 学習データ
  - 京都大学大学院情報学研究科知能情報学コース言語メディア研究室 (https://nlp.ist.i.kyoto-u.ac.jp/ )が公開している[日本語Wikipedia入力誤りデータセット (v2)](https://nlp.ist.i.kyoto-u.ac.jp/?%E6%97%A5%E6%9C%AC%E8%AA%9EWikipedia%E5%85%A5%E5%8A%9B%E8%AA%A4%E3%82%8A%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88)のtrainセットを利用しています
    
# モデルの使い方
## サンプルコード
  ```python
  from transformers import AutoTokenizer,AutoModelForTokenClassification
  import torch
  import numpy as np
  
  model_name = 'recruit-jp/japanese-typo-detector-roberta-base'
  
  tokenizer = AutoTokenizer.from_pretrained(model_name)
  model = AutoModelForTokenClassification.from_pretrained(model_name)
  
  device = "cuda:0" if torch.cuda.is_available() else "cpu"
  model = model.to(device)
  
  in_text = "これは日本語の誤植を検出する真相学習モデルです。"
  
  test_inputs = tokenizer(in_text, return_tensors='pt').get('input_ids')
  test_outputs = model(test_inputs.to(torch.device(device)))
  
  for chara, logit in zip(list(in_text), test_outputs.logits.squeeze().tolist()[1:-1]):
      err_type_ind = np.argmax(logit)
      err_name = model.config.id2label[err_type_ind]
      err_desc = f"Detected!(err_index={err_type_ind}, err_name={err_name})" if err_type_ind > 0 else f""
      print(f"{chara} : {err_desc}")
  ```
## サンプルコードの出力例
  ```
  こ : 
  れ : 
  は : 
  日 : 
  本 : 
  語 : 
  の : 
  誤 : 
  植 : 
  を : 
  検 : 
  出 : 
  す : 
  る : 
  真 : Detected!(err_index=4, err_name=kanji-conversion_a)
  相 : Detected!(err_index=4, err_name=kanji-conversion_a)
  学 : 
  習 : 
  モ : 
  デ : 
  ル : 
  で : 
  す : 
  。 : 
  ```


# ライセンス
  - 本モデルは京都大学大学院情報学研究科知能情報学コース言語メディア研究室 (https://nlp.ist.i.kyoto-u.ac.jp/ )が公開しているRoBERTaの事前学習モデル(ku-nlp/roberta-base-japanese-char-wwm)をFine-Tuningしたものです。
  - 本モデルは事前学習モデルのライセンス"CC-BY-SA 4.0"を継承します。

# 免責事項
  - ㈱リクルートは、本モデル利用による成果に関し、正確性、有用性、確実性、違法性の確認及び何らの保証も補償を行わないものとし、また、モデル利用によって利用者に生じた損害および第三者との間における紛争について㈱リクルートは一切責任を負いません。