Pytorch Chatbot教程问题:如何解决列表索引超出范围

时间:2018-11-11 09:43:51

标签: python nlp pytorch chatbot

我是pytorch的新手,并且一直在关注许多可用的教程。 但是,当我这样做时CHATBOT TUTORIAL无法正常工作。

就像下面的图一样

enter image description here

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

4 个答案:

答案 0 :(得分:0)

您正在运行Windows吗?当前大多数Pytorch教程都需要Pytorch 1.0,而Windows上目前不提供Pytorch 1.0,我正在其他操作系统中进行尝试。

我将在Ubuntu 18上运行它后立即编辑答案。

答案 1 :(得分:0)

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

这是因为某些对是空列表

答案 2 :(得分:0)

我认为问题在于读取行导致空白行的方式。您可以通过滤除空白行来粗略地解决问题。这是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

答案 3 :(得分:0)

有点晚了,但是在同一教程之前,我在这一行遇到了同样的错误。我也在Windows上的3.6上运行,在加载PyTorch或使用CUDA进行任何操作时都没有问题。对我来说,问题出在数据中。

这是因为源数据中的某处有一个空白行,所以当它为该功能拆分列表中的单词时,就会抛出此错误-没有单词可以拆分。