1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Kết hợp học sâu và mô hình ngôn ngữ để nhận dạng giọng nói tiếng Việt

76 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kết hợp học sâu và mô hình ngôn ngữ để nhận dạng giọng nói tiếng Việt
Tác giả Nguyễn Đức Huy
Người hướng dẫn PGS.TS. Quản Thành Thơ
Trường học Đại học Quốc gia Tp.HCM
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2021
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 76
Dung lượng 3,51 MB

Cấu trúc

  • Chương 1 (0)
    • 1.1 Tổng quan đề tài (15)
    • 1.2 Ứng dụng của đề tài (15)
      • 1.2.1 Nhận dạng giọng nói (15)
      • 1.2.2 Phát hiện và sửa lỗi văn bản (16)
      • 1.2.3 Sinh văn bản (16)
    • 1.3 Mục tiêu và giới hạn đề tài (17)
      • 1.3.1 Mục tiêu (17)
      • 1.3.2 Giới hạn đề tài (17)
    • 1.4 Cấu trúc luận văn (18)
  • Chương 2 (0)
    • 2.1 Mạng nơ-ron nhân tạo – Artificial Neural Network (ANN) (19)
      • 2.1.1 Tổng quan mạng ANN (19)
      • 2.1.2 Một số hàm kích hoạt (Activation function) (21)
    • 2.2 Mạng nơ-ron hồi quy - Recurrent Neural Network (RNN) (23)
      • 2.2.1 Tổng quan mạng RNN (23)
      • 2.2.2 Long Short Term Memory (LSTM) (25)
      • 2.2.3 Phân loại kiến trúc RNN (26)
    • 2.3 Word Embedding (27)
      • 2.3.1 CBOW model (28)
      • 2.3.2 Skip-gram model (29)
    • 2.4 Beam Search (30)
    • 2.5 Mô hình ngôn ngữ - Language model (32)
      • 2.5.1 N-gram Language model (33)
      • 2.5.2 Structured Language Model (34)
    • 2.6 Mô hình nhận dạng giọng nói (35)
      • 2.6.1 Đặc trưng của dữ liệu âm thanh (35)
      • 2.6.2 Mô hình Deep Speech 2 (37)
  • Chương 3 (0)
  • Chương 4 (0)
    • 4.1 Phương pháp xử lý dữ liệu (42)
      • 4.1.1 Dữ liệu âm thanh (42)
      • 4.1.2 Dữ liệu văn bản (43)
    • 4.2 Phương pháp xây dựng mô hình nhận diện giọng nói (44)
    • 4.3 Phương pháp xây dựng mô hình ngôn ngữ (44)
      • 4.3.1 Mô hình ngôn ngữ mức kí tự (45)
      • 4.3.2 Mô hình ngôn ngữ mức từ (46)
    • 4.4 Phương pháp phát hiện và sửa lỗi (48)
      • 4.4.1 Phát hiện và sửa lỗi mức kí tự (48)
      • 4.4.2 Phát hiện và sửa lỗi mức từ (55)
    • 4.5 Phương pháp đánh giá (57)
  • Chương 5 (0)
    • 5.1 Hiện thực mô hình tự động nhận diện giọng nói (ASR) (58)
      • 5.1.1 Dữ liệu (58)
      • 5.1.2 Xây dựng mô hình ASR (58)
      • 5.1.3 Kết quả (59)
    • 5.2 Hiện thực mô hình ngôn ngữ (LM) (60)
      • 5.2.1 Dữ liệu (60)
      • 5.2.2 Mô hình ngôn ngữ mức kí tự (61)
      • 5.2.3 Mô hình ngôn ngữ mức từ (63)
    • 5.3 Mô hình phát hiện và sửa lỗi (64)
    • 5.4 Kết hợp mô hình và tích hợp vào ứng dụng Chatbot (67)
  • Chương 6 (0)
    • 6.1 Các kết quả đạt được (71)
    • 6.2 Khó khăn và hạn chế (71)
    • 6.3 Định hướng trong tương lai (72)
  • Tài liệu tham khảo (73)

Nội dung

Tổng quan đề tài

Nhận dạng giọng nói tự động (Automatic Speech Recognition – ASR) là một trong những bài toán đang được quan tâm nhất hiện nay trong lĩnh vực xử lí ngôn ngữ và tiếng nói Mục tiêu của bài toán này là chuyển đổi nội dung của dữ liệu âm thanh thành văn bản tương ứng Sự ra đời của trí tuệ nhân tạo, đặc biệt là học sâu (Deep learning – DL) đã tạo ra bước phát triển đáng kể cho bài toán ASR

Tuy nhiên, một trong những hạn chế của Deep learning là cần rất nhiều dữ liệu để huấn luyện cho các mô hình Do tính phức tạp của dữ liệu giọng nói, nên để xây dựng một hệ thống ASR với độ chính xác cao thì cần phải tốn rất nhiều thời gian và công sức để chuẩn bị và xử lý dữ liệu Mặt khác, vì nhiều lý do khác nhau như chất giọng địa phương, vùng miền, tốc độ nói nhanh chậm, nhiễu âm thanh từ môi trường hay thậm chí là người nói phát âm sai, các mô ASR dự đoán ra những kết quả bị sai lệch, làm giảm hiệu suất mô hình Vì thế, luận văn này đề xuất các phương pháp sửa lỗi chính tả dựa trên mô hình ngôn ngữ (Language Model), kết hợp với mô hình ASR để giảm lỗi và tăng hiệu suất khi nhận dạng giọng nói tiếng Việt.

Ứng dụng của đề tài

Như đã nói ở trên, việc xây dựng được mô hình ASR với độ lỗi được giảm thiểu sẽ làm tăng hiệu quả việc giao tiếp giữa con người và máy tính bằng giọng nói Phương thức giao tiếp này có thể được tích hợp vào nhiều hệ thống khác như chatbot, trợ lý ảo Ngoài ra, chuyển giọng nói thành văn bản còn có những ứng dụng khác như tìm kiếm nhanh bằng giọng nói, soạn văn bản nhanh bằng giọng nói, tự thêm động phụ đề audio hay video,…

1.2.2 Phát hiện và sửa lỗi văn bản Đề tài hướng đến việc xây dựng mô hình ngôn ngữ và các phương pháp sửa lỗi chính tả chung cho văn bản tiếng Việt, từ đó mới áp dụng cụ thể cho đầu ra của mô hình ASR để cải thiện kết quả Do đó, hoàn toàn có thể áp dụng mô hình sửa lỗi chính tả này cho các trường hợp khác như kiểm tra lỗi chính tả khi viết văn bản trên các thiết bị di động, phát hiện lỗi gõ sai khi nhắn tin hay đánh máy… Hay cũng có thể áp dụng để cải thiện kết quả của mô hình recognition khác như OCR (Optical character recognition) Việc xây dựng mô hình và phương pháp sẽ khác nhau tùy theo từng trường hợp

Mô hình ngôn ngữ (Language Model – LM) là mô hình thống kê sự xuất hiện của các kí tự, các từ trong toàn bộ tập văn bản theo các ngữ cảnh nhất định Vì thế, từ LM, ta hoàn toàn có thể sinh ra được văn bản mới với sự phân bố của các kí tự và từ theo ngữ cảnh tương tự như văn bản gốc Ví dụ như sinh ra một đoạn thơ lục bát theo phong cách của Nguyễn Du dựa trên LM được huấn luyện bởi “Truyện Kiều”, viết một bài báo chủ đề thể thao dựa trên LM được huấn luyện bởi tập dữ liệu là các bài tin tức mục thể thao trên báo tuoitre Các ứng dụng cụ thể của sinh văn bản có thể kể đến như việc gợi ý nội dung cho người dùng khi đang tìm kiếm, gợi ý tên sản phẩm hay gợi ý toàn bộ từ, cụm từ mà người dùng thường sử dụng khi họ chỉ mới gõ vài kí tự.

Mục tiêu và giới hạn đề tài

Mục tiêu của đề tài này bao gồm:

• Nghiên cứu kiến trúc và huấn luyện mô hình nhận diện giọng nói (ASR) cơ bản

• Xây dựng mô hình ngôn ngữ (LM) và các thuật toán, kỹ thuật sửa lỗi chính tả dựa vào LM được xây dựng trên dữ liệu văn bản tiếng Việt

Input: “mấy giờư rồei vậy bạn”

Output: “mấy giờ rồi vậy bạn”

• Kết hợp mô hình ASR với các thuật toán, kỹ thuật sửa lỗi chính tả

Hình 1.1 Kiến trúc hệ thống kết hợp ASR và mô hình ngôn ngữ

• Thử nghiệm và đánh giá toàn bộ hệ thống trên các tập dữ liệu khác nhau

• Tích hợp thành tính năng nhận diện giọng nói vào ứng dụng Chatbot có sẵn

Luận văn sẽ không tập trung nhiều vào mô hình nhận dạng giọng nói mà chỉ dừng ở mức xây dựng mô hình ASR cơ bản dựa trên kiến trúc và dữ liệu đã có Phần chính sẽ tập trung chủ yếu vào xây dựng mô hình ngôn ngữ và phát triển các kỹ thuật sửa lỗi Hiện thực và đánh giá phương pháp trên các tập dữ liệu lỗi khác nhau Từ đó kết hợp thành một hệ thống để cải thiện kết quả cho mô hình nhận diện giọng nói tiếng Việt.

Cấu trúc luận văn

Chương 1: Tổng quan về nội dung, mục tiêu và cấu trúc luận văn

Chương 2: Kiến thức nền tảng có liên quan đến đề tài như ANN, RNN, LM… Chương 3: Các công trình nghiên cứu có liên quan đến đề tài

Chương 4: Trình bày các phương pháp sử dụng khi hiện thực luận văn

Chương 5: Mô tả thực tế việc hệ thống và đánh giá kết quả

Chương 6: Tổng kết lại những kết quả đã đạt được và định hướng trong tương lai.

Mạng nơ-ron nhân tạo – Artificial Neural Network (ANN)

Mạng nơ-ron nhân tạo (Artificial Neural Network – ANN) là mô hình xử lý thông tin được mô phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm rất nhiều các node được liên kết với nhau tạo thành một mạng lưới cực kì lớn và phức tạp ANN hoạt động giống như bộ não của con người, được học bởi kinh nghiệm (thông qua việc huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết (unseen data)

Hình 2.1 Mạng nơ-ron nhân tạo

Kiến trúc chung của một ANN gồm 3 thành phần chính, đó là: Input Layer, Hidden Layer và Output Layer (hình 2.1) Trong đó, lớp ẩn (Hidden Layer) gồm các nơ-ron nhận dữ liệu input từ các nơ-ron ở lớp (layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo Trong một ANN có thể có nhiều lớp ẩn Các node xử lý của ANN gọi là nơ-ron Chúng nhận các dữ liệu vào (inputs), tính toán và cho ra một kết quả (output) duy nhất Kết quả xử lý của nơ-ron này có thể làm input cho các nơ- ron khác

Quá trình xử lý thông tin của một ANN:

Hình 2.2 Xử lý thông tin trong ANN

Mỗi input tương ứng với 1 thuộc tính (attribute) của dữ liệu Các giá trị này thường được đưa vào dưới dạng một vector m-chiều Output là kết quả đầu ra tương ứng với dữ liệu input Các trọng số liên kết (Weights) là thành phần rất quan trọng của ANN, nó thể hiện mức độ quan trọng giữa các input đầu vào đối với quá trình xử lý thông tin, chuyển đổi dữ liệu từ layer này sang layer khác Cuối cùng là bias (hệ số tự do) giúp chuẩn hoá trong quá trình cập nhật trọng trọng số Quá trình học (Learning Processing) của ANN thực ra là quá trình điều chỉnh các Weights để có được kết quả mong muốn Hàm tổng (Summation Function) cho phép tính tổng có trọng số của tất cả các input được đưa vào mỗi nơ-ron và giá trị bias Hàm tổng của một nơ-ron đối với N input được tính theo công thức sau:

Kết quả trên sẽ được cho vào một hàm kích hoạt (Activation function) để đánh giá khả năng đi tiếp trong mạng Có nghĩa là liệu output của nơ-ron này có thể được lan truyền đến layer tiếp theo để làm input hay không?

𝑦 = 𝜑(𝑧) Việc lựa chọn hàm kích hoạt rất quan trọng vì nó có tác động lớn đến kết quả của ANN Người ta thường sử dụng các hàm phi tuyến để tăng hiệu năng cho mạng Một số hàm kích hoạt phổ biến sẽ được trình bày rõ ở phần sau

2.1.2 Một số hàm kích hoạt (Activation function)

Hàm Sigmoid nhận đầu vào là một số thực và chuyển thành một giá trị trong khoảng (0,1) Hàm có công thức như sau:

Hình 2.3 Đồ thị hàm sigmoid

Hàm tanh có hình dạng đồ thị khá giống với của sigmoid nhưng giá trị nằm trong khoảng (-1, 1) với công thức:

Hình 2.4 Đồ thị hàm tanh

Hàm ReLU (Rectified Linear Unit) đang được sử dụng khá nhiều trong những năm gần đây khi huấn luyện các mạng nơ-ron ReLU đơn giản lọc các giá trị < 0 Nhìn vào công thức chúng ta dễ dàng hiểu được cách hoạt động của nó:

𝑅𝑒𝐿𝑈(𝑥) = max (0, 𝑥) Hai ưu điểm khá vượt trội của nó so với Sigmoid và Tanh, đó là không xuất hiện vấn đề triệu tiêu gradient và tốc độ tính toán nhanh hơn Tuy nhiên, ReLU cũng có một nhược điểm là với các node có giá trị nhỏ hơn 0, qua ReLU sẽ trở thành 0 Các node ấy sẽ không có ý nghĩa ở lớp tiếp theo và các hệ số từ node ấy sẽ không được cập nhật Hiện tượng này được gọi là “Dying ReLU”

Hình 2.5 Đồ thị hàm ReLU

Mạng nơ-ron hồi quy - Recurrent Neural Network (RNN)

2.2.1 Tổng quan mạng RNN Đối với các mạng ANN truyền thống, đầu vào và đầu ra của mạng đều độc lập với nhau Các tính toán ở layer này chỉ sử dụng thông tin từ layer liền kề trước đó, tức là chúng không liên kết thành chuỗi với nhau Trong lĩnh vực xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP), input của các mô hình thường là một câu gồm nhiều từ, độ dài của câu không cố định và giữa các từ lại có quan hệ ngữ nghĩa với nhau Do đó ta không thể chỉ sử dụng ANN để giải quyết các bài toán NLP Mạng nơ-ron hồi quy (Recurrent Neural Network - RNN) đã được phát triển để giải quyết vấn đề này Ý tưởng chính của RNN [5] là sử dụng một bộ nhớ để lưu lại những thông tin từ các thời điểm trước, kết hợp cùng với giá trị input tại thời điểm hiện tại để có thể đưa ra được output chính xác nhất RNN được gọi là hồi quy bởi vì chúng thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ thuộc vào cả những phép tính trước đó Hay nói cách khác, RNN có khả năng "nhớ" các thông tin được tính toán trước đó

Kiến trúc cơ bản của RNN:

Hình 2.6 Mạng nơ-ron hồi quy trong đó:

• 𝑥 ' là đầu vào tại bước t

• U, V, W là các ma trận trọng số

• ℎ ' là trạng thái ẩn tại bước t Đây được xem như là bộ nhớ của mạng ℎ ' được tính toán dựa trên các trạng thái ẩn ở phía trước và input tại bước đó:

ℎ ' = 𝑓(𝑈𝑥 ' + 𝑉ℎ '&$ ) Hàm 𝑓 là một activation function như được giới thiệu ở trên, thông thường là hàm Tanh hoặc Relu Ở bước tính toán đầu tiên, ℎ '&$ chưa có giá trị nên có thể khởi tạo một cách ngẫu nhiên hoặc được gán bằng 0

• 𝑜 ' là đầu ra tại bước t

𝑜 ' = 𝑔(𝑊ℎ ' ) Hàm 𝑔 cũng là một activation function như hàm 𝑓 và thường là ReLU hoặc Tanh Trong trường hợp xây dựng mô hình ngôn ngữ, 𝑜 ' là một vector xác suất các từ trong danh sách từ vựng, hàm 𝑔 được sử dụng lúc này là hàm softmax

2.2.2 Long Short Term Memory (LSTM)

Một vấn đề khi sử dụng RNN đó là vấn đề phụ thuộc gần xa, tức là RNN không thể nhớ được các thông tin quá dài Đối với những chuỗi quá dài, những thông tin ban đầu sẽ bị “lãng quên” dần, bộ nhớ chỉ ghi nhớ những thông tin gần hơn Nguyên nhân là do khi huấn luyện mạng RNN, việc tính đạo hàm qua quá nhiều bước sẽ dẫn đến việc tiêu biến đạo hàm (gradient vanishing) Vì vậy, Long Short Term Memory (LSTM) ra đời để giải quyết vấn đề này

Long Short Term Memory [6] được giới thiệu bởi Hochreiter và Schmidhuber (1997), và sau đó đã được cải tiến và phổ biến bởi rất nhiều người trong ngành Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của chúng, chứ ta không cần phải huấn luyện nó để có thể nhớ được Tức là bên trong nó đã có thể ghi nhớ được mà không cần bất kì can thiệp nào Chúng hoạt động cực kì hiệu quả trên nhiều bài toán khác nhau nên dần đã trở nên phổ biến như hiện nay

Kiến trúc của LSTM phức tạp hơn RNN rất nhiều Để nhớ được nhiều thông tin, LSTM sử dụng các cổng để giữ lại các thông tin quan trọng và bỏ đi những thông tin dư thừa Thành phần quan trọng nhất của LSTM là cell state, đây chính là bộ nhớ của LSTM, ngoài ra còn một thành phần khác là hidden state Cell state và hidden state ở thời điểm t được kí hiệu là 𝐶 ' và ℎ ' Cell state và hidden state sẽ lần lượt được cập nhật ở mỗi thời điểm thông qua các cổng, chi tiết như sau:

• Cổng forget: cổng này quyết định xem thông tin nào cần bỏ đi

• Cổng input: cổng này quyết định xem thông tin nào cần giữ lại

• Cập nhật cell state bằng cách sử dụng cổng input và cổng forget:

• Cổng output: cổng này giúp tính toán các thông tin cần xuất ra ở bước hiện tại

• Cập nhật hidden state bằng cách sử dụng cổng output

2.2.3 Phân loại kiến trúc RNN Để tăng hiệu quả, có thể kết hợp nhiều tầng RNN (hoặc LSTM) với số lượng các đơn vị nhớ lớn hơn để tạo thành một mạng hồi quy có khả năng nhớ được nhiều thông tin hơn, học tốt nhiều ngữ cảnh hơn và độ chính xác cũng sẽ tăng lên Sự kết hợp theo nhiều cách tạo ra nhiều kiến trúc khác nhau của bài toán RNN, phù hợp cho nhiều mục đích khác nhau Ví dụ như các kiến trúc one-to-one, one-to-many, many-to- many,…

Hình 2.8 Các kiến trúc của RNN

Các kiến trúc này có nhiều ứng dụng thực tế trong lĩnh vực trí tuệ nhân tạo:

• one-to-many: tạo bình luận cho ảnh (Image Captioning), sinh văn bản (Text Generation), sinh âm nhạc (Music Generation)

• many-to-one: phân loại văn bản (Text Classification), phân loại sắc thái văn bản (Sentiment Classification)

• many-to-many: nhận biết tên thực thể (Name Entity Recognition), gán nhán từ loại (Part of Speech Tagging), dịch máy (Machine Translation).

Word Embedding

Thành phần cơ bản của một văn bản đó là các từ Để máy tính có thể hiểu được, việc đầu tiên là cần phải biểu diễn các từ thành các vector thực, các vector này sẽ dược dùng làm input để đưa vào mô hình huấn luyện Phương pháp đơn giản nhất là gán mỗi từ cho số và biểu diễn dưới dạng One-hot vector, đây là một vector có số chiều bằng với số lượng từ vựng trong từ điển và chỉ có duy nhất một thành phần là 1 ứng với từ được biểu diễn, các thành phần khác đều bằng 0 Cách biểu diễn này thường ít được dùng vì ba vấn đề:

• Chi phí tính toán lớn: độ dài vector là độ dài của không gian từ vựng, nếu dữ liệu có 10000 từ, độ dài của vector one-hot là 10000

• Mang ít giá trị thông tin: các vector one-hot hầu như chứa toàn số 0

• Không thể biểu diễn quan hệ giữa 2 từ bất kì: ví dụ với euclidean distance, khoảng cách giữa 2 từ bất kì luôn luôn là √2, cho dù 2 từ đó gần nghĩa hay là hoàn toàn không liên quan đến nhau Để khắc phục các vấn đề trên, chúng ta dùng đến Word Embedding Word Embedding là một không gian vector dùng để biểu diễn dữ liệu có khả năng miêu tả được mối liên hệ, sự tương đồng về mặt ngữ nghĩa, ngữ cảnh (context) của dữ liệu Không gian này bao gồm nhiều chiều và các từ trong không gian đó mà có cùng ngữ cảnh hoặc ngữ nghĩa sẽ có vị trí gần nhau Ví dụ như ta có hai câu : "Hôm nay ăn táo" và "Hôm nay ăn xoài" Khi ta thực hiện Word Embedding, "táo" và "xoài" sẽ có vị trí gần nhau trong không gian chúng ta biễu diễn do chúng có vị trị giống nhau trong một câu

Có 2 phương pháp chủ yếu được hay dùng để tính toán Word Embedding là Count based method và Predictive method Cả hai cách này đều dựa trên một giả thuyết rằng những từ nào xuất hiện trong cùng một ngữ cảnh, một ngữ nghĩa sẽ có vị trí gần nhau trong không gian mới được biến đổi Trong luận văn này, tôi sẽ trình bày phương pháp phổ biến hơn là Predictive method (Word2Vec) Word2Vec được Mikolov giới thiệu lần đầu tiên năm 2013 Mikolov đã đề xuất hai mô hình để tính toán các vector biểu diễn từ trong một không gian liên tục (từ 50 đến 100 chiều) từ một tập dữ liệu text rất lớn Hai mô hình này là CBOW (Continuous Bag-of-Words Model) và Skip- gram (Continuous Skip-gram Model), cả hai đều dựa trên kiến trúc mạng neural network sẽ được trình bày sau đây

2.3.1 CBOW model Ý tưởng chính của mô hình CBOW là mô hình sẽ dùng các từ ngữ cảnh (context word) để đoán ra từ trung tâm (target word) Ví dụ đối với chuỗi 5 từ

𝑤 '&+ , 𝑤 '&$ , 𝑤 ' , 𝑤 ',$ , 𝑤 ',+ , mô hình sẽ dùng các từ 𝑤 '&+ , 𝑤 '&$ , 𝑤 ',$ , 𝑤 ',+ dùng làm từ ngữ cảnh để đoán từ trung tâm là 𝑤 ' Để làm được việc này, mô hình CBOW cần học hai ma trận 𝑊 ∈ ℝ -×/ và 𝑊′ ∈

ℝ /×- với 𝑉 là số lượng từ vựng Ma trận 𝑊 thường được gọi là Embedding Matrix, còn ma trận 𝑊′ được gọi là Inversed Embedding Matrix 𝑁 là số chiều của vector embedding Các từ ngữ cảnh và từ trung tâm đều sẽ được biểu diễn bởi vector one- hot 𝑥 ∈ ℕ |-| Các vector đầu vào lần lượt là 𝑥 '&+ , 𝑥 '&$ , 𝑥 ',$ , 𝑥 ',+ , vector đầu ra của mô hình là 𝑦 = 𝑥 '

Các bước tính toán như sau:

• Nhân từng vector ngữ cảnh với ma trận 𝑊 để thu được vector embedding:

• Tính vector trung bình của các vector ngữ cảnh 𝑣S

• Tính 𝑧 = 𝑊 2⊺ 𝑣S và 𝑦S = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑧) chính là phân phối xác suất của từ trung tâm

• Với phân phối dự đoán từ mô hình 𝑦S và phân phối mong đợi 𝑦, ta dùng hàm Cross-Entropy để tính sai số của mô hình và các giải thuật tối ưu (Gradient Descent) để tối ưu trọng số

Nếu như CBOW sử dụng input là các từ ngữ cảnh và cố gắng dự đoán từ trung tâm thì ngược lại, mô hình Skip-gram sử dụng input là từ trung tâm và cố gắng dự đoán ra các từ hàng xóm của nó Với chuỗi từ 𝑤 '&+ , 𝑤 '&$ , 𝑤 ' , 𝑤 ',$ , 𝑤 ',+ , mô hình Skip- gram sẽ dùng từ trung tâm 𝑤 ' để đoán các từ ngữ cảnh 𝑤 '&+ , 𝑤 '&$ , 𝑤 ',$ , 𝑤 ',+ Vai trò của x và y trong Skip-gram ngược lại so với trong CBOW

Hình 2.10 CBOW model vs Skip-gram model

Beam Search

Trong các bài toán NLP như dịch máy (machine translation), tạo caption ảnh tự động (image caption generation), tóm tắt văn bản (text summarization), nhận dạng giọng nói (ASR),… yêu cầu đầu ra của mô hình là chuỗi các từ có trong từ điển Thường thì mỗi từ trong chuỗi từ mà mô hình của các bài toán như trên dự đoán (predict) sẽ đi kèm theo một phân phối xác suất tương ứng Khi đó, bộ Decoder của mô hình sẽ dựa trên phân bố xác suất đó để tìm ra chuỗi từ phù hợp nhất Tìm kiếm chuỗi từ phù hợp nhất yêu cầu chúng ta cần duyệt qua tất cả các chuỗi từ có thể có từ dự đoán của mô hình Khi đó, không gian tìm kiếm của chúng ta là 𝑉 3 (𝑉 là kích thước từ điển và

𝑛 là độ dài của chuỗi)

Do không gian tìm kiếm là quá lớn Trên thực tế , chúng ta thường dùng một thuật toán tìm kiếm heuristic để có được một kết quả tìm kiếm đủ tốt (good enough) cho mỗi dự đoán thay vì phải tìm kiếm toàn cục Mỗi chuỗi từ sẽ được gán một số điểm dựa trên xác suất phân bố của chúng, thuật toán tìm kiếm sẽ dựa trên điểm số này để đánh giá các chuỗi từ này Thuật toán thường được dùng là Beam search

Beam search gần giống với Breadth-first search (tìm kiếm theo chiều rộng) Nó phát triển k đỉnh tốt nhất ở một bậc (level) rồi phát triển k tốt nhất ở bậc tiếp theo, chứ không phát triển tất cả đỉnh như trong Breadth-first search Điểm số của mỗi chuỗi tìm kiếm này được quyết định bởi hàm đánh giá Ví dụ cụ thể với mô hình dịch máy, khởi đầu với chuỗi rỗng và k = 3 Tại vị trí từ đầu tiên 𝑊 $ , ta chọn 3 từ có xác suất cao nhất Với 3 trường hợp 𝑊 $ , ta lại chọn 3 từ có xác suất cao nhất để làm 𝑊 + Lúc này, ta có 9 chuỗi trong kết quả, tiếp tục chọn tiếp 3 từ xác suất cao nhất cho 𝑊 4 ứng với 9 trường hợp này Đến cuối cùng, số lượng chuỗi tìm kiếm có được sẽ là 𝑘 3 (n: độ dài của chuỗi) Hàm đánh giá lúc này sẽ được tính bằng tổng Log xác suất của các từ trong câu:

Trong đó, 𝑝(𝑊 $ ) là xác suất của từ đầu tiên, 𝑝(𝑊 ! |𝑊 $:!&$ ) là xác suất của từ thứ 𝑖 khi biết trước từ thứ nhất đến từ thứ 𝑖 − 1 Sau khi thực hiện Beam search, ta sẽ có k kết quả và ta có thể chọn kết quả với score cao nhất

Hình 2.11 Ví dụ về Beam search

Mô hình ngôn ngữ - Language model

Mô hình ngôn ngữ là một phân bố xác suất trên các tập văn bản, cung cấp các thông tin về phân bố xác suất 𝑝(𝑊 $ 𝑊 3 ) với (𝑊 $ 𝑊 3 ) là các từ vựng trong bộ từ điển của một ngôn ngữ nhất định Nói đơn giản, mô hình ngôn ngữ có thể cho biết xác suất một câu (hoặc cụm từ) thuộc một ngôn ngữ là bao nhiêu Ví dụ, đối với tiếng Việt:

• 𝑝("bây giờ trời đang mưa") = 0.46

• 𝑝("bây giờ đang trời mưa") = 0.37

• 𝑝("bây mưa giờ trời đang") = 0.01

Trong ví dụ trên, xác suất của hai câu đầu tiên cao hơn hẳn so với câu còn lại Điều này cho thấy hai câu “bây giờ trời đang mưa” và “bây giờ đang trời mưa” có khả năng được sử dụng và xuất hiện nhiều trong ngôn ngữ tiếng Việt hơn Còn “bây mưa giờ trời đang” thì rất ít hoặc không xuất hiện vì nhiều nguyên nhân (vô nghĩa, sai chính tả, sai ngữ pháp,…) Từ đó, ta có thể thấy được mô hình ngôn ngữ có thể cho ta các kiến thức mô tả về một ngôn ngữ nhất định, các kiến thức này có thể là các kiến thức về từ vựng, về ngữ pháp, về tần suất xuất hiện của các từ hay cụm từ,… Mô hình ngôn ngữ được ứng dụng trong rất nhiều lĩnh vực của xử lý ngôn ngữ tự nhiên như: kiểm lỗi chính tả, dịch máy hay phân đoạn từ Để xây dựng mô hình ngôn ngữ, có hai hướng tiếp cận truyền thống là Knowledge- based Language Model và Statistical Language Model Tuy nhiên, vì yêu cầu cao về kiến thức chuyên môn và nhiều nhược điểm, Knowledge-based Language Model hầu như không được sử dụng Statistical Language Model thường được quan tâm và tập trung phát triển hơn

Xây dựng Statistical Language Model (mô hình ngôn ngữ dựa trên thống kê) là việc cố gắng đi xác định giá trị của 𝑝(𝑊 $ 𝑊 3 ) từ tập dữ liệu thu thập được Ta có thể tính:

𝑁 với N là số lượng cụm từ có độ dài N trong tập dữ liệu Do đó, Statistical Language Model còn được gọi là Count based Model

Hoặc trong trường hợp không xác định được cụ thể N, chúng ta có thể sử dụng công thức xác suất có điều kiện dưới đây:

𝑐𝑜𝑢𝑛𝑡(𝑊 $ 𝑊 6&$ ) Dựa theo cách thức xác định giá trị xác suất 𝑝(𝑊 $ 𝑊 3 ), trong Statistical Language Model lại được chia thành 2 hướng tiếp cận nhỏ hơn là N-gram Language Model và Structured Language Model

Theo như trên, ta có xác suất có điều kiện:

𝑝(𝑊 $ 𝑊 3 ) = 𝑝(𝑊 $ ) ∗ 𝑝(𝑊 + |𝑊 $ ) ∗ 𝑝(𝑊 4 |𝑊 $ 𝑊 + ) ∗ … ∗ 𝑝(𝑊 3 |𝑊 $ 𝑊 3&$ ) Theo công thức này, mô hình ngôn ngữ cần phải có một lượng bộ nhớ vô cùng lớn để có thể lưu hết xác suất của tất cả các chuỗi độ dài nhỏ hơn n Rõ ràng, điều này là không thể khi m là độ dài của các văn bản ngôn ngữ tự nhiên (m có thể tiến tới vô cùng) Để có thể tính được xác suất của văn bản với lượng bộ nhớ chấp nhận được, ta sử dụng xấp xỉ Markov bậc m:

𝑝(𝑊 3 |𝑊 $ 𝑊 3&$ ) = 𝑝(𝑊 3 |𝑊3&", 𝑊3&",$, … , 𝑊 3&$ ) Nếu áp dụng xấp xỉ Markov, xác suất xuất hiện của một từ 𝑊 3 được coi như chỉ phụ thuộc vào m từ đứng liền trước nó (𝑊3&", 𝑊3&",$, … , 𝑊 3&$ ) chứ không phải phụ thuộc vào toàn bộ dãy từ đứng trước (𝑊 $ , 𝑊 + , … , 𝑊 3&$ ) Dựa vào đó, ta có mô hình ngôn ngữ N-gram (N-gram Language model): gán xác suất dựa vào n từ (n-gram) Trường hợp đơn giản nhất là Unigram – các từ xuất hiện sau không phụ thuộc (độc lập) với các từ phía trước

Hay Bigram – từ dự đoán phụ thuộc vào một từ trước đó

Ta có thể mở rộng cho Trigram, 4-gram,…

Một nhược điểm của mô hình N-gram là không đánh giá được ngữ cảnh của toàn bộ câu, do đó, trong nhiều trường hợp, nó không thể đưa ra một xác suất chính xác Một ví dụ có thể kể đến như câu "The dogs chasing the cat bark" Động từ "bark" (sủa) ở đây nhận chủ ngữ là "The dogs", tuy nhiên, nếu sử dụng 3-gram, mô hình sẽ đi tính xác suất 𝑝("𝑏𝑎𝑟𝑘"|"𝑡ℎ𝑒 𝑐𝑎𝑡"), và kết quả thu được sẽ là bằng 0 Để giải quyết vấn đề này, Structured Language Model ra đời Structured Language Model hay mô hình ngôn ngữ có cấu trúc, cố gắng hướng đến một hệ thống phân cấp cho các từ vựng trong một câu văn Việc này kết hợp với N-gram sẽ cho kết quả bao quát được ngữ cảnh của toàn câu văn, cải thiện độ chính xác của mô hình

Mô hình nhận dạng giọng nói

2.6.1 Đặc trưng của dữ liệu âm thanh Âm thanh là một dạng dữ liệu phổ biến Ngày nay có nhiều nguồn thông tin dưới dạng âm thanh thay vì dưới dạng chữ viết như các bản tin thời sự, phát thanh, audio của các clip trên mạng hay của một buổi livestream… Có rất nhiều nghiên cứu về âm thanh và cũng như cách xử lý nó với nhiều mục đích khác nhau Đối với bài toán chuyển đổi từ âm thanh sang văn bản bằng học sâu thì xử lý âm thanh đầu vào, biểu diễn âm thanh ở một dạng phù hợp là hết sức quan trọng Âm thanh là một dạng tín hiệu dao động, có 2 thuộc tính chính:

• Biên độ (Amplitude): biên độ dao động của tín hiệu, được xem như là độ lớn của âm thanh

• Tần số (Frequency): tốc độ hay tần số của dao động, là số chu kì dao động trong 1 giây

Hình 2.13 thể hiện dạng tín hiệu liên tục (analog) của âm thanh với thuộc tính Amplitude theo thời gian

Hình 2.13 Tín hiệu analog của âm thanh theo thời gian Đối với cách biểu diễn trên thì đặc trưng tần số của âm thanh vẫn chưa được thể hiện rõ Vì vậy, cần có cách biểu diễn khác để thể hiện hết được toàn bộ đặc trưng của tín hiệu âm thanh Spectrogram là một cách biểu diễn trực quan của phổ tần số âm thanh cùng với biên độ của nó trong một khoảng thời gian nhất định và được ghép lại với nhau để biểu diễn một đoạn âm thanh dài Spectogram giúp ta thực sự nhận thấy được âm thanh và đặc trưng của nó, từ đó các mô hình học sâu có thể làm việc những đặc trưng này trong dữ liệu dễ dàng hơn Hình 2.14 thể hiện spectrogram của một đoạn âm thanh theo thời gian theo chiều ngang, tần số theo chiều dọc và màu sắc thể hiện cho biên độ tín hiệu theo thang đo dB

Hình 2.14 Spectrogram của một đoạn âm thanh

Deep Speech 2 là một mô hình nhận dạng giọng nói được đề xuất bởi Baidu [1], đây là một trong những mô hình rất phổ biến trong lĩnh vực nhận dạng giọng nói Hình 2.15 thể hiện cấu trúc của mô hình Deep Speech 2 Mô hình nhận vào spectrogram của đoạn âm thanh và tạo ra đoạn văn bản tương ứng, sử dụng CNN, RNN, CTC

Hình 2.15 Kiến trúc Deep Speech 2

Mô hình Deep Speech 2 là tổ hợp theo thứ tự:

• Phần đầu tiên gồm một hoặc nhiều lớp Convolution, dùng để rút trích đặc trưng từ dữ liệu đầu vào

• Phần thứ hai gồm một hoặc nhiều lớp Recurrent dùng để trính xuất các đặc trưng phụ thuộc thời gian từ đầu ra của các lớp Convolution

• Phần thứ ba gồm một hoặc nhiều các lớp Fully Connected dùng để tính toán các xác suất cho các kí tự đầu ra

Mỗi lớp ẩn (hidden layer) thứ 𝑙 có input là ℎ 7&$ Khi đó ℎ 8 chính là input 𝑥 Đầu tiên 𝑥 sẽ đi qua các lớp Convolution Lớp Convolution thứ 𝑙 sẽ có context window 𝑐, với nhiều kernel, đầu ra kernel 𝑖 của lớp 𝑙 tại timestep 𝑡 được tính bằng:

Sau lớp Convolution là các lớp Recurrent, cụ thể là các lớp Recurrent hai chiều (bidirectional recurrent) Tại lớp 𝑙, đầu ra Recurrent thuận (forward) ℎrrr⃗ ' 7 và Recurrent ngược ℎ⃖rrr ' 7 tại timestep 𝑡 được tính bằng:

⃖rrr = 𝑔(ℎ ' 7&$ , ℎ⃖rrrrrrrr) '&$ 7 Hàm 𝑔 có thể là RNN, GRU hoặc LSTM

Kết quả đầu ra của lớp Recurrent sẽ là ℎ 7 = ℎrrr⃗ + ℎ ' 7 ⃖rrr ' 7 Sau các lớp Recurrent sẽ là một hoặc nhiều lớp Fully Connected Đầu ra lớp ở lớp 𝑙 tại thời gian 𝑡 là:

ℎ ' 7 = 𝑓(𝑊 7 ℎ ' 7&$ + 𝑏 7 ) trong đó, 𝑊 7 , 𝑏 7 là trọng số và bias của lớp thứ 𝑙, 𝑓 là một activation function, ví dụ như ReLU Ở lớp Fully Connected cuối cùng, output sẽ được đưa qua Softmax function để tính xác suất các kí tự tại thời điểm t

Sau cùng, mô hình sử dụng CTC (Connectionist Temporal Classification) để tính hàm mất mát giữa phân bố xác suất các kí tự vừa tính được ở lớp cuối ở trên và nhãn tương ứng

Các công trình liên quan

Deep Speech 2: End-to-End Speech Recognition in English and Mandarin – [1]

Trong công trình nghiên cứu này, nhóm tác giả đã cho ra một mô hình học sâu end- to-end được sử dụng để nhận diện hai loại ngôn ngữ là tiếng Anh và tiếng Trung Bằng việc thay thế toàn bộ pipeline xử lý bằng các mạng nơ-ron nhân tạo, mô hình học sâu end-to-end cho phép chúng ta xử lý được nhiều loại dữ liệu âm thanh bao gồm nhiễu của môi trường, giọng phát âm và ngôn ngữ khác nhau Đồng thời tốc độ các thí nghiệm cũng được tăng đáng kể

Recurrent Neural Network based Language Model – [8]

Trong bài báo này, nhóm tác giả trình bày phương pháp hiện thực mô hình ngôn ngữ dựa trên mạng neural hồi quy (Recurrent neural network) ở cấp độ kí tự Các kết quả thử nghiệm trên tập dữ liệu NIST RT05 cho thấy kết quả vượt trội hơn nhiều so với các mô hình n-gram tiêu chuẩn, ngoại trừ độ phức tạp hơi cao của mô hình này

A New Approach To Accent Restoration Of Vietnamese Texts Using Dynamic Programming Combined With Co-Occurrence Graph – [12]

Nhóm tác giả đưa ra một phương pháp mới cho đánh dấu văn bản tiếng Việt Đầu tiên tác giả xây dựng một mô hình ngôn ngữ cho tiếng Việt như một cơ sở dữ liệu về các xác suất của từ vựng trong câu Sau đó dựng bản đồ translate để giảm không gian tìm kiếm Sau cùng dùng thuật toán quy hoạch động để tìm lời giải mang lại xác suất từ vựng cao nhất Theo tác giả, độ chính xác trung bình của phương pháp này đạt đến 93% – 94%

Vietnamese Text Accent Restoration With Statistical Machine Translation – [16]

Trong bài báo này, nhóm tác giả đề xuất phương pháp kết hợp giữa n-gram và từ điển cụm từ cho bài toán bỏ dấu cho tiếng Việt Phương pháp này xem việc dự đoán dấu cho câu như bài toán dịch máy thống kê với ngôn ngữ nguồn là văn bản tiếng Việt không dấu, còn ngôn ngữ đích là văn bản đã có dấu tương ứng Tác giả cải thiện chất lượng mô hình bằng cách áp dụng một số kỹ thuật như thêm từ điển, thay đổi thứ tự mô hình ngôn ngữ và tuning mô hình

Auto correct Vietnamese misspelling – Pham Kim Long – Zalo Tech (2018) –

Bài viết nói về cách xây dựng một mô hình sửa lỗi chính tả cho các văn bản nhập từ bàn phím thiết bị di động với bộ gõ tiếng Việt Tác giả trình bày cách tiếp cận cơ bản khi sửa lỗi chính tả và vai trò của Telex khi xây dựng mô hình lỗi (Error Model) Ngoài ra, tác giả còn đề cập thêm về các phương pháp truyền thống trong sửa lỗi chính tả dựa trên mô hình ngôn ngữ (Language Model) và mô hình lỗi

4.1 Phương pháp xử lý dữ liệu

Theo như đã nói ở phần Cơ sở lý thuyết, mô hình Deep Speech 2 nhận vào Spectrogram của đoạn âm thanh để huấn luyện Nhưng tất cả các dữ liệu raw đều ở dạng Analog Để có thể chuyển tín hiệu âm thanh từ miền thời gian (Analog) sang miền tần số (Spectrogram), ta sử dụng phương pháp Fourier transform (FT) Bất kì một tính hiệu analog nào cũng có thể được biểu diễn dưới dạng tổng của các hàm sin có tần số khác nhau và biên độ khác nhau FT phân giải một tính hiệu analog phức tạp thành nhiều tín hiệu hình sin đó Kết hợp các miền tần số của nhiều khoảng thời gian analog liên tục, ta sẽ thu được spectrogram Có nhiều dạng của FT, phương pháp được sử dụng cho đề tài là Fast Fourier transform (FFT), một dạng của FT rời rạc với độ phức tạp thấp 𝑂(𝑁𝑙𝑜𝑔 / )

Hình 4.1 Tính toán FFT của một đoạn âm thanh Đối với một đoạn âm thanh, tiến hành cắt thành các đoạn liên tục đều nhau có độ dài nhỏ hơn (khoảng 20ms – 50ms) Sử dụng FFT để chuyển sang các đoạn tín hiệu sang miền tần số Lấy log của bình phương các giá trị FFT tại mỗi tần số, ta được một frame tương ứng Ghép các frame này liền kề lại với nhau ta sẽ có được spectrogram của đoạn tín hiệu âm thanh ban đầu

Hình 4.2 Spectrogram từ một đoạn âm thanh

Phương pháp xử lý dữ liệu

Theo như đã nói ở phần Cơ sở lý thuyết, mô hình Deep Speech 2 nhận vào Spectrogram của đoạn âm thanh để huấn luyện Nhưng tất cả các dữ liệu raw đều ở dạng Analog Để có thể chuyển tín hiệu âm thanh từ miền thời gian (Analog) sang miền tần số (Spectrogram), ta sử dụng phương pháp Fourier transform (FT) Bất kì một tính hiệu analog nào cũng có thể được biểu diễn dưới dạng tổng của các hàm sin có tần số khác nhau và biên độ khác nhau FT phân giải một tính hiệu analog phức tạp thành nhiều tín hiệu hình sin đó Kết hợp các miền tần số của nhiều khoảng thời gian analog liên tục, ta sẽ thu được spectrogram Có nhiều dạng của FT, phương pháp được sử dụng cho đề tài là Fast Fourier transform (FFT), một dạng của FT rời rạc với độ phức tạp thấp 𝑂(𝑁𝑙𝑜𝑔 / )

Hình 4.1 Tính toán FFT của một đoạn âm thanh Đối với một đoạn âm thanh, tiến hành cắt thành các đoạn liên tục đều nhau có độ dài nhỏ hơn (khoảng 20ms – 50ms) Sử dụng FFT để chuyển sang các đoạn tín hiệu sang miền tần số Lấy log của bình phương các giá trị FFT tại mỗi tần số, ta được một frame tương ứng Ghép các frame này liền kề lại với nhau ta sẽ có được spectrogram của đoạn tín hiệu âm thanh ban đầu

Hình 4.2 Spectrogram từ một đoạn âm thanh

Dữ liệu văn bản được dùng cho bài toán mô hình ngôn ngữ Đối với dữ liệu văn bản, cần các bước xử lý đặc trưng cho tiếng Việt Tiếng Việt là ngôn ngữ đơn âm tiết, không dễ tách từ bằng khoảng trắng như tiếng Anh, ví dụ như các từ “ngôi nhà”,

“trường học”, Khi làm việc với các mô hình ngôn ngữ ở mức từ, cần phải dùng các công cụ tách từ một cách hợp lý

Khi sử dụng mô hình ngôn ngữ ở mức thấp hơn là mức kí tự Dữ liệu cần được xử lý kỹ lưỡng hơn vì ở mức độ này, ảnh hưởng của nhiễu có thể rất lớn Cần loại bỏ những kí tự đặc biệt không được dùng đến trong các văn bản chính quy, cân nhắc việc thay thế hoặc loại bỏ những dấu câu, thêm các symbol bắt đầu và kết thúc câu, xử lý các pattern đặc biệt trong văn bản như số, ngày tháng,

Phương pháp xây dựng mô hình nhận diện giọng nói

Như đã nêu ở phần Giới hạn đề tài, luận văn sẽ chỉ dừng ở mức xây dựng mô hình ASR cơ bản để kết hợp với mô hình ngôn ngữ Mô hình Deep Speech 2 được các nhà khoa học Baidu nghiên cứu phát triển trên ngôn ngữ là tiếng Anh và tiếng Trung và rất thành công Trong luận văn này tôi sẽ tiến hành áp dụng mô hình Deep Speech 2 lên tập dữ liệu giọng nói tiếng Việt, từ đó có các bước điều chỉnh để đạt được kết quả tốt nhất.

Phương pháp xây dựng mô hình ngôn ngữ

Ở phần Cơ sở lý thuyết, tôi đã trình bày tổng quan về mô hình ngôn ngữ và các hướng xây dựng truyền thống Trong đề tài luận văn này, tôi sẽ xây dựng mô hình ngôn ngữ theo hướng Recurrent Neural Network Based Language Model Recurrent Neural Network lại tập trung giải quyết một khía cạnh khác về ngữ cảnh của toàn bộ câu, giúp giải quyết được các giới hạn về ngữ cảnh Hiện nay, các mô hình ngôn ngữ dựa trên RNN hoặc các phát triển từ nó như GRU, LSTM, đang đạt được các kết quả State of the art

Hình 4.3 RNN trong xây dựng mô hình ngôn ngữ

4.3.1 Mô hình ngôn ngữ mức kí tự

Như đã nêu ở phần lý thuyết, RNN có nhiều kiến trúc theo các bài toán như one-to- one, one-to-many,… Trong luận văn này, tôi sử dụng kiến trúc many-to-one để hiện thực mô hình ngôn ngữ ở mức kí tự Hình 4.4 cho thấy ví dụ kiến trúc cơ bản của mô hình ngôn ngữ mức kí tự dựa trên RNN

Hình 4.4 Mô hình ngôn ngữ mức kí tự Đối với mô hình ngôn ngữ này, dữ liệu đầu vào sẽ được encode thành một chuỗi các vector one-hot của kí tự Độ dài của chuỗi đầu vào là cố định Đầu ra sẽ là một vector với chiều dài bằng với kích thước của toàn bộ không gian kí tự bao gồm luôn cả các symbol và giá trị tại mỗi vị trí sẽ là xác suất của mỗi kí tự ứng với vị trí đó Ví dụ cụ thể với chuỗi dữ liệu là từ “quốc gia” Khi huấn luyện mạng, toàn bộ cụm từ sẽ được encode thành chuỗi tám vector one-hot, bao gồm cả kí tự khoảng trắng Sau đó, bảy vector đầu tiên sẽ được làm dữ liệu đầu vào, còn vector cuối cùng sẽ là nhãn tương ứng

Hình 4.5 Đầu vào và ra của mô hình ngôn ngữ mức kí tự

4.3.2 Mô hình ngôn ngữ mức từ

Kiến trúc mô hình ngôn ngữ mức từ gần giống với mức kí tự Hình 4.6 cho thấy kiến trúc của mô hình ngôn ngữ mức từ

Hình 4.6 Mô hình ngôn ngữ mức từ

Lúc này, dữ liệu đầu vào là chuỗi vector one-hot của các từ Độ dài chuỗi cố định Đầu ra tương ứng cũng sẽ là một vector với chiều dài bằng với kích thước của toàn bộ không gian từ vựng và giá trị tại mỗi vị trí sẽ là xác suất của mỗi từ tương ứng

Tuy nhiên, do không gian từ vựng lớn hơn không gian kí tự rất nhiều và các vector one-hot hầu như không có quan hệ gì với nhau, các vector này cần được chuyển sang chiều không gian nhỏ hơn mà tại đó các vector cũng sẽ thể hiện được mối quan hệ ngữ cảnh với nhau Vì thế, ở mô hình ngôn ngữ mức từ sẽ có thêm tầng embedding như hình ở trên Các trọng số của tầng embedding này được huấn luyện như một mô hình riêng trước bằng CBOW hoặc Skip-gram, sau đó được load lên sử dụng và không được cập nhật trong suốt quá trình huấn luyện mô hình ngôn ngữ.

Phương pháp phát hiện và sửa lỗi

4.4.1 Phát hiện và sửa lỗi mức kí tự

Như vậy với mô hình ngôn ngữ, ta có thể dùng để xác định xác suất của một bất kì một kí tự kế tiếp dựa vào chuỗi kí tự phía trước nó Giả sử ta đã xây dựng được mô hình ngôn ngữ mức kí tự trên tập dữ liệu đủ lớn Ví dụ với input là chuỗi “ngôi nh”, ta có xác suất của các kí tự tiếp theo:

Bước tiếp theo của bài toán là phát hiện lỗi chính tả có thể có trong văn bản Một mô hình ngôn ngữ đủ tốt sẽ capture được tốt xác suất của ngôn ngữ trong gần hết các ngữ cảnh Một văn bản đúng chính tả sẽ có tất cả xác suất của từ hay kí tự đều cao hơn ngưỡng chấp nhận được Ngược lại, khi có lỗi sai chính tả, thì tại vị trí đó xác suất của từ hay kí tự sẽ thấp hơn rất nhiều và gần với giá trị 0 Ví dụ với câu: “soạn thảu văn bản” Giả sử năm kí tự đầu tiên là đúng, ngưỡng xác suất để xác định sai chính tả là 0.01, ta xem xét giá trị xác suất của từ kế tiếp với đoạn văn bản đầu là “hôm na”:

• soạn th[ả] 𝑝 = 0.8254 > 0.01 ® Đúng chính tả

• soạn thả[u] 𝑝 = 0.0062 < 0.01 ® Sai chính tả

Vì xác suất của kí tự “u” thấp hơn ngưỡng, nên có thể xem như vị trí này đang bị sai chính tả Kế tiếp, cần phải sửa lại lỗi sai này Đơn giản nhất là lấy từ kế tiếp có xác suất cao nhất theo mô hình ngôn ngữ để thay thế Cụ thể trong trường hợp này là kí tự “o”, với 𝑝 = 0.9902 Lúc này, câu được sửa lại thành “soạn thảo văn bản” Tiếp tục kiểm tra xác suất tại các vị trí còn lại, ta sẽ thấy giá trị sẽ đủ lớn để có thể chấp nhận được Hình 4.7 minh hoạ cho giải thuật Greedy này

Trên đây là một heuristic đơn giản và tường minh cho phát hiện và sửa lỗi Tuy nhiên, không phải lúc nào phương pháp này cũng hoạt động một cách hiệu quả Vì chúng ta không biết chính xác ngưỡng xác suất để xác định đó là sai bằng bao nhiêu, việc chọn ngưỡng sai có thể dẫn đến kết quả không mong muốn Đối với một số văn bản, lỗi chính tả xảy ra ngay từ đầu văn bản, khi dùng những ngữ cảnh sai chính tả này để dự đoán xác suất từ kế tiếp sẽ làm cho việc phát hiện sửa lỗi không chính xác Vì vậy, cần phải có những kĩ thuật, chiến lược heuristic phù hợp để cải thiện và tận dụng tối đa khả năng của mô hình ngôn ngữ n-Lookahead probability

Trong một số trường hợp, việc sử dụng từ có xác suất trực tiếp cao nhất để thay thế có thể là không đúng Ví dụ với trường hợp sau: “mùa zuân tây bắc” Áp dụng chiến lược ở trên ta phát hiện vị trí thứ năm, kí tự “z” bị sai chính tả Ta xem năm từ có xác suất cao nhất ứng với ngữ cảnh trước đó:

Như vậy, nếu ta chọn từ có xác suất cao nhất và thay thế, lúc này câu sẽ trở thành

“mùa suân tây bắc” và vẫn sai chính tả Nguyên nhân là do mô hình ngôn ngữ không thể thấy được phần ngữ cảnh phía sau là cụm “uân” mà chỉ dùng phần phía trước

“mùa ” để đưa ra xác suất của các từ Trong trường hợp này, thay vì sử dụng xác suất trực tiếp, chúng ta sẽ sử dụng xác suất n-Lookahead Có nghĩa là thay vì dùng xác suất trực tiếp để phát hiện và sửa lỗi, ta sẽ dùng xác suất của từ hiện tại tính thêm

𝑛 − 1 từ kế tiếp Cụ thể, với ví dụ trên, khi chọn kí tự phù hợp để thay thế, với 𝑛 = 4, ta tính:

• mùa [s] 𝑝 $ mùa s[u] 𝑝 + mùa su[â] 𝑝 4 mùa suâ[n] 𝑝 :

• mùa [t] 𝑝 $ mùa t[u] 𝑝 + mùa tu[â] 𝑝 4 mùa tuâ[n] 𝑝 :

• mùa [x] 𝑝 $ mùa x[u] 𝑝 + mùa xu[â] 𝑝 4 mùa xuâ[n] 𝑝 :

Xác suất n-lookahead của mỗi trường hợp sẽ là:

𝑝(𝑛 − 𝑙𝑜𝑜𝑘𝑎ℎ𝑒𝑎𝑑) = 𝑝 $ × 𝑝 + × 𝑝 4 × 𝑝 : Lúc này, do tính đến xác suất của cả ngữ cảnh phía sau, nên xác suất n-lookahead của trường hợp kí tự “x” sẽ cao hơn và được chọn để thay thế Ngoài ra, khi chọn 𝑛 lớn, các giá trị xác suất khi nhân với nhau sẽ cho ra kết quả rất nhỏ Ta có thể lấy tổng 𝑙𝑜𝑔 của các xác suất thành phần và dùng kết quả đó thay cho xác suất n-lookahead ban đầu:

Các chiến lược sửa lỗi

Có nhiều loại lỗi thường xảy ra khi sai chính tả, việc thay thế từ bị sai chỉ là phương pháp sửa lỗi dựa trên một trong số chúng Các lỗi sai có thể chia thành các loại sau:

• Lỗi replace: ngôi nhà ® ngai nhà

• Lỗi transpose: ngôi nhà ® ngiô nhà

• Lỗi delete: ngôi nhà ® ngi nhà

• Lỗi insert: ngôi nhà ® ngôôi nhà

Ngoài ra, có thể có thêm một số trường hợp khác tuỳ theo các trường hợp khác nhau Với mỗi loại ta sẽ có chiến lược sửa lỗi tương ứng, cụ thể:

Trong thực tế, khi phát hiện lỗi sai dựa trên xác suất mô hình ngôn ngữ, chúng ta không biết được là sai loại nào Vì thế, với mỗi loại lỗi, chúng ta sẽ tạo ra những correct case (trường hợp sửa lỗi) tương ứng Sau đó chúng ta sẽ tính giá trị n- lookahead của từng trường hợp và chọn giá trị cao nhất

Ngoài ra, đối với trường hợp insert và replace, ta có thể kết hợp Beam search với mô hình ngôn ngữ để tạo ra thêm được nhiều trường hợp sửa lỗi Ví dụ với trường hợp lỗi chính tả sau: “năng lulng hạt nhân”, khi phát hiện và chọn từ sửa lỗi cho vị trí thứ năm, ta áp dụng Beam search với 𝑏𝑒𝑎𝑚_𝑤𝑖𝑑𝑡ℎ = 2 và 𝑏𝑒𝑎𝑚_𝑠𝑖𝑧𝑒 = 2:

Hình 4.8 Kết hợp Beam search với mô hình ngôn ngữ

Như vậy, với kết quả của Beam Search, ta sẽ có các kết quả “ượ”, “ưn”, “ựa”, “ực” Lúc này, ta sẽ replace hai kí tự “ul” trong câu ban đầu bởi các kết quả tương ứng:

Các kết quả replace này sẽ được thêm vào một trong các correct case ở trên để làm phong phú hơn cho các lựa chọn sửa lỗi Và trong trường hợp này, kết quả sửa lỗi đúng (“năng lượng nguyên tử”) đã được thêm vào thông qua Beam search

Cuối cùng, kết hợp các phương pháp ở trên lại Ta sẽ có được một giải thuật heuristic sửa lỗi hoàn thiện hơn Hình 4.9 minh hoạ cho sơ đồ giải thuật

Hình 4.9 Flowchart giải thuật sửa lỗi từ một phía mức kí tự

Kết hợp sửa lỗi từ hai phía left2right và right2left

Phương pháp đánh giá

Đối với vấn đề chuyển tiếng nói thành văn bản, thì độ chính xác của văn bản đầu ra là yếu tố quyết định hệ thống có đạt được kết quả mong muốn Để đo độ chính xác này, ta sẽ so sánh văn bản dự đoán khác nhau bao nhiêu so với văn bản thực tế Sự khác nhau càng nhỏ, sự chính xác của văn bản dự đoán được càng lớn Một giá trị thường được sử dụng để đo sự khác nhau giữa hai văn bản đó là Word Error Rate (WER) WER là tỉ lệ lỗi giữa văn bản dự đoán và văn bản đúng, được đo trên số lượng từ bị thay đổi giữa hai văn bản (do bị xóa, thêm, chỉnh sửa) trong quá trình dự đoán

• 𝑆: số lượng từ bị thay thế

• 𝐷: số lượng từ bị xoá

• 𝐼: số lượng từ thêm vào

• 𝐶: số lượng từ chính xác

Ngoài ra, ta cũng có thể định nghĩa thêm Char Error Rate (CER) một cách tương tự.

Hiện thực mô hình tự động nhận diện giọng nói (ASR)

Dữ liệu transcripts là tập các câu hỏi được dùng để huấn luyện cho Chatbot trong đề tài luận văn “PHÁT TRIỂN MỘT CHATBOT THÔNG MINH ĐỂ TƯ VẤN HOẠT ĐỘNG ĐOÀN CHO SINH VIÊN” Bộ dữ liệu transcripts gồm 600 câu hỏi về các hoạt động, phong trào của trường, lớp, câu lạc bộ do các bạn sinh viên đã hỏi

• “ai tham gia được mùa hè xanh nhỉ”

• “mình làm gì khi tham gia tập huấn kỹ năng”

• “vậy đi gia sư tình bạn có lợi gì”

• “ai”, “mình”, “vậy”, “gì”, “làm”,…

Dữ liệu audio được các bạn sinh viên tự thu âm thành các file wav ứng với mỗi đoạn transcript, tổng độ dài khoảng 2 giờ Dữ liệu được tăng cường bằng cách thêm nhiễu, thay đổi speed, thêm padding,… Sau khi tăng cường, ta được khoảng hơn 10 giờ dữ liệu âm thanh

5.1.2 Xây dựng mô hình ASR

Mô hình ASR được xây dựng dựa trên kiến trúc Deep Speech 2 nhưng đơn giản hơn để phù hợp với dữ liệu hiện có Kiến trúc bao gồm 2 lớp CNN, 2 lớp RNN và một lớp Fully connected Trong đó:

• 2 lớp CNN: in_channels: 1 out_channels: 32 padding: “SAME” stride: (2,2) kernel_shape: (5,5)

• 2 lớp RNN: mode: “LSTM” rnn_type: “BI_DIR” hidden_layer_size: 1024

Sau khi huấn luyện xong và kiểm tra trên tập test, ta có kết quả sau:

Bảng 5.1 Kết quả test mô hình ASR

Một số kết quả predict:

• Ground truth: cho mình hỏi chút về tiếp sức mùa thi với Predict: cho mình hỏi chút về tiếp sức tùa thin với

• Ground truth: chỉ mình cách đăng kí tập huấn kỹ năng với Predict: chỉ ình mcách đăng kí tập huấn kỹ năng với i

• Ground truth: bạn cho mình biết chi tiết về tết sum vầy đi Predict: bạn cho mình biết chi tiết về tết sum vầy đgi

Hiện thực mô hình ngôn ngữ (LM)

Dữ liệu huấn luyện cho mô hình ngôn ngữ gồm ba tập dữ liệu thuộc các domain khác nhau:

• Dữ liệu các bài báo điện tử

Bao gồm 4911 bài báo (111768 câu) từ hai mục “thể thao” và “du lịch” trên trang zingnews.vn

• Dữ liệu các bài viết Wiki

Gồm 336184 bài viết (4795792 câu) lấy từ nguồn Wikipedia tiếng Việt

• Dữ liệu transcripts mô hình ASR

Gồm 600 câu transcript để huấn luyện mô hình ASR ở trên

Dữ liệu được tiền xử lý bằng các bước:

• Chỉ giữ lại chữ số, các chữ trong ngữ hệ latin (bao gồm chữ có dấu và không dấu), các dấu chấm, phẩy, chấm than, chấm hỏi

• Chèn thêm symbol “BOS” (begin of sentence) vào đầu câu, “EOS” (end of sentence) vào cuối câu

• Thay các giá trị số bằng symbol VALUE

Sau khi tiền xử lý dữ liệu, tiến hành tạo dữ liệu huấn luyện Với mỗi câu trong tập dữ liệu, ta lấy n (sequence length) kí tự (từ) đầu tiên và lấy 1 kí tự (từ) kế tiếp làm nhãn, bao gồm luôn cả các symbol đã tạo ở trên, như vậy tính là 1 record Tiếp tục trượt sang phải 1 kí tự (từ) và lặp lại để tạo record mới Tiếp tục cho đến khi hết câu thì dừng lại Đối với mô hình right2left đã nói ở trên thì đảo ngược các các trước khi tạo record

5.2.2 Mô hình ngôn ngữ mức kí tự

Kiến trúc mô hình ngôn ngữ mức kí tự:

Hình 5.1 Kiến trúc hiện thực mô hình ngôn ngữ mức kí tự

Sau tầng input là tầng embedding được thêm vào chuyển các vector one-hot của các kí tự sang chiều không gian mới mà tại đó các vector có liên hệ với nhau về ngữ cảnh

Khác với mức từ thì các trọng số của lớp embedding này sẽ được cập nhật trong quá trình huấn luyện Sau đó là 4 lớp LSTM với dropout ở lớp thứ 2 và thứ 4 Cuối cùng là một lớp Fully connected để trích xuất các đặc trưng từ đầu ra LSTM trước đó Sau cùng cũng là một lớp Fully connected với hàm kích hoạt là Softmax để lấy vector xác suất tương ứng của từ vựng Mô hình lấy sequence length là 30 Không gian các kí tự bao gồm luôn các symbol có độ lớn là 102 kí tự, vì vậy lớp cuối có kích thước là 102

Sau khi xử lý dữ liệu và huấn luyện trên 3 tập dữ liệu, ta thu các mô hình ngôn ngữ mức kí tự từ hai phía tương ứng

Left2right model Right2left model

Dữ liệu báo điện tử 78.2% 80.1%

Bảng 5.2 Độ chính xác các mô hình ngôn ngữ mức kí tự

• Độ chính xác của các mô hình tỉ lệ nghịch với độ lớn và độ phức tạp của bộ dữ liệu tương ứng

• Mô hình Righ2left luôn có độ chính xác cao hơn Left2right khoảng 1 – 2%

Nguyên nhân là do với mô hình Left2right, cùng một chuỗi kí tự đầu vào, có thể có nhiều đầu ra khác nhau Ví dụ như với chuỗi “ngôi ”, kí tự tiếp theo có thể là “n” (ngôi nhà), “t” (ngôi trường) hay thậm chí là “c” (ngôi chùa) Còn đối với mô hình Right2left, với chuỗi kí tự đầu vào đã là chuỗi ngữ cảnh phía sau, thì số lượng trường hợp đầu ra rất ít, thường chỉ là 1 kết quả

Hình 5.2 Ví dụ về kết quả của mô hình ngôn ngữ

5.2.3 Mô hình ngôn ngữ mức từ

Kiến trúc mô hình ngôn ngữ mức từ:

Hình 5.3 Kiến trúc hiện thực mô hình ngôn ngữ mức từ

Mô hình gần giống với mô hình mức kí tự nhưng đơn giản hơn do lượng dữ liệu huấn luyện ở mức từ sẽ ít hơn nhiều Tuy nhiên, các trọng số lớp embedding sẽ được huấn luyện bên ngoài trước với mô hình CBOW và Skip-gram, sau đó sẽ được load lên trước khi huấn luyện và sẽ không được cập nhật trong suốt quá trình huấn luyện Lớp cuối cùng tuỳ theo mỗi bộ dữ liệu mà có kích thước khác nhau, đối bộ dữ liệu các bài báo là khoảng 11000 từ, của dữ liệu transcript chỉ khoảng 4000 từ, còn dữ liệu wiki là hơn 65000 từ Đối với bộ dữ liệu wiki, con số 65000 từ vựng là rất lớn, do chứa nhiều tên riêng và nhiễu, nếu giữ nguyên sẽ làm cho chất lượng mô hình kém và độ phức tạp của mô hình rất lớn Vì thế, khi huấn luyện các trọng số cho lớp embedding đối với dữ liệu wiki, chỉ giữ lại những từ có tần số xuất hiện trên 10 lần để loại bỏ bớt nhiễu Kết quả, sau khi lọc bớt, số lượng từ vựng của tập dữ liệu wiki còn khoảng

17000 từ Tất cả các mô hình đều dùng sequence length là 10

Kết quả Đối với mô hình mức từ, theo phương pháp đã nêu, chỉ cần huấn luyện mô với thứ từ các từ từ trái sang phải như bình thường

Dữ liệu báo điện tử 81.4%

Bảng 5.3 Độ chính xác các mô hình ngôn ngữ mức từ

Nhận xét: độ chính xác mô hình mức từ nhỉnh hơn so với mức kí tự.

Mô hình phát hiện và sửa lỗi

Hiện thực các mô hình sửa lỗi dựa trên phương pháp phát hiện và sửa lỗi đã nêu và áp dụng từng mô hình ngôn ngữ với các tập dữ liệu khác nhau Đối với tập dữ liệu các bài báo và Wikipedia, các mô hình sửa lỗi này sẽ được dùng để sửa lỗi với một số trường hợp sai chính tả trong và ngoài nội dung của tập dữ liệu

Ví dụ một số trường hợp lỗi:

• năm du lịch quốa gia

• mùa xaân tây bắc khiến du khech lạc lối

• nhữnb vật dụnd khônb thể thiếu khi đi du lịch mùa đôcg

• những thực phẩm không đưec mang theo khi dz lịch nước ngoàb

• trong số các quốc ga công ngiệp phát triển

• phương pháp giáo dục rất đa dạ

Hình 5.4 Ví dụ về sửa lỗi 1

Hình 5.5 Ví dụ về sửa lỗi 2 Đối với dữ liệu transcripts, mô hình sửa lỗi sẽ sửa lỗi trực tiếp kết quả dự đoán từ mô hình ASR để đánh giá:

Kết quả từ ASR model

Sửa lỗi với mô hình mức kí tự

Sửa lỗi với mô hình mức từ

Bảng 5.4 Kết quả sửa lỗi cho kết quả mô hình ASR

Một vài trường hợp sửa lỗi cho mô hình ASR:

• Ground truth: cho mình hỏi chút về tiếp sức mùa thi với

ASR predict: cho mình hỏi chút về tiếp sức tùa thin với

LM correct: cho mình hỏi chút về tiếp sức mùa thi với

• Ground truth: chỉ mình cách đăng kí tập huấn kỹ năng với

ASR predict: chỉ ình mcách đăng kí tập huấn kỹ năng với i

LM correct: chỉ mình cách đăng kí tập huấn kỹ năng với ai

Kết hợp mô hình và tích hợp vào ứng dụng Chatbot

Hiện tại, các bạn sinh viên đã xây dựng một ứng dụng Chatbot phục vụ cho việc hỏi đáp các câu hỏi liên quan đến các hoạt động, phong trào của trường, câu lạc bộ,… Ứng dụng cho phép người dùng nhập các câu hỏi từ bàn phím và Chatbot sẽ đưa ra và tư vấn các thông tin cần thiết cho người dùng

Chatbot (text only): là bản Chatbot đã được hiện thực sẵn

A Backend (Chatbot model): python, đã hiện thực model hỏi đáp (Reinforcement Learning)

B Frontend: Html + JS + Css, đã hiện thực phần textfield cho phép nhập text và hiển thị câu trả lời từ model hỏi đáp

C Flow: i Frontend: nhập chuỗi text trong ô textfield ii Frontend: gọi api đến Chatbot Backend (A) với thông tin là chuỗi text vừa nhập iii Backend: process câu hỏi và predict ra câu trả lời, trả về kết quả iv Frontend: hiển thị kết quả vừa nhận lên màn hình chat

Chatbot (text & speech): là Chatbot có thêm chức năng nhận diện giọng nói

A Backend (Chatbot model): giữ nguyên như Chatbot (text only)

B Backend (ASR + LM model): python, thực hiện chuyển đổi file âm thanh wav sang text, sau đó kiểm tra và sửa lỗi trên đoạn text đó

C Backend (Audio processing): python, xử lý, lưu trữ và convert các file âm thanh cho phù hợp với ASR + LM Backend (B)

D Frontend: vẫn dựa trên repo cũ, implement thêm phần thu âm và chuyển âm thanh thành text

E Flow: i Frontend: bật micro trên máy tính và thu âm (định dạng opus) ii Gửi data thu âm lên Audio Backend (C) iii Xử lý file opus, convert sang file wav Gửi qua ASR + LM Backend (B), chuyển file âm thanh sang text Sau đó trả kết quả về cho Audio Backend (C) Trả tiếp kết quả về cho phía Frontend iv Frontend hiển thị kết quả vừa nhận lên màn hình chat v Quay lại các bước ii, iii, iv của Chatbot (text only.)

Giao diện có thêm button cho việc thu âm giọng nói Người dùng nhấn và giữ button này trong khi nói Khi kết thúc, flow E của Chatbot (text & speech) sẽ bắt đầu được thực thi

Hình 5.8 Phản hồi của Chatbot

Lúc này, người dùng có thể tiếp tục dùng chức năng speech hoặc cũng có thể đơn là nhập đoạn text vào.

Các kết quả đạt được

• Tìm hiểu về các kiến thức nền tảng về xử lý ngôn ngữ tự nhiên, mô hình ngôn ngữ,…

• Tìm hiểu về kiến trúc Deep Speech 2 cho mô hình nhận diện giọng nói

• Huấn luyện mô hình ASR cơ bản

• Thu thập và xử lý các bộ dữ liệu văn bản cho mô hình ngôn ngữ

• Huấn luyện mô hình ngôn ngữ mức kí tự và từ bằng RNN trên 3 tập dữ liệu khác nhau

• Xây dựng các kỹ thuật sửa lỗi dựa trên mô hình ngôn ngữ mức kí tự và từ

• Kết hợp mô hình sửa lỗi để cải thiện kết quả mô hình ASR

• Tích hợp thành tính năng nhận diện giọng nói trên ứng dụng Chatbot tư vấn

• Đóng góp vào một báo cáo khoa học [17] trong hội nghị The 6th Science and

Technology Symposium for OISP Students.

Khó khăn và hạn chế

Các khó khăn gặp phải:

• Dữ liệu huấn luyện mô hình ASR rất ít, giọng đọc không đa dạng, thường thu trong môi trường ít nhiễu

• Dữ liệu huấn luyện cho mô hình ngôn ngữ vẫn còn hạn chế Khó tìm một nguồn dữ liệu nào bao quát đủ các domain

• Quá trình huấn luyện các mô hình tốn nhiều thời gian do hạn chế tài nguyên

• Khi test thử mô hình ASR bằng giọng đọc lạ và trong môi trường nhiễu sẽ cho ra kết quả kém

• Mô hình ngôn ngữ vẫn chưa thực sự tốt, chỉ có thể sửa lỗi gói gọn trong các domain dữ liệu tương ứng

• Thời gian sửa lỗi lớn do phải chạy predict mô hình ngôn ngữ tuần tự

• Chưa tận dụng tối đa mô hình ngôn ngữ mức từ.

Định hướng trong tương lai

• Chuẩn bị thêm nhiều dữ liệu cho cả hai mô hình ASR và mô hình ngôn ngữ

• Xây dựng và cải tiến thêm các kỹ thuật sửa lỗi chính tả dựa trên các kiến trúc mô hình khác như seq2seq, bidirectional, attention,…

• Tìm hiểu các mô hình hiện đại như BERT.

Ngày đăng: 03/08/2024, 23:08

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Quoc Bao Nguyen, Ba Quyen Dam, and Van Hieu Nguyen (2019). “Zalo Vietnamese Conversational Speech Recognition”. Internet:https://vlsp.org.vn/sites/default/files/2019-10/VLSP2019-ASR-NguyenQuocBao.pdf, Nov. 13, 2019 Sách, tạp chí
Tiêu đề: Zalo Vietnamese Conversational Speech Recognition
Tác giả: Quoc Bao Nguyen, Ba Quyen Dam, and Van Hieu Nguyen
Năm: 2019
[3] Alex Graves, Abdel-rahman Mohamed, and Geoffrey Hinton. “Speech recognition with deep recurrent neural networks”. In 2013 IEEE international conference on acoustics, speech and signal processing, pages 6645-6649, IEEE, 2013 Sách, tạp chí
Tiêu đề: Speech recognition with deep recurrent neural networks”
[4] El-Amir, Hisham Hamdy, Mahmoud (2020). “Convolutional Neural Network”. DOI: 10.1007/978-1-4842-5349-6_11 Sách, tạp chí
Tiêu đề: Convolutional Neural Network”
Tác giả: El-Amir, Hisham Hamdy, Mahmoud
Năm: 2020
[6] Sepp Hochreiter and Jurgen Schmidhuber. “Long short-term memory”. Neural Computation, 1997, pages 1735-1780 Sách, tạp chí
Tiêu đề: Long short-term memory”
[7] Awni Y. Hannun, Carl Case, Jared Casper, Bryan Catanzaro, Greg Diamos, Erich Elsen, Ryan Prenger, Sanjeev Satheesh, Shubho Sengupta, Adam Coates, and Andrew Y. Ng. “Deep speech: Scaling up end-to-end speech recognition”. CoRR, abs/1412.5567, 2014 Sách, tạp chí
Tiêu đề: Deep speech: Scaling up end-to-end speech recognition”
[8] Toma’s Mikolov, Martin Karafiat, Luka’s Burget , Jan Honza Cernock, Sanjeev Khudanpur. “Recurrent neural network based language model”. INTERSPEECH 2010 Sách, tạp chí
Tiêu đề: Recurrent neural network based language model”
[9] Mikael Boden. “A Guide to Recurrent Neural Networks and Back – propagation”. In the Dallas project, 2002 Sách, tạp chí
Tiêu đề: A Guide to Recurrent Neural Networks and Back – propagation”
[10] Yoshua Bengio, Rejean Ducharme and Pascal Vincent (2003). “A neural probabilistic language model”. Journal of Machine Learning Research, pages 1137-1155 Sách, tạp chí
Tiêu đề: A neural probabilistic language model”
Tác giả: Yoshua Bengio, Rejean Ducharme and Pascal Vincent
Năm: 2003
[11] Morin, F. and Bengio, Y. “Hierarchical Probabilistic Neural Network Language Model”. Proceedings of AISTATS’ 2005 Sách, tạp chí
Tiêu đề: Hierarchical Probabilistic Neural Network Language Model”
[12] N. H. Trong and P. Do. “A new approach to accent restoration of Vietnamese texts using dynamic programming combined with cooccurrence graph”. In Proceedings of the 2009 International Conference on Computing and Communication Technologies. Da Nang, Vietnam, IEEE, 2009, pages 1-4 Sách, tạp chí
Tiêu đề: A new approach to accent restoration of Vietnamese texts using dynamic programming combined with cooccurrence graph”
[13] T. A. Luu and K. Yamamoto. “A pointwise approach for Vietnamese diacritics restoration”. In Proceedings of the 2012 International Conference on Asian Language Processing, Hanoi, Vietnam, 2012, pages 189-192 Sách, tạp chí
Tiêu đề: A pointwise approach for Vietnamese diacritics restoration”
[14] M. T. Nguyen, Q. N. Nguyen, and H. P. Nguyen. “Vietnamese diacritics restoration as sequential tagging”. In Proceedings of the 2012 International Sách, tạp chí
Tiêu đề: Vietnamese diacritics restoration as sequential tagging”
[15] V. Tran, K. Nguyen and D. Bui (2016). “A Vietnamese language model based on Recurrent Neural Network”. Eighth International Conference on Knowledge and Systems Engineering (KSE), Hanoi, 2016, pages 274-278 Sách, tạp chí
Tiêu đề: A Vietnamese language model based on Recurrent Neural Network”
Tác giả: V. Tran, K. Nguyen and D. Bui
Năm: 2016
[16] L.-N. Pham, V.-H. Trab, and V.-V. Nguyen, “Vietnamese text accent restoration with statistical machine translation”. In Proceedings of the 27th Pacific Asia Conference on Language, Information, and Computation, Taipei, Taiwan, 2013, pages 423-429 Sách, tạp chí
Tiêu đề: Vietnamese text accent restoration with statistical machine translation”
[17] Tran Ngoc Minh Thu, Tran Duc Thinh, Nguyen Duc Huy, Pham Minh Hieu, Cao Chanh Duong, Quan Thanh Tho. “Combination of voice recognition and language model for an intelligent chatbot”. The 6th Science and Technology Symposium for OISP Student, June. 20, 2020 Sách, tạp chí
Tiêu đề: Combination of voice recognition and language model for an intelligent chatbot”
[18] Pham Kim Long. “Tự động sửa lỗi chính tả tiếng Việt”. Internet: https://medium.com/zalotech/s%E1%BB%ADa-l%E1%BB%97i-ch%C3%ADnh-t%E1%BA%A3-ti%E1%BA%BFng-vi%E1%BB%87t-3bb0990af931, Jan. 12, 2018 Sách, tạp chí
Tiêu đề: Tự động sửa lỗi chính tả tiếng Việt"”

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w