Với các tính năng nổi bật, xử lý ngôn ngữ tự nhiên (NLP) dần trở thành một phần không thể thiếu của các thiết bị thông minh, và áp dụng để giải quyết các vấn đề trong nhiều lĩnh vực. Các dự án NLP đang được các viện, công ty tập trung phát triển.

công cụ cho dự án NLP
Xử lý ngôn ngữ tự nhiên (NLP) với các tính năng nổi bật, đang được các viện, công ty tập trung phát triển.

Xử lý ngôn ngữ tự nhiên (NLP) được coi là một giao điểm chung của Ngôn ngữ học, Khoa học máy tính và Trí tuệ nhân tạo (AI). Các ứng dụng của NLP có vai trò quan trọng, bởi chúng xử lý và phân tích một lượng lớn dữ liệu ngôn ngữ giao tiếp của con người. Các hệ thống NLP cũng có thể hiểu được nội dung các cuộc đối thoại, các sắc thái cảm xúc ẩn chứa trong đó, và có thể học tập để tương tác lại với người dùng.

Tầm quan trọng của Xử lý ngôn ngữ tự nhiên (NLP)

Thời đại ngày nay, các hoạt động của con người đều có sự can thiệp của các loại máy móc. Máy móc là nhân tố khiến công việc hiệu quả và chính xác hơn, tuy nhiên khi sử dụng máy móc vẫn có nhiều cản trở, đặc biệt là trong việc giao tiếp giữa chúng với con người. 

Đối với con người, thông thạo ngôn ngữ giao tiếp hàng ngày là tương đối đơn giản, nhưng đối với máy móc để thông thạo ngôn ngữ tự nhiên là một thách thức lớn. Bởi ngôn ngữ là phạm trù của sự sáng tạo và đa dạng, bị ảnh hưởng bởi các yếu tố vùng miền, nên máy móc khó có thể kiểm soát và học hỏi được ngôn ngữ một cách dễ dàng. Vì vậy, NLP ra đời đề giải quyết các vấn đề này. 

Nhiệm vụ của NLP 

Hệ thống NLP có thể thực hiện được nhiều công việc khác nhau, trong nhiều dự án. Các nhiệm vũ cơ bản của NLP có thể kể đến như: 

Mô hình hóa ngôn ngữ (Language modelling – LM)

Mô hình hóa ngôn ngữ (Language modelling – LM) được hiểu là một phân phối xác suất trên các chuỗi từ và câu. Cho một dãy từ với độ dài m có sẵn, mô hình hóa ngôn ngữ là gán một xác suất p cho toàn bộ dãy. Về cơ bản, trong quá trình mô hình hóa ngôn ngữ thực hiện dự đoán từ tiếp theo xảy ra theo trình tự, dựa trên sự xuất hiện của các từ trước đó trong dãy. Mô hình ngôn ngữ cung cấp ngữ cảnh để phân biệt các từ khác nhau nhưng nghe giống nhau về mặt ngữ âm và là lý do tại sao máy móc có thể hiểu được thông tin định tính. Một số ứng dụng của LM bao gồm: Nhận dạng giọng nói, Nhận dạng ký tự quang học, Nhận dạng chữ viết tay, Dịch máy và Sửa lỗi chính tả.

Phân loại tài liệu (Text classification)

Phân loại tài liệu (Text classification) là quá trình gán các danh mục được xác định trước cho tài liệu có sẵn dựa trên nội dung của nó. Điều này có thể thực hiện thủ công hay sử dụng các thuật toán khác nhau. Cho đến nay, phân loại tài liệu là ứng dụng phổ biến nhất của NLP, được sử dụng để phát triển các công cụ khác nhau như trình phát hiện thư rác (Spam),…

Trích xuất thông tin (Information extraction – IE)

Trích xuất thông tin (Information extraction – IE) là quá trình tự động trích xuất thông tin có liên quan từ các tài liệu dạng văn bản không có cấu trúc và / hoặc bán cấu trúc. Ví dụ về các loại tài liệu này bao gồm các sự kiện lịch từ email hoặc danh sách những tài khoản được gắn thẻ trong một bài đăng trên mạng xã hội,… 

Truy xuất thông tin (Information retrieval – IR)

Truy xuất thông tin (Information retrieval – IR) là nhiệm vụ hỗ trợ tìm kiếm các tài liệu được người dùng yêu cầu truy vấn từ một cơ sở dữ liệu lớn có liên quan, chẳng hạn như thanh tìm kiếm của Google. 

Tác nhân trò chuyện (Conversational agent – CA)

Đây là những tác nhân hỗ trợ cuộc hội thoại, được phát triển dựa trên trí tuệ nhân tạo (AI). Trí tuệ nhân tạo liên quan đến việc xây dựng các hệ thống đối thoại mô phỏng các tương tác của con người trong giao tiếp tự nhiên. Ứng dụng của tác nhân trò chuyện chính là các trợ lý ảo hay các hệ thống chatbot tự động của các fanpage. 

Tóm tắt văn bản (Text summarization – TS)

Tự động tóm tắt văn bản là quá trình rút ngắn một tập hợp dữ liệu về mặt tính toán, để tạo ra một tập hợp con đại diện cho thông tin quan trọng nhất hoặc có liên quan trong nội dung gốc. 

Trả lời các câu hỏi (Question answering – QA)

Trả lời câu hỏi và đáp ứng yêu cầu của người dùng một cách chính xác trong thời gian thực là một trong những ứng dụng được sử dụng phổ biến của NLP.

Dịch máy (Machine translation – MT)

Dịch máy (Machine translation – MT) là một trường con của ngôn ngữ học tính toán liên quan đến việc chuyển đổi một đoạn văn bản từ ngôn ngữ này sang ngôn ngữ khác. Một ứng dụng phổ biến của dịch máy chính là Google Dịch.

Mô hình hóa chủ đề (Topic modeling)

Mô hình hóa chủ đề là một kỹ thuật Học máy không giám sát giúp khám phá cấu trúc chủ đề của một cơ sở dữ liệu lớn chứa tài liệu. Ứng dụng này của NLP y là một công cụ khá phổ biến, được sử dụng trên nhiều lĩnh vực khác nhau – như Văn học, và Tin sinh học.

Công cụ cho các dự án NLP

Có rất nhiều công cụ mã nguồn mở cung cấp các thông tin hoặc dữ liệu về văn bản phi cấu trúc (hoặc các dạng ngôn ngữ tự nhiên khác) giúp giải quyết nhiều vấn đề khác nhau. Dưới đây là một số công cụ gợi ý được sử dụng thường xuyên nhân trong các dự án, là khởi đầu tuyệt vời để tiếp cận được với Xử lý ngôn ngữ tự nhiên (NLP) 

Công cụ của dự án NLP: NLTK

Natural Language ToolKit (NLTK) là một trong những nền tảng hàng đầu để xây dựng các chương trình Python để xử lý và phân tích dữ liệu ngôn ngữ của con người. Nó cung cấp giao diện dễ sử dụng cho hơn 50 tài nguyên ngữ liệu và từ vựng như Mạng từ, cùng với một bộ thư viện xử lý văn bản để phân loại, mã hóa, tạo gốc, gắn thẻ, phân tích cú pháp và lập luận ngữ nghĩa,.. Giống như hầu hết công việc của lập trình, việc thành thạo NLTK cần một thời gian nhất định. Có rất nhiều tài nguyên sẵn có để hỗ trợ làm chủ framework, chẳng hạn như cuốn sách Xử lý ngôn ngữ tự nhiên với Python, được viết bởi chính những người tạo ra NLTK – nó có một cách tiếp cận rất thực tế để lập trình cho các tác vụ Xử lý ngôn ngữ tự nhiên .

Một số tác vụ có thể thực hiện với NLTK bao gồm mã hóa, gắn thẻ, tạo gốc, lemmatization, phân tích cú pháp, phân loại, v.v.

Công cụ của dự án NLP: SpaCy

SpaCy được phát hành lần đầu tiên vào tháng 2 năm 2015. So với NLTK được tạo ra vào năm 2001, những người sáng tạo SpaCy có đủ thời gian để tìm hiểu NLTK và chỉ ra những thiếu sót mà NLTK gặp phải, và tiến hành cải tiến chúng. Một trong những cải tiến dễ nhận biết nhất của SpaCy so với NLTK bao gồm các cải tiến về hiệu suất, vì SpaCy sử dụng một số thuật toán mới nhất và tốt hơn.

Ngoài ra, SpaCy được ghi chép rất đầy đủ và được thiết kế để hỗ trợ khối lượng dữ liệu lớn hơn. Nó cũng bao gồm một loạt các mô hình Xử lý ngôn ngữ tự nhiên được đào tạo trước, giúp việc học, giảng dạy và thực hiện Xử lý ngôn ngữ tự nhiên với SpaCy dễ tiếp cận hơn.

Công cụ của dự án NLP: Stanford CoreNLP

CoreNLP là một thư viện cực kỳ phổ biến cho các tác vụ Xử lý Ngôn ngữ Tự nhiên, được xây dựng bởi cộng đồng NLP tại Stanford. Ngược lại với NLTK và SpaCy, được viết bằng Python hoặc Cython tương ứng, CoreNLP được viết bằng Java. CoreNLP cho phép người dùng lấy các chú thích ngôn ngữ cho văn bản, bao gồm mã thông báo và các dấu câu, các phần của lời nói, các thực thể được đặt tên, giá trị số và thời gian, trình phân tích cú pháp và sắc thái cảm xúc trong câu, phân bổ trích dẫn và quan hệ trong câu. CoreNLP hiện hỗ trợ 6 ngôn ngữ: Ả Rập, Trung Quốc, Anh, Pháp, Đức và Tây Ban Nha. 

Một trong những ưu điểm chính của CoreNLP là nó có khả năng mở rộng rất cao, điều này làm cho nó trở thành lựa chọn phù hợp cho các tác vụ phức tạp. Một yếu tố khác là nó được xây dựng chú trọng đến tốc độ – nó được tối ưu hóa để thực hiện tác vụ cực kỳ nhanh.

Công cụ của dự án NLP: Gensim

Gensim được sử dụng để biểu diễn tài liệu dưới dạng vectơ ngữ nghĩa theo những cách hiệu quả nhất và dễ dàng nhất có thể. Các tác giả đã thiết kế Gensim để xử lý văn bản thô, không có cấu trúc bằng cách sử dụng nhiều thuật toán Máy học – vì vậy sử dụng Gensim để tiếp cận các tác vụ như Mô hình hóa chủ đề là một ý tưởng hay. Thêm vào đó, Gensim có thể xử lý rất tốt việc xác định các điểm tương đồng trong văn bản và điều hướng các tài liệu khác nhau.

Gensim có 3 đặc trưng chính, bao gồm: 

Tính thực tiễn – với các nhà sáng lập là các chuyên gia trong ngành, Gensim tập trung vào các thuật toán đã được chứng minh và kiểm chứng để giải quyết các vấn đề thực tế của ngành. Tập trung nhiều hơn vào kỹ thuật, ít hơn về học thuật.

Độc lập với bộ nhớ – không cần toàn bộ kho dữ liệu đào tạo phải nằm hoàn toàn trong RAM cùng một lúc. Gensim có thể xử lý kho dữ liệu lớn, quy mô của website bằng cách sử dụng các phân luồng dữ liệu.

Hiệu suất – triển khai tối ưu hóa cao các thuật toán không gian vectơ phổ biến sử dụng C, BLAS và ánh xạ bộ nhớ.

Công cụ của dự án NLP: TensorFlow & PyTorch

Mặc dù TensorFlow và PyTorch có nhiều điểm khác biệt nhưng chúng đều rất phổ biến với các thuật toán Học sâu (Deep Learning). Tensorflow là phiên bản cũ hơn và được phát triển bởi nhóm Brain của Google, Pytorch là một thư viện mã nguồn mở dựa trên thư viện Torch và được phát triển chủ yếu bởi phòng thí nghiệm Nghiên cứu AI (FAIR) của Facebook.

Công cụ quản lý dự án NLP 

Tương tự như các dự án Học máy, các dự án NLP có tính lặp lại cao. Trong quy trình vòng đời dự án thường xuyên phải lặp lại trên một phần cụ thể cho đến khi hệ thống NLP đáp ứng một số mức hiệu suất nội tại mong muốn. Đánh giá nội tại tập trung hơn vào các mục tiêu trung gian, chẳng hạn như cách thành phần NLP thực hiện trên một nhiệm vụ con đã xác định.

Khi một dự án được triển khai vào môi trường sản xuất, yêu cầu với môi trường thực tế có một số thay đổi và dự án đang thực hiện phải quay trở lại bước trước đó trong vòng đời của dự án để cập nhật (hoặc cải thiện) nó.

Để thực hiện các dự án NLP hiệu quả có các công cụ quản lý dự án giá trị mà các nhà nghiên cứu có thể muốn sử dụng cho các dự án NLP của mình:

NeptuneAI

Neptune.AI là một chương trình đăng ký mô hình và theo dõi thử nghiệm. Sử dụng công cụ này có thể ghi nhật ký, lưu trữ, hiển thị, sắp xếp và truy vấn tất cả siêu dữ liệu Hoạt động Máy học (MLOps).

Neptune AI cung cấp: 

MLFlow

MLFlow có thể sử dụng cùng bất kỳ thư viện Học máy (Machine Learning – ML) nào và với bất kỳ ngôn ngữ lập trình nào, vì tất cả các chức năng có sẵn đều được truy cập thông qua REST API và CLI. MLFlow là một nền tảng mã nguồn mở để quản lý vòng đời học máy từ đầu đến cuối. Nó giải quyết bốn chức năng chính:

Github 

Github được coi như một trang mạng xã hội dành cho các nhà phát triển dự án, giúp cho việc cộng tác trở nên dễ dàng, với các tính năng cho phép lưu trữ và đánh giá mã, quản lý dự án kỹ lưỡng và xây dựng phần mềm thuận tiện. Thông thường, các nhà quản lý và nhà phát triển dự án tận dụng Github để điều phối, theo dõi và cập nhật công việc một cách đồng bộ.

Github cung cấp 7 nhom tính năng chính, bao gồm: 

CometML

Comet.ML là trang web cho phép các Nhà khoa học dữ liệu và nhà phát triển dự án dễ dàng theo dõi, so sánh và tối ưu hóa các mô hình Học máy. Một trong những tính năng phổ biến nhất của CometML là biểu đồ thử nghiệm trực tiếp và bảng điều khiển các thử nghiệm đồng thời so sánh kết quả, cũng như các tính năng giúp người dùng tối ưu hóa mô hình của họ bằng cách tinh chỉnh các siêu tham số.

Comet.ML cho phép người dùng:

Slack 

Slack là một ứng dụng nhắn tin dành cho các doanh nghiệp và các tổ chức trao đổi công việc, được sử dụng trên nhiều thiết bị và nền tảng khác nhau. 

Để giữ cho tất cả các thành viên trong nhóm được liên kết, Slack có nhiều tính năng khác nhau như:

Trên đây là một số thông tin về các công cụ hỗ trợ dự án cũng như ứng dụng của lĩnh vực xử lý ngôn ngữ tự nhiên (NLP) được sử dụng phổ biến bởi các nhà nghiên cứu và phát triển trên toàn thế giới. Hy vọng rằng, với sự phát triển không ngừng của NLP, nhiều tính năng nổi bật phục vụ công việc và cuộc sống sẽ ra đời và phát triển mạnh mẽ trong tương lai. 

Với việc làm chủ công nghệ xử lý ngôn ngữ tự nhiên (NLP) cùng cơ sở dữ liệu đa ngành quy mô lớn, VinBigData tập trung kiến tạo các sản phẩm, giải pháp có tính ứng dụng cao, giải quyết bài toán thực tiễn của người Việt và hướng đến phát triển bền vững. Đặc biệt, hệ sinh thái VinBase gồm các giải pháp trợ lý giọng nói tiếng Việt đa vùng miền ViVi, chatbot, trợ lý ghi chép cuộc họp… hỗ trợ doanh nghiệp tối ưu hóa hoạt động sản xuất kinh doanh, tăng trải nghiệm người dùng.
 Tìm hiểu thêm về VinBase: Tại đây 

Tư liệu tham khảo: NeptuneAI

Tạo lập chatbot là một trong những vấn đề đang được nhiều doanh nghiệp quan tâm thời gian gần đây. Bởi chatbot là một trong những cách gia tăng trải nghiệm khách hàng hiệu quả, với các tính năng đột phá: phản hồi linh hoạt trong thời gian thực, cung cấp thông tin chính xác, giải quyết nhiều yêu cầu cùng lúc,.. Bài viết dưới đây sẽ cung cấp một số phương pháp và quy trình gợi ý để tạo lập hệ thống chatbot thông minh.

Chatbot là gì?

Khi truy cập vào một fanpage trên Facebook, bạn gửi tin nhắn tìm hiểu thông tin và nhận được lời hồi đáp ngay sau đó. Những tin nhắn như vậy có thể không đến từ người quản lý fanpage mà đến từ chatbot. Chatbot là một hình thức trò chuyện được các fanpage ưa chuộng sử dụng bởi tốc độ hồi đáp nhanh, với những thông tin chính xác được lập trình từ trước. Điều này mang đến trải nghiệm tuyệt vời hơn cho người truy cập fanpage khi không phải chờ đợi quá lâu để nhận được câu trả lời mong muốn.

Chatbot, hay còn được gọi là talkbot, chatterbot, bot, bot IM, hay thực thể trò chuyện tự động, là một chương trình máy tính thực hiện một cuộc trò chuyện thông qua việc tiếp nhận thông tin bằng văn bản và giọng nói. Chatbot được thiết kế để mô phỏng các cuộc hội thoại của con người, diễn giải, xử lý yêu cầu của người dùng và cuối cùng đưa ra câu trả lời một cách nhanh chóng. Chatbot được sử dụng trong các hệ thống hội thoại của các fanpage cho nhiều mục đích cụ thể, phổ biến nhất là dịch vụ khách hàng và thu thập thông tin. 

️Phân loại chatbot

Tùy thuộc vào cách lập trình của bot, có 2 loại chat bot

Chatbot dựa trên quy tắc (Rule-Based Chatbot): Với loại chatbot này, quy tắc là đi theo các đường dẫn được định sẵn trong cuộc trò chuyện. Người dùng chọn các tùy chọn sẵn mà bot đưa ra để thực hiện yêu cầu với bot theo từng bước. Bot loại này thường đơn giản và dễ tạo lập hơn.

Chatbots trò chuyện tự động (Self-Learning Chatbot), hay còn gọi là AI chatbot: Sử dụng Trí tuệ nhân tạo (AI) & Học máy (ML) để đưa ra phân tích và dự đoán dựa trên yêu cầu sau đó trò chuyện với người dùng. Mức độ tương tác và cá nhân hóa của chúng cao hơn so với Chatbot dựa trên quy tắc.

Tìm hiểu thêm: AI chatbot là gì và những đột phá so với chatbot thông thường.

Các phương pháp tạo lập chatbot gợi ý

Để đáp ứng và nâng cao trải nghiệm người dùng, AI chatbot là một lựa chọn tuyệt vời của các doanh nghiệp, tổ chức. Trong bài viết này giới thiệu một số định hướng xây dựng AI chatbot phổ biến, được đề xuất sử dụng rộng rãi bởi các nhà nghiên cứu. 

Những nghiên cứu gần đây về chatbot thường phân theo 2 hướng lớn: (1) phương pháp pipeline và (2) phương pháp end-to-end.

Trong phương pháp pipeline, toàn bộ hệ thống chatbot được chia thành nhiều công đoạn, và thành phần khác nhau, chẳng hạn như đọc hiểu ngôn ngữ tự nhiên (Natural Language Understanding – NLU), quản lý hội thoại (Dialog Management) bao gồm theo dõi trạng thái hội thoại (Dialog State Tracking – DST) học các nguyên lý hội thoại (Policy Learning); sinh ngôn ngữ tự nhiên (Natural Language Generation – NLG). Ngược lại với các phương pháp tiếp cận theo pipeline, các phương pháp end-to-end xây dựng một hệ thống hội thoại bằng cách sử dụng một mô hình duy nhất, trong đó ngữ cảnh ngôn ngữ tự nhiên được lấy làm đầu vào và phản hồi ngôn ngữ tự nhiên được tạo ra làm đầu ra.

Rõ ràng, các hệ thống pipeline với cấu trúc mô-đun dễ hiểu và ổn định hơn, do đó được ứng dụng trong thương mại hóa nhiều hơn. Tuy nhiên, với việc yêu cầu ít chú thích hơn, các hệ thống end-to-end có thể trở thành một giải pháp thay thế đầy hứa hẹn trong tương lai. 

Tạo lập chatbot bằng phương pháp Pipeline
Có nhiều đề xuất về phương pháp tạo lập chatbot, nhưng một trong những phương pháp hiện đại và tối ưu nhất hiện nay là pipelines 

Chi tiết quy trình nghiên cứu theo cả 2 phương pháp pipeline và end-to-end như sau: 

Tạo lập chatbot bằng phương pháp Pipeline

Quy trình trong phương pháp Pipelines như sau: 

Ở công đoạn này, NLU có nhiệm vụ phân tích cú pháp của người dùng và đưa chúng thành một biểu diễn ngữ nghĩa có cấu trúc, thường bao gồm các cặp ý định (intent) và các cặp  thuộc tính – giá trị (slot: value). Ý định (intent) ở đây chỉ ra chức năng của lời nói, ví dụ: truy vấn hoặc cung cấp thông tin. Các cặp thuộc tính – giá trị là các yếu tố ngữ nghĩa được đề cập trong câu nói.

Ví dụ: trong câu nói “Bạn có thể giới thiệu một nhà hàng Trung Quốc ở Manhattan không?”, Các cặp thuộc tính – giá trị có thể là (“ẩm thực” : “Trung Quốc”) và (“địa điểm” : “Manhattan”). Ý định ở đây là “cung cấp thông tin”.

Phát hiện ý định (intent detection) và trích xuất thuộc tính – giá trị (slot-value extraction) có thể được giải quyết bằng cách sử dụng Mạng nơ-ron hồi quy (RNN), Mạng nơ-ron tích chập (CNN), Mạng nơ-ron đệ quy, CRF (conditional random fields) hoặc mô hình BERT bên cạnh việc kết hợp cơ chế attention.. 

Ở bước này của quy trình, trình theo dõi trạng thái hộp thoại ước tính mục tiêu của người dùng bằng cách lấy toàn bộ ngữ cảnh hộp thoại làm đầu vào. Trong hầu hết các nghiên cứu gần đây, mục tiêu của người dùng được thể hiện bằng các cặp  thuộc tính – giá trị.

Năm 2013, Henderson từ Đại học Cambridge đã giới thiệu phương pháp học sâu để theo dõi trạng thái hộp thoại, trong đó sử dụng cửa sổ trượt để xuất ra một chuỗi phân phối xác suất trên một số giá trị tùy ý. Tại một số vị trí cố định cho phép áp dụng phân loại để dự đoán giá trị. Đối với các vị trí tự do có thể tạo ra giá trị trực tiếp hoặc dự đoán khoảng giá trị trong lời thoại.

Theo dõi trạng thái hộp thoại cũng có thể được thực hiện bằng cách sử dụng Mạng nơ-ron hồi quy (RNN) và Neural Belief Tracker (NBT), kết hợp một số các phương pháp tiếp cận khác.

Sau khi xác định trạng thái hội thoại, bước tiếp theo là tiến hành đưa ra quyết định hành động tiếp theo của hệ thống. DPL sẽ học các nguyên lý hội thoại của con người bằng các phương thức như học có giám sát hoặc học tăng cường. Ngoài ra, phương pháp tiếp cận dựa trên quy tắc (rule-based) được sử dụng đầu tiên để khởi động hệ thống.

Hiện nay, để học nguyên lý hội thoại hầu như đều dựa vào học tăng cường (RL). Tuy nhiên, việc đào tạo một chính sách học tăng cường đòi hỏi nhiều tương tác với người dùng, điều này tốn nhiều thời gian và chi phí. Do đó, nhiều phương thức tiếp cận khác nhau đã được đề xuất để giải quyết vấn đề này, bao gồm cả việc sử dụng trình mô phỏng người dùng. 

Ở công đoạn này; chúng ta sẽ dùng hành động được quyết định từ nguyên lý đối thoại tạo thành câu nói tự nhiên để phản hồi lại người dùng. Phản hồi tương ứng với một lời thoại của máy tính phải đảm bảo độ chính xác về mặt thông tin, cụ thể và tự nhiên.

Công đoạn này có thể được tiếp cận như một nhiệm vụ xử lý ngôn ngữ có điều kiện, bắt đầu bằng cách đào tạo trước một GPT với kho ngữ liệu quy mô lớn, và sau đó tinh chỉnh (fine-tune) mô hình về các nhiệm vụ sản sinh ngôn ngữ tự nhiên mục tiêu với một số lượng nhỏ các mẫu đã đào tạo.

Tạo lập chatbot bằng phương pháp End-to-end

Phương pháp End-to-end được đề xuất khi người ta nhận thấy một số hạn chế của phương pháp Pipeline. Đầu tiên, liên quan tới vấn đề chỉ định, với phương pháp pipeline thường khó có thể chỉ định các phản hồi của người dùng với mô-đun cụ thể tương ứng. Ngoài ra, các công đoạn có sự phụ thuộc và tương quan lẫn nhau, trong đó bất kỳ thay đổi về dữ liệu hoặc huấn luyện lại một thành phần nào của hệ thống pipeline cũng yêu cầu tất cả các thành phần khác phải được điều chỉnh cho phù hợp.

Những vấn đề này có thể được giải quyết bằng cách xây dựng một mô hình sinh (generative models) mạng nơ-ron cho các hệ thống hội thoại. Hầu hết các phương pháp end-to-end này sử dụng mô hình seq2seq (sequence to sequence).

Tuy nhiên, cách tiếp cận truyền thống của end-to-end yêu cầu  dữ liệu hội thoại rất nhiều và đa dạng  để học các hành vi đối thoại cơ bản của con người.

Trên đây, là một số phương pháp gợi ý được sử dụng rộng rãi để tạo lập Chatbot. Chatbot được dự đoán là sẽ càng ngày càng phổ biến bởi bất kỳ doanh nghiệp nào cũng muốn tối ưu trải nghiệm người dùng. Trong tương lai, Chatbot được kỳ vọng sẽ cải tiến nhiều hơn để phù hợp với tâm lý của người dùng, và sự phong phú của ngôn ngữ. Bạn có quan tâm đến chatbot và muốn phát triển chúng hay không, để lại comment thảo luận với VinBigdata nhé!

Chatbot hiện nay đang là một sản phẩm công nghệ nổi bật, được VinBigdata đầu tư phát triển với những tính năng vượt trội: Xử lý đa ngôn ngữ; tích hợp đa kênh, dễ dàng kết nối với các nền tảng hội thoại có sẵn chỉ bằng vài thao tác; nền tảng điện toán đám mây cho phép mở rộng quy mô không giới hạn, với khả năng xử lý hơn 10,000 yêu cầu cùng lúc; kinh nghiệm đa ngành đã được ứng dụng với hệ sinh thái Vingroup; giao diện thân thiện, đơn giản và dễ sử dụng.Tìm hiểu thêm về Chatbot VinBigdata: Tại đây 

Tư liệu tham khảo: TopBots

Xử lý ngôn ngữ tự nhiên (NLP) là một nhánh của Trí tuệ nhân tạo (AI) cung cấp cho máy tính khả năng hiểu ngôn ngữ viết và nói của con người. Dễ dàng kể đến một số ứng dụng của NLP trong kiểm tra chính tả, tự động điền, phát hiện thư rác, trợ lý ảo trên điện thoại và ô tô. Tuy nhiên, ít ai biết rằng máy móc hoạt động với các con số chứ không phải các chữ cái/từ/câu. Vì vậy, để làm việc với một lượng lớn dữ liệu văn bản có sẵn, tiền xử lý văn bản (text pre-processing) là quá trình cần thiết giúp làm sạch văn bản. Bản thân tiền xử lý văn bản bao gồm nhiều giai đoạn, và một trong số đó là tách từ (hay còn gọi là Tokenization).

Tokenization là gì?

Tokenization (tách từ) là một trong những bước quan trọng nhất trong quá trình tiền xử lý văn bản. Cho dù bạn đang làm việc với các kỹ thuật NLP truyền thống hay sử dụng các kỹ thuật học sâu nâng cao thì vẫn không thể bỏ qua bước này. Nói một cách đơn giản, tokenization là quá trình tách một cụm từ, câu, đoạn văn, một hoặc nhiều tài liệu văn bản thành các đơn vị nhỏ hơn. Mỗi đơn vị nhỏ hơn này được gọi là Tokens. 

Có thể coi tokens là các khối xây dựng của NLP và tất cả các mô hình NLP đều xử lý văn bản thô ở cấp độ các Tokens. Chúng được sử dụng để tạo từ vựng trong một kho ngữ liệu (một tập dữ liệu trong NLP). Từ vựng này sau đó được chuyển thành số (ID) và giúp chúng ta lập mô hình. Tokens có thể là bất cứ thứ gì – một từ (word), một từ phụ (sub-word) hoặc thậm chí là một ký tự (character). Các thuật toán khác nhau tuân theo các quy trình khác nhau trong việc thực hiện mã hóa và sự khác biệt giữa ba loại tokens này sẽ được chỉ ra dưới đây.

Ví dụ: Câu gốc là “Let us learn tokenization.”

Phân loại các kỹ thuật tách từ dựa trên ví dụ cụ thể
Phân loại các kỹ thuật tách từ dựa trên ví dụ cụ thể

Thuật toán mã hóa dựa trên từ (word-based tokenization algorithm) sẽ chia câu thành các từ: [“Let”, “us”, “learn”, “tokenization.”]

Thuật toán mã hóa dựa trên từ phụ (subword-based tokenization algorithm) sẽ chia câu thành các từ khóa phụ: [“Let”, “us”, “learn”, “token”, “ization.”]

Thuật toán mã hóa dựa trên ký tự (character-based tokenization algorithm) sẽ chia câu thành các ký tự, ở đây là từng chữ cái một.

Ba kỹ thuật mã hóa này hoạt động khác nhau và có những ưu điểm và nhược điểm riêng sẽ được phân tích cụ thể bên dưới.

Word-based tokenization

Đây là kĩ thuật tokenization được sử dụng phổ biến trong phân tích văn bản. Nó chia một đoạn văn bản thành các từ (ví dụ tiếng Anh) hoặc âm tiết (ví dụ tiếng Việt) dựa trên dấu phân cách. Dấu phân cách hay được dùng chính là dấu cách trắng. Tuy nhiên, cũng có thể tách văn bản không theo dấu phân cách. Ví dụ tách từ trong tiếng Việt vì một từ trong tiếng Việt có thể chứa 2 hoặc 3 âm tiết được nối với nhau bởi dấu cách trắng.

Tách từ có thể được thực hiện dễ dàng bằng cách sử dụng phương thức split () của RegEx hoặc Python. Ngoài ra, có rất nhiều thư viện Python – NLTK, spaCy, Keras, Gensim, có thể giúp bạn thực hiện việc này một cách thuận tiện.

Thực tế, các mô hình NLP sử dụng các phương pháp tách từ phù hợp theo từng ngôn ngữ. Tuỳ thuộc vào từng bài toán, mà cùng một văn bản có thể được xử lý dưới các loại tokens khác nhau. Mỗi token thường có tính duy nhất và được biểu diễn bằng một ID, các ID này là một cách mã hoá hay cách định danh token trên không gian số.

Hạn chế của kỹ thuật này là nó dẫn đến một kho ngữ liệu khổng lồ và một lượng từ vựng lớn, khiến mô hình cồng kềnh hơn và đòi hỏi nhiều tài nguyên tính toán hơn. Bên cạnh đó, một hạn chế nữa là liên quan đến các từ sai chính tả. Nếu kho ngữ liệu có từ “knowledge” viết sai chính tả thành “knowldge”, mô hình sẽ gán token OOV cho từ sau đó. Do đó, để giải quyết tất cả những vấn đề này, các nhà nghiên cứu đã đưa ra kỹ thuật mã hóa dựa trên ký tự.

Character-based tokenization

Mã hóa dựa trên ký tự chia văn bản thô thành các ký tự riêng lẻ. Logic đằng sau mã hóa này là một ngôn ngữ có nhiều từ khác nhau nhưng có một số ký tự cố định. Điều này dẫn đến một lượng từ vựng rất nhỏ. Ví dụ  tiếng Anh có 256 ký tự khác nhau (chữ cái, số, ký tự đặc biệt) trong khi chứa gần 170.000 từ trong vốn từ vựng. Do đó, mã hóa dựa trên ký tự sẽ sử dụng ít token hơn so với mã hóa dựa trên từ.

Một trong những lợi thế chính của mã hóa dựa trên ký tự là sẽ không có hoặc rất ít từ không xác định hoặc OOV. Do đó, nó có thể biểu diễn các từ chưa biết (những từ không được nhìn thấy trong quá trình huấn luyện) bằng cách biểu diễn cho mỗi ký tự. Một ưu điểm khác là các từ sai chính tả có thể được viết đúng chính tả lại, thay vì có thể đánh dấu chúng là mã thông báo OOV và làm mất thông tin.

Loại mã hóa này khá đơn giản và có thể làm giảm độ phức tạp của bộ nhớ và thời gian. Vì vậy, liệu nó có phải thuật toán tốt nhất hay hoàn hảo để tách từ? Câu trả lời là không (ít nhất là đối với Ngôn ngữ tiếng Anh)! Một ký tự thường không mang bất kỳ ý nghĩa hoặc thông tin nào như một từ. Ngoài ra, tuy kỹ thuật này giúp giảm kích thước từ vựng nhưng lại làm tăng độ dài chuỗi trong mã hóa dựa trên ký tự. Mỗi từ được chia thành từng ký tự và do đó, chuỗi mã hóa dài hơn nhiều so với văn bản thô ban đầu. Vì vậy, có thể thấy, dù đã giải quyết được rất nhiều thách thức mà mã hóa dựa trên từ gặp phải, mã hóa dựa trên ký tự vẫn có một số vấn đề nhất định.

Subword-based tokenization

Một kỹ thuật phổ biến khác là mã hóa dựa trên từ khóa phụ. Đây là một giải pháp nằm giữa mã hóa dựa trên từ và ký tự. Ý tưởng chính là giải quyết đồng thời các vấn đề của mã hóa dựa trên từ (kích thước từ vựng rất lớn, có nhiều tokens OOV, sự khác biệt trong ý nghĩa của các từ rất giống nhau) và mã hóa dựa trên ký tự (chuỗi rất dài và token riêng lẻ ít ý nghĩa hơn).

Các thuật toán mã hóa dựa trên từ khóa phụ sử dụng các nguyên tắc sau.

Hầu hết các mô hình tiếng Anh đều sử dụng các dạng thuật toán của mã hóa từ phụ, trong đó, phổ biến là WordPeces được sử dụng bởi BERT và DistilBERT, Unigram của XLNet và ALBERT, và Bye-Pair Encoding của GPT-2 và RoBERTa.

Mã hóa dựa trên từ khóa phụ cho phép mô hình có kích thước từ vựng phù hợp và cũng có thể học các biểu diễn độc lập theo ngữ cảnh có ý nghĩa. Mô hình thậm chí có thể xử lý một từ mà nó chưa từng thấy trước đây vì sự phân tách có thể dẫn đến các từ phụ đã biết. 

Như vậy, trên đây là cách các phương pháp mã hóa phát triển theo thời gian để đáp ứng nhu cầu ngày càng tăng của NLP và đưa ra các giải pháp tốt hơn cho các vấn đề.

Các kỹ thuật kể trên cũng đang được VinBigdata ứng dụng trực tiếp trong quá trình nghiên cứu, phân tích dữ liệu tiếng nói và chữ viết, từ đó, giải quyết các bài toán về nhận dạng/tổng hợp tiếng nói, dịch máy, hỏi đáp tự động,…. Đây là cơ sở để phát triển nhiều giải pháp mang tính ứng dụng cao như chatbot, voicebot, trợ lý ảo đa năng,…, phục vụ mục tiêu gia tăng trải nghiệm người dùng và tối ưu hóa hiệu quả sản xuất, kinh doanh.

(Nguồn tham khảo: Towards Data Science)