Torchtext TabularDataset: data.Field не содержит фактических импортированных данных?

Из документации Torchtext я узнал, что способ импортировать CSV-файлы - через TabularDataset. Я сделал это так:

train = data.TabularDataset(path='./data.csv', 
                        format='csv', 
                        fields=[("label",data.Field(use_vocab=True,include_lengths=False)),
                                ("statement",data.Field(use_vocab=True,include_lengths=True))],  
                        skip_header=True)

"label" и "Statement" - это имена заголовков 2 столбцов в моем CSV-файле. Я определил их как data.Field, но "label" и "Statement", похоже, на самом деле не содержат данных из моего CSV-файла, несмотря на то, что консоль без проблем распознала их как объекты полей данных. Я обнаружил эту проблему, когда попытался создать список вокабов с помощью Statement.build_vocab(train, max_size=25000). Я напечатал len(Statement.vocab), возвращаемое значение равно "2", что, очевидно, не отражает фактические данные в CSV-файле. Я сделал что-то не так при импорте данных CSV, или моя сборка Vocab выполнена неправильно? Есть ли отдельный метод для размещения данных в полевых объектах? Спасибо!!

1 ответ

Решение

Поля должны быть определены отдельно, как это

    TEXT = data.Field(sequential=True,tokenize=tokenize, lower=True, include_lengths=True)
    LABEL = data.Field(sequential=True,tokenize=tokenize, lower=True)
    train = data.TabularDataset(path='./data.csv', 
                        format='csv', 
                        fields=[("label",LABEL),
                                ("statement",TEXT)],  
                        skip_header=True)
    test = data.TabularDataset(path='./test.csv', 
                        format='csv', 
                        fields=[("label",LABEL),
                                ("statement",TEXT)],  
                        skip_header=True)
Другие вопросы по тегам