Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python聊天机器人中成对调用打印函数时出现值错误_Python_Python 3.x_Nltk - Fatal编程技术网

在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']]
]