Python Pytorch聊天机器人教程问题:如何解决列表索引超出范围的问题

Python Pytorch聊天机器人教程问题:如何解决列表索引超出范围的问题,python,nlp,pytorch,chatbot,Python,Nlp,Pytorch,Chatbot,我是pytorch的新手,一直在学习许多可用的教程。 但是,当我做这件事的时候,那不是工作 如下图所示 我该怎么办?是什么原因造成的?您正在运行Windows吗?目前大多数Pytorch教程都需要Pytorch 1.0,这在Windows上是不可用的,我正在另一个操作系统中尝试 我会在Ubuntu 18上运行后立即编辑答案 def filter_pair(self, p): try: return len(p[0].split(' ')) < self.MAX_LE

我是pytorch的新手,一直在学习许多可用的教程。 但是,当我做这件事的时候,那不是工作

如下图所示


我该怎么办?是什么原因造成的?

您正在运行Windows吗?目前大多数Pytorch教程都需要Pytorch 1.0,这在Windows上是不可用的,我正在另一个操作系统中尝试

我会在Ubuntu 18上运行后立即编辑答案

def filter_pair(self, p):
    try:
        return len(p[0].split(' ')) < self.MAX_LENGTH and len(p[1].split(' '))<\ self.MAX_LENGTH
    except:
        return False

这是因为一些对是空列表

我认为问题在于读取行的方式导致了空行。通过过滤掉空行,你可以相当粗略地解决这个问题。这是readVocs例程中的原始解决方案

# Read query/response pairs and return a voc object
def readVocs(datafile, corpus_name):
    print("Reading lines...")
    # Read the file and split into lines
    lines = open(datafile, encoding='utf-8').\
        read().strip().split('\n')
    #Now on windows you seem to get alternate blank lines so filter them out.
    lines2=[]
    for l in lines:
        if len(l)>0:
            lines2.append(l)
    #And as a check just print the first 10
    for index, line in enumerate(lines2[:10]):
        print(index,' - ',line)

    # Split every line into pairs and normalize
    pairs = [[normalizeString(s) for s in l.split('\t')] for l in lines2]
    voc = Voc(corpus_name)
    return voc, pair

有点晚了,但在同一个教程中,我在这一行遇到了同样的错误。我也在Windows上运行3.6,在加载PyTorch或运行CUDA时没有任何问题。对我来说,问题在于数据


这是因为源数据中的某个地方有一个空行,所以当它为该函数拆分列表中的单词时,抛出了此错误-没有要拆分的单词。

请不要将错误消息放在图像中,而是将文本粘贴到实际的帖子中。谢谢,但语料库是康奈尔大学电影对话语料库。语料库<是电影角色对话的丰富数据集:10292对电影角色之间的220579次对话617部电影中的9035个角色304713次总话语我不理解培训数据中的空列表,但它显示了我们开始准备训练数据。。。阅读台词。。。阅读442563句是的,我在windows上运行它,但我毫无疑问地导入了torch。python 3.6 软件包:pip,CUDA:9.0似乎有些数据处理有问题。因为错误消息显示:indexer错误:列表索引超出范围,我正在另一个操作系统中尝试。我会在Ubuntu 18上运行后立即编辑答案。啊,太令人兴奋了,我会尽快尝试的。错误似乎发生在:def filterPairp:def filterPairspairs:我对此感到非常困惑。我用上面提到的教程尝试了上述内容,它在Windows上运行得非常愉快,Torch版本为0.4.1欢迎使用Stackoverflow!您可以提供您看到的具体错误,并举例说明如何更正该问题,从而帮助改进您的帖子?