Как построить набор данных и build_vocab в Pytorch с TXT-файлами? - PullRequest
1 голос
/ 19 марта 2020

У меня есть txt файлы для обучения и проверки с буквами внутри, например

Файл_1:

hg jk lo ju jk lk

Файл 2:

sd sg gt gh qe

Итак, я хочу создать набор данных из этих файлов (у меня есть 5 меток), поэтому я создаю класс набора данных


class Dataset(data.Dataset):
    def __init__(self,data_root):
        self.letters=[]
        self.labels=[]
        labels=0

        for lan in os.listdir(data_root):
            lan_folder = os.path.join(data_root,lan)
            labels=labels+1
            for type in os.listdir(lan_folder):
                type_folder = os.path.join(lan_folder,type)

                for name in os.listdir(type_folder):
                    file_names=os.path.join(type_folder,name)
                    phonegrams=open(file_names,encoding='utf-8').read().strip().split('\n')
                    self.letters.append(phonegrams)
                    self.labels.append(labels)

    def __len__(self):
        return len(self.labels)

    def __getitem__(self,index):
        return self.letters[index],self.labels[index]



dataset=Dataset(r'C:\Users\ASUS\Desktop\David\Programas\Sequence to tag 1st version\phon\training')

при печати первого элемента из набора данных я получаю:

([['ij jA: A:z zy yi i']], [1])

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

tokenize = lambda x: x.split()
LANS = Field(tokenize=tokenize,init_token='<sos>',eos_token='<eos>',sequential=True)
LANS.build_vocab(dataset)

, а затем :

LANS.vocab.freqs.most_common(1)

и я получаю

[('ij jA: A:z zy ,1)]

использует полное предложение, а не каждое слово, должно дать мне что-то вроде:

ij: 1

ja: 2

...