daotao.sict.udn.vndaotao.sict.udn.vn/.../2019/12/1577712190-baocaodoan.docx · web viewauthor...

24
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO ĐỒ ÁN CƠ SỞ 4 ĐỀ TÀI: XÂY DỰNG HỆ THỐNG CHATBOT ỨNG DỤNG VÀO TRANG WEB BÁN HÀNG Sinh viên thực hiện: ĐỖ VĂN HUY 17IT1 ĐẶNG CÔNG HƯNG 17IT1 Giảng viên hướng dẫn: TS. NGUYỄN ĐỨC HIỂN 1

Upload: others

Post on 28-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Báo cáo đồ án cơ sở 4

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO ĐỒ ÁN CƠ SỞ 4

ĐỀ TÀI:

XÂY DỰNG HỆ THỐNG CHATBOT ỨNG DỤNG VÀO

TRANG WEB BÁN HÀNG

Sinh viên thực hiện: ĐỖ VĂN HUY 17IT1

ĐẶNG CÔNG HƯNG 17IT1

Giảng viên hướng dẫn: TS. NGUYỄN ĐỨC HIỂN

Đà Nẵng, tháng 12 năm 2019

3

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 4

XÂY DỰNG HỆ THỐNG CHATBOT ỨNG DỤNG VÀO

TRANG WEB BÁN HÀNG

Đà Nẵng, tháng 12 năm 2019

MỞ ĐẦU

Trong những năm gần đây, khoa học công nghệ đang dần tiến đến một tầm caomới. Mặc dù còn mới mẻ trong lĩnh vực khoa học và công nghệ nhưng Chatbots đangđược nghiên cứu và phát triển với tốc độ chóng mặt bởi các trung tâm nghiên cứu, cáctrường đại học và học viện.... rất nhiều các lĩnh vực được ứng dụng công nghệ mớinày.

Chatbots là một hình thức thô sơ của phần mềm trí tuệ nhân tạo, là một chươngtrình được tạo ra từ máy tính tiến hành cuộc trò chuyện thông qua các phương phápnhập văn bản, âm thanh, cảm ứng có thể trả lời các câu hỏi và xử lý các tình huống, làmột công cụ có thể giao tiếp, tương tác với con người thông qua một trí tuệ nhân tạođã được lập trình sẵn. Có rất nhiều công cụ cũng như thư viện hỗ trợ cho Chatbotsnhư: Dialogflow, Wit.ai, Watson Conversation Service, Microsoft „s LUIS, GoogleNatural Language API, Amazon Lex,...

Đề tài: “Xây dựng hệ thống Chatbot ứng dụng vào trang web bán hàng” chủ yếu xây dựng trên ngôn ngữ Python, nhận dữ liệu từ các file json, trả lời tự động các câu hỏi thường gặp của khách hàng và đề xuất các sản phẩm phù hợp với nhu cầu của khách hàng.

LỜI CẢM ƠN

Sau khi được gợi ý về cách tìm hiểu cũng như thực hiện đề tài xây dựng chatbot để làm đề tài cho đồ án cơ sở 4. Nhóm em đã xây dựng thành công đề tài:” Xây dựng hệ thống chatbot ứng dụng vào trang web bán hàng”.

Được sự hướng dẫn của thầy Nguyễn Đức Hiển và sự giúp đỡ của các bạn, nhóm em đã hoàn thành được những nhiệm vụ cơ bản đề ra. Tuy nhiên, với thời gian và kiến thức có hạn, bản báo cáo này sẽ có nhiều hạn chế và sai sót, em rất mong nhận được lời góp ý chân thành của thầy giáo và hội đồng báo cáo. Nhóm em xin được bày tỏ lòng biết ơn sâu sắc đến với thầy Nguyễn Đức Hiển và các bạn đã giúp em hoàn thành nội dung bản báo cáo.

Nhóm xin chân thành cảm ơn!

NHẬN XÉT

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………

Xác nhận của hội đồng

MỤC LỤC

Chương I.GIỚI THIỆU7

1.1 Lí do chọn đề tài7

1.2 Tổng quan về Chatbot7

1.3 Phương pháp và kết quả8

Chương II.NGHIÊN CỨU TỔNG QUAN9

2.1 Phân tích yêu cầu9

2.2 Phân tích các chức năng9

2.3 Các tính năng của một Chatbot10

2.4 Các nền tảng để tạo Chatbot10

Chương III.THIẾT KẾ HỆ THỐNG VÀ CÀI ĐẶT12

3.1 Lưu dữ liệu trong file intent.json12

3.2 Tiến hành training dữ liệu 13

3.3 Xây dựng hệ thống phản hồi của Chatbot…………………..…....15

Chương IV.KẾT LUẬN VÀ XU HƯỚNG PHÁT TRIỂN17

4.1 Kết luận17

4.2 Xu hướng phát triển 17

Chương I. GIỚI THIỆU

1.1 Lí do chọn đề tài

Ở nước ta, việc giải đáp thắc mắc của bộ phận chăm sóc khách hàng qua tin nhắn trực tuyến đang được ưa chuộng. Tuy nhiên, việc này còn thực hiện một cách thủ công và gặp nhiều khó khăn như: tốn rất nhiều thời gian và chi phí chi trả cho nhân viên chỉ để trả lời những câu hỏi đơn giản và giống nhau. Chính vì vậy, nhu cầu cấp thiết là cần một hệ thống điều khiển thông minh, tự động để mang lại hiệu quả cao hơn và Chatbot là một sự lựa chọn hoàn hảo.

Hiện nay, các ứng dụng trò chuyện trực tuyến được mọi người sử dụng đang bắt đầu trở thành một phương tiện ưa thích để giao tiếp với các doanh nghiệp và giải quyết thắc mắc của khách hàng. Ứng dụng nhắn tin nhanh đã trở thành điểm đến hàng đầu cho mọi thương hiệu nhằm tiếp cận người tiêu dùng, bởi vậy không có gì đáng ngạc nhiên khi Chatbot ngày càng trở nên phổ biến.

1.2 Tổng quan về Chatbot

1.2.1 Giới thiệu về Chatbot

Trong những năm gần đây, mặc dù còn mới mẻ trong lĩnh vực khoa học và công nghệ nhưng Chatbots đang được nghiên cứu và phát triển với tốc độ nhanh chóng bởi các trung tâm nghiên cứu, trường đại học và học viện…với rất nhiều ứng dụng trên các lĩnh vực khác nhau như: giải trí, y tế, thương mại, tự động hóa, ... Kể từ khi chatbots được phát triển mạnh mẽ vào năm 2016, nó đã nhanh chóng trở thành một trong những xu hướng công nghệ được quan tâm nhất trong giai đoạn đó và cho đến nay.

1.2.2 Cách thức hoạt động của Chatbot

Chatbots phát triển dựa trên sự kết hợp của các kịch bản có trước và tự họctrong quá trình tương tác. Ta sẽ tương tác với chatbots qua nền tảng tin nhắn. Với cáccâu hỏi được đặt ra, Chatbots sử dụng các hệ thống xử lý ngôn ngữ tự nhiên (NaturalLanguage Processing) để phân tích dữ liệu sau đó chúng lựa chọn các thuật toán họcmáy để đưa ra các loại phản hồi khác nhau, chúng sẽ dự đoán và phản hồi chính xácnhất có thể. Chatbots sử dụng nhiều hệ thống quét các từ khoá bên trong đầu vào, sauđó bot khởi động một hành động, kéo một câu trả lời với các từ khóa phù hợp nhấtvà trả lời thông tin từ một cơ sở dữ liệu / API, hoặc bàn giao cho con người. Nếu tìnhhuống đó chưa xảy ra (không có trong dữ liệu), Chatbot sẽ bỏ qua nhưng sẽ đồngthời tự học để áp dụng cho các cuộc trò chuyện về sau. Một trong các yếu tố làm nên sức mạnh của Chatbot là khả năng tự học hỏi. Càngđược sử dụng, tương tác với người dùng nhiều, nền tảng Chatbot càng “thông minh”.Chatbot thông minh có khả năng tự học hỏi dựa trên các dữ liệu đưa vào mà không cầnphải được lập trình cụ thể (đó được gọi là phương pháp máy học - Machine Learning).Chính điều này làm cho các nhà phát triển dễ dàng tạo các chương trình trò chuyện vàtự động hoá các cuộc trò chuyện với người dùng

Để biết thêm chi tiết về các ý tưởng và khái niệm đằng sau Chatbot chúng ta xem sơ đồ quá trình sau:

1.3 Phương pháp và kết quả:

1.3.1 Phương pháp triển khai

Tiền dự án:

Tìm hiểu Chatbot là gì? Cách thức hoạt động của nó.

Chuẩn bị môi trường làm việc bao gồm tất cả các thiết bị và công nghệ cần thiết để phục vụ cho việc lập trình python xây dựng chatbot. Lên kế hoạch làm việc cho từng giai đoạn

Triển khai dự án:

Thống nhất các nội dung cần đạt được ở đồ án lần này, ở đây chính là hệ thống chatbot trả lời tự động

Từ nội dung đã thống nhất tiến hành thiết kế, thu thập dữ liệu, … sau đó tiến hành thiết lập và bắt đầu lập trình.

Chạy thử nghiệm hệ thống, kiểm thử xong xong với quá trình lập trình và thiết kế hệ thống. Sau đó tiến hành nghiệm thu ứng dụng và đưa ra thị trường rồi tiến hành kiểm tra, bảo hành và nâng cấp ứng dụng

1.3.2 Kết quả

· Giao diện thân thiện, dễ sử dụng, người dùng dễ dàng hiểu được

· Đảm bảo khả năng hoạt động tốt và xuyên suốt của hệ thống

Chương II. NGHIÊN CỨU TỔNG QUAN

2.1 Phân tích yêu cầu

Hệ thống sẽ gồm có 2 phần:

· Training data: load dữ liệu từ file intent.json để training dữ liệu, cung cấp đầu vào cho việc xây dựng phần phản hồi của Chatbot

· Xây dựng hệ thống phản hồi: từ dữ liệu đầu vào được cung cấp qua quá trình training dữ liệu, hệ thống sẽ tiến hành chọn câu trả lời phù hợp với từng loại câu hỏi của người dùng.

2.2 Phân tích các chức năng

Có 2 cách cơ bản để giao tiếp với người dùng:

1. Sử dụng nút bấm

2. Giao tiếp sử dụng ngôn ngữ tự nhiên

Hạn chế:

Đối với cách sử dụng nút bấm: giới hạn đầu vào của người dùng đối với một số hành động đã được xác định trước bằng cách đề xuất các hành động dưới dạng một danh sách các nút.

Nếu ngôn ngữ tự nhiên được sử dụng để giao tiếp, cần nêu rõ loại đầu vào nào được mong đợi, để người dùng biết chủ đề nào và biến thể đầu vào của hệ thống hiểu một trong những thách thức chính với giao diện ngôn ngữ tự nhiên là xử lý không bị hạn chế tương tác một cách mạch lạc; vì đầu vào của người dùng không giới hạn trong một chủ đề, nên tất cả các loại các phản ứng người dùng bất ngờ phải được tính đến. Như một hệ quả của việc này, có một số cuộc hội thoại nhất định mỗi chatbot phải có khả năng xử lý theo một cách nào đó.

2.3 Các tính năng có thể có của một Chatbot

· Xử lí ngôn ngữ tự nhiên: xử lí các biến dạng ngôn ngữ và ngôn ngữ tự nhiên (tiếng lóng, sai chính tả, tiếng địa phương). Giải thích và tương tác theo nhiều cách khác nhau

· Tương tác logic: có khả năng theo kịp các cuộc hội thoại dài mà vẫn trả lời một cách logic

· Học tập: học theo thời gian thực về những khả năng có thể xảy ra

· Gửi tin tiếp thị tự động: tiếp thị qua các ứng dụng nhắn tin một cách tự động

· Broadcast: cho phép gửi tin nhắn cho khách hàng

· Chuyển hướng: gửi tin nhắn/ trình kích hoạt popup cho người dùng và chuyển hướng người dùng đến các trang web có liên quan

2.4 Các nền tảng để tạo Chatbot phổ biến tại Việt Nam

1.Chatfuel

Chatfuel là một công cụ tạo chatbot miễn phí giúp bạn xây dựng một con chatbot. Hơn 200.000 chatbot đã được tạo ra bằng cách sử dụng Chatfuel (tính đến tháng 6/2018) và chúng phục vụ hơn 145 triệu người dùng trên toàn cầu.

Sau đây là những ưu điểm nổi trội của Chatfuel :

· Hoàn toàn miễn phí

· Không sử dụng code, thiết lập bot dễ dàng với các block

· Không cần gửi xét duyệt với Facebook

· Kết nối dễ dàng đến Fanpage Facebook

· Không giới hạn số bot có thể tạo ra

· Dễ dàng kết nối với các mạng xã hội, dịch vụ khác như Instagram, Twitter, Youtube, … bằng các plugins

· Nâng cấp và bảo trì dễ dàng

· Tích hợp mọi loại API vào trong 1 con chatbot, giúp các lập trình viên dễ dàng nâng cấp và cải tiến cho chatbot của bạn

· Có thư viện mẫu (template) để bạn tham khảo

· Hỗ trợ hơn 50 ngôn ngữ trên toàn thế giới

2.Messnow

Messnow là starup được tài trợ bởi Facebook, Microsofts và Amazon. Được tin dùng bởi nhiều thương hiệu Việt Nam và Quốc tế.

Messnow có những ưu điểm gì? Tại sao nhiều doanh nghiệp trong lĩnh vực sự kiện, khách sạn, nhà hàng tại Việt Nam lại sử dụng Messnow? Đây là câu trả lời cho bạn:

· Giao diện hoàn toàn bằng tiếng Việt

· Có menu hướng dẫn chi tiết từng bước cài đặt và triển khai chatbot

· Tích hợp với ứng dụng nhắn tin Zalo và Zalo shop, có thể tạo chatbot trên Zalo

· Khả năng đa ngôn ngữ với hơn 50 ngôn ngữ trên toàn thế giới

· Kho ứng dụng đa dạng, giúp bạn tích hợp thêm nhiều chức năng

· Tạo và triển khai chatbot Facebook nhanh chóng, dễ dàng

· Khả năng xử lý ngôn ngữ tự nhiên chính xác

· Kho template chuyên nghiệp với hàng trăm mẫu khác nhau được thiết lập sẵn

3.Manychat

Đây là công cụ cạnh tranh trực tiếp với Chatfuel về tính năng cũng như công nghệ triển khai chatbot. Sau đây là những tính năng tuyệt vời mà ManyChat cung cấp khi bạn tạo chatbot bằng công cụ này:

· Hoàn toàn miễn phí và không cần sử dụng code

· Dễ dàng cài đặt lên Fanpage Facebook mà không cần tạo app hay đợi xét duyệt

· Tạo chatbot không giới hạn

· Lên kịch bản chatbot và cài đặt các tùy chọn nhanh

Chương III. THIẾT KẾ HỆ THỐNG VÀ CÀI ĐẶT

Hệ thống Chatbot của nhóm không dựa trên các nền tảng có sẵn trên để tạo Chatbot mà chủ yếu sử dụng thư viện Tensorflow trong machine learning, các hàm xử lí của ngôn ngữ Python để thực hiện. Việc xây dựng Chatbot thông qua các bước sau:

3.1 Lưu dữ liệu trong file intent.json

Đầu tiên, chúng ta tạo một tệp .JSON có định dạng như dưới đây. Tên của tệp là intent.json

Chúng ta sẽ lưu vào file .JSON một loạt các câu hỏi mà người dùng có khả năng nhập và các câu trả lời phù hợp cho từng câu hỏi đó. Mỗi loại câu hỏi sẽ tương ứng với một thẻ để biết chúng thuộc nhóm câu hỏi nào. Với dữ liệu này, chúng ta sẽ tạo ra một mạng nơron để lấy một câu từ và phân loại nó thành một trong các thẻ tệp trong file JSON. Sau đó, chúng ta chỉ cần lấy một câu trả lời từ nhóm đó và hiển thị cho người dùng. Càng nhiều thẻ cũng như đa dạng số lượng câu hỏi trong từng thẻ thì chatbot sẽ càng tốt và phức tạp hơn.

3.2 Tiến hành traning dữ liệu trong file intent.json

Đầu tiên chúng ta sẽ sử dụng TFlearn - High level API của Tensorflow, và dĩ nhiên ngôn ngữ sử dụng là Python nhập một số mô-đun và tiến hành tải dữ liệu JSON lên. Tệp .JSON phải nằm cùng thư mục với file python.

Với intent.json vừa được đưa vào bộ training, cần tổ chức lại nó, Xác định cho công cụ biết đâu là documents dùng để training, các từ, các classes để phân lớp. Sử dụng thêm bộ công cụ của xử lý ngôn ngữ tự nhiên nltk để tiền xử lý dữ liệu. Bộ công cụ này cho phép thực hiện các quá trình tokenizer, POS stagging, word segmentation, remove stopword.... Bổ sung thêm stopwords vào stop_words array hoặc tạo một file text để list danh sách các stopwords. Stopwords là danh sách các từ xuất hiện nhiều trong văn bản nhưng lại không có giá trị trong việc phân lớp. Vì vậy trước khi training, chúng ta cần làm sạch văn bản, loại bỏ những từ ngữ không có ý nghĩa này để tránh ảnh hưởng đến kết quả training.

Nếu chúng ta sử dụng dự liệu dạng word như vậy thì sẽ không thể hoạt động được với tensorflow, vì vậy việc cần thiết bây giờ là chuyển dữ liệu này sang dạng tensor number

Lưu ý rằng, dữ liệu của chúng ta bị xáo trộn. Tensorflow sẽ lấy một số dữ liệu trong tập intents.json để làm dữ liệu thử nghiệm để đo độ chính xác cho mô hình. Sau khi chuyển word -> number, chúng ta có thể thấy các "bag-of-words" dạng array

Để hoàn thành quá trình này, bạn cần lưu lại (pickle) model và document để có thể sử dụng lại nó trong quá trình predict ở bước tiếp theo.

3.3 Xây dựng hệ thống phản hồi của Chatbot

Đầu tiên, cần un-pickle model và documents, cũng như cần phải load lại intents.json để lấy các câu trả lời đã được định nghĩa trước đó.

Tiếp đến load tensowflow model:

Cũng giống như khi training dữ liệu, với các ý định người dùng nhập vào bạn cũng cần phải tiền xử lý, tokenizer, hay chuyển sang bag-of-words để hệ thống có thể hiểu và phân loại về đúng lớp của nó

def clean_up_sentence(sentence):

    sentence_words = nltk.word_tokenize(sentence)

    sentence_words = [stemmer.stem(word.lower()) for word in sentence_words]

    return sentence_words

# bag of words

def bow(sentence, words, show_details=False):

    sentence_words = clean_up_sentence(sentence)

    # bag of words

    bag = [0]*len(words)  

    for s in sentence_words:

        for i,w in enumerate(words):

            if w == s: 

                bag[i] = 1

                if show_details:

                    print ("found in bag: %s" % w)

    return(np.array(bag))

Với mỗi câu hỏi (hay request) người dùng nhập vào, sử dụng hàm model.predict() để xác định câu hỏi đó thuộc loại nào. Sau đó sẽ đưa ra các phản hồi tiềm ẩn, có khả năng và phù hợp nhất với các request trước đó

def response(sentence, userID='1', show_details=False):

    results = classify(sentence)

    if results:

        while results:

            for i in intents['intents']:

                if i['tag'] == results[0][0]:

                    if 'context_set' in i:

                        if show_details: print ('context:', i['context_set'])

                        context[userID] = i['context_set']

                    if not 'context_filter' in i or \

                        (userID in context and 'context_filter' in i and i['context_filter'] == context[userID]):

                        if show_details: print ('tag:', i['tag'])

                        return print(random.choice(i['responses']))

            results.pop(0)

def chat():

    print("Start talking with the bot (type quit to stop)!")

    while True:

        inp = input("You: ")

        if inp.lower() == "quit":

            break

        response(inp, userID='1', show_details=False)

chat()

Chương IV. KẾT LUẬN VÀ XU HƯỚNG PHÁT TRIỂN

4.1 Kết luận

Đồ án đã hoàn thiện các chức năng cơ bản của hệ thống. Tuy đã đạt được các yêu cầu cơ bản đặt ra ban đầu nhưng hệ thống vẫn chưa thật sự tốt. Nhóm sẽ phát triển mô hình thêm để đạt được sự chính xác và thông minh nhất cho Chatbot.

4.2 Xu hướng phát triển

Sự kết hợp giữa ChatBot với trí tuệ nhân tạo (AI) và các công nghệ tiên tiến khác sẽ là một xu hướng phát triển mạnh mẽ cho ChatBot trong tương lai như có thể phát triển chúng thành một nền tảng riêng như hệ điều hành.

Các chức năng và các ChatBot riêng của mỗi doanh nghiệp công ty sẽ vào ứng dụng nhắn tin, thay vì yêu cầu người dùng tải thêm các ứng dụng để phải chuyển đổi từ ứng dụng này sang ứng dụng khác, từ website này sang website khác. Chúng ta có thể trò chuyện, đặt một bữa ăn, đặt một cuộc hẹn với bác sĩ, đặt hàng cũng như tham khảo các mặt hàng và nhiều hơn nữa với những ChatBot riêng của các cửa hàng nhỏ, doanh nghiệp, công ty… thông qua ứng dụng tin nhắn đó.

Hệ thống vẫn cần được phát triển thêm các tính năng sau:

· Tiến hành nâng cấp giao diện sử dụng

· Phát triển thêm mô hình để mang lại sự chính xác cao nhất

· Có thể phát triển thêm tính năng chọn câu trả lời tùy theo ngôn ngữ người dùng nhập (vd: đối với người nước ngoài sẽ sử dụng tiếng Anh để trả lời)

DANH MỤC TÀI LIỆU THAM KHẢO:

Chatbot:

1. https://viblo.asia/p/ap-dung-machine-learning-xay-dung-ung-dung-chatbot-cua-rieng-ban-3P0lPk38Zox

2. https://techwithtim.net/tutorials/ai-chatbot/part-1/