Chatterbot_语料库不工作,出现心房肌错误

2024-09-29 03:42:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python chatterbot和chatterbot_语料库开发聊天机器人,我正处于获取语料库的阶段。当我运行代码时,我在语料库文件中得到一个错误

  parts = dotted_path.split('.')
AttributeError: 'list' object has no attribute 'split'

实际上,它应该运行并访问语料库文件。任何帮助都将不胜感激,我将把我所有的代码放在下面

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
from chatterbot.trainers import ChatterBotCorpusTrainer
import chatterbot_corpus

bot = ChatBot(
    'IKO',  
    logic_adapters=[
        'chatterbot.logic.BestMatch',
        'chatterbot.logic.TimeLogicAdapter',
        'chatterbot.logic.MathematicalEvaluation'],
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    database_uri='sqlite:///database.sqlite3'
)

trainer = ListTrainer(bot)
trainer = ChatterBotCorpusTrainer(bot)

trainer.train([
    "chatterbot.corpus.english.greetings",
    "chatterbot.corpus.english.ai"
])


trainer.train([
"what is your name",
"my name is IKO",
"is your name IKO",
"yes"
])

trainer.train([
        "turn on the light",
        "ok turning the light on"
        ])


name = input("Enter Your Name: ")
print("Welcome to the Bot Service! Let me know how can I help you?")
while True:
    request=input(name+':')
    if request=='Bye' or request =='bye':
        print('Bot: Bye')
        break
    elif "turn" in request and "on" in request and "light" in request:
        sig = "light on"
        print(sig)
    else:
        response=bot.get_response(request)
        print('Bot:',response)

整个错误是:

runfile('C:/Users/jax02/OneDrive/Desktop/IKO/IKO/AI-trunt 2.py',wdir='C:/Users/jax02/OneDrive/Desktop/IKO/IKO') 回溯(最近一次呼叫最后一次):

文件“”,第1行,在 runfile('C:/Users/jax02/OneDrive/Desktop/IKO/IKO/AI-trunt 2.py',wdir='C:/Users/jax02/OneDrive/Desktop/IKO/IKO')

文件“C:\Users\jax02\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第827行,在runfile中 execfile(文件名、命名空间)

文件“C:\Users\jax02\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第110行,在execfile中 exec(编译(f.read(),文件名,'exec'),命名空间)

文件“C:/Users/jax02/OneDrive/Desktop/IKO/IKO/AI-trunt 2.py”,第21行,在 “chatterbot.corpus.english.ai”

文件“C:\Users\jax02\Anaconda3\lib\site packages\chatterbot\trainers.py”,第133行,列车中 扩展(列出语料库文件(语料库路径))

文件“C:\Users\jax02\Anaconda3\lib\site packages\chatterbot\corpus.py”,第66行,在列表\u corpus\u文件中 语料库路径=获取文件路径(虚线路径,扩展名=语料库扩展名)

文件“C:\Users\jax02\Anaconda3\lib\site packages\chatterbot\corpus.py”,第30行,在get\u File\u路径中 零件=虚线路径分割('.'))

AttributeError:“list”对象没有属性“split”


Tags: 文件namepy路径requestcorpusonedriveusers
1条回答
网友
1楼 · 发布于 2024-09-29 03:42:01

其中一个问题是您正在覆盖已声明的变量

trainer = ListTrainer(bot)
trainer = ChatterBotCorpusTrainer(bot)

list_trainer = ListTrainer(bot)
corpus_trainer = ChatterBotCorpusTrainer(bot)

另一个问题是,当你通过ListTrainer训练时,你必须向它传递一个列表,但当你通过ChatterBotCorpusTrainer训练时,你没有。 您可以在文档中看到这一点

ListTrainer example

ChatterBotCorpusTrainer example

因此,让我们做一些更改(请记住,变量名称已经更改)

corpus_trainer.train([
    "chatterbot.corpus.english.greetings",
    "chatterbot.corpus.english.ai"
])

corpus_trainer.train(
    "chatterbot.corpus.english.greetings",
    "chatterbot.corpus.english.ai"
)

如果您不理解,下面是最终的代码:

list_trainer = ListTrainer(bot)
corpus_trainer = ChatterBotCorpusTrainer(bot)

corpus_trainer.train(
    "chatterbot.corpus.english.greetings",
    "chatterbot.corpus.english.ai"
)

list_trainer.train([
    "what is your name",
    "my name is IKO",
    "is your name IKO",
    "yes"
])

list_trainer.train([
    "turn on the light",
    "ok turning the light on"
])

相关问题 更多 >