Tải bản đầy đủ (.pdf) (55 trang)

Xác Định lĩnh vực của Ý Định người dùng việt nam sử dụng mô hình học sâu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.55 MB, 55 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>KHOA CÔNG NGHỆ THÔNG TIN </b>

<b>ĐỒ ÁN TỐT NGHIỆP </b>

<b>ĐỀ TÀI </b>

<b>XÁC ĐỊNH LĨNH VỰC CỦA Ý ĐỊNH NGƯỜI DÙNG VIỆT NAM SỬ DỤNG MƠ HÌNH HỌC SÂU</b>

<b>Giảng viên hướng dẫn : TS. Lương Thái Lê Sinh viên thực hiện : Đào Trọng Hiếu </b>

<b>Hà Nội, 2023 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>KHOA CÔNG NGHỆ THÔNG TIN </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN </b>

<i>Giảng viên hướng dẫn </i>

<b>TS.Lương Thái Lê </b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Em xin chân thành gửi lời cảm ơn đến gia đình em, đặc biệt là mẹ đã luôn ủng hộ những lựa chọn của em. Đồng thời em xin cảm ơn những ý kiến đóng góp bổ ích của thầy cơ, bạn bè để em hồn thành đồ án tốt nghiệp này. Dù đã có nhiều cố gắng để hồn thiện nhưng đờ án tớt nghiệp của em khơng tránh khỏi những thiếu sót, em mong nhận được những lời nhận xét và chia sẻ quý báu của thầy cơ để đề tài được hồn chỉnh hơn.

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

Hà Nội, tháng 06 năm 2023 Sinh viên

<b>Đào Trọng Hiếu </b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

CHƯƠNG 1. GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI ... 9

1.1. Lựa chọn đề tài nghiên cứu ... 9

1.2. Nội dung và phạm vi đề tài ... 10

1.2. Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài... 10

1.3. Kết quả dự kiến ... 10

1.4. Tổng quan về xác định lĩnh vực ý định người dùng ... 10

1.5. Công cụ sử dụng nghiên cứu ... 11

2.1. Giới thiệu về học sâu ... 20

2.1.1. Giới thiệu chung ... 20

2.1.2. Mạng nơron nhân tạo ... 20

2.1.3. Các tḥt tốn huấn luyện ... 22

2.1.4. Một sớ mơ hình mạng nơron điển hình ... 23

2.2. Mạng nơron hồi quy RNN ... 26

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

2.3. Mạng Long Short Term Memory LSTM ... 28

2.3. Mạng nơron tích chập CONV ... 33

2.4. Thư viện Tensorflow... 35

CHƯƠNG 3. XÂY DỰNG MƠ HÌNH HỌC SÂU CHO BÀI TỐN XÁC ĐỊNH Ý ĐỊNH NGƯỜI DÙNG VIỆT NAM ... 37

3.1. Nhắc lại bài toán ... 37

3.4.2. Tăng cường dữ liệu ... 41

3.4.3. Tiền xử lí dữ liệu ... 42

3.5. Trích xuất đặc trưng ... 43

3.5.1 Đặc trưng về ngữ nghĩa và từ loại ... 43

3.5.2 Đặc trưng của từ mức ký tự ... 43

3.6 Xây dựng mơ hình học sâu ... 44

3.7. Kết quả thực nghiệm ... 48

3.7.1. Độ đo đánh giá ... 48

3.7.2. Kết quả mơ hình ... 49

3.8. Xây dựng Website tương tác với mơ hình ... 50

3.9. Đóng gói sản phẩm bằng docker ... 50

3.10. Đưa sản phẩm lên Azure Cloud ... 51

KẾT LUẬN ... 52

TÀI LIỆU THAM KHẢO ... 53

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>DANH MỤC TỪ VIẾT TẮT </b>

1 Bi-LSTM Bi-directional Long-Short Term Memory

Bộ nhớ dài ngắn 2 chiều

2 CNN ConvolutionalNeural Network Mạng nơron tích chập

5 NLP Natural Language Processing Xử lí ngơn ngữ tự nhiên 6 RNN Recurrent Nerual NetWork Mạng nơron hồi quy

Programming Interface

Giao diện lập trình ứng dụng

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>DANH MỤC BẢNG BIỂU </b>

<i><b>Bảng 2. 1 Một số hàm kích hoạt thường gặp ... 22</b></i>

<i><b>Bảng 3. 1 Ví dụ miêu tả dự định , ý định ... 37</b></i>

<i><b>Bảng 3. 2 Làm sạch dữ liệu với RE ... 40</b></i>

<i><b>Bảng 3. 3 Tăng cường dữ liệu với nlaug ... 42</b></i>

<i><b>Bảng 3. 4 Phân đoạn từ sử dụng VnCoreNLP ... 43</b></i>

<i><b>Bảng 3. 5 Danh sách các tham số của mơ hình LSTM ... 45</b></i>

<i><b>Bảng 3. 6 Danh sách các tham số của mơ hình CONV1D ... 47</b></i>

<i><b>Bảng 3. 7 Bảng so sánh thực nghiệm giữa 2 mơ hình LSTM và CONV1D ... 49</b></i>

<small> </small>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>DANH MỤC HÌNH ẢNH </b>

<i><b>Hình 1. 1 Kiến trúc docker ... 12</b></i>

<i><b>Hình 1. 2 Microsoft Azure ... 14</b></i>

<i><b>Hình 1. 3 Thư viện Flask ... 18</b></i>

<i><b>Hình 1. 4 Cấu hình phần cứng do Google Colab cung cấp... 19</b></i>

<i><b>Hình 2. 1 Mạng perceptron đơn ... 21</b></i>

<i><b>Hình 2. 2 Quá trình xử lí thơng tin trong mạng RNN ... 27</b></i>

<i><b>Hình 2. 3 RNN phụ thuộc short-term ... 28</b></i>

<i><b>Hình 2. 4 RNN phụ thuộc long-term ... 29</b></i>

<i><b>Hình 2. 5 Các moudule lặp của mạng RNN chứa một layer ... 29</b></i>

<i><b>Hình 2. 6 Các module lặp của mạng LSTM chứa bốn layer ... 30</b></i>

<i><b>Hình 2. 7 Cell state của LSTM giống như một băng truyền ... 30</b></i>

<i><b>Hình 2. 13 Trích xuất đặc trưng mức ký tự từ “Học_sinh” sử dụng CNN ... 35</b></i>

<i><b>Hình 2. 14 Thư viện TensorFlow ... 35</b></i>

<i><b>Hình 3. 2 Mơ hình hóa quy trình đồ án tốt nghiệp ... 39</b></i>

<i><b>Hình 3. 3 Thống kê số lượng của mỗi lớp ý định ... 41</b></i>

<i><b>Hình 3. 4 Kiến trúc mơ hình mạng học sâu với LSTM ... 44</b></i>

<i><b>Hình 3. 5 Kiến trúc mơ hình học sâu với CONV1D... 46</b></i>

<i><b>Hình 3. 6 Mơ tả các độ đo chính xác , độ hồi tưởng ... 49</b></i>

<i><b>Hình 3. 7 Website dự đốn ý định người dùng Việt Nam ... 50</b></i>

<i><b>Hình 3. 8 Cấu hình Dockerfile ... 50</b></i>

<i><b>Hình 3. 9 Giao diện Website khi đưa lên môi trường Azure Cloud ... 51</b></i>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>MỞ ĐẦU </b>

Ngày nay với sự phát triển vượt bậc của công nghệ trong những năm gần đây chúng ta hàng ngày phải tiếp nhận một lượng lớn thông tin đến từ nhiều nguồn khác nhau. Từ mạng xã hội, những bài báo, blog, email, tin nhắn, ... tất cả đều sinh ra một khối lượng dữ liệu khổng lồ và các dữ liệu đó thể hiện ý định của người dùng. Chính vì vậy nhờ có trí tuệ nhân tạo ta có thể xác định được ý định người dùng và đưa ra một số chỉ dẫn đúng với mong muốn của người dùng.

Nhận dạng ý định, còn thường được gọi là phân loại ý định, sử dụng cơng nghệ máy học và xử lí ngôn ngữ tự nhiên để liên kết dữ liệu văn bản với một ý định nhất định. Ví dụ : trong một bài đăng của của người dùng có một câu “Tôi muốn mua một căn nhà ở Long Biên Hà Nội rộng 500m2”, mô hình sẽ học từ dữ liệu người dùng đăng dựa vào các cụm từ chính, chẳng hạn như “một căn nhà” hoặc “Long Biên Hà Nội rộng 500m2” để phân lớp câu văn trên vào lớp “Bất Động Sản”. Do đó, nhận dạng ý định có thể được coi là q trình phân loại văn bản viết dựa trên những gì người dùng mong muốn đạt được.

Phân loại ý định là một yếu tố thay đổi cuộc chơi quan trọng đối với các doanh nghiệp, đặc biệt là liên quan đến trải nghiệm của khách hàng. Ví dụ, hộp trị chuyện là một nền tảng phổ biến sử dụng nhận dạng ý định cho các cuộc trò chuyện bán hàng, hỗ trợ khách hàng … Tự động hóa nhu cầu dịch vụ khách hàng thông qua phân loại ý định cho phép doanh nghiệp mở rộng quy mô và đáp ứng nhu cầu của khách hàng nhanh hơn.

Với những thành công của mạng nơ ron trong xử lý ngôn ngữ tự nhiên, em muốn xây dựng một hệ thống sử dụng các mơ hình trong Deep Learning vào bài tốn xác định lĩnh vực của ý định người dùng Việt Nam.

Đồ án bao gồm các phần được phân chương sau:

<b>Chương 1: Giới thiệu tổng quan đề tài </b>

<b>Chương 2: Phương pháp học sâu với bài toán phân lớp văn bản </b>

<b>Chương 3: Xây dựng mơ hình học sâu cho bài toán xác định ý định của người </b>

dùng Việt Nam

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHƯƠNG 1. GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI </b>

<b>1.1. Lựa chọn đề tài nghiên cứu </b>

Các công nghệ liên tục phát triển và mọi người đang dựa vào chúng ngày càng nhiều cho các tác vụ hàng ngày, điều đó có nghĩa là khới lượng và tính khả dụng của dữ liệu văn bản tiếp tục tăng theo cấp số nhân. Với sự gia tăng của các dịch vụ trực tuyến, các cơng ty rất khó theo kịp tớc độ thu thập dữ liệu chất lượng. Các mơ hình nhận dạng ý định đã được phát triển để tạo điều kiện đánh dấu và phân loại sự rộng lớn của dữ liệu văn bản.

Nhận dạng ý định là một thuật ngữ được sử dụng trong xử lý ngôn ngữ tự nhiên (NLP) để mơ tả mục đích hoặc ý định đằng sau một biểu hiện ngôn ngữ, chẳng hạn như một lời khẳng định hoặc một câu hỏi. Khi có liên quan đến dữ liệu, nhận dạng ý định đề cập đến ý định đằng sau một truy vấn hoặc hành động được thực hiện bằng dữ liệu cụ thể. Ví dụ: người dùng tìm kiếm internet với đới tượng tìm kiếm thơng tin về dịch vụ trên trang web hoặc muốn mua dịch vụ trực tuyến, v.v. phát hiện ý định đằng sau các biểu thức ngôn ngữ là một nhiệm vụ chính trong NLP và có thể được sử dụng để cải thiện Phản ứng mà các hệ thống tự động cung cấp cho con người [1].

Các mơ hình xử lý ngơn ngữ tự nhiên có thể phát hiện ý định đằng sau một biểu thức ngôn ngữ bằng cách tự động học các mẫu trong bộ dữ liệu đào tạo. Điều này đặc biệt hữu ích cho các ứng dụng trò chuyện, chẳng hạn như trợ lý ảo, chatbot, v.v., nơi cần phải hiểu ý định của người dùng để có thể đáp ứng theo nhu cầu của họ. Sau khi tìm hiểu kĩ lưỡng em quyết định lựa chọn “Xác định lĩnh vực của ý định người dùng Việt Nam sử dụng mơ hình học sâu” làm đờ án tớt nghiệp với những lí do sau:

- Đề tài là sự tính lũy kiến thức em học được từ trong suốt thời gian học được các kỳ học trước như : Chuyên đề khoa học máy tính, Trí tuệ nhân tạo, Lập trình Web, Phân tích thiết kế hệ thớng,…

- Dự án với mục tiêu sử dụng mơ hình LSTM, CONV1D (một kiến trúc mơ hình học sâu sử dụng phổ biến cho bài tốn phân lớp văn bản)

- Mang tính thực tiễn, ứng dụng cao cho các doanh nghiệp muốn khai thác các khía cạnh của khách hàng, đưa ra bài tốn kinh doanh hợp lí.

Vì vậy, em lựa chọn đề tài “Xác định lĩnh vực của ý định người dùng Việt Nam sử dụng mơ hình học sâu” làm đờ án tốt nghiệp.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>1.2. Nội dung và phạm vi đề tài </b>

- Xác định lĩnh vực của ý định người dùng Việt Nam

<b>1.2. Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài </b>

- Đề tài đóng góp vai trò quan trọng trong việc nâng cao kiến thức và dần tiếp cận tới việc xây dựng một ứng dụng thực tế cao, giúp ginh viên có thêm những kiến thức, kinh nghiệm, trải nghiệm trong lĩnh vực AI

- Nâng cao khả năng tự học

- Nâng cao khả năng làm việc độc lập

- Củng cố và nâng cao, tiếp thu kiến thức mới, công nghệ mới

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Nắm bắt, phân tích và hiểu các bài đăng về ý định trên phương tiện truyền thông xã hội trực tún là một quy trình gờm bớn giai đoạn: thu thập nguồn dữ liệu, lọc ý định của người dùng, xác định miền ý định, phân tích và trích xuất ý định.

Trong đờ án tớt nghiệp này, em chỉ phân loại các bài viết về ý định vào một trong 13 lĩnh vực chính như “thiết bị điện tử”, ”thời trang”, ”phụ kiện”, ”tài chính”, ”dịch vụ ăn ́ng”, ”trang trí nội thất”, ”tạp hóa”, ”du lịch”, ”khách sạn”, ”tài sản”, ”việc làm”, ”giáo dục”, ”giao thông”, ”sức khỏe và sắc đẹp”, ”thể thao và giải trí”, ”vật nuôi và cây trồng”, ”khác”

Em đã tiến hành thử nghiệm với dữ liệu thược được thu thập tự động từ các diễn đàn thảo luận và các mạng xã hội nổi tiếng. Em đã xây dựng một bộ dữ liệu có nhãn kích thước trung bình gờm các bài viết bằng Tiếng Việt để đánh giá. Các mô hình phân loại được đào tạo bằng cách dử dụng LSTM và CONV1D.

<b>1.5. Công cụ sử dụng nghiên cứu </b>

*Cloud: - Azure

<b>1.5.1. Docker </b>

Docker là một nền tảng cho developers và sysadmin để develop, deploy và run application với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng và môi trường này được gọi là container. Khi cần deploy lên bất kỳ server nào chỉ cần run container của Docker thì application sẽ được khởi chạy ngay lập tức.[6]

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>a) Một sơ khái niệm </b>

<i><b>Hình 1. 1 Kiến trúc docker </b></i>

<b>- Docker Client: là cách tương tác với docker thông qua command trong terminal. </b>

Docker Client sẽ sử dụng API gửi lệnh tới Docker Daemon.

<b>- Docker Daemon: là server Docker cho yêu cầu từ Docker API. Nó quản lý </b>

images, containers, networks và volume.

<b>- Docker Volumes: là cách tốt nhất để lưu trữ dữ liệu liên tục cho việc sử dụng </b>

và tạo apps.

<b>- Docker Registry: là nơi lưu trữ riêng của Docker Images. Images được push </b>

vào registry và client sẽ pull images từ registry. Có thể sử dụng registry của riêng bạn hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure.

<b>- Docker Hub: là Registry lớn nhất của Docker Images ( mặc định). Có thể tìm </b>

thấy images và lưu trữ images của riêng bạn trên Docker Hub ( miễn phí).

<b>- Docker Repository: là tập hợp các Docker Images cùng tên nhưng khác tags. </b>

VD: golang:1.11-alpine.

<b>- Docker Networking: cho phép kết nới các container lại với nhau. Kết nới này </b>

có thể trên 1 host hoặc nhiều host.

<b>- Docker Compose: là công cụ cho phép run app với nhiều Docker containers 1 </b>

cách dễ dàng hơn. Docker Compose cho phép bạn config các command trong file docker-compose.yml để sử dụng lại. Có sẵn khi cài Docker.

<b>- Docker Swarm: để phối hợp triển khai container. </b>

<b>- Docker Services: là các containers trong production. 1 service chỉ run 1 image </b>

nhưng nó mã hoá cách thức để run image — sử dụng port nào, bao nhiêu bản sao container run để service có hiệu năng cần thiết và ngay lập tức.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>b) Dockerfile </b>

Dockerfile là file config cho Docker để build ra image. Nó dùng một image cơ bản để xây dựng lớp image ban đầu. Một số image cơ bản: python, unbutu và alpine. Sau đó nếu có các lớp bổ sung thì nó được xếp chồng lên lớp cơ bản. Cuối cùng một lớp mỏng có thể được xếp chờng lên nhau trên các lớp khác trước đó.[6]

Các config :

<b>- FROM — chỉ định image gốc: python, unbutu, alpine… </b>

<b>- LABEL — cung cấp metadata cho image. Có thể sử dụng để add thông tin </b>

maintainer. Để xem các label của images, dùng lệnh docker inspect.

<b>- ENV — thiết lập một biến môi trường. </b>

<b>- RUN — Có thể tạo một lệnh khi build image. Được sử dụng để cài đặt các </b>

package vào container.

<b>- COPY — Sao chép các file và thư mục vào container. - ADD — Sao chép các file và thư mục vào container. </b>

<b>- CMD — Cung cấp một lệnh và đối số cho container thực thi. Các tham sớ có </b>

thể được ghi đè và chỉ có một CMD.

<b>- WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như: </b>

RUN, CMD, ENTRYPOINT, COPY, ADD,…

<b>- ARG — Định nghĩa giá trị biến được dùng trong lúc build image. - ENTRYPOINT — cung cấp lệnh và đối số cho một container thực thi. </b>

<b>- EXPOSE — khai báo port lắng nghe của image.- VOLUME — tạo một điểm </b>

gắn thư mục để truy cập và lưu trữ data.

<b>1.5.2. Microsoft Azure </b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>a) Microsoft Azure là gì? </b>

<i><b>Hình 1. 2 Microsoft Azure </b></i>

Azure là một nền tảng điện toán đám mây được Microsoft ra mắt vào năm 2010.

<b>Các công cụ của Azure hỗ trợ người dùng lưu trữ dữ liệu không giới hạn, phát triển ứng </b>

dụng, quản lý dịch vụ trên internet mà không cần tới bộ nhớ và phần cứng máy tính cá nhân. Mọi hoạt động đều thực hiện và xử lý thông qua trung tâm dữ liệu của Microsoft.[7]

Tại Mỹ, có tới 90% công ty lớn nhất đất nước thuộc danh sách Fortune 500 đang sử dụng Microsoft Azure để thúc đẩy hoạt động kinh doanh. Các doanh nghiệp có thể tận dụng một loạt cơng cụ để nhanh chóng xây dựng, triển khai, quản lý các ứng dụng vận hành.

So với các nền tảng đám mây khác, Azure mở rộng hơn, bảo mật hơn và mạnh mẽ hơn: - Kết hợp 3 dạng mô hình đám mây là IaaS (Cơ sở hạ tầng dưới dạng dịch vụ), PaaS (Nền tảng dưới dạng dịch vụ), SaaS (Phần mềm dưới dạng dịch vụ).

- Linh hoạt, có thể di chuyển các tài các tài nguyên máy tính khi cần thiết.

- Nền tảng mở, hỗ trợ hầu hết mọi hệ điều hành, mọi ngơn ngữ lập trình, mọi cơng cụ.

- Đáng tin cậy, SLA (cam kết chất lượng dịch vụ) đạt 99,95% và hỗ trợ 24/7. - Khi được cấp quyền truy cập, người dùng có thể khai thác, sử dụng các dữ liệu và dịch vụ đã đưa lên Azure từ mọi khu vực trên thế giới

Các tính năng nổi bật của Azure:

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

- Sao lưu và khôi phục sau thảm họa

- Lưu trữ, phát triển ứng dụng web và thiết bị di động. Quản lý bản vá tự động, AutoScale.

- Active Directory: Tạo khả năng tiếp cận toàn cầu, quản lý tập trung, nhất quán và bảo mật mạnh mẽ.

- Tính năng Azure IoT Hub giúp đổi mới các giải pháp cơng nghiệp chuyển đổi sớ

<b>b) Những lợi ích tuyệt vời khi sử dụng Azure </b>

Microsoft Azure cung cấp một loạt các dịch vụ hữu ích như máy ảo (Virtual Machines), cơ sở dữ liệu SQL[7], dịch vụ miền, dịch vụ ứng dụng, dịch vụ nhóm Visual Studio và lưu trữ.

Hiện nay, có nhiều doanh nghiệp không muốn làm việc và lưu trữ dữ liệu trên điện toán đám mây vì lo ngại về rủi ro an ninh mạng, SAL và các sự cố tiềm ẩn. Tuy nhiên với những ưu điểm về tốc độ và bảo mật của Azure, những vấn đề này sẽ chẳng còn hiện hữu.

Azure hỗ trợ triển khai, quản lý các giải pháp CNTT hiện tại của doanh nghiệp; đồng thời cung cấp thêm nhiều giải pháp tùy chỉnh khác để giúp các công ty đạt được mục tiêu kinh doanh tốt nhất:

- Phát triển ứng dụng

- Hiện đại hóa các ứng dụng web

- Cung cấp Kubernetes không máy chủ, trải nghiệm CI/CD cũng như bảo mật và quản trị cấp doanh nghiệp

- Di chuyển dữ liệu qua đám mây

- Di chuyển Windows Server và SQL Server - Di chuyển cơ sở dữ liệu nguồn mở và Linux

- SAP: Sử dụng máy ảo Azure chạy SAP HANA lớn nhất thế giới. Có thể chuyển hàng trăm terabyte sang SAP chỉ trong vòng 1 ngày. Giúp tăng dung lượng và giảm chi phí hoạt động thơng qua việc ngừng hoạt động của các máy chủ vật lý.

- Dữ liệu, phân tích và AI

- Di chuyển kho dữ liệu sang Azure - Kết hợp cơ sở hạ tầng và đám mây - Azure Virtual Desktop (Máy ảo)

- Azure hỗ trợ các cơng nghệ mã ng̀n mở, vì vậy người dùng có thể sao lưu mọi loại ngơn ngữ trên mọi hệ điều hành, tại bất kỳ vị trí nào trên thế giới.

- Người dùng có thể sử dụng nhiều công cụ quen thuộc như Visual Studio, ASP.NET và các ngôn ngữ lập trình như Visual Basic, C ++, C #,… để phát triển các ứng dụng doanh nghiệp thật hiệu quả.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

- Azure mang lại năng suất không giới hạn, cung cấp các dịch vụ lưu trữ linh hoạt, an toàn, bảo mật và hiệu quả trên đám mây.

- Các ứng dụng luôn hoạt động dễ dàng với quy mơ lên đến 10 triệu người dùng. Chúng có thể được tạo mà khơng cần mã hóa bổ sung.

- Azure tạo nền tảng nhất quán đáng tin cậy giữa đám mây tại chỗ và đám mây công cộng. Đồng thời cung cấp nhiều loại kết nối hỗn hợp bao gồm mạng riêng ảo (VPN), bộ nhớ đệm, mạng phân phối nội dung (CDN) và kết nối ExpressRoute để cải thiện khả năng sử dụng và hiệu suất.

- Azure cung cấp các dịch vụ dữ liệu SQL, NoSQL, đồng thời hỗ trợ khai thác, đào sâu hơn vào dữ liệu để cải thiện quy trình và tăng trưởng kinh doanh nhanh chóng. Đây là nền tảng đám mây duy nhất cung cấp các công nghệ của Blockchain dưới dạng Dịch vụ (BaaS), Máy học, Bots và API.

- Nền tảng đám mây của Microsoft hỗ trợ các giao thức Internet và các tiêu chuẩn mở như XML, SOAP, REST và HTTP. Có một bộ phát triển phần mềm cho Java, PHP và Ruby có sẵn cho các ứng dụng được viết bằng các công cụ Azure.

- Nền tảng của Azure luôn bảo mật và bảo vệ quyền riêng tư. Sự phát triển của Microsoft mang lại mức độ tin cậy cao và đảm bảo tính minh bạch cũng như vòng đời SDL.

- Azure được đánh giá là cung cấp phạm vi tuân thủ tốt nhất trong số hơn 50 dịch vụ tuân thủ và là nền tảng đám mây đáng tin cậy nhất của các tổ chức chính phủ Hoa Kỳ.

- Ngồi ra, đây là nền tảng đầu tiên áp dụng tiêu chuẩn quốc tế mới về quyền riêng tư trên Đám mây, ISO 27018. Do đó, Microsoft đảm bảo tốt nhất về mặt an toàn cho tất cả các hoạt động và dữ liệu trên Azure Cloud.

Sau khi hết thời hạn dùng thử, có thể nâng cấp gói đăng ký và tiếp tục đờng hành với Azure theo gói dịch vụ trả sau bằng cách lựa chọn chính sách “Pay as you go”.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>1.5.3. Selenium </b>

Selenium là một bộ công cụ kiểm thử tự động open source, dành cho các ứng dụng web, hỗ trợ hoạt động trên nhiều trình duyệt và nền tảng khác nhau như Windows, Mac, Linus… Với Selenium, có thể viết các testscript bằng các ngơn ngữ lập trình khác nhau như Java, PHP, C#, Ruby hay Python hay thậm chí là Perl…[8]

Selenium được sử dụng để automate các thao tác với trình duyệt, hay dễ hiểu hơn là nó giúp giả lập lại các tương tác trên trình duyệt như một người dùng thực sự. Ví dụ bạn có thể lập trình để tự động bật trình duyệt, open một link, input dữ liệu, hay get infor page, upload, download dữ liệu từ trên web page[8]. Với selenium bạn có thể làm đc rất nhiều thứ. Hơn thế nữa, bạn có thể sử dụng, tùy biến để tận dụng tới đa sức mạnh của nó. Ngồi mục đích sử dụng trong kiểm thử, bạn có thể tự xây dựng một project để automate những công việc nhàm chán.

Selenium là một khái niệm chung về một bộ phần mềm được sử dụng trong automation, mỗi loại trong đó đáp ứng một yêu cầu testing khác nhau. Về cơ bản thì Selenium có 4 thành phần:

<b>- Selenium IDE: Selenium Integreted Development Environment (IDE), là một </b>

plug-in trên trình duyệt Fire-Fox, ta có thể sử dụng để record và play back lại các thao tác đó theo một quy trình hay một test case nào đó.

<b>- Selenium RC: Selenium Remote Control (RC), Selenium server khởi chạy và </b>

tương tác với trình duyệt web.

<b>- WebDriver: Selenium WebDriver gửi lệnh khởi chạy và tương tác trực tiếp tới </b>

các trình duyệt mà khơng cần thơng qua một server như Selenium RC.

<b>- Selenium Grid: Selenium Hub dùng để khởi chay nhiều các test thông qua các </b>

máy và các trình duyệt khác nhau tại cùng một thời điểm.

Năm 2008, Selenium team đã quyết định gộp Selenium RC và WebDriver để tạo ra Selenium 2 với nhiều tính năng mạnh mẽ hơn, mà hiện nay phần lớn các project Selenium đều sử dụng.

Trong đờ án tớt nghiệp em có sử dụng Selenium để crawl dữ liệu ý định người dùng từ nhiều ng̀n khác nhau . Ví dụ: webtretho.com/, facebook.com/, chotot.com…

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>1.5.4. FLASK </b>

<i><b>Hình 1. 3 Thư viện Flask </b></i>

Flask là một Web Framework rất nhẹ của Python, dễ dàng giúp người mới bắt đầu học Python có thể tạo ra website nhỏ. Flask cũng dễ mở rộng để xây dựng các ứng dụng web phức tạp.[9]

Flask có nền tảng là Werkzeug và Jinja2 và nó đã trở thành một trong những Web Framework phổ biến nhất của Python.

Flask cung cấp cho các lập trình viên khả năng tùy biến khi phát triển ứng dụng web, nó cung cấp cho bạn các cơng cụ, thư viện và cơ chế cho phép bạn xây dựng một ứng dụng web

Ứng dụng web có thể là blog, trang web thương mại hoặc một sớ trang web khác, nó vẫn cho phép các lập trình viên cơ hội sử dụng một sớ tiện ích mở rộng để thêm nhiều chức năng hơn cho ứng dụng web.

Để ứng dụng có thể tương tác được với mô hình sau khi được huấn luyện thì em cần chuẩn bị một dịch vụ ứng dụng Website để tương tác với model. Sau khi chọn lựa kĩ lưỡng em quyết định sẽ sử dụng Flask của python với những lý do sau:

- Tốc độ

- Hỗ trợ cho NoQuery - Độ phức tạp tối thiểu

- Chủ nghĩa tối giản tuyệt đới

- Khơng có ORM, dễ dàng kết nới với tiện ích mở rộng - Trình gỡ lỗi được nhúng trong trình duyệt

- Mã ngắn và đơn giản trong số các bộ xương Python khác

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>1.5.5. Google Colab </b>

Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google Research, nó cho phép chạy các dịng code python thơng qua trình duyệt, đặc biệt phù hợp với Data analysis, machine learning và giáo dục. Colab không cần yêu cầu cài đặt hay cấu hình máy tính, mọi thứ có thể chạy thơng qua trình duyệt, bạn có thể sử dụng tài ngun máy tính từ CPU tớc độ cao và cả GPUs và cả TPUs đều được cung cấp cho bạn.

Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s and P100s, tuy nhiên người dùng không thể chọn loại GPU trong Colab, GPU trong Colab thay đổi theo thời gian. Vì là dịch vụ miễn phí, nên Colab sẽ có những thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống, cũng như giới hạn thời gian sử dụng, thời gian sử dụng tới đa lên tới 12 giờ.[10]

<i><b>Hình 1. 4 Cấu hình phần cứng do Google Colab cung cấp </b></i>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>CHƯƠNG 2. PHƯƠNG PHÁP HỌC SÂU VỚI BÀI TOÁN PHÂN LỚP VĂN BẢN </b>

<b>2.1. Giới thiệu về học sâu </b>

<b>2.1.1. Giới thiệu chung </b>

Học sâu (Deep Learning) là phạm trù nhỏ của học máy (Machine Learning - ML) dựa trên việc sử dụng mạng nơron và một tập hợp các thuật toán để mơ hình hố dữ liệu ở các mức trừu tượng khác nhau, qua đó giải quyết được nhiều bài toán mà các mơ hình học khơng sâu trùn thớng khó có thể giải qút được như thị giác máy tính, nhận diện giọng nói, xử lý ngơn ngữ tự nhiên, nhận dạng âm thanh ngôn ngữ và tin sinh học. Các mơ hình học sâu có thể đạt được độ chính xác cao, đơi khi vượt q hiệu suất của con người. Các mô hình được huấn luyện bằng cách sử dụng một bộ dữ liệu có nhãn và các cấu trúc mạng thần kinh có nhiều lớp. Các mơ hình học sâu khơng chỉ có khả năng mở rộng mạng nơron mà cịn có cả tính năng học tập – khai thác các đặc trưng tự động từ dữ liệu thơ, nên nó địi hỏi sớ lượng lớn dữ liệu có nhãn và sức mạnh tính tốn đáng kể.

Kiến trúc cơ bản của học sâu là mạng nơron nhân tạo và có rất nhiều biến thể từ chúng, hầu hết là các nhánh sinh ra từ kiến trúc ban đầu như: mang nơron sâu (Deep Neural Network), mạng niềm tin sâu (Deep Belief Network), Mạng nơron tích chập (Convolutional neural networks - CNN), mạng niềm tin sâu tích chập (Convolutional Deep Belief Network), mạng nơron lưu trữ và truy xuất bộ nhớ lớn (Large Memory Storage And Retrieval Neural Network), các máy Deep Boltzmann,…

<b>2.1.2. Mạng nơron nhân tạo </b>

Mạng nơron nhân tạo là một mơ hình tốn học được xây dựng để mô phỏng lại kiến trúc và hành vi của nơron sinh học trong não người. Nó là một hệ thống các nơron nhân tạo nối với nhau thành các lớp và xử lý thông tin bằng cách truyền theo các kết nối giữa các nơron.

Để dễ dàng giải thích các thành phần của mạng nơron, tơi sẽ lấy ví dụ về một mạng nơron đơn giản là mạng perceptron đơn (xem Hình 2.1) do Rosenblatt đưa ra vào năm 1957. Kiến trúc và hành vi của perceptron rất giống với nơron sinh học và thường được coi là dạng cơ bản nhất của mạng nơron. Các loại mạng nơron khác đã được phát triển dựa trên perceptron, và chúng vẫn đang tiếp tục phát triển cho tới hiện nay [2].

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<i><b>Hình 2. 1 Mạng perceptron đơn </b></i>

<b>a) Nơron </b>

Tương tự như kiến trúc và hành vi của nơron sinh học, một nơron nói chung và một perceptron nói riêng có các đầu vào và các đầu ra. Thông tin từ đầu vào đi qua nơron sẽ được biến đổi, sau đó đi ra tại đầu ra. Nói cách khác, một nơron là một tập hợp các hàm biến đổi toán học để biến đổi đầu vào thành đầu ra mong muốn. Trong ví dụ trên, mạng perceptron đơn được cấu tạo từ một perceptron duy nhất, sử dụng hàm tính tổng và một hàm phi tuyến ƒ, hoạt động như một bộ phân lớp nhị phân với đầu vào là một vectơ đặc trưng [<i><small>x x x</small></i><sub>1</sub><small>,</small> <sub>2</sub><small>,</small> <sub>3</sub>] và đầu ra là xác suất p của một sự kiện nhất định.

<b>b) Trọng số </b>

Mỗi đầu vào trong vectơ đặc trưng được gán với một trọng số tương đối (w) thể hiện ảnh hưởng của nó đới với hàm tính tổng. Trong sớ các đầu vào, một sớ cái có ảnh hưởng lớn hơn sẽ có trọng sớ lớn hơn, ngược lại thì trọng sớ sẽ nhỏ hơn. Độ lệch <small>w</small><sub>0</sub> <small></small><i><small>b</small></i>

cũng được tính vào tổng như một trọng sớ. Giá trị tổng s được tính như sau:

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

(0,1) TanH <i><small>f x</small></i>

 

<small>tanh</small>

 

<i><small>x</small><sup>e</sup><sup>s</sup><sub>s</sub><sup>e</sup><sup>s</sup><sub>s</sub></i>

<b>2.1.3. Các thuật toán huấn luyện </b>

Như đã đề cập, bên cạnh mạng nơron, một mơ hình học sâu cần có các tḥt toán để huấn luyện mạng nơron đó.

<b>b) Lan truyền ngược và hàm tối ưu hố </b>

Sai sớ 𝐽(w) là một hàm với đầu vào là các tham số nội mơ hình (các trọng sớ và độ lệch). Để dự đốn chính xác, ta cần giảm thiểu sai sớ, tức tìm w để 𝐽(w) đạt giá trị cực tiểu. Trong mạng nơron, điều này được thực hiện bằng lan truyền ngược. Sai số tại lớp hiện tại thường được truyền ngược lại lớp trước đó để thay đổi các trọng số và

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

độ lệch sao cho sai số giảm đi. Các trọng số được thay đổi bằng cách sử dụng một hàm gọi là hàm tới ưu hố.

Các hàm tới ưu hố thường tính độ dớc (gradient), tức là tính đạo hàm riêng của hàm mất mát đối với trọng số, và trọng số được thay đổi theo hướng ngược lại của độ dớc tính được. Việc này được lặp lại cho đến khi chúng ta đạt đến giá trị cực tiểu của hàm mất mát.

<small>( )</small>

<b>2.1.4. Một số mô hình mạng nơron điển hình </b>

Việc xây dựng mạng nơron chỉ dựa trên perceptron sẽ khiến số lượng trọng sớ (weight) của mơ hình trở nên rất lớp, giữa hai lớp có 𝑘 và 𝑚 nơron sẽ tồn tại 𝑘 ∗ 𝑚 kết nối giữa các nơron. Bên cạnh đó, các nơron trong cùng một lớp nơron lại khơng hề có kết nối. Do vậy, sau này các nhà nghiên cứu đã tạo ra một sớ mơ hình mạng nơron để giải quyết những vấn đề này.

<b>a) Mạng nơron tích chập </b>

Mạng nơron tích chập (Convolutional Neural Network – CNN) là một tập hợp các lớp tích chập (Convolutional layer), thường được sử dụng để nắm bắt các đặc trưng ở mức cụm 𝑘 từ (𝑘-gram).

Các lớp tích chập hoạt động như sau. Đầu vào là các câu <i>x</i> dưới dạng một vectơ

<small>w , w ,.., w12</small> <i><sub>m</sub></i>

<small>, w</small><i><sub>i</sub><sup>d</sup></i>

<i><small>x</small></i><small></small> giả sử <i><small>l</small></i> là kích thước cửa sổ của nơron trong lớp tích chập (hay còn gọi là nhân tích chập – convolutional kernel) thì vectơ của cửa sổ thứ i

<small>(</small><i><small>q</small><sub>i</sub></i><small></small> <i><sup>d l</sup></i><sup></sup><small>)</small> được tính bằng cách nối các vectơ đầu vào trong cửa sổ đó:

<b>b) Mạng nơron hồi quy </b>

Mạng nơron hồi quy (Recurrent Neural Network - RNN) có thể xử lý các chuỗi đầu vào có độ dài tuỳ ý thông qua ứng dụng đệ quy (recursive application) của một hàm chuyển tiếp trên một vectơ trạng thái ẩn ℎ<sub>𝑡</sub>.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

Tại thời điểm 𝑡, trạng thái ẩn ℎ<sub>𝑡 </sub>là một hàm của vectơ đầu vào 𝑥<sub>𝑡 </sub>mà mạng nhận được tại thời điểm 𝑡 và trạng thái ẩn trước đó của nó là ℎ<small>𝑡−1</small>. Ví dụ, vectơ đầu vào 𝑥<sub>𝑡 </sub>có thể là vectơ đại diện của từ thứ 𝑡 trong câu. Trạng thái ẩn ℎ<sub>𝑡 </sub>∈ ℝ<small>𝑑</small> có thể hiểu như là một biểu diễn phân tán 𝑑 chiều của chuỗi các dấu hiệu quan sát được đến thời điểm 𝑡.

Thông thường, hàm chuyển tiếp của RNN là một chuyển tiếp toàn vẹn (affine transformation) theo sau bởi một phi tuyến rời rạc (pointwise non-linearity) như hàm tiếp tuyến hyperbol

ℎ𝑡 = tanh(W𝑥𝑡 + 𝑈ℎ𝑡−1 + 𝑏)

Thật không may, một vấn đề với RNN với các hàm chuyển tiếp dưới dạng này là trong quá trình huấn luyện, các thành phần của vectơ gradient có thể phát triển hoặc phân rã theo cấp số mũ trên các chuỗi dài. Vấn đề bùng nổ hoặc biến mất gradient làm cho mơ hình RNN khó có thể học các tương quan có khoảng cách lớn trong một chuỗi.

<b>c) Mạng bộ nhớ dài ngắn </b>

<b>Kiến trúc bộ nhớ dài-ngắn (Long-Short Term Memory – LSTM) giải quyết vấn </b>

đề học phụ thuộc lâu dài bằng cách giới thiệu một tế bào nhớ có khả năng bảo toàn trạng thái trong một thời gian dài. Trong khi nhiều biến thể LSTM đã được mơ tả, khóa ḷn sẽ mô tả phiên bản được sử dụng bởi Tai et al.[3]

Ta định nghĩa đơn vị (unit) LSTM tại mỗi thời điểm 𝑡 là một tập các vectơ trong ℝ<small>𝑑</small>: một cổng vào (input gate) i<sub>𝑡</sub>, một cổng quên (forget gate) ƒ<sub>𝑡</sub>, một cổng ra (output gate) o<sub>𝑡,</sub> một tế bào nhớ (memory cell) 𝑐<sub>𝑡</sub> và một trạng thái ẩn ℎ<sub>𝑡</sub>. Các đầu vào của các vectơ cổng i<small>𝑡</small>, ƒ<sub>𝑡 </sub>và o<sub>𝑡 </sub>có giá trị trong đoạn [0,1]. Ta gọi 𝑑 là chiều nhớ (memory dimension) của LSTM.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

Các phương trình chuyển tiếp của LSTM như sau:

i𝑡 = 𝜎(W<small>(i)</small>𝑥𝑡 + 𝑈<small>(i)</small>ℎ𝑡−1 + 𝑏<small>(i)</small>), ƒ𝑡 = 𝜎(W(ƒ)𝑥𝑡 + 𝑈(ƒ)ℎ𝑡−1 + 𝑏(ƒ)),

o𝑡 = 𝜎(W(o)𝑥𝑡 + 𝑈(o)ℎ𝑡−1 + 𝑏(o)), 𝑢𝑡 = tanh(W<small>(𝑢)</small>𝑥𝑡 + 𝑈<small>(𝑢)</small>ℎ<small>𝑡−1</small> + 𝑏<small>(𝑢)</small>),

𝑐𝑡 = i𝑡 ⊙ 𝑢𝑡 + ƒ𝑡 ⊙ 𝑐𝑡−1, ℎ𝑡 = o𝑡 ⊙ tanh(𝑐𝑡),

trong đó 𝑥<sub>𝑡 </sub>là đầu vào tại thời điểm hiện tại, 𝜎 biểu thị hàm logistic sigmoid và ⊙ biểu thị phép nhân các phần tử. Một cách trực quan, cổng quên điều khiển mức độ mà các tế bào nhớ trước đó bị lãng quên, cổng vào kiểm soát mỗi đơn vị được cập nhật bao nhiêu, và cổng ra kiểm soát sự thể hiện ra ngoài của trạng thái bộ nhớ trong. Vì thế, vectơ trạng thái ẩn trong một đơn vị LSTM phản ánh một phần trạng thái của tế bào nhớ trong của đơn vị. Vì giá trị của các biến cổng thay đổi cho mỗi phần tử vectơ nên mơ hình có thể học để biểu diễn thơng tin trên nhiều khoảng thời gian.

Bộ nhớ dài-ngắn hai chiều (Bi-directional LSTM – Bi-LSTM)[3] là một biến thể của kiến trúc LSTM cơ bản. Bi-LSTM bao gồm hai LSTM chạy song song: một trên chuỗi đầu vào và một trên nghịch đảo của chuỗi đầu vào. Tại mỗi thời điểm, trạng thái ẩn của Bi-LSTM được nối từ các trạng thái thái ẩn phía trước và phía sau. Thiết lập này cho phép trạng thái ẩn nắm bắt cả thông tin trong quá khứ lẫn tương lai.

Bộ nhớ dài-ngắn nhiều lớp (Multilayer LSTM)[3]: Trong kiến trúc bộ nhớ dài ngắn nhiều lớp, trạng thái ẩn của một đơn vị LSTM trong lớp 𝑙 được sử dụng như đầu vào của lớp LSTM 𝑙 + 1 trong cùng thời điểm. Ở đây, ý tưởng này để cho các lớp cao hơn nắm bắt các phụ thuộc dài hơn của chuỗi đầu vào.

</div>

×