Задача BERT на китайском NER: как на ней токенизировать буквы? - PullRequest
0 голосов
/ 28 марта 2020

Я работаю над китайским проектом 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 и соответствующим образом выровнять мои метки.

Любой совет? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...