Я строю модель классификации текста в тензорном потоке (экспериментирую с различными архитектурами от BiLSTM до 1DCon vnet, et c.) Мои данные структурированы следующим образом:
1 корпус документов
~ 100 документов, сделанных из независимых, но похожих по контексту многопартийных транскрипций разговоров (временных рядов).
~ 200 высказываний на каждый документ с пометкой (одно и то же соглашение о маркировке для всех документов
Другими словами, это выглядит так (структура меток выглядит одинаково, но с одним целым на строку):
data = [
[
'hello how are you'
'i am good'
'whats the weather today'
...,
],
[
'how long have you had that cough'
'roughly 2 weeks'
'anything else'
...,
],
...,
]
Прямо сейчас я передаю свои данные в мои модели в виде плоского списка строк (данных) и целых чисел (меток) путем выравнивания всех документов. Это работает, но мне интересно, если это лучший способ обработки моих данных. IIU C, использование любого типа RNN означает, что моя модель «запоминает» предыдущие данные. Однако, поскольку каждый документ содержит отдельные разговоры, текст из документа 1 не влияет на текст из документа 2 и т. Д. Интуитивно понятно, что поскольку каждый документ является независимым разговором, я хочу, чтобы модель «помнила», что произошло в начале разговора в конце разговора, но «забыла» при переходе к следующему. Правильна ли эта интуиция?
Какова лучшая практика в этом сценарии? Есть ли способ подачи по одному документу за один раз (т. Е. Установка размера пакета на длину документа?)? Будет ли это иметь значение, или это плоский список способ go?
Спасибо.