我正在使用多頭注意力轉換器模型進行文本簡化項目。同樣,我使用 torchtext 進行標記化和數(shù)字化。數(shù)據(jù)集包含兩個用于訓練的對齊文件和兩個用于測試的對齊文件。在訓練文件中,一個文件包含復雜句子,而另一個文件包含相應的簡化句子。我是這樣閱讀文件的:training_sentences = open(path + "train.en" , encoding = "utf-8").read().split("\n")target_sentences = open(path + "train.sen" , encoding = "utf-8").read().split("\n")接下來,我將它們標記為:complicated = spacy.load('en')simple = spacy.load('en')def tokenize_complicated(sentence): return [tok.text for tok in complicated.tokenizer(sentence)]def tokenize_simple(sentence): return [tok.text for tok in simple.tokenizer(sentence)]C_TEXT = Field(tokenize=tokenize_complicated, fix_length = 100)S_TEXT = Field(tokenize=tokenize_simple, fix_length = 100, init_token = "<sos>", eos_token = "<eos>")然后我轉換成 torchtext 的 TabularDataset 對象。import pandas as pdraw_data = {'Complicated' : [line for line in training_sentences], 'Simple': [line for line in target_sentences]}df = pd.DataFrame(raw_data, columns=["Complicated", "Simple"])df.to_csv("df.csv", index=False)data_fields = [('Complicated', C_TEXT), ('Simple', S_TEXT)]train = torchtext.data.TabularDataset.splits(path='./', train = "df.csv", format='csv', fields=data_fields, skip_header = True)然后創(chuàng)建詞匯C_TEXT.build_vocab(train)S_TEXT.build_vocab(train)但是,這樣做我得到了這個錯誤:TypeError:“示例”和“示例”的實例之間不支持“<”在搜索時,我在這里遇到了這個解決方案,錯誤消失了。但是,我不明白這是否使模型只采用一個實例還是采用所有數(shù)據(jù)集?我想知道索引的重要性,[0]以便我可以為我的模型有效地操縱它。
2 回答

手掌心
TA貢獻1942條經(jīng)驗 獲得超3個贊
在聲明中:
train = torchtext.data.TabularDataset.splits(path='./', train = "df.csv", format='csv', fields=data_fields, skip_header = True)
索引[0]
用于解包以自定義類型的 TabularDataset(元組)返回的數(shù)據(jù)集。在上述語句的末尾添加索引,我們可以訪問元組中的單個元素。
然而在聲明中
train,val = torchtext.data.TabularDataset.splits(path='./', train = "df.csv", validation = “val.csv”, format='csv', fields=data_fields, skip_header = True)
解包是使用元組的第一個元素train
和第二個元素自動完成的val

慕雪6442864
TA貢獻1812條經(jīng)驗 獲得超5個贊
就我而言,我解決了將 asort_key和sort_within_batcharg傳遞給的問題True,如下所示:
BATCH_SIZE = 64
train_iterator, valid_iterator, test_iterator = data.BucketIterator.splits(
(train_data, valid_data, test_data),
device = device,
batch_size = BATCH_SIZE,
sort_key = lambda x: len(x.src),
sort_within_batch=True
)
祝你好運
添加回答
舉報
0/150
提交
取消