как использовать bert для длинных предложений?

Я пытаюсь разделить данный текст на новости, кликбейт и другие. Тексты, которые у меня есть для обучения, длинные. Здесь показано распределение длин. , вопрос в том, нужно ли обрезать текст посередине и сделать его длиной 512 токенов? Но у меня есть даже документы, содержащие около 10 000 слов, так что я не потеряю суть из-за усечения? Или я должен разбить свой текст на подтексты длиной 512. Если это так, то подтекст одного текста может быть похож на подтекст другого текста, но метки будут другими. Разве данные не зашумлены? Или я должен просто использовать здесь двунаправленный LSTM и указать max_len?


person Naga Sai    schedule 31.08.2020    source источник


Ответы (1)


Ответ на ваш аналогичный вопрос можно найти в статье здесь.

Как вы думаете, почему куски одного и того же документа будут иметь разные ярлыки, если вы говорите о классификации текстов как новости или кликбейты? Вы можете разбить текст на части и следовать идее подхода с усечением, предложенному в разделе Как Настроить BERT для классификации текста?. Авторы показывают, что усечение головы + хвоста обеспечивает высокую точность. Я использовал его несколько раз благодаря странице и документации Github и получил хорошие результаты.

Вы можете выбрать метод усечения с помощью флага --trunc_medium с параметрами:

  1. -2 означает только голову (оставьте первые 512 жетонов),
  2. -1 означает только хвост (оставьте последние 512 токенов),
  3. 0 означает половину головы + половину хвоста (например: голова256 + хвост256),
  4. другое натуральное число k означает голова-k + упор для хвоста (например: голова-k + хвост- (512-k)).

Затем вы можете объединить результаты для фрагментов, создав объединенные вложения для длинных текстов, которые у вас есть.

Здесь я также продолжу обсуждение современных подходов к классификации длинных текстов с помощью BERT, ссылаясь на Big BIRD (см. статья). Исследователи из Google основывают идею длинных форматов и Расширенная конструкция трансформаторов. По сути, они предлагают объединить идею длинных форматов и рандомизированного внимания, что снижает квадратичную зависимость от длины последовательности до линейной. Вы можете попробовать даже тексты из 10 000 слов. Однако подход интересный, он требует архитектуры с большим количеством слоев.

Пожалуйста, проверьте также вопрос о stackoverflow.

person SvGA    schedule 02.09.2020