Transformer中的Tokenizer分詞器使用學習


1.加載

tokenizer是進行語言處理的基礎,transformer實現分詞器的基類是

tokenizer = AutoTokenizer.from_pretrained(tokenizer_type)

后面可以通過from_pretrained函數中的retrained_model_name_or_path()方法,指定路徑或者模型名稱來加載對應的分詞器。

文檔給的實例

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') # Download vocabulary from S3 and cache.
tokenizer = AutoTokenizer.from_pretrained('./test/bert_saved_model/') # E.g. tokenizer was saved using `save_pretrained('./test/saved_model/')`

分別從Amazon的s3里直接下載以及從本地路徑讀取。

2.分詞器的核心函數

2.1 tokenize

作為分詞器,首先一定是進行分詞操作。

from transformers.tokenization_bert import BertTokenizer

tokenizer
= BertTokenizer.from_pretrained("bert-base-uncased") print("詞典大小:",tokenizer.vocab_size) text = "hello world!I am Lisa." tokens = tokenizer.tokenize(text) print("分詞結果",tokens)

詞典大小: 30522

分詞結果: ['hello', 'world', '!', 'I', 'am', 'Lisa', '.']


這里使用了Bert的分詞器,注意Bert會將不常用的詞匯進行細分,比如fearless,經過分詞會給出 'fear','##less'。使用雙#號表示連續詞匯的分詞。

2.2 Encode

編碼操作,實現了分詞tokenize和詞匯的編碼convert_tokens_to_ids。首先將會對輸入序列進行分詞操作,之后將分詞的結果進行編碼,將詞匯轉換為詞典中的id返回。

self.convert_tokens_to_ids(self.tokenize(text))

這里的結果是一個列表,包含多個id,如

[24,64,8636,414,125,23,982]

2.3 Decode

解碼操作,實現了詞匯的解碼convert_ids_to_tokens和轉換convert_tokens_to_string。首先會將給出的編碼輸入,如上面的id列表,轉換成相應的分詞結果,再轉換成相應的輸入序列。

self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM