OOV метода подслова показывает 0,00% для всех токенизаторов, но я думаю, что этого не должно быть.Python

Программы на Python
Ответить
Anonymous
 OOV метода подслова показывает 0,00% для всех токенизаторов, но я думаю, что этого не должно быть.

Сообщение Anonymous »

Я пытаюсь проанализировать 4 токенизатора по своему выбору и хотел включить метрику OOV на основе подслова. Принцип работы довольно прост:

Код: Выделить всё

def compute_oov_rate_subword(tokenizer, sentences):
total_words = 0
oov_words = 0

for s in sentences:
words = s.split()
for word in words:
total_words += 1
word_tokens = tokenizer.tokenize(word)

if tokenizer.unk_token in word_tokens:
oov_words += 1

return oov_words / total_words if total_words \> 0 else 0.0

subword_oov_results = {}
Он перебирает каждое предложение и разбивает его на отдельные слова. Основная логика состоит в том, чтобы проверить, присутствует ли tokenizer.unk_token (неизвестный токен) в word_tokens, сгенерированном для данного слова. Если да, то это слово считается словом OOV.
Проблема в том, что я получаю 0,00 % для токенизаторов всех моделей, которые я выбрал (GPT2, LLaMa, XLM-R), за исключением BERT (точнее, без регистра в базе bert) — это 0,967623%.

Это работает, когда я использую другой алгоритм — тот, который разбивает каждый символ слова на персонаж. Тогда я получаю 0,15%-0,20%, что нормально, поскольку наборы данных довольно малы (1000 предложений на один язык), поэтому, если бы они были больше, OOV был бы ближе к 0% (я думаю, поправьте меня, если я ошибаюсь).
Да, я знаю, что метрика OOV обычно используется для сравнения/анализа моделей, а не для токенизаторов, но, тем не менее, я бы хотел проверить токены UNK. в моих наборах данных (есть предложения на английском, японском и венгерском языках).

Я думаю, что оно не должно быть 0,00% и, возможно, у этих токенизаторов есть другой способ работы с неизвестными токенами. Любые советы будут полезны, тем более, что я продолжаю находить много статей о моделях и их анализе, но не о самих токенизаторах.

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-shouldnt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»