du lịch, hay kinh doanh mua bán với các đối tác nước ngoài, đặc biệt người ngoạiquốc khi đến Việt Nam để họ có thể hiểu và dễ dàng giao tiếp với người Việt thìcần có một ứng dụng giúp nh
GIỚI THIỆU TỔNG QUAN
Mục tiêu của đồ án
Mục tiêu đề tài nhằm xây dựng một ứng dụng hỗ trợ người Việt nhận dạng nhiều ngôn ngữ khác nhau và có thể dịch các thông tin độ chính xác cao Tạo ra một ứng dụng có khả năng hiểu và phản hồi tự nhiên.
- Đầu vào là một đoạn hoặc một câu văn bản ngôn ngữ cần dịch.
- Thu thập tìm kiếm dữ liệu huấn luyện hoặc kho ngữ liệu.
- Xử lý đưa ra kết quả ngôn ngữ đầu vào là ngôn ngữ gì, sau đó tiếp tục dịch.
- Chuyển đổi thông tin đầu vào và dịch sang ngôn ngữ người dùng lựa chọn.
- Xử lý dữ liệu trả về kết quả một câu hoặc một đoạn văn bản theo ngôn ngữ người dùng mong muốn.
Tính mới, tính ứng dụng
Nhận dạng và dịch thuật nhiều ngôn ngữ khác nhau là một quá trình quan trọng và cần thiết trong việc truyền tải thông tin giao tiếp giữa các ngôn ngữ Giúp kết nối và thúc đẩy sự giao lưu văn hóa, kinh tế, xã hội giữa các quốc gia và cộng đồng đa văn hóa Mang lại nhiều lợi ích cho cá nhân, doanh nghiệp và cộng đồng Đầu tiên, mở ra cơ hội kinh doanh và thương mại quốc tế Việc nhận dạng và dịch thuật từ tài liệu , website hoặc thông tin sản phẩm từ ngôn ngữ gốc sang ngôn ngữ như mong muốn giúp các công ty và cá nhân có thể tiếp nhận và tương tác với khách hàng quốc tế một cách dễ dàng Ngoài ra ứng dụng đóng vai trò quan trọng trong lĩnh vưc nghiên cứu và giáo nước Sự phát triển của trợ lý ảo tiếng Việt mang lại những tiến bộ trong khả năng hiểu và phản hồi ngôn ngữ, từ đó nâng cao trải nghiệm người dùng và khả năng hỗ trợ người dùng vào các tình huống thực tế.
- Công nghệ thông tin: Có thể được sử dụng trong lĩnh vực công nghệ thông tin để cung cấp hỗ trợ kỹ thuật, giải đáp câu hỏi về máy tính, phần mềm, lập trình và các vấn đề liên quan đến công nghệ.
- Tài chính và ngân hàng: Có thể được áp dụng để cung cấp dịch vụ tài chính và ngân hàng tự động Nó có thể giúp người dùng tra cứu thông tin tài chính, xem tài khoản, thực hiện giao dịch, cung cấp tư vấn đầu tư và quản lý ngân sách cá nhân.
- Y tế: Hỗ trợ trong lĩnh vực y tế bằng cách cung cấp thông tin về bệnh lý, cung cấp hướng dẫn chăm sóc sức khỏe cơ bản, đưa ra gợi ý về thuốc, lịch trình hẹn khám bệnh và giúp người dùng tra cứu thông tin về các dịch vụ y tế.
- Du lịch và khách sạn: Hỗ trợ trong việc tìm kiếm và đặt vé máy bay, đặt phòng khách sạn, cung cấp thông tin về địa điểm du lịch, gợi ý hoạt động và đưa ra lời khuyên về lịch trình du lịch.
- Dịch vụ khách hàng: Có thể được sử dụng trong lĩnh vực dịch vụ khách hàng để hỗ trợ trả lời câu hỏi, giải đáp thắc mắc, xử lý yêu cầu và cung cấp hướng dẫn tự động cho khách hàng.
- Giáo dục: Hỗ trợ giáo dục bằng cách cung cấp thông tin học tập, giải đáp câu hỏi, cung cấp tài liệu giảng dạy, hỗ trợ ôn tập và cung cấp tư vấn về lộ trình học tập.
- Bán lẻ và thương mại điện tử: Hỗ trợ trong việc mua sắm trực tuyến bằng cách đưa ra gợi ý sản phẩm, tìm kiếm thông tin về sản phẩm, theo dõi đơn hàng và cung cấp hỗ trợ thanh toán.
- Truyền thông và giải trí: Hỗ trợ trong lĩnh vực truyền thông và giải trí bằng cách cung cấp thông tin về tin tức, phim ảnh, âm nhạc, lịch chiếu, gợi ý giải trí và tư vấn nội dung phù hợp.
Nội dung, phạm vi thực hiện
- Tìm hiểu về các ứng dụng và nền tảng: Đầu tiên tìm hiểu về các ứng dụng hoặc nền tảng trợ lý ảo dành cho người Việt hiện có trên thị trường Tìm hiểu về tính năng, khả năng tương tác và ứng dụng của chúng.
- Tải xuống và cài đặt ứng dụng: Sau khi đã chọn được ứng dụng trợ lý ảo dành cho người Việt phù hợp, sử dụng khám phá tính năng và tiềm kiếm những khả năng có thể phát triển có thể áp dụng theo yêu cầu đề tài.
- Tuỳ chỉnh và cấu hình: Nghiên cứu sử dụng ngôn ngữ Python để lập trình (thu thập thông tin, xử lý bộ dữ liệu huấn luyện) Xây dựng và thiết kế tính năng , giao diện thân thiện với người dùng để tạo ra trải nghiệm tốt nhất cho người Việt.
- Cập nhật và theo dõi: Theo dõi các cập nhật và phiên bản mới nhất thường xuyên cải tiến, tính năng mới và sửa lỗi để đảm bảo rằng luôn có phiên bản ứng dụng tốt nhất.
- Tìm hiểu nghiên cứu, thu thập thông tin, lý thuyết về xử lý ngôn ngữ tự nhiên, trợ lý ảo, nhận dạng và dịch ngôn ngữ.
- Nghiên cứu sử dụng ngôn ngữ python và các thư viện trong python để lập trình ứng dụng.
- Phân tích thiết kế và xây dựng ứng dụng.
- Viết đề cương, báo cáo, cài đặt chương trình.
CƠ SỞ LÝ THUYẾT
Các hệ thống tương tự
Google Translatelà một trong những công cụ dịch thuật phổ biến nhất và được sử dụng rộng rãi trên toàn thế giới Với khả năng dịch hàng chục ngôn ngữ và tích hợp công nghệ dịch thuật máy tiên tiến, Google Translate cung cấp các dịch văn bản và cụm từ nhanh chóng và dễ sử dụng.
Microsoft Translator là một công cụ dịch thuật mạnh mẽ của Microsoft Nó hỗ trợ dịch thuật trên nhiều nền tảng, bao gồm ứng dụng di động và trình duyệt web. Microsoft Translator cung cấp tính năng dịch văn bản, dịch giọng nói và cả dịch hình ảnh.
Deepl Translatorlà một công cụ dịch thuật dựa trên trí tuệ nhân tạo và học sâu. Với công nghệ dịch thuật tiên tiến, Deepl Translator cung cấp các dịch văn bản chính xác và tự nhiên Nó hỗ trợ nhiều ngôn ngữ và được đánh giá cao về chất lượng dịch thuật.
Systran là một công ty chuyên cung cấp giải pháp dịch thuật và công nghệ ngôn ngữ Phần mềm dịch thuật của SYSTRAN có khả năng dịch trên hàng trăm ngôn ngữ và được sử dụng rộng rãi trong các lĩnh vực như kinh doanh, y tế, pháp luật và công nghệ.
SDL Trados Studiolà một phần mềm dịch thuật chuyên nghiệp được sử dụng bởi các dịch giả và công ty dịch thuật Nó cung cấp các công cụ hỗ trợ dịch thuật như quản lý bộ từ điển, cơ sở dữ liệu thuật ngữ và tích hợp dịch thuật máy, giúp tăng năng suất và chất lượng dịch thuật.
Chức năng hỗ trợ dịch thuật chuyên nghiệp: SDL Trados Studio cung cấp nhiều tính năng hỗ trợ dịch thuật như giao diện dịch thuật, công cụ phân tích ngữ liệu, quản lý thuật ngữ, và kiểm tra chất lượng dịch thuật Điều này giúp tăng năng suất và chất lượng của quá trình dịch thuật.
Tích hợp dữ liệu dịch thuật: SDL Trados Studio cho phép người dùng tạo và quản lý bộ dữ liệu dịch thuật cá nhân, bao gồm các bộ từ điển, bộ dịch và các bộ dữ liệu ngữ cảnh Điều này giúp tăng tính nhất quán và hiệu quả trong quá trình dịch thuật.
Hỗ trợ đa ngôn ngữ và đa định dạng: SDL Trados Studio hỗ trợ nhiều ngôn ngữ và định dạng tài liệu khác nhau, bao gồm văn bản, hình ảnh, tài liệu HTML, PowerPoint và nhiều loại tệp tin khác Điều này giúp người dùng xử lý một loạt các loại tài liệu dễ dàng.
Hợp tác dự án: SDL Trados Studio cho phép nhiều dịch giả làm việc cùng nhau trên cùng một dự án, chia sẻ dữ liệu và điều chỉnh quá trình dịch thuật Điều này giúp tăng tương tác và hiệu suất làm việc trong nhóm.
- Nhược điểm: Đòi hỏi học và làm quen: SDL Trados Studio có một loạt tính năng phức tạp và giao diện người dùng có thể đòi hỏi một quá trình học và làm quen ban đầu. Người dùng mới có thể cần thời gian và nguồn lực để nắm bắt hoàn toàn các tính năng của phần mềm.
Giá thành cao: SDL Trados Studio là một phần mềm thương mại và có giá thành khá cao Điều này có thể làm hạn chế việc tiếp cận và sử dụng phần mềm đối với cá nhân và tổ chức nhỏ.
Phụ thuộc vào hệ thống: SDL Trados Studio.
Cơ sở lý thuyết
Từ rất lâu, máy tính đã hoạt động thật sự hiệu quả với những kiểu dữ liệu được chuẩn hóa hoặc có cấu trúc như bảng cơ sở dữ liệu hay những bản báo cáo tài chính với tốc độ xử lý dữ liệu nhanh hơn rất nhiều so với con người Nhưng, trong cuộc sống hàng ngày, ngôn ngữ giao tiếp của con người không phải ngôn ngữ có cấu trúc hay ngôn ngữ nhị phân Chúng ta sử dụng các từ ngữ, một loại của dữ liệu phi cấu trúc.Điều đáng tiếc là máy tính chưa thể xử lý dữ liệu phi cấu trúc Hiện nay không có một
Chữ viết đã được con người sử dụng và lưu trữ kiến thức từ hàng ngàn năm trước Suốt thời gian đó, bộ não của chúng ta đã tích lũy một lượng kinh nghiệm khổng lồ trong việc hiểu ngôn ngữ tự nhiên Ví dụ, khi đọc một nội dung được viết trên giấy hoặc một bài đăng trong blog, chúng ta đều hiểu được ý nghĩa thực của bài viết trong thế giới thực Chúng ta cảm nhận được những cảm xúc sau khi đọc nội dung và đồng thời hình dung được nó như thế nào trong cuộc sống đời thực.
Xử lý ngôn ngữ tự nhiên (NLP) là một phần của trí tuệ nhân tạo, tập trung vào việc cho phép máy tính hiểu và xử lý ngôn ngữ con người, để máy tính có thể tiến gần hơn với trình độ hiểu biết ngôn ngữ như con người Thực tế, máy tính chưa có sự hiểu trực quan ngôn ngữ như sự hiểu biết của con người Máy tính cũng không thể xác định những gì ngôn ngữ tự nhiên đang diễn tả Thậm chí, trong một số trường hợp, máy tính không thể đọc hiểu giữa các dòng.
Nhưng, thời gian gần đây, những tiến bộ trong học máy đã giúp ích rất nhiều trong việc cho phép máy tính hiểu được ngôn ngữ tự nhiên Deep Learning đã cho phép chúng ta có thể viết các chương trình như dịch ngôn ngữ, tóm tắt văn bản Những điều này đã thêm sự hiểu biết về ngôn ngữ cho máy tính, từ đó chúng ta có thể dễ dàng xây dựng và thực hiện các phân tích trên khối lượng văn bản lớn một cách tự động. Đầu tiên, ta hãy tìm hiểu sơ lược về NLP theo khái niệm Phần tiếp theo, ta sẽ xử lý ngôn ngữ tự nhiên bằng Python.
- Lý do thực sự khiến xử lý NLP rất khó
Quá trình đọc hiểu một ngôn ngữ phức tạp hơn nhiều so với “cái nhìn đầu tiên”.
Có rất nhiều điều bạn phải biết để hiểu được ý nghĩa thực sự của đoạn văn trong thế giới thực.
Ví dụ “Steph Curry was on fire last nice He totally destroyed the other team” đối với con người thì có lẽ ta sẽ hiểu được câu này một cách dễ dàng Ta biết, Steph
Curry là một cầu thủ bóng rổ; hoặc thậm chí nếu bạn chưa biết anh ấy là cầu thủ bóng rổ, thì bạn cũng hiểu được rằng anh ấy đang thi đấu một môn thể thao Khi ta thấy những từ như “on fire” và “destroyed”, ta hiểu Steph Curry đã chơi thực sự xuất sắc vào tối qua Nhưng, máy tính lại có xu hướng hiểu mọi thứ chỉ theo nghĩa đen Hãy xem xét theo góc độ hiểu của máy tính, ta sẽ hiểu “Steph Curry” là tên một người, một địa điểm hoặc một danh từ riêng nào khác dựa theo cách viết hoa từ này Nhưng sau đó, ta thấy rằng Steph Curry “on fire”, như vậy máy tính sẽ hiểu ai đó đã “thắp” Steph
Curry vào ngày hôm qua Sau đó, máy tính sẽ hiểu ông Curry đã tiêu diệt hết những đội khác theo nghĩa đen… và những đội đó sẽ không còn tồn tại với cách hiểu này nữa.
Trong thực tế, không hẳn máy tính không hỗ trợ được con người trong xử lý ngôn ngữ tự nhiên Với Machine Learning, ngày nay, con người đã thực hiện một số việc một cách thông minh hơn để nhanh chóng trích xuất và hiểu về các tài liệu ngôn ngữ tự nhiên Dưới đây, chúng tôi sẽ mô tả cách máy tính xử lý ngôn ngữ tự nhiên NLP bằng Python.
Ngôn ngữ tự nhiên không giống với ngôn ngữ nhân tạo như ngôn ngữ máy tính (C, PHP, …) Trên thế giới hiện nay có khoảng 7000 loại ngôn ngữ Có nhiều cách để phân loại, một số cách phân loại ngôn ngữ phổ biến như dựa vào: nguồn gốc, đặc điểm, …
Hình 2 6:Phân loại ngôn ngữ theo nguồn gốc
Do đó tiếng Việt được xếp vào loại đơn lập – tức phi hình thái, không biến hình. Cùng với đó, tiếng Việt được viết theo trật tự S – V – O (subject (S), verb (V) and object (O)).
Một vài so sánh các cách sắp xếp trật tự câu.
Hình 2 7: Cách sắp xếp thứ tự câu
2.2.1 Xử lý ngôn ngữ tự nhiên
- Xử lý ngôn ngữ tự nhiên là gì?
Xử lý ngôn ngữ tự nhiên (Natural language processing) là một thành phần của trí tuệ nhân tạo (AI) của một chương trình máy tính NLP có khả năng hiểu được ngôn ngữ của con người khi nó được nói và viết.
Xử lý ngôn ngữ tự nhiên có nguồn gốc từ lĩnh vực ngôn ngữ học Xử lý ngôn ngữ tự nhiên có nhiều ứng dụng trong một số lĩnh vực, như nghiên cứu y tế, công cụ tìm kiếm và trí tuệ kinh doanh.
- Cách thức xử lý ngôn ngữ tự nhiên hoạt động như thế nào?
Trí tuệ nhân tạo giúp xử lý ngôn ngữ tự nhiên nhận đầu vào trong thế giới thực và chuyển đổi thành mã mà máy tính có thể hiểu được Quá trình này gồm hai giai đoạn là tiền xử lý dữ liệu và phát triển thuật toán:
Tiền xử lý dữ liệu: Gồm các việc chuẩn bị và “dọn dẹp” dữ liệu văn bản cho máy móc nhằm phục vụ cho quá trình phân tích Các cách để thực hiện các công việc trên gồm:
Mã hóa: Chia văn bản thành các đơn vị nhỏ hơn để làm việc.
Dừng từ loại bỏ: Các từ phổ biến bị xóa khỏi văn bản và giữ lại các từ duy nhất cung cấp nhiều thông tin nhất về văn bản.
Lemmatization và gốc: Các từ được rút gọn về dạng gốc để xử lý.
Gắn thẻ một phần của bài phát biểu: Đây là khi các từ được đánh dấu dựa trên phần của bài phát biểu – chẳng hạn như danh từ, động từ và tính từ.
Công nghệ sử dụng
Visual Studio Code chính là ứng dụng cho phép biên tập, soạn thảo các đoạn code để hỗ trợ trong quá trình thực hiện xây dựng, thiết kế website một cách nhanh chóng Visual Studio Code hay còn được viết tắt là VS Code Trình soạn thảo này vận hành mượt mà trên các nền tảng như Windows, macOS, Linux Hơn thế nữa, VS Code còn cho khả năng tương thích với những thiết bị máy tính có cấu hình tầm trung vẫn có thể sử dụng dễ dàng.
Visual Studio Code hỗ trợ đa dạng các chức năng Debug, đi kèm với Git, cóSyntax Highlighting Đặc biệt là tự hoàn thành mã thông minh, Snippets, và khả năng cải tiến mã nguồn Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phép các lập trình viên thay đổi Theme, phím tắt, và đa dạng các tùy chọn khác Mặc dù trình soạn thảo Code này tương đối nhẹ, nhưng lại bao gồm các tính năng mạnh mẽ.
Dù mới được phát hành nhưng VSCode là một trong những Code Editor mạnh mẽ và phổ biến nhất dành cho lập trình viên Nhờ hỗ trợ nhiều ngôn ngữ lập trình phổ biến, tích hợp đầy đủ các tính năng và khả năng mở rộng, nên VSCode trở nên cực kì thân thuộc với bất kì lập trình viên nào.
- Tại sao nên sử dụng Visual Studio Code?
Hình 2 25: Visual studio code lập trình
Hỗ trợ đa nền tảng: Linux, Mac, Windows,
Hỗ trợ đa ngôn ngữ: C/C++, C#, F#, JavaScript, JSON, Visual Basic, HTML, CSS,
Kiến trúc mạnh mẽ và người dùng có thể khai thác mở rộng
Số lượng người sử dụng lớn tạo nên ộng đồng hỗ trợ rộng rãi
Và trên hết, Visual Studio Code là phần mềm miễn phí Chính vì vậy ứng dụng chuyên biên tập, soạn thảo Code này trở nên phổ biến nhất hiện nay Với việc không ngừng cải tiến và áp dụng rất nhiều các công nghệ mới, Visual Studio Code đã được các lập trình viên chứng minh hiệu quả Ngoài các Developers, thì Testers hay Data Administrators và tất cả những người dùng đang quan tâm đến lập trình đều có thể sử dụng Visual Studio.
Trên đây là những thông tin về Visual Studio Code Hy vọng qua bài viết bạn đã có thêm những hiểu biết về Visual Studio Code là gì cũng như sự phổ biến và các tính năng nổi bật của ứng dụng biên tập Code này Đừng quên truy cập FPT Shop để cập nhật các thông tin hữu ích về công nghệ.
2.3.2 Python và một số thư viện sử dụng trong xử lý ngôn ngữ tự nhiên
Python được coi là ngôn ngữ nền tảng cho việc mô phỏng, nghiên cứu hay giải quyết các vấn đề khoa học, với tính năng nổi bật là xử lý các cấu trúc dữ liệu và mã nguồn mở, bao gồm cả các bài toán về xử lý ngôn ngữ tự nhiên Đặc biệt, lĩnh vực xử lý các ngôn ngữ tự nhiên đều được các nhà nghiên cứu, giáo sư, tiến sĩ, học giả, sinh viên, học sinh sử dụng phổ biến.
Pattern đóng vai trò là module khai thác các nguồn dữ liệu trên web bằng ngôn ngữ lập trình Python Pattern sử dụng các công cụ khai thác dữ liệu như trình thu thập dữ liệu web, Google, Wikipedia API, Twitter trình phân tích cú pháp HTML DOM.
Hình 2 26: Ngôn ngữ Pattern có nhiều lợi ích
Bên cạnh đó, Pattern giúp người dùng học máy (SVM, mô hình không gian vector, gom cụm), xử lý ngôn ngữ tự nhiên (POS, WordNet, tìm kiếm n-gram, phân tích cảm xúc) và phân tích mạng bằng biểu đồ trung tâm hay trực quan hóa.
PyNLPl là một thư viện chứa nhiều midule giúp người dùng thực thi các vấn đề ít phổ biến hoặc phổ biến trong xử lý ngôn ngữ tự nhiên Bạn có thể sử dụng ngôn ngữ này để thực thi các tác vụ cơ bản như danh sách tần số từ vựng, rút trích n-gram và xây dựng các mô hình ngôn ngữ đơn giản Điểm đặc biệt nhất của PyNLPl là có chứa các thư viện mở rộng để có thể làm việc với FoLiA XML (là định dạng cho Chú thíchNgôn ngữ). giáo sư, sinh học và nghiên cứu sinh đam mê và ưa thích về các lĩnh vực xử lý ngôn ngữ tự nhiên và ngôn ngữ con người.
Mục tiêu của CoreNLP là có thể áp dụng các công cụ phân tích ngôn ngữ đến các đoạn văn bản dễ dàng Đồng thời, CoreNLP tích hợp bởi parsing, tích hợp các bài toán về POS, rút trích thông tin và phân tích các cảm xúc được áp dụng cho học sâu và thống kê.
- Ngôn ngữ Natural Language Toolkit (NLTK)
Ngôn ngữ Natural Language Toolkit có nghĩa là bộ công cụ ngôn ngữ tự nhiên, đây là một nền tảng dẫn đầu để xây dựng các chương trình Python làm việc với nguồn dữ liệu của con người.
Ngôn ngữ này cung cấp cho người dùng hơn 50 tài nguyên từ vựng và ngữ liệu (corpora), đặc biệt là WordNet cùng với những thư viện tích hợp các bài toán phân loại, tìm từ gốc (stemming) và token hóa (tokenization).
Bên cạnh đó, ngôn ngữ Natural Language Toolkit còn là công cụ tuyệt vời giúp giải quyết các bài toán và là công cụ tuyệt vời để giảng dạy Python Nếu bạn học Thạc sĩ và Tiến sĩ chuyên ngành công nghệ thông tin, thì đây là một ngôn ngữ bắt buộc mà bạn cần nắm vững và thường xuyên sử dụng.
Hình 2 27: Natural Language Toolkit (NLTK)
- Ngôn ngữ Plolyglot Đây là một thư viện ngôn ngữ hỗ trợ các ngôn ngữ với quy mô vô cùng lớn và kèm theo nhiều tính năng như: Dò ngôn ngữ, token hóa, gắn thẻ POS, nhận dạng tên thực thể (NER), phân tích cảm xúc (sentiment analysis), word embedding.
Bên cạnh đó, Polyglot còn phụ thuộc vào một số thư viện như libicu-dev và Numpy, do vậy bạn nên cài đặt những thư viện này trước Thư viện ngôn ngữ này phù hợp trong việc phân tích đa ngôn ngữ hay dịch thuật.
Mô hình hệ thống
Hình 2 29: Mô hình tổng quát 2.4.1 Các loại tiền xử lý
Hình 2 30: Các bước tiền xử lý 2.4.2 Dịch thuật
Mục đích bước này là loại bỏ noise trong data của bạn Đa phần noise là các thẻ HTML, JavaScript, và đương nhiên nếu cứ để noise để tiến hành xử lý sẽ dẫn đến kết quả xử lý không tốt.
Ví dụ đơn giản như sau:
Thông thường chúng ta hay loại bỏ noise là các thẻ HTML và JS như trên tuy nhiên thực tế noise có thể không chỉ là HTML, JS, cũng có thể là những cụm từ không cần thiết, hay ký tự không có ý nghĩa ($%#").
Trong tiếng Việt, dấu cách (space) không được sử dụng như 1 kí hiệu phân tách từ, nó chỉ có ý nghĩa phân tách các âm tiết với nhau Vì thế, để xử lý tiếng Việt, công đoạn tách từ (word segmentation) là 1 trong những bài toán cơ bản và quan trọng bậc nhất.
Ví dụ : từ “đất nước” được tạo ra từ 2 âm tiết “đất” và “nước”, cả 2 âm tiết này đều có nghĩa riêng khi đứng độc lập, nhưng khi ghép lại sẽ mang một nghĩa khác Vì đặc điểm này, bài toán tách từ trở thành 1 bài toán tiền đề cho các ứng dụng xử lý ngôn ngữ tự nhiên khác như phân loại văn bản, tóm tắt văn bản, máy dịch tự động, …
Hình 2 32: Xử lý tách từ
Tách từ chính xác hay không là công việc rất quan trọng, nếu không chính xác rất có thể dẫn đến việc ý nghĩa của câu sai, ảnh hưởng đến tính chính xác của chương trình.
Mục đích là đưa văn bản từ các dạng không đồng nhất về cùng một dạng Dưới góc độ tối ưu bộ nhớ lưu trữ và tính chính xác cũng rất quan trọng.
Ví dụ trong từ điển, training data của chúng ta không có U.S.A, chỉ có USA, thì việc convert những từ như U.S.A về USA là điều cần thiết để các bước xử lý sau như text classification, intent detection được chính xác.
Ngoài ra với tiếng Nhật: 猫=ねこ=ネコ(full size)=ネコ(half size)
Có nhiều cách viết, mỗi cách viết khi lưu trữ sẽ tốn lượng memory khác nhau, như half size chỉ tốn 1/2 dung lượng so với full size nên tuỳ theo nhu cầu, tình hình thực tế, chúng ta sẽ đưa văn bản về 1 dạng đồng nhất.
Ngoài ra trong một vài trường hợp, nếu ký tự số không mang lại lợi ích gì thì cũng sẽ tiến hành loại bỏ các ký tự số đó, nếu cứ để nguyên rất có thể các ký tự số sẽ trở thành noise, ảnh hưởng đến tính chính xác của model sau này.
StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuy nhiên lại không mang nhiều ý nghĩa Ở tiếng việt StopWords là những từ như: để, này, kia Tiếng anh là những từ như: is, that, this
Có rất nhiều cách để loại bỏ StopWords nhưng có 2 cách chính là:
Dựa theo tần suất xuất hiện của từ
Cách này đơn giản nhất, chúng ta tiến hành filter văn bản, loại bỏ những từ xuất hiện trong từ điển StopWords:
Dựa theo tần suất xuất hiện của từ
Với cách này, chúng ta tiến hành đếm số lần xuất hiện của từng từ trong data sau đó sẽ loại bỏ những từ xuất hiện nhiều lần (cũng có thể là ít lần) Khoa học đã chứng minh những từ xuất hiện nhiều nhất thường là những từ không mang nhiều ý nghĩa.
Bước này mục đích là vector hoá từ trong từng câu Thông thường chúng ta nên vector hoá theo từng câu chứ không vector hoá cả đoạn Vì nếu vector hoá theo đoạn văn dài sẽ dẫn đến vector của bạn nhiều chiều quá, nếu dữ liệu của bạn nhiều chiều, sẽ dẫn đến tình trạng thiếu tính chính xác, khó xử lý Phương pháp vector hoá có 2 cách:
Biểu thị sự phân tán
Phương pháp này là phổ biến nhất, cũng rất dễ sử dụng Giả sử ta có danh sách các từ sau: (nlp, python, word, ruby, one-hot) khi vector hoá từ python, ta sẽ được:
Hình 2 34: Vector hóa từ sử dụng one-hot
Tương tự với nlp thì vị trí nlp sẽ là 1, còn lại là 0, cứ như vậy ta sẽ biểu diễn được tất cả các từ Lấy luôn hình trên làm ví dụ ta sẽ được:
Biểu diễn bằng one-hot rất đơn giản nhưng có một điểm yếu là không có mối liên hệ giữa các từ Ví dụ như bạn muốn tính độ tương tự giữa các từ, việc cần làm là tính tích vô hướng 2 từ đó, tuy nhiên với cách biểu diễn bằng one-hot, tích vô hướng luôn bằng 0 nên không có ý nghĩa gì cả.
QUY TRÌNH HỆ THỐNG
Các mô hình nhận dạng ngôn ngữ
Mô hình Markov ẩn (tiếng Anh là Hidden Markov Model - HMM) là mô hình thống kê trong đó hệ thống được mô hình hóa được cho là một quá trình Markov với các tham số không biết trước và nhiệm vụ là xác định các tham số ẩn từ các tham số quan sát được, dựa trên sự thừa nhận này Các tham số của mô hình được rút ra sau đó có thể sử dụng để thực hiện các phân tích kế tiếp, ví dụ cho các ứng dụng nhận dạng mẫu.
Trong một mô hình Markov điển hình, trạng thái được quan sát trực tiếp bởi người quan sát, và vì vậy các xác suất chuyển tiếp trạng thái là các tham số duy nhất.
Mô hình Markov ẩn thêm vào các đầu ra: mỗi trạng thái có xác suất phân bổ trên các biểu hiện đầu ra có thể Vì vậy, nhìn vào dãy của các biểu hiện được sinh ra bởi HMM không trực tiếp chỉ ra dãy các trạng thái.
N-gram là một chuỗi n mục liền nhau từ một mẫu văn bản hoặc bài phát biểu nhất định Các mục có thể là âm vị, chữ cái, từ hoặc các cặp cơ sở tùy theo ứng dụng. Các n-gram thường được thu thập từ một văn bản hoặc ngữ liệu lời nói.
N-gram là một cách giúp máy móc hiểu một từ trong ngữ cảnh của nó để hiểu rõ hơn về nghĩa của từ đó Ví dụ: “Chúng tôi cần đặt vé sớm” so với “Chúng tôi cần đọc cuốn sách này sớm” Trước đây “book” được sử dụng như một động từ và do đó là một hành động “Cuốn sách” sau này được sử dụng như một danh từ N tính bằng n- gram chỉ là số từ bạn muốn xem.
Một mô hình chỉ đơn giản dựa vào tần suất xuất hiện của một từ mà không cần
Các ứng dụng của mô hình N-gram
N-gram được sử dụng trong nhận dạng giọng nói, nhận dạng ngôn ngữ, biểu diễn văn bản, lọc thông tin, v.v Tương tự như vậy, các mô hình N-gram được sử dụng trong trí tuệ nhân tạo để cung cấp các câu tự nhiên hơn trong ngôn ngữ đích.
Khi sửa lỗi chính tả, đôi khi việc tra cứu từ điển sẽ không giúp ích được gì như một ví dụ, trong cụm từ “trong khoảng mười lăm thợ mỏ”, từ 'minuets' có thể là một từ hợp lệ trong từ điển nhưng nó không chính xác trong ngữ cảnh này Các mô hình N- gram có thể sửa các lỗi như vậy.
Nói chung, nhiều ứng dụng NLP giống như mô hình N-gram bao gồm gắn thẻ từng phần của giọng nói, tạo lưỡi, tương tự từ, trích xuất tình cảm và nhập văn bản dự đoán.
3.1.3 Mô hình Long Short Term Memory (LSTM)
Long short-term memory (LSTM) là một kiến trúc artificial recurrent neural network (RNN) được sử dụng trong lĩnh vực Máy Học (Deep learning) LSTM có các kết nối phản hồi Nó có thể xử lý không chỉ các điểm dữ liệu đơn lẻ (chẳng hạn như hình ảnh) mà còn toàn bộ chuỗi dữ liệu (chẳng hạn như speech hoặc video).
Một đơn vị LSTM chung bao gồm một cell, một input gate, một output gate và một forget gate Cell ghi nhớ các giá trị trong khoảng thời gian tùy ý và ba gate điều chỉnh luồng thông tin input và output LSTM rất phù hợp để classify, process, và predict có khoảng thời gian không xác định.
Mạng Long short-term memory (LSTM) là một phiên bản sửa đổi của mạng nơ- ron tuần hoàn, giúp dễ dàng ghi nhớ dữ liệu quá khứ trong bộ nhớ.
Hình 3 2: Mô hình Long short-term memory (LSTM)
Input gate– Nó phát hiện ra giá trị nào từ đầu vào sẽ được sử dụng để sửa đổi bộ nhớ.
Forget gate– Nó khám phá các chi tiết cần loại bỏ khỏi khối.
Output gate– Đầu vào và bộ nhớ của khối được sử dụng để quyết định đầu ra.
Hình 3 3: Mô hình hệ thống nhận dạng đa ngôn ngữ và dịch ngôn ngữ
Hình 3 4: Mô hình hệ thống người dùng nhập thông tin đầu vào
Người dùng có thể đưa thông tin đầu vào là dạng: chữ viết hoặc giọng nói bằng cách nhập văn bản hoặc ghi âm giọng nói để ứng dụng lấy thông tin tiến hành tiền xlý nội dung, hoặc thông qua bộ ngữ liệu huấn luyện đã có sẵn.
3.2.2 Bộ ngữ liệu huấn luyện
Bộ ngữ liệu huấn luyện là những thư viện hỗ trợ xử lý ngôn ngữ tự nhiên trong python như: NLTK, Gensim, Polyglot, spaCy, TextBlod, CoreNLP, Pattern, Vocabulary, PyNLPl Thông qua những thư viện để tiến hành huấn luyện thông tin đầu vào để tiến hành xử lý nội dung.
3.2.3 Tiền xử lý nội dung
Hình 3 5: Mô hình hệ thống tiền xử lý nội dung
Từ thông tin đầu vào hoặc thông qua bộ ngữ liệu huấn luyện để tiến hành xử lý nội dung bằng cách kiểm tra nội dung thông tin gồm những gì nếu là dạng văn bản (chữ viết) kiểm tra xem gồm có những kí hiệu, kí tự gì đặc biệt để loại bỏ, nếu là giọng nói thì loại bỏ những tạp âm, những âm thanh không rõ,…sau đó đưa qua bước nhận dạng thông tin.
Lấy nội dung đã được xử lý ở bước tiền xử lý và đưa vào đối chiếu kiểm tra để nhận dạng thông tin ban đầu thuộc ngôn ngữ gì, sau khi nhận dạng được ngôn ngữ thì thông tin được chuyển sang bước dịch thuật.
KẾT QUẢ THỰC NGHIỆM
Code chương trình
Hình 4 1: Các thư viện python hỗ trợ chương trình 4.1.2 File khởi tạo trương trình
4.1.3 Tạo forms chứa dữ liệu sau khi nhận dạng
Hình 4 3:Forms chứa dữ liệu sau khi nhận dạng
Nhận dạng ngôn ngữ, hình ảnh và dịch
4.2.1 Xử lý hình ảnh và chuyển thành văn bản
Hình 4 4: Hàm sử lý hình ảnh 4.2.2 Nhận dạng ngôn ngữ và dịch ngôn ngữ
Hình 4 5: Hàm xử lý và nhận dạng ngôn ngữ
Giao diện
Hình 4 6:Giao diện trang chủ của chương trình
Hình 4 7:Giao diện nhận dạng và dịch ngôn ngữ bằng văn bản
Hình 4 8: Giao diện nhận dạng và dịch ngôn ngữ bằng hình ảnh