我正在尝试学习 PyTorch NLP 基本文本分类并遵循 Lazy Programmer's Tutorial,我得到了与教程不同的结果,当我尝试更改数据时,我遇到了输出中的奇怪变化。
import torchtext.legacy.data as ttd
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
data = {
'label':[0, 1,1 ],
'data':[ 'ham and eggs or just morning',
'I like eggs and ham.',
'Eggs I like!',
]
}
df = pd.DataFrame(data)
df.to_csv('thedata.csv', index=False)
TEXT = ttd.Field(
sequential =True,
batch_first =True,
lower = True,
tokenize ='spacy',
pad_first = True
)
LABEL = ttd.Field(
sequential=False,
use_vocab=False,
is_target =True
)
dataset = ttd.TabularDataset(
path = 'thedata.csv',
format ='csv',
skip_header=True,
fields = [
('label', LABEL),
('data',TEXT)
]
)
train_dataset, test_dataset = dataset.split()
TEXT.build_vocab(train_dataset,)
vocab = TEXT.vocab
vocab.stoi
这是我的第一种代码,在数据中,如果你看到我在索引 1 中使用了“'ham and eggs or just morning'”。所以在运行代码之后,最后当我运行 vocab.stoi 时,我得到以下输出。 代码的输出。
import torchtext.legacy.data as ttd
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
data = {
'label':[0, 1,1 ],
'data':[
'I like eggs and ham.',
'Eggs I like!',
'ham and eggs or just morning',
]
}
df = pd.DataFrame(data)
df.to_csv('thedata.csv', index=False)
TEXT = ttd.Field(
sequential =True,
batch_first =True,
lower = True,
tokenize ='spacy',
pad_first = True
)
LABEL = ttd.Field(
sequential=False,
use_vocab=False,
is_target =True
)
dataset = ttd.TabularDataset(
path = 'thedata.csv',
format ='csv',
skip_header=True,
fields = [
('label', LABEL),
('data',TEXT)
]
)
train_dataset, test_dataset = dataset.split()
TEXT.build_vocab(train_dataset,)
vocab = TEXT.vocab
vocab.stoi
现在在第二个代码中,我在第三个索引中更改了数据“'ham and eggs or just morning'”的索引,现在如果我运行代码,那么 第二个代码的 vocab.stoi 输出将得到不同的输出。我想知道原因以及 vocab_build 在 PyTorch 中的工作原理。另外,这是我的第一个问题,如果问题不清楚,请告诉我。