miya-99999
commited on
Commit
•
885b04f
1
Parent(s):
17a122a
Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,92 @@
|
|
1 |
---
|
2 |
license: cc-by-sa-4.0
|
3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
license: cc-by-sa-4.0
|
3 |
---
|
4 |
+
---
|
5 |
+
license: cc-by-sa-4.0
|
6 |
+
---
|
7 |
+
# v4からの修正点
|
8 |
+
数字を全て一桁区切りに。
|
9 |
+
|
10 |
+
# 説明
|
11 |
+
wikipedia, mbpp, grade-school-mathで学習したトークナイザー。
|
12 |
+
|
13 |
+
## 学習に使ったデータ
|
14 |
+
- 英語:1.33GB (wiki40b)<br>
|
15 |
+
- 日本語:1.78GB (wiki40b) ※形態素単位で"||||"で事前分割してsentencepieceの学習時にpretokenization_delimiterを設定。<br>
|
16 |
+
- コード:172KB (mbpp) <br>
|
17 |
+
- 数学:2.1MB (grade-school-math)
|
18 |
+
-
|
19 |
+
## 語彙の追加
|
20 |
+
以下を参考に日本語の語彙を追加。
|
21 |
+
- wikitinary 目次一覧(名詞・形容詞・形容動詞・副詞・接尾辞・助詞・動詞などから一般的に使われると思われるものを定性的に選別。)
|
22 |
+
- wikitionary 日本語の基本語彙1000
|
23 |
+
- 文化庁「常用漢字一覧表」の例から一部をサンプリング。
|
24 |
+
- 時間・季節・方角に関する語
|
25 |
+
- 都道府県・観光地・東京23区
|
26 |
+
- 頻出する日本の苗字
|
27 |
+
- 定型表現(「こんにちは」「よろしく」「ございます」など)
|
28 |
+
その他、以下の語彙を追加。
|
29 |
+
- 記号
|
30 |
+
- 数字(漢数字・半角数字0~9・全角数字0〜9・上付き数字0〜9)
|
31 |
+
- 数学に出るギリシャ文字
|
32 |
+
|
33 |
+
|
34 |
+
## 語彙の割合
|
35 |
+
概算ですが、アルファベットが約6割、日本語(ひらがな・カタカナ・漢字)が約4割となっています。(その他記号や数字は1~2%程度)
|
36 |
+
|
37 |
+
## 参照
|
38 |
+
- https://aclanthology.org/2020.lrec-1.297.pdf
|
39 |
+
- https://www.tensorflow.org/datasets/catalog/wiki40b
|
40 |
+
- https://github.com/openai/grade-school-math
|
41 |
+
- https://github.com/google-research/google-research/tree/master/mbpp
|
42 |
+
- https://www.bunka.go.jp/kokugo_nihongo/sisaku/joho/joho/kakuki/14/pdf/jyouyou_kanjihyou.pdf
|
43 |
+
- https://ja.m.wiktionary.org/wiki/%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:%E6%97%A5%E6%9C%AC%E8%AA%9E
|
44 |
+
-
|
45 |
+
|
46 |
+
## 設定
|
47 |
+
vocab_size=56,320(語彙サイズ)<br>
|
48 |
+
character_coverage=0.9995(文字のカバー率99.95%)<br>
|
49 |
+
model_type="unigram"(アルゴリズム)<br>
|
50 |
+
normalization="identity"(正規化なし)<br>
|
51 |
+
byte_fallback=True(バイト変換あり)<br>
|
52 |
+
split_digits=True(数字分割あり)<br>
|
53 |
+
allow_whitespace_only_pieces=True(空白のトークンを許可する)<br>
|
54 |
+
remove_extra_whitespaces=True(余分な空白の削除あり)<br>
|
55 |
+
|
56 |
+
## 形式
|
57 |
+
LlamaTokenizer<br>
|
58 |
+
※encode時に文頭にbos_tokenである"\<s\>"トークンが付きます。
|
59 |
+
|
60 |
+
# 使い方
|
61 |
+
```python
|
62 |
+
!pip install transformers>=4.34.0
|
63 |
+
|
64 |
+
from transformers import AutoTokenizer
|
65 |
+
test_tokenizer = AutoTokenizer.from_pretrained("geniacllm/ja-en-tokenizer-unigram-v5", use_fast=False)
|
66 |
+
```
|
67 |
+
```python
|
68 |
+
# text
|
69 |
+
text = "This is tokenizer test."
|
70 |
+
|
71 |
+
# tokenize
|
72 |
+
tokenized = test_tokenizer.tokenize(text)
|
73 |
+
print(tokenized)
|
74 |
+
|
75 |
+
# encode
|
76 |
+
encoded = test_tokenizer.encode(text)
|
77 |
+
print(encoded)
|
78 |
+
|
79 |
+
# decode
|
80 |
+
decoded = test_tokenizer.decode(encoded)
|
81 |
+
print(decoded)
|
82 |
+
|
83 |
+
# special_token
|
84 |
+
print(test_tokenizer.special_tokens_map)
|
85 |
+
|
86 |
+
|
87 |
+
# vocab size
|
88 |
+
print(len(test_tokenizer))
|
89 |
+
|
90 |
+
# all subwords in vocab
|
91 |
+
print(test_tokenizer.get_vocab())
|
92 |
+
```
|