Как реализовать "сделать что-нибудь при встрече <EOS>" - PullRequest
0 голосов
/ 14 марта 2019

Маркер <EOS> повсеместно используется в НЛП. Поскольку я этим не пользовался, мне неясно, как будет реализовано создание условий для него. Может ли кто-нибудь предоставить фрагмент кода Python. (Если можно использовать заявления.)

Пример 1: Существует последовательность слов с интерполированными символами <EOS>. Эта последовательность проходит через RNN для кодирования. Всякий раз, когда встречается <EOS>, временной шаг выводит свое состояние.

Пример 2: задача машинного перевода. Когда встречается <EOS>, он прекращает генерировать токены.

1 Ответ

0 голосов
/ 15 марта 2019

Токен EOS также важен для декодера: явный токен «конца» позволяет декодеру излучать последовательности произвольной длины.Декодер сообщит нам, когда он завершит излучение токенов: без «конечного» токена мы бы не знали, когда декодер завершит разговор с нами, а продолжение вывода токенов приведет к бреду.

Так что для приведенных примеров, У меня есть этот фрагмент из заголовка изображения , относящийся к машинному переводу:

        # Which sequences are incomplete (didn't reach <end>)?
        incomplete_inds = [ind for ind, next_word in enumerate(next_word_inds) if
                           next_word != word_map['<end>']]
        complete_inds = list(set(range(len(next_word_inds))) - set(incomplete_inds))

Здесь токен <end> похож на <EOS>.Этот фрагмент ищет токен <end> при создании заголовка для изображения.Разумеется, мы хотим знать, когда остановиться, и длина заголовка заранее определена, поскольку граница заголовка для изображения заранее известна на этапе обучения.

...