你给的代码报这个错'list' object has no attribute 'split'
时间: 2023-07-29 18:06:08 浏览: 86
非常抱歉,这是我的错误。我在之前的回答中没有注意到 `text` 变量是一个列表,而不是字符串。在这种情况下,我们需要对列表中的每个元素进行分割,而不是对整个列表进行分割。
以下是修改后的代码:
```python
import torch
from torch.utils import data
from d2l import torch as d2l
def load_data_nmt(batch_size, num_steps, num_examples=600):
"""返回翻译数据集的迭代器和词表"""
data_dir = d2l.download_extract('fra-eng')
with open(data_dir+'/fra.txt', 'r', encoding='utf-8') as f:
raw_text = f.read()
num_lines = min(num_examples, len(raw_text.split('\n')))
text = [line.split() for line in raw_text.split('\n')[:num_lines]]
src_vocab, tgt_vocab = d2l.load_vocab('fra-eng')
src_iter, tgt_iter = d2l.build_data_iter(text, src_vocab, tgt_vocab,
batch_size, num_steps)
return src_iter, tgt_iter, src_vocab, tgt_vocab
```
与之前的代码相比,这里对 `text` 进行了修改。具体而言,我们首先对原始文本数据进行行分割,然后对每一行进行分词,并将结果存储在一个列表中。这样,`text` 就变成了一个包含多个列表的列表,每个列表代表一个文本序列。
希望这次的回答能够解决你的问题。如果还有其他问题,请随时提出。
阅读全文