BERT 标记化 URL
BERT tokenize URLs
我想对一堆推文进行分类,因此我使用了 BERT 的 huggingface 实现。但是我注意到默认的 BertTokenizer 不对 url 使用特殊标记。
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("bert-base-cased")
>>> tokenizer.tokenize("https://whosebug.com/questions/ask")
['https', ':', '/', '/', 'stack', '##over', '##flow', '.', 'com', '/', 'questions', '/', 'ask']
这对我来说似乎很低效。编码 URL 的最佳方式是什么?
好吧,这取决于。如果 URL 包含与分类相关的信息,那么您能做的最好的事情就是保持原样。 pre-training 数据中肯定有一些 URL,BERT 学会了如何正确处理它们。
如果您确定 URL 与分类无关,您可以用特殊标记替换它们,这在 NLP 中通常是很常见的事情。但在那种情况下,你需要 fine-tune BERT,所以它知道特殊标记的含义。如果您不使用 fine-tune BERT 并且只在其上训练分类器,那么您能做的最好的事情就是保持 URL 不变。
我想对一堆推文进行分类,因此我使用了 BERT 的 huggingface 实现。但是我注意到默认的 BertTokenizer 不对 url 使用特殊标记。
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("bert-base-cased")
>>> tokenizer.tokenize("https://whosebug.com/questions/ask")
['https', ':', '/', '/', 'stack', '##over', '##flow', '.', 'com', '/', 'questions', '/', 'ask']
这对我来说似乎很低效。编码 URL 的最佳方式是什么?
好吧,这取决于。如果 URL 包含与分类相关的信息,那么您能做的最好的事情就是保持原样。 pre-training 数据中肯定有一些 URL,BERT 学会了如何正确处理它们。
如果您确定 URL 与分类无关,您可以用特殊标记替换它们,这在 NLP 中通常是很常见的事情。但在那种情况下,你需要 fine-tune BERT,所以它知道特殊标记的含义。如果您不使用 fine-tune BERT 并且只在其上训练分类器,那么您能做的最好的事情就是保持 URL 不变。