Я думаю, что проблема в том, как строки читаются, что приводит к пустым строкам. Вы можете довольно грубо решить проблему, отфильтровав пустые строки. Вот такое грубое решение в программе 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