В эпоху платных API и даже чатов, когда монстры ИИ прайсят нас за потребленные токены, вопрос «какому языку учить детей» должен решаться как-то более современно.
Например, в каком из них на одну и ту же фразу уходит меньше токенов (экономика должна быть экономной!)
from itertools import product
from transformers import BertTokenizerFast
from tabulate import tabulate
bert_tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased')
china_tokenizer = BertTokenizerFast.from_pretrained('bert-base-chinese')
tok_names = {'bert': bert_tokenizer, 'china': china_tokenizer}
texts = [
'Обычно при использовании API вас прайсят за число токенов',
'Usually when using the API you are charged per number of tokens',
'通常使用 API 時,您需要按令牌數量付費'
]
results = []
for text, tokenizer_name in product(texts, tok_names):
tokenizer = tok_names[tokenizer_name]
encoded = tokenizer.encode_plus(
text,
truncation=True,
max_length=128,
return_tensors="pt"
)
num_tokens = encoded['input_ids'].shape[1]
results.append([
text
, tokenizer_name
, num_tokens
])
headers = ["Текст", "Токенизатор", "Число токенов"]
print(tabulate(results, headers=headers, tablefmt="grid", numalign="center"))
PPS: Китайский все же немного сломал табулятор, но английский пока выигрывает
PPPS: идеей вдохновился на м
>>Click here to continue<<
