Я работаю над китайским проектом NER. Я не уверен, как разбить китайское предложение, чтобы выровнять метки. Чтобы уточнить c, как разбить английские sh -подобные слова в китайских предложениях.
Мое первоначальное предложение - это предложение1. Я применил разные схемы разметки и получил другой токен BERT.
from transformers import BertModel, BertConfig, BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
sentence1 = "维生素(Vitamin) D 100 IU"
sentence2 = "维生素 (Vitamin) D 100 IU"
sentence3 = "维 生 素 ( V i t a m i n ) D 1 0 0 I U"
print(tokenizer.tokenize(sentence1))
['维', '生', '素', '(', '[UNK]', ')', '[UNK]', '100', '[UNK]']
print(tokenizer.tokenize(sentence2))
['维', '生', '素', '(', '[UNK]', ')', '[UNK]', '100', '[UNK]']
print(tokenizer.tokenize(sentence3))
['维', '生', '素', '(', '[UNK]', 'i', 't', 'a', 'm', 'i', 'n', ')', '[UNK]', '1', '0', '0', '[UNK]', '[UNK]']
Это только один пример. В некоторых других случаях я видел результат токена BPE:
(', 'plus', '##mn', ';', ')
Я понимаю, что BERT реорганизует вводимый текст и метки в соответствии со своей собственной схемой, но, очевидно, то, как я предварительно обработал ввод, повлияло на результат. Я не знаю, следует ли мне:
1. добавить пробел в соответствии с предложением 2 или предложением 3 и соответствующим образом выровнять мои метки.
2. сначала использовать токенизатор BERT и соответствующим образом выровнять мои метки.
Любой совет? Спасибо!