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)