ailia_tokenizer  1.3.0.0
機能

ailia Tokenizerの機能

本ページでは、CとC#で共通に使用できる機能を解説します。

Tokenizerの互換性

ailiaTokenizerEncodeは、transformersの下記の呼び出しと一致します。SpecialTokenはテキストとして符号化されます。パディングやトランケートは行われません。

input_ids = tokenizer(sents, split_special_tokens=True)

ailiaTokenizerEncodeWithSpecialTokensは、transformersの下記の呼び出しと一致します。SpecialTokenはSpecialTokenとして符号化されます。パディングやトランケートは行われません。

input_ids = tokenizer(sents)

ailiaTokenizerDecodeは、transformersの下記の呼び出しと一致します。SpecialTokenは出力されません。

tokenizer.decode(input_ids, skip_special_tokens=True)

ailiaTokenizerDecodeWithSpecialTokensは、transformersの下記の呼び出しと一致します。SpecialTokenが出力されます。

tokenizer.decode(input_ids)

Tokenizerの種類

AILIA_TOKENIZER_TYPE_WHISPER

Pythonの下記の処理に対応します。SOTとEOTが付与されます。

from transformers import WhisperTokenizer
tokenizer = WhisperTokenizer.from_pretrained("openai/whisper-base", predict_timestamps=True)
inputs = tokenizer(sents)

OpenAIの下記の実装と一致させたい場合、先頭のSOTと末尾のEOTを削除してください。

from tokenizer import get_tokenizer
is_multilingual = True
tokenizer = get_tokenizer(is_multilingual)

AILIA_TOKENIZER_TYPE_CLIP

Pythonの下記の処理に対応します。SOTとEOTが付与されます。パディングは行われませんので、必要に応じて、77シンボルまで末尾に0埋めを行ってください。

from transformers import CLIPTokenizer
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14")
inputs = tokenizer(sents)
from simple_tokenizer import SimpleTokenizer as _Tokenizer
_tokenizer = _Tokenizer()
sot_token = _tokenizer.encoder["<|startoftext|>"]
eot_token = _tokenizer.encoder["<|endoftext|>"]
all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts]

AILIA_TOKENIZER_TYPE_XLM_ROBERTA

Pythonの下記の処理に対応します。別途、ailiaTokenizerOpenModelFileにsentencepiece.bpe.modelを与える必要があります。

from transformers import XLMRobertaTokenizer
tokenizer = XLMRobertaTokenizer.from_pretrained('sentence-transformers/paraphrase-multilingual-mpnet-base-v2')
inputs = tokenizer(sents)

AILIA_TOKENIZER_TYPE_MARIAN

Pythonの下記の処理に対応します。別途、ailiaTokenizerOpenModelFileにsource.spmを与える必要があります。

from transformers import MarianTokenizer
tokenizer = MarianTokenizer.from_pretrained("staka/fugumt-en-ja")
inputs = tokenizer(sents)

AILIA_TOKENIZER_TYPE_BERT_JAPANESE_WORDPIECE

Pythonの下記の処理に対応します。UKFC変換はailia Tokenizerで行われます。別途、ipadicとtokenizer_wordpiece/vocab.txtを与える必要があります。

from transformers import BertJapaneseTokenizer
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
inputs = tokenizer(sents)

convert_tokens_to_idsと一致させたい場合は、先頭と終端の[CLS]と[SEP]のシンボルを削除する必要があります。

tokenized_text = tokenizer.tokenize(text)
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)

AILIA_TOKENIZER_TYPE_BERT_JAPANESE_CHARACTER

Pythonの下記の処理に対応します。UKFC変換はailia Tokenizerで行われます。別途、ailiaTokenizerOpenDictionaryFileにipadic、ailiaTokenizerOpenVocabFileにtokenizer_character/vocab.txtを与える必要があります。

from transformers import BertJapaneseTokenizer
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-char-whole-word-maskin')
inputs = tokenizer(sents)

convert_tokens_to_idsと一致させたい場合は、先頭と終端の[CLS]と[SEP]のシンボルを削除する必要があります。

tokenized_text = tokenizer.tokenize(text)
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)

AILIA_TOKENIZER_TYPE_T5

Pythonの下記の処理に対応します。add_special_tokens=Trueと同様に末尾にEOSシンボルを挿入します。japanese_clipなど、add_special_tokens=Falseと同様の動作にする場合は、出力の末尾のEOSシンボルを削除してください。別途、ailiaTokenizerOpenModelFileにspiece.modelを与える必要があります。

from transformers import T5Tokenizer
tokenizer = T5Tokenizer.from_pretrained('sonoisa/t5-base-japanese-title-generation')
inputs = tokenizer(sents)

AILIA_TOKENIZER_TYPE_ROBERTA

Pythonの下記の処理に対応します。末尾にEOSシンボルを挿入します。別途、ailiaTokenizerOpenVocabFileにvocab.jsonを、ailiaTokenizerOpenMergeFileにmerges.txtを与える必要があります。

from transformers import RobertaTokenizer
tokenize = RobertaTokenizer.from_pretrained('roberta-base')
inputs = tokenizer(sents)

AILIA_TOKENIZER_TYPE_BERT

Pythonの下記の処理に対応します。別途、vocab.txtとtokenizer_config.jsonを与える必要があります。

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('google-bert/bert-base-uncased')
inputs = tokenizer(sents)
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('google-bert/bert-base-cased')
inputs = tokenizer(sents)

convert_tokens_to_idsと一致させたい場合は、先頭と終端の[CLS]と[SEP]のシンボルを削除する必要があります。

tokenized_text = tokenizer.tokenize(text)
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)

AILIA_TOKENIZER_TYPE_GPT2

Pythonの下記の処理に対応します。別途、vocab.jsonとmerges.txtを与える必要があります。

from transformers import GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
inputs = tokenizer(sents)

AILIA_TOKENIZER_TYPE_LLAMA

Pythonの下記の処理に対応します。別途、ailiaTokenizerOpenModelFileにtokenizer.modelを与える必要があります。

from transformers import LlamaTokenizer
tokenizer = LlamaTokenizer.from_pretrained("liuhaotian/llava-v1.5-7b")
inputs = tokenizer(sents)