gpt4 book ai didi

数据框作为 torchtext 中的数据源

转载 作者:行者123 更新时间:2023-12-02 22:34:35 32 4
gpt4 key购买 nike

我有一个数据框,其中有两列(评论和情绪)。我正在使用 pytorch 和 torchtext 库来预处理数据。是否可以使用 dataframe 作为源来读取 torchtext 中的数据?我正在寻找类似的东西,但不是

data.TabularDataset.splits(path='./data')

我已经对数据执行了一些操作(清理,更改为所需的格式),最终数据位于数据框中。

如果不是 torchtext,您建议使用什么其他包来帮助预处理数据帧中存在的文本数据。我在网上找不到任何东西。任何帮助都会很棒。

最佳答案

调整 torchtext.data 中的 DatasetExample

    from torchtext.data import Field, Dataset, Example
import pandas as pd

class DataFrameDataset(Dataset):
"""Class for using pandas DataFrames as a datasource"""
def __init__(self, examples, fields, filter_pred=None):
"""
Create a dataset from a pandas dataframe of examples and Fields
Arguments:
examples pd.DataFrame: DataFrame of examples
fields {str: Field}: The Fields to use in this tuple. The
string is a field name, and the Field is the associated field.
filter_pred (callable or None): use only exanples for which
filter_pred(example) is true, or use all examples if None.
Default is None
"""
self.examples = examples.apply(SeriesExample.fromSeries, args=(fields,), axis=1).tolist()
if filter_pred is not None:
self.examples = filter(filter_pred, self.examples)
self.fields = dict(fields)
# Unpack field tuples
for n, f in list(self.fields.items()):
if isinstance(n, tuple):
self.fields.update(zip(n, f))
del self.fields[n]

class SeriesExample(Example):
"""Class to convert a pandas Series to an Example"""

@classmethod
def fromSeries(cls, data, fields):
return cls.fromdict(data.to_dict(), fields)

@classmethod
def fromdict(cls, data, fields):
ex = cls()

for key, field in fields.items():
if key not in data:
raise ValueError("Specified key {} was not found in "
"the input data".format(key))
if field is not None:
setattr(ex, key, field.preprocess(data[key]))
else:
setattr(ex, key, data[key])
return ex

然后,首先使用 torchtext.data 字段定义字段。例如:

    TEXT = data.Field(tokenize='spacy')
LABEL = data.LabelField(dtype=torch.float)
TEXT.build_vocab(train, max_size=25000, vectors="glove.6B.100d")
LABEL.build_vocab(train)
fields = { 'sentiment' : LABEL, 'review' : TEXT }

在简单地加载数据帧之前:

    train_ds = DataFrameDataset(train_df, fields)
valid_ds = DataFrameDataset(valid_df, fields)

关于数据框作为 torchtext 中的数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602071/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com