在Python聊天机器人中成对调用打印函数时出现值错误
我正在使用聊天机器人。但在成对使用功能链接时,出现了一些错误。我想在列表中打印主题。用户可以选择所需的主题后。但是在打印主题时,有一些问题我无法解决在Python聊天机器人中成对调用打印函数时出现值错误,python,python-3.x,nltk,Python,Python 3.x,Nltk,我正在使用聊天机器人。但在成对使用功能链接时,出现了一些错误。我想在列表中打印主题。用户可以选择所需的主题后。但是在打印主题时,有一些问题我无法解决 from nltk.chat.util import Chat, reflections from tkinter import * import re import numpy as np subjectAreaList = ["subject1","subjec2","subject3&quo
from nltk.chat.util import Chat, reflections
from tkinter import *
import re
import numpy as np
subjectAreaList = ["subject1","subjec2","subject3"]
def listSubjectArea():
i = 1
for a in subjectAreaList:
print(i,". ",a)
i = i + 1
pairs = [
['i want to see reports', ['In which subject area would you like to see the reports?'],listSubjectArea()],
['subject1(.*)', ['blah blah blah']],
['subject2(.*)', ['blah blah blah']],
['subject3(.*)', ['blah blah blah']]
]
reflections = {
'i am' : 'you are',
'i was' : 'you were',
'i': 'you'
}
chat = Chat(pairs, reflections)
print("Hi,What do you want to do ?")
chat.converse(quit='by')
但我有一个错误:
Traceback (most recent call last):
File "c:/Projects/demo.py", line 71, in <module>
chat = Chat(pairs, reflections)
File "C:\Python38-32\lib\site-packages\nltk\chat\util.py", line 52, in __init__
self._pairs = [(re.compile(x, re.IGNORECASE), y) for (x, y) in pairs]
File "C:\Python38-32\lib\site-packages\nltk\chat\util.py", line 52, in <listcomp>
self._pairs = [(re.compile(x, re.IGNORECASE), y) for (x, y) in pairs]
ValueError: too many values to unpack (expected 2)
回溯(最近一次呼叫最后一次):
文件“c:/Projects/demo.py”,第71行,在
chat=聊天(成对、反射)
文件“C:\Python38-32\lib\site packages\nltk\chat\util.py”,第52行,在\uuu init中__
self.\u pairs=[(re.compile(x,re.IGNORECASE),y)for(x,y)成对地]
文件“C:\Python38-32\lib\site packages\nltk\chat\util.py”,第52行,在
self.\u pairs=[(re.compile(x,re.IGNORECASE),y)for(x,y)成对地]
ValueError:要解压缩的值太多(应为2个)
我找不到返回错误的原因。我检查了我的循环,但没有任何更改。发生错误的原因是配对列表的第一个索引中有3个项目,并且((x,y)的
[(re.compile(x,re.IGNORECASE),y)成对]
语句中除了2个项目之外所以你可以试试
pairs = [
['i want to see reports', [['In which subject area would you like to see the reports?'],listSubjectArea()]],
['subject1(.*)', ['blah blah blah']],
['subject2(.*)', ['blah blah blah']],
['subject3(.*)', ['blah blah blah']]
]
或
我解决了这个问题,但是当我这样使用时,所有成对的函数在开始时都会自动调用。我想调用函数,当他们被相关对调用时。你知道吗?我不确定这可能是nltk.chat.util import chat的
类中的某个东西。你需要检查它如何处理函数init。
pairs = [
['i want to see reports', ['In which subject area would you like to see the reports?',listSubjectArea()]],
['subject1(.*)', ['blah blah blah']],
['subject2(.*)', ['blah blah blah']],
['subject3(.*)', ['blah blah blah']]
]