У меня есть 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