基于Python實(shí)現(xiàn)智能聊天機(jī)器人的完整代碼
一、文檔簡(jiǎn)介
本文基于Python語(yǔ)言搭建一款輕量級(jí)本地智能聊天機(jī)器人,無(wú)需依賴第三方付費(fèi)接口,依靠基礎(chǔ)自然語(yǔ)言匹配邏輯實(shí)現(xiàn)人機(jī)對(duì)話功能。案例代碼簡(jiǎn)潔易懂、可直接運(yùn)行,適合編程初學(xué)者學(xué)習(xí)Python基礎(chǔ)語(yǔ)法、條件判斷、字符串處理以及簡(jiǎn)單交互邏輯開(kāi)發(fā),同時(shí)也可作為小型桌面交互程序的入門實(shí)戰(zhàn)項(xiàng)目。
二、開(kāi)發(fā)環(huán)境準(zhǔn)備
1. 運(yùn)行環(huán)境
- 操作系統(tǒng):Windows / macOS / Linux
- 編程語(yǔ)言:Python 3.7及以上版本
2. 依賴說(shuō)明
本項(xiàng)目無(wú)需安裝額外第三方庫(kù),僅使用Python內(nèi)置標(biāo)準(zhǔn)庫(kù),降低環(huán)境配置門檻,下載Python后即可直接編寫并運(yùn)行代碼。
三、功能設(shè)計(jì)
- 基礎(chǔ)對(duì)話交互:支持問(wèn)候、閑聊、情緒回應(yīng)、常見(jiàn)問(wèn)題問(wèn)答;
- 關(guān)鍵詞匹配:通過(guò)識(shí)別用戶輸入關(guān)鍵詞,觸發(fā)對(duì)應(yīng)回復(fù)內(nèi)容;
- 循環(huán)對(duì)話模式:程序持續(xù)監(jiān)聽(tīng)用戶輸入,輸入指定指令即可退出程序;
- 異常兼容:對(duì)空輸入、亂碼字符等異常輸入做基礎(chǔ)兼容處理。
四、完整代碼實(shí)現(xiàn)
# 輕量級(jí)Python智能聊天機(jī)器人
def chat_robot():
print("===== 智能聊天機(jī)器人已啟動(dòng) =====")
print("提示:輸入【退出】即可結(jié)束對(duì)話\n")
while True:
# 獲取用戶輸入,去除首尾空格
user_input = input("你:").strip()
# 判斷用戶是否退出
if user_input == "退出":
print("機(jī)器人:再見(jiàn)!期待下次聊天~")
break
# 處理空輸入
if not user_input:
print("機(jī)器人:請(qǐng)輸入有效內(nèi)容哦!")
continue
# 關(guān)鍵詞匹配邏輯
if any(word in user_input for word in ["你好", "哈嘍", "嗨"]):
reply = "你好呀!很高興和你聊天??"
elif any(word in user_input for word in ["早上好", "早安"]):
reply = "早上好,新的一天也要元?dú)鉂M滿!"
elif any(word in user_input for word in ["晚上好", "晚安"]):
reply = "晚上好,早點(diǎn)休息哦。"
elif any(word in user_input for word in ["開(kāi)心", "快樂(lè)"]):
reply = "感受到你的快樂(lè)啦,愿你一直開(kāi)開(kāi)心心!"
elif any(word in user_input for word in ["難過(guò)", "不開(kāi)心", "郁悶"]):
reply = "別不開(kāi)心啦,有什么心事可以說(shuō)說(shuō)哦。"
elif any(word in user_input for word in ["名字", "你叫什么"]):
reply = "我是Python開(kāi)發(fā)的簡(jiǎn)易聊天機(jī)器人~"
elif any(word in user_input for word in ["你是誰(shuí)", "介紹一下"]):
reply = "我是一款本地運(yùn)行的智能聊天機(jī)器人,由Python編寫而成。"
elif any(word in user_input for word in ["再見(jiàn)", "拜拜"]):
reply = "拜拜啦,有空再來(lái)聊天哦!"
else:
# 無(wú)匹配關(guān)鍵詞時(shí)默認(rèn)回復(fù)
reply = "這個(gè)問(wèn)題我暫時(shí)還不太了解,換個(gè)話題聊聊吧!"
# 輸出機(jī)器人回復(fù)
print(f"機(jī)器人:{reply}\n")
# 程序入口
if __name__ == "__main__":
chat_robot()
五、代碼解析
- 主函數(shù)定義:
chat_robot()為機(jī)器人核心執(zhí)行函數(shù),封裝全部對(duì)話邏輯。 - 循環(huán)交互:使用
while True構(gòu)建死循環(huán),實(shí)現(xiàn)持續(xù)對(duì)話,直到用戶輸入退出終止循環(huán)。 - 輸入處理:通過(guò)
strip()去除輸入內(nèi)容首尾空格,避免空白字符影響匹配結(jié)果;判斷空輸入并給出提示。 - 關(guān)鍵詞匹配:借助
any()函數(shù)結(jié)合字符串包含判斷,實(shí)現(xiàn)多關(guān)鍵詞統(tǒng)一匹配,簡(jiǎn)化代碼結(jié)構(gòu)。 - 分支回復(fù):通過(guò)多組
if-elif條件語(yǔ)句,根據(jù)不同關(guān)鍵詞返回對(duì)應(yīng)話術(shù),未匹配內(nèi)容則觸發(fā)默認(rèn)回復(fù)。 - 程序入口:
if __name__ == "__main__"是Python標(biāo)準(zhǔn)程序入口,保證代碼僅在直接運(yùn)行文件時(shí)執(zhí)行。
六、運(yùn)行步驟與效果
- 將上述代碼復(fù)制到文本編輯器,保存為
chat_robot.py文件; - 打開(kāi)終端/命令行,切換至文件所在目錄;
- 執(zhí)行命令:
python chat_robot.py啟動(dòng)程序; - 控制臺(tái)出現(xiàn)提示語(yǔ)后,即可輸入文字進(jìn)行對(duì)話,輸入
退出結(jié)束程序。
運(yùn)行示例:
===== 智能聊天機(jī)器人已啟動(dòng) ===== 提示:輸入【退出】即可結(jié)束對(duì)話 你:你好 機(jī)器人:你好呀!很高興和你聊天?? 你:你叫什么名字 機(jī)器人:我是Python開(kāi)發(fā)的簡(jiǎn)易聊天機(jī)器人~ 你:退出 機(jī)器人:再見(jiàn)!期待下次聊天~
七、拓展優(yōu)化方向
- 擴(kuò)充關(guān)鍵詞庫(kù)與回復(fù)話術(shù),豐富對(duì)話場(chǎng)景;
- 引入列表、字典存儲(chǔ)問(wèn)答對(duì),優(yōu)化匹配邏輯,便于后期維護(hù);
- 接入正則表達(dá)式,實(shí)現(xiàn)模糊匹配,提升識(shí)別能力;
- 結(jié)合圖形界面庫(kù),打造桌面可視化聊天窗口。
以上就是基于Python實(shí)現(xiàn)智能聊天機(jī)器人的完整代碼的詳細(xì)內(nèi)容,更多關(guān)于Python智能聊天機(jī)器人的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)發(fā)送帶附件的郵件代碼分享
在本篇文章里小編給大家整理的是關(guān)于python實(shí)現(xiàn)發(fā)送帶附件的郵件代碼分享內(nèi)容,需要的朋友們可以參考下。2020-09-09
python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi)
這篇文章主要為大家詳細(xì)介紹了python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02
python中import與from方法總結(jié)(推薦)
這篇文章主要介紹了python中import與from方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
使用批處理腳本自動(dòng)生成并上傳NuGet包(操作方法)
這篇文章主要介紹了使用批處理腳本自動(dòng)生成并上傳NuGet包的操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
如何解決pycharm中用matplotlib畫圖不顯示中文的問(wèn)題
這篇文章主要介紹了如何解決pycharm中用matplotlib畫圖不顯示中文的問(wèn)題,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06
python中常用的各種數(shù)據(jù)庫(kù)操作模塊和連接實(shí)例
這篇文章主要介紹了python中常用的各種數(shù)據(jù)庫(kù)操作模塊和連接實(shí)例,包括sqlite3、oracle、mysql、excel,需要的朋友可以參考下2014-05-05
Python+Scipy實(shí)現(xiàn)自定義任意的概率分布
Scipy自帶了多種常見(jiàn)的分布,如正態(tài)分布、均勻分布、二項(xiàng)分布、多項(xiàng)分布、伽馬分布等等,還可以自定義任意的概率分布。本文將為大家介紹如何利用Scipy自定義任意的概率分布,感興趣的可以了解下2022-08-08

