Tokenization 和 Word Embedding 是在进行任何其他 NLP 处理之前的两个常见过程。原因是 AI 模型只能处理数字作为输入和输出,但 NLP 处理的目标主要是语言数据,如单词或句子。因此需要 tokenization 和 word embedding 将自然语言转换为数字,以便 AI 模型可以处理它们。
什么是 Tokenization?
Tokenization 通常非常简单直接。对于给定的单词序列,tokenization 会将它们转换为一系列数字。通常一个序列单元对应输出数字序列中的一个数字。
在 Hugging Face Transformer 库的某些 tokenizer 中,输出通常会添加两个特殊标记:[CLS] 和 [SEP],分别表示序列的开始和结束。
"你好,世界!" → ["CLS", "你好", ",", "世界", "!", "[SEP]"]
在 Hugging Face Transformer 库中,我们可以这样使用 tokenization:
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
text = "Hello, world!"
tokens = tokenizer(text, return_tensors="pt")
print(tokens)
print(tokenizer.convert_ids_to_tokens(tokens["input_ids"][0]))
输出:
{'input_ids': tensor([[ 101, 7592, 1010, 2088, 999, 102]]), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1]])}
['[CLS]', 'hello', ',', 'world', '!', '[SEP]']
什么是 Word Embedding?
现在我们可以使用 tokenization 将原始文本转换为模型的结构化输入。但仍然存在一些问题: