Загрузка файла json с использованием torchtext - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над набором данных dailydialog, который я преобразовал в файл JSON, который выглядит примерно так:

[{"response": "You know that is tempting but is really not good for our fitness.", "message": "Say, Jim, how about going for a few beers after dinner?"}, {"response": "Do you really think so? I don't. It will just make us fat and act silly. Remember last time?", "message": "What do you mean? It will help us to relax."}, {"response": "I suggest a walk over to the gym where we can play singsong and meet some of our friends.", "message": "I guess you are right. But what shall we do? I don't feel like sitting at home."}, {"response": "Sounds great to me! If they are willing, we could ask them to go dancing with us.That is excellent exercise and fun, too.", "message": "That's a good idea. I hear Mary and Sally often go there to play pingpong.Perhaps we can make a foursome with them."}, {"response": "All right.", "message": "Please lie down over there."}]

Итак, каждый элемент имеет два ключи - ответ и сообщение.

Я впервые использую PyTorch, поэтому следил за несколькими доступными в Интернете ресурсами. Это соответствующие фрагменты моего кода:

def tokenize_en(text):
    return [tok.text for tok in spacy_en.tokenizer(text)]

src = Field(tokenize = tokenize_en, 
            init_token = '<sos>', 
            eos_token = '<eos>', 
            lower = True)

fields = {'response': ('r', src)}

train_data, test_data, validation_data = TabularDataset.splits(     
                                        path = 'FilePath',
                                        train = 'trainset.json',
                                        test = 'testset.json',
                                        validation = 'validationset.json',
                                        format = 'json',
                                        fields = fields        
)

Хотя ошибок не возникает, несмотря на то, что в моем файле JSON много элементов, наборы данных для поездов, тестирования и проверки, как ни странно, имеют только по 1 примеру каждый, так как видно на этом изображении: Изображение, показывающее длину train_data, test_data и validation_data

Я был бы очень благодарен, если бы кто-нибудь мог указать мне на ошибку.

Редактировать : Я обнаружил, что весь файл обрабатывается как одна текстовая строка из-за отсутствия отступов в файле. Но если я сделаю отступ для файла JSON, функция TabularDataset выдаст мне ошибку JSONDecodeError, предполагающую, что она больше не может декодировать файл. Как мне избавиться от этой проблемы?

1 Ответ

0 голосов
/ 14 июля 2020

Думаю, код в порядке, но проблема в вашем файле JSON. Можете попробовать убрать квадратные скобки ("[]") в начале и в конце файла? Вероятно, поэтому Ваш Python файл читает его как один объект.

...