การโทรด้วยเสียงกำลังถูกเลิกใช้เพื่อสนับสนุนข้อความและภาพในภาคการสื่อสาร จากโพลของ Facebook พบว่าผู้ซื้อมากกว่าครึ่งต้องการซื้อจากบริษัทที่พวกเขาสามารถพูดคุยด้วยได้ การแชทได้กลายเป็นรูปแบบการสื่อสารใหม่ที่สังคมยอมรับได้
ช่วยให้ธุรกิจสามารถสื่อสารกับลูกค้าได้ทุกที่ทุกเวลา Chatbots กำลังได้รับความนิยมในหมู่บริษัทและลูกค้ามากขึ้น เนื่องจากการใช้งานง่ายและระยะเวลารอที่ลดลง
Chatbots หรือโปรแกรมสนทนาอัตโนมัติช่วยให้ลูกค้ามีวิธีการที่กำหนดเองมากขึ้นในการเข้าถึงบริการผ่านอินเทอร์เฟซแบบข้อความ แชทบอทที่ขับเคลื่อนโดย AI ใหม่ล่าสุดสามารถจดจำคำถาม (คำถาม คำสั่ง คำสั่ง ฯลฯ) ที่สร้างโดยบุคคล (หรือบอทอื่น การเริ่มต้น) ในสภาพแวดล้อมเฉพาะและตอบสนองอย่างเหมาะสม (คำตอบ การกระทำ ฯลฯ)
ในโพสต์นี้ เราจะพูดถึงว่าแชทบอทคืออะไร ประโยชน์ของมัน กรณีใช้งาน และวิธีสร้างแชทของคุณเอง การเรียนรู้ลึก ๆ chatbot ใน Python เหนือสิ่งอื่นใด
มาเริ่มกันเลย
แล้วแชทบอทคืออะไร?
แชทบ็อตมักถูกอ้างถึงว่าเป็นรูปแบบปฏิสัมพันธ์ระหว่างมนุษย์กับเครื่องจักรที่ทันสมัยและมีแนวโน้มมากที่สุดรูปแบบหนึ่ง ผู้ช่วยดิจิทัลเหล่านี้ปรับปรุงประสบการณ์ของลูกค้าด้วยการปรับปรุงปฏิสัมพันธ์ระหว่างผู้คนและบริการ
ในเวลาเดียวกัน พวกเขาให้ทางเลือกใหม่แก่ธุรกิจในการปรับกระบวนการติดต่อลูกค้าให้มีประสิทธิภาพสูงสุด ซึ่งสามารถลดค่าใช้จ่ายในการสนับสนุนแบบเดิมได้
โดยสรุปแล้ว ซอฟต์แวร์ที่ใช้ AI นั้นมีไว้เพื่อสื่อสารกับมนุษย์ในภาษาธรรมชาติของพวกเขา แชทบ็อตเหล่านี้มักจะโต้ตอบผ่านเสียงหรือเทคนิคที่เป็นลายลักษณ์อักษร และสามารถเลียนแบบภาษามนุษย์ได้อย่างง่ายดายเพื่อเชื่อมต่อกับมนุษย์ในลักษณะที่เหมือนมนุษย์
Chatbots เรียนรู้จากการโต้ตอบกับผู้ใช้ มีความสมจริงและมีประสิทธิภาพมากขึ้นเมื่อเวลาผ่านไป พวกเขาสามารถจัดการกับกิจกรรมทางธุรกิจที่หลากหลาย เช่น การอนุมัติการใช้จ่าย การมีส่วนร่วมกับผู้บริโภคทางออนไลน์ และการสร้างโอกาสในการขาย
สร้างแชทบอทการเรียนรู้เชิงลึกของคุณเองด้วย python
มีแชทบอทที่แตกต่างกันมากมายในด้านของ เรียนรู้เครื่อง และเอไอ แชทบอทบางตัวเป็นผู้ช่วยเสมือน ในขณะที่บางตัวอยู่ที่นั่นเพื่อพูดคุยด้วย ในขณะที่บางตัวเป็นเจ้าหน้าที่บริการลูกค้า
คุณอาจเคยเห็นธุรกิจบางส่วนที่จ้างมาเพื่อตอบคำถาม เราจะสร้างแชทบอทขนาดเล็กในบทช่วยสอนนี้เพื่อตอบคำถามที่ถามบ่อย
1. การติดตั้งแพ็คเกจ
ขั้นตอนแรกของเราคือการติดตั้งแพ็คเกจต่อไปนี้
2. ข้อมูลการฝึกอบรม
ตอนนี้ได้เวลาคิดออกว่าข้อมูลประเภทใดที่เราต้องใช้เพื่อให้แชทบ็อตของเรา เราไม่จำเป็นต้องดาวน์โหลดชุดข้อมูลขนาดใหญ่เพราะเป็นแชทบอทธรรมดา
เราจะใช้เฉพาะข้อมูลที่เราสร้างขึ้นเองเท่านั้น ในการติดตามบทเรียนอย่างมีประสิทธิภาพ คุณจะต้องสร้างไฟล์ .JSON ที่มีรูปแบบเดียวกับที่แสดงด้านล่าง ไฟล์ของฉันชื่อ “intents.json”
ไฟล์ JSON ใช้เพื่อสร้างชุดข้อความที่ผู้ใช้น่าจะป้อนและจับคู่กับชุดคำตอบที่เกี่ยวข้อง พจนานุกรมแต่ละรายการในไฟล์มีแท็กที่ระบุว่าแต่ละข้อความเป็นของกลุ่มใด
เราจะใช้ข้อมูลนี้เพื่อฝึก a เครือข่ายประสาท เพื่อจัดหมวดหมู่วลีของคำเป็นหนึ่งในแท็กในไฟล์ของเรา
จากนั้นเราก็สามารถตอบรับจากกลุ่มเหล่านั้นและมอบให้กับผู้ใช้ได้ แชทบอทจะดีขึ้นและซับซ้อนมากขึ้นหากคุณเสนอแท็ก การตอบกลับ และรูปแบบเพิ่มเติม
3. กำลังโหลดข้อมูล JSON
เราจะเริ่มต้นด้วยการโหลดข้อมูล .json ของเราและนำเข้าโมดูลบางส่วน ประกอบไฟล์ your.json ในไดเร็กทอรีเดียวกับของคุณ สคริปต์ Python. ข้อมูล .json ของเราจะถูกบันทึกไว้ในตัวแปรข้อมูล
4. การสกัดข้อมูล
ตอนนี้ได้เวลาดึงข้อมูลที่เราต้องการจากไฟล์ JSON ของเราแล้ว รูปแบบทั้งหมด รวมทั้งคลาส/แท็กที่เป็นของจำเป็น
นอกจากนี้เรายังต้องการรายการคำศัพท์เฉพาะทั้งหมดในรูปแบบของเรา (เราจะอธิบายในภายหลังด้วยเหตุผลหลายประการ) ดังนั้น ให้สร้างรายการว่างเพื่อติดตามค่าเหล่านี้
ตอนนี้เราจะวนซ้ำข้อมูล JSON ของเราและดึงข้อมูลที่เราต้องการ แทนที่จะใช้เป็นสตริง เราจะใช้ nltk.word tokenizer เพื่อแปลงรูปแบบแต่ละรูปแบบเป็นรายการคำ
จากนั้น ในรายการ docs_x เราจะเพิ่มแต่ละรูปแบบ พร้อมด้วยแท็กที่เกี่ยวข้อง ในรายการ docs_y
5. การสะกดคำ
การหารากของคำเรียกว่าการสะกดรอยตาม ตัวอย่างเช่น ต้นกำเนิดของคำว่า "นั่น" อาจเป็น "นั่น" ในขณะที่ต้นกำเนิดของคำว่า "เกิดขึ้น" อาจ "เกิดขึ้น"
เราจะใช้เทคนิคการต่อท้ายนี้เพื่อตัดคำศัพท์ของแบบจำลองของเราและพยายามหาว่าประโยคใดที่บ่งบอกถึงโดยทั่วไป รหัสนี้จะสร้างรายการคำที่มีต้นกำเนิดเฉพาะซึ่งจะใช้ในขั้นต่อไปของการเตรียมข้อมูลของเรา
6. กระเป๋าคำ
ถึงเวลาที่จะพูดเกี่ยวกับคำศัพท์ที่เรานำเข้าข้อมูลของเราและสร้างคำศัพท์ที่แยกจากกัน โครงข่ายประสาท และอัลกอริธึมแมชชีนเลิร์นนิงอย่างที่เราทุกคนทราบกันดีอยู่แล้วว่าต้องการการป้อนข้อมูลด้วยตัวเลข ดังนั้นรายการสตริงของเราจะไม่ตัดมัน เราจำเป็นต้องมีกลไกในการแสดงตัวเลขในประโยคของเรา ซึ่งเป็นที่มาของคำศัพท์
แต่ละวลีจะแสดงรายการความยาวของจำนวนคำศัพท์ในคำศัพท์ของแบบจำลองของเรา แต่ละคำในคำศัพท์ของเราจะแสดงด้วยสถานที่ในรายการ หากตำแหน่งในรายการเป็น 1 คำนั้นจะปรากฏในคำสั่งของเรา หากเป็น 0 คำนั้นจะไม่ปรากฏในประโยคของเรา
เราเรียกมันว่าถุงคำเพราะเราไม่รู้ลำดับของคำที่ปรากฏในวลี ทั้งหมดที่เรารู้ก็คือพวกมันมีอยู่ในคำศัพท์ของแบบจำลองของเรา
นอกจากการจัดโครงสร้างอินพุตของเราแล้ว เรายังต้องจัดรูปแบบเอาต์พุตของเราด้วยเพื่อให้โครงข่ายประสาทเทียมเข้าใจ เราจะสร้างรายการผลลัพธ์ที่มีความยาวเท่ากับจำนวนป้ายกำกับ/แท็กในชุดข้อมูลของเรา คล้ายกับถุงคำ แต่ละตำแหน่งในรายการแสดงถึงป้ายกำกับ/แท็กที่ไม่ซ้ำกัน และ 1 ในตำแหน่งใดๆ ที่ระบุจะระบุว่ามีการแสดงป้ายกำกับ/แท็กใด
สุดท้าย เราจะใช้อาร์เรย์ NumPy เพื่อจัดเก็บข้อมูลและเอาต์พุตการฝึกของเรา
7. การพัฒนาแบบจำลอง
เราพร้อมแล้วที่จะเริ่มสร้างและฝึกอบรมแบบจำลองเมื่อเราได้ประมวลผลข้อมูลทั้งหมดของเราล่วงหน้าแล้ว เราจะใช้โครงข่ายประสาทเทียมแบบ feed-forward ขั้นพื้นฐานที่มีเลเยอร์ที่ซ่อนอยู่สองชั้นสำหรับวัตถุประสงค์ของเรา
จุดประสงค์ของเครือข่ายของเราคือการดูชุดคำและกำหนดให้กับชั้นเรียน (หนึ่งในแท็กของเราจากไฟล์ JSON) เราจะเริ่มต้นด้วยการสร้างสถาปัตยกรรมของแบบจำลองของเรา จำไว้ว่าคุณสามารถเล่นกับตัวเลขบางตัวเพื่อสร้างแบบจำลองที่ดีกว่าได้! การเรียนรู้เครื่อง ส่วนใหญ่ขึ้นอยู่กับการลองผิดลองถูก
8. การฝึกโมเดลและการออม
ถึงเวลาฝึกโมเดลของเราเกี่ยวกับข้อมูลของเราแล้ว ตอนนี้เราได้ตั้งค่ามันแล้ว! เราจะบรรลุเป้าหมายนี้โดยปรับข้อมูลของเราให้เข้ากับโมเดล จำนวนช่วงเวลาที่เราจัดเตรียมไว้คือจำนวนครั้งที่โมเดลจะเปิดเผยข้อมูลเดียวกันระหว่างการฝึกอบรม
เราสามารถบันทึกโมเดลลงในโมเดลไฟล์ได้เมื่อเราฝึกเสร็จแล้ว tflearn เป็นสคริปต์ที่สามารถใช้ในสคริปต์อื่นได้
9. การใช้แชทบอท
ตอนนี้คุณสามารถเริ่มแชทกับบอทของคุณได้
ประโยชน์ของ Chatbot
- เนื่องจากบอทคาดว่าจะทำงาน 365 วันต่อปี ตลอด 24 ชั่วโมงโดยไม่ต้องจ่ายเงิน เพิ่มความพร้อมใช้งานและความเร็วในการตอบสนอง
- บ็อตเหล่านี้เป็นเครื่องมือที่สมบูรณ์แบบสำหรับจัดการกับปัจจัยสำคัญสามประการของบิ๊กดาต้า Vs: ปริมาณ ความเร็ว และความหลากหลาย
- Chatbots เป็นซอฟต์แวร์ที่สามารถใช้เพื่อเรียนรู้และทำความเข้าใจผู้บริโภคของบริษัท
- มีกำลังที่เหนือชั้นซึ่งมีค่าบำรุงรักษาราคาถูกหลังจากได้ประโยชน์สูงสุด
- แอปพลิเคชัน Chatbot สร้างข้อมูลที่อาจได้รับการเก็บรักษาและใช้สำหรับการวิเคราะห์และการคาดการณ์
กรณีการใช้งาน
- ไขข้อข้องใจของลูกค้า
- ตอบคำถามที่พบบ่อย
- มอบหมายลูกค้าให้สนับสนุนทีม
- รวบรวมคำติชมของลูกค้า
- แนะนำข้อเสนอใหม่
- ช็อปด้วยการค้าเชิงสนทนา
- ฝ่ายช่วยเหลือด้านไอที
- การจองที่พัก
- การโอนเงิน
สรุป
Chatbots เช่นเดียวกับเทคโนโลยี AI อื่นๆ จะถูกนำมาใช้เพื่อเพิ่มทักษะของมนุษย์และปลดปล่อยมนุษย์ให้มีความคิดสร้างสรรค์และจินตนาการมากขึ้น โดยปล่อยให้พวกเขาใช้เวลากับกลยุทธ์มากกว่างานยุทธวิธี
ธุรกิจ พนักงาน และผู้บริโภคมักจะได้รับประโยชน์จากฟีเจอร์แชทบอทที่ได้รับการปรับปรุง เช่น การแนะนำและการคาดคะเนที่เร็วขึ้น ตลอดจนการเข้าถึงการประชุมทางวิดีโอที่มีความละเอียดสูงอย่างง่ายดายจากภายในการสนทนา ในอนาคตอันใกล้ เมื่อ AI ถูกรวมเข้ากับการพัฒนา เทคโนโลยี 5G
ความเป็นไปได้เหล่านี้และความเป็นไปได้อื่นๆ ยังอยู่ในระหว่างการตรวจสอบ แต่เมื่อการเชื่อมต่ออินเทอร์เน็ต, AI, NLP และความก้าวหน้าของการเรียนรู้ของเครื่อง สิ่งเหล่านี้จะกลายเป็นที่แพร่หลายมากขึ้น
ชวู
สวัสดี
ขอบคุณสำหรับโปรแกรมนี้
ฉันมีคำถาม.
ไม่ได้กำหนด “bag_of_words” ฉันไม่เข้าใจข้อผิดพลาดนี้
คุณช่วยบอกฉันว่าฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร
ขอบคุณสำหรับโปรแกรมนี้!! ขอให้เป็นวันที่ดี
เจย์
โปรดเพิ่มฟังก์ชันก่อนใช้ส่วนแชทบอท:
/////////////////////////////////////////////////////////////////////// ///////////////////////////
def bag_of_words(s, คำ):
กระเป๋า = [0 สำหรับ _ ในช่วง (len (คำ))]
s_words = nltk.word_tokenize (s)
s_words = [stemmer.stem(word.lower()) สำหรับคำใน s_words]
สำหรับ s_words:
สำหรับฉัน w ในการแจกแจง (คำ):
ถ้า w == se:
กระเป๋า[i] = 1
ส่งคืน numpy.array(กระเป๋า)
// มันจะแก้ปัญหาของคุณได้อย่างแน่นอน //
////////////////////////////////////////////////// //////////////////////////
ฉันกำลังแชร์รหัสทั้งหมดกับคุณ ดังนั้นคุณจะได้เห็นภาพที่ชัดเจน
/////////////////////////////////////////////////////////////////////// //////////
นำเข้า nltk
จาก nltk.stem.lancaster นำเข้า Lancaster Stemmer
stemmer = แลงคาสเตอร์ Stemmer ()
นำเข้า numpy
นำเข้า tflearn
นำเข้าเทนเซอร์โฟลว์
นำเข้าแบบสุ่ม
นำเข้า json
นำเข้าผักดอง
ด้วย open("intents.json") เป็นไฟล์:
data = json.load (ไฟล์)
ลอง:
ด้วย open("data.pickle", "rb") เป็น f:
คำ, ป้ายกำกับ, การฝึก, ผลลัพธ์ = pickle.load(f)
ยกเว้น:
คำ = []
ป้ายกำกับ = []
เอกสาร_x = []
เอกสาร_y = []
สำหรับเจตนาในข้อมูล["เจตนา"]:
สำหรับรูปแบบโดยเจตนา["รูปแบบ"]:
wrds = nltk.word_tokenize(รูปแบบ)
คำ.ขยาย(wrds)
docs_x.ผนวก (wrds)
docs_y.append(เจตนา[“แท็ก”])
ถ้าเจตนา[“แท็ก”] ไม่อยู่ในป้ายกำกับ:
labels.append(เจตนา[“แท็ก”])
คำ = [stemmer.stem(w.lower()) สำหรับ w ในคำ ถ้า w != “?”]
คำ = เรียงลำดับ(รายการ(ชุด(คำ)))
ป้ายกำกับ = เรียงลำดับ (ป้ายกำกับ)
การฝึกอบรม = []
เอาท์พุท = []
out_empty = [0 สำหรับ _ ในช่วง (len (ป้ายกำกับ))]
สำหรับ x, doc ในการแจกแจง (docs_x):
กระเป๋า = []
wrds = [stemmer.stem(w.lower()) สำหรับ w ใน doc]
สำหรับ w ในคำ:
ถ้า w ใน wrds:
กระเป๋าต่อท้าย(1)
อื่น:
กระเป๋าต่อท้าย(0)
output_row = out_empty[:]
output_row[labels.index(docs_y[x])] = 1
training.append(ถุง)
เอาท์พุท ผนวก (output_row)
การฝึกอบรม = numpy.array (การฝึกอบรม)
เอาต์พุต = numpy.array (เอาต์พุต)
ด้วย open("data.pickle", "wb") เป็น f:
pickle.dump ((คำ, ป้ายกำกับ, การฝึกอบรม, เอาต์พุต), f)
tensorflow.reset_default_graph ()
net = tflearn.input_data(shape=[ไม่มี, len(การฝึกอบรม[0])])
สุทธิ = tflearn.fully_connected (สุทธิ 8)
สุทธิ = tflearn.fully_connected (สุทธิ 8)
net = tflearn.fully_connected (net, len (เอาต์พุต [0]), การเปิดใช้งาน =”softmax”)
สุทธิ = tflearn.regression (สุทธิ)
รุ่น = tflearn.DNN (สุทธิ)
ลอง:
model.load (“model.tflearn”)
ยกเว้น:
model.fit(การฝึกอบรม, ผลลัพธ์, n_epoch=1500, batch_size=8, show_metric=True)
model.save("model.tflearn")
def bag_of_words(s, คำ):
กระเป๋า = [0 สำหรับ _ ในช่วง (len (คำ))]
s_words = nltk.word_tokenize (s)
s_words = [stemmer.stem(word.lower()) สำหรับคำใน s_words]
สำหรับ s_words:
สำหรับฉัน w ในการแจกแจง (คำ):
ถ้า w == se:
กระเป๋า[i] = 1
ส่งคืน numpy.array(กระเป๋า)
def แชท ():
print("เริ่มคุยกับบอท (พิมพ์ quit เพื่อหยุด)!")
ในขณะที่ True:
inp = อินพุต ("คุณ: ")
ถ้า inp.lower() == “เลิก”:
ทำลาย
ผลลัพธ์ = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax(ผลลัพธ์)
แท็ก = ป้ายกำกับ[results_index]
สำหรับ tg ใน data["intents"]:
ถ้า tg['tag'] == tag:
ตอบกลับ = tg['responses']
พิมพ์(สุ่มเลือก(ตอบกลับ))
แชท()
////////////////////////////////////////////////// ///////////////
ขอขอบคุณ,
มีความสุขในการเข้ารหัส!
Lu
สวัสดี
ขอทราบขั้นตอนการดำเนินการในกรณีที่ต้องการสร้าง chatbot ใน python แต่ข้อมูลได้มาจากการสำรวจใน excel ขอบคุณ!