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

Giải pháp xây dựng kho ngữ liệu và hệ thống dịch song ngữ Anh - Việt các lỗi lập trình hỗ trợ học sinh THPT

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

d

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
------------

ĐẶNG XUÂN HÙNG

GIẢI PHÁP XÂY DỰNG KHO NGỮ LIỆU
VÀ HỆ THỐNG DỊCH SONG NGỮ ANH - VIỆT
CÁC LỖI LẬP TRÌNH HỖ TRỢ HỌC SINH THPT
Chuyên ngành: Khoa Học Máy Tính
Mã số: 60.48.01.01

TÓM TẮT LUẬN VĂN THẠC SĨ
KHOA HỌC MÁY TÍNH

Đà Nẵng - Năm 2018


Công trình được hoàn thành tại

TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐH ĐÀ NẴNG
------------

Người hướng dẫn khoa học: PGS, TS. Huỳnh Công Pháp

Phản biện 1: PGS. TS Nguyễn Thanh Bình
Phản biện 2: TS. Nguyễn Quang Thanh
Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn
tốt nghiệp thạc sĩ Khoa học máy tính họp tại Trường Đại học


Bách khoa vào ngày 08 tháng 12 năm 2018

Có thể tìm hiểu luận văn tại:
 Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại
học Bách khoa
 Thư viện Khoa Công nghệ Thông tin, Trường Đại học
Bách khoa - ĐHĐN


1
MỞ ĐẦU
1.

Lý do chọn đề tài
“Cách mạng công nghiệp 4.0” đang diễn ra tại nhiều nước phát

triển. Nó mang đến cho nhân loại cơ hội để thay đổi bộ mặt các nền
kinh tế. Nhu cầu của xã hội ngày càng lớn cùng với sự phát triển của
khoa học kỹ thuật đã kéo theo sự phát triển như vũ bão của tin học. Sự
phát triển của tin học đã đem lại hiệu quả to lớn cho hầu hết các lĩnh
vực của xã hội, hơn thế nữa nó còn đi sâu vào đời sống của con người.
Nền tin học của một quốc gia được xem là sự phát triển nếu nó đóng
góp được phần đáng kể vào nền kinh tế quốc dân và vào kho tàng tri
thức chung của thế giới.
Do vậy, ngành giáo dục đào tạo phải đầu tư phát triển về mọi
mặt. Đặc biệt là nguồn nhân lực tri thức tức là phải đào tạo ra một thế
hệ trẻ năng động, thông minh, độc lập, sáng tạo, nắm vững tri thức
khoa học công nghệ để làm chủ trong mọi hoàn cảnh công tác và hoạt
động xã hội nhằm đáp ứng được nhu cầu trong thời kì công nghiệp
hoá, hiện đại hoá đất nước.

Để đáp ứng được các yêu cầu trên, môn Tin học đã được đưa
vào giảng dạy ở các trường phổ thông với vai trò là môn học chính
khóa. Tin học là một môn học mới và tương đối khó đối với học sinh
THPT trong đó môn ngôn ngữ lập trình trong chương trình lớp 11 lại
càng khó. Ở hầu hết các trường THPT trên địa bàn tỉnh Quảng Ngãi
đề sử dụng ngôn ngữ lập trình Pascal để dạy ngôn ngữ lập trình. Để
viết được một chương trình hoàn chỉnh thỏa mãn yêu cầu của bài toán
đặt ra trên máy tính thì học sinh phải có tư duy lôgic về thuật toán, khả
năng sử dụng máy tính thành thạo, sử dụng các câu lệnh và khai báo
kiểu dữ liệu một cách hợp lý. Đặc biệt nó đòi hỏi sự tuân thủ nghiêm
ngặt về cú pháp. Hầu hết các ngôn ngữ lập trình đều sử dụng ngôn ngữ


2
Tiếng Anh, mà đặc điểm của học sinh khu vực miền trung là yếu về
Tiếng Anh.
Do đó, việc học ngôn ngữ lập trình của học sinh phổ thông
hiện nay còn gặp rất nhiều khó khăn, đặc biệt là hiểu và sửa các lỗi lập
trình, điều này làm ảnh hưởng không nhỏ đến kết quả học tập, việc
chọn lựa nghề nghiệp của các em.
Trong hơn 20 năm phát triển gần đây của lĩnh vực dịch máy,
tuy đã có những bước phát triển đáng kể trong đó có thể nói đến
Google dịch, Vdist, … Tuy nhiên đến nay kết quả của các hệ thống
dịch máy vẫn còn là một khoảng cách xa so với các bảng dịch do con
người thực hiện Error! Reference source not found. đặc biệt là các
lĩnh vực chuyên ngành như y tế, kỹ thuật, pháp luật, … đặc biệt là Tin
học. Các hệ thống dịch không dịch đúng các khái niệm chuyên môn
nên bảng dịch trở nên khó hiểu, không có giá trị. Nên không giúp được
nhiều cho việc học lập trình của học sinh.
Là một giáo viên giảng dạy bộ môn Tin học tại trường THPT

trong nhiều năm, tôi nhận thấy rằng cần phải thực hiện nhiều biện
pháp, đổi mới về phương pháp dạy học và hơn cả là xây dựng công cụ
trợ giúp học tập cho các em. Từ đó tôi xác định lựa chọn đề tài “Giải
pháp xây dựng kho ngữ liệu và hệ thống dịch song ngữ Anh - Việt
các lỗi lập trình hỗ trợ học sinh THPT”
2.

Mục đích nghiên cứu
- Đề xuất giải pháp xây dựng kho ngữ liệu các lỗi lập trình
- Xây dựng hệ thống dịch các lỗi lập trình để hỗ trợ học sinh

THPT


3
3.

Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng nghiên cứu:
- Các ngôn ngữ lập trình phổ biến như Pascal, C; đặc biệt là

ngôn ngữ lập trình Pascal (ngôn ngữ lập trình chủ yếu sử dụng dạy học
cho học sinh khối lớp 11 THPT).
- Các phương pháp, giải thuật về dịch tự động, trích rút, phân
lớp dữ liệu, …
3.2. Phạm vi nghiên cứu
- Hệ thống lỗi cú pháp trong ngôn ngữ lập trình
- Các chương trình do học sinh THPT lập trình
4.


Phương pháp nghiên cứu
4.1. Phương pháp lý thuyết
 Nghiên cứu các tài liệu về cơ sở lý thuyết: dịch tự động, trích

rút, phân lớp dữ liệu.
 Nghiên cứu thuật toán SVM
 Phát triển các hệ thống dịch tự động
 Nghiên cứu các tài liệu liên quan tới lập trình.
4.2. Phương pháp thực nghiệm
 Xây dựng chương trình demo.
 Kiểm thử tính hiệu quả của chương trình.
 Khảo sát độ phù hợp của chương trình đối với học sinh
THPT.
5.

Ý nghĩa của đề tài
5.1. Ý nghĩa khoa học:
Đề tài sẽ mang ý nghĩa cung cấp về mặt lý thuyết để làm rõ về

các phương pháp và kỹ thuật dịch tự động, trích rút, phân lớp dữ liệu.


4
5.2. Ý nghĩa thực tiễn:
Đề tài góp thêm một phương pháp mới trong việc giảng dạy
môn Tin học cho học sinh lớp 11. Giúp các có được kỹ năng cơ bản
để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal. Tạo cho
học sinh sự thích thú nhằm nâng cao tính tích cực, độc lập, sáng tạo
và kỹ năng chuyên nghiệp trong học lập trình.
6.


Cấu trúc luận văn
Nội dung của luận văn được chia thành các phần như sau:
Mở đầu
Chương 1 - Tổng quan. Chương này trình bày một số vấn đề

liên quan về: Xử lý ngôn ngữ tự nhiên và xử lý tiếng Việt; Dịch tự
động và dịch tự động tiếng Việt; Kho ngữ liệu xử lý ngôn ngữ tự nhiên;
Thực trạng học lập trình tại các trường trung học phổ thông.
Chương 2 - Xây dựng kho ngữ liệu song ngữ Anh - Việt các
lỗi lập trình. Chương này trình bày một số vấn đề liên quan về: Tập dữ
liệu lỗi của một số ngôn ngữ lập trình phổ biến; Các giải pháp thu thập
và xây dựng kho ngữ liệu; Giải pháp xây dựng kho ngữ liệu các lỗi lập
trình Anh - Việt.
Chương 3 - Xây dựng hệ thống dịch song ngữ Anh - Việt các
lỗi lập trình. Chương này trình bày một số vấn đề liên quan về: Dịch
tự động sử dụng mạng nơ ron; Cài đặt chương trình xây dựng kho ngữ
liệu song ngữ Anh - Việt các lỗi lập trình theo hướng mạng nơ ron;
Cài đặt chương trình và môi trường xây dựng hệ thống dịch song ngữ
Anh - Việt các lỗi lập trình sử dụng mạng nơ ron.


5

CHƯƠNG 1 - TỔNG QUAN
1.1. Xử lý ngôn ngữ tự nhiên và xử lý tiếng Việt
1.1.1. Khái niệm xử lý ngôn ngữ tự nhiên
1.1.2. Các bước xử lý ngôn ngữ tự nhiên
1.1.2.1. Phân tích hình vị:
1.1.2.2. Phân tích cú pháp:

1.1.2.3.

Phân tích ngữ nghĩa:

1.1.2.4.

Phân tích diễn ngôn:

1.1.3. Một số ứng dụng xử lý ngôn ngữ tự nhiên
1.1.3.1.

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

1.1.3.2.

Trích chọn thông tin (Information Extraction)

1.1.3.3.

Trả lời câu hỏi (QA)

1.1.3.4.

Tóm tắt văn bản tự động

1.1.3.5.

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

1.1.3.6.


Nhận dạng chữ viết:

1.1.3.7.

Nhận dạng tiếng nói:

1.1.3.8.

Tổng hợp tiếng nói:

1.1.3.9.

Khai phá dữ liệu (Data mining) và phát hiện tri
thức:

1.1.4. Tình hình xử lý tiếng Việt
1.1.5. Một số công trình và ứng dụng xử lý tiếng Việt

tiêu biểu Error! Reference source not found.
1.2. Dịch tự động và dịch tự động tiếng Việt
1.2.1. Khái niệm dịch tự động
1.2.2. Các phương pháp dịch tự động phổ biến
1.2.2.1.

Dịch máy dựa trên luật

1.2.2.2.

Dịch máy dựa trên thống kê



6
1.2.2.3.

Dịch máy dựa trên ví dụ

1.2.3. Tình hình dịch tự động tiếng Việt
1.2.4. Một số hệ thống dịch tự động và dịch tự động

tiếng Việt phổ biến
1.2.4.1.

Đa ngôn ngữ

1.2.4.2.

Tiếng Việt

1.3. Kho ngữ liệu xử lý ngôn ngữ tự nhiên
1.3.1. Khái niệm kho ngữ liệu
1.3.2. Các loại kho ngữ liệu
1.3.3. Một số kho ngữ liệu phổ biến
1.3.3.1.

Kho ngữ liệu Anh Mỹ (Brown Copus)

1.3.3.2.

Kho ngữ liệu tiếng Anh (BNC - The British

National Corpus)

1.3.3.3.

Kho ngữ liệu quốc gia Mỹ (ANC - The American
National Corpus)

1.3.3.4.

Kho ngữ liệu Anh Mỹ hiện đại (COCA - The
Copus of Contemporary American English)

1.3.3.5.

Ngân hàng cây cú pháp PENN

1.3.3.6.

Ngân hàng cây cú pháp TIGER tiếng Đức

1.3.3.7.

Ngân hàng cây cú pháp tiếng Trung (Chinese
Treebank)

1.3.4. Một số ứng dụng của kho ngữ liệu
1.3.4.1.

Ứng dụng trong ngôn ngữ học – thống kê


1.3.4.2.

Ứng dụng trong ngôn ngữ học so sánh

1.3.4.3.

Ứng dụng trong giảng dạy ngoại ngữ

1.3.4.4.

Ứng dụng trong việc nghiên cứu dịch thuật


7
1.4. Thực trạng học lập trình tại các Trường trung học phổ
thông

1.4.1. Tình hình đào tạo và ứng dụng công nghệ thông tin
tại các Trường THPT hiện nay
1.4.2. Thực trạng và những vấn đề bất cập trong việc
giảng dạy và học lập trình tại các trường THPT
1.4.2.1.

Vấn đề về cơ sở vật chất

1.4.2.2.

Vị thế của môn Tin học trong các trường THPT

1.4.2.3.


Vấn đề của học sinh khi học lập trình Pascal

1.4.2.4.

Vấn đề của giáo viên

1.4.3. Một số giải pháp nâng cao chất lượng đào tạo công
nghệ thông tin tại các trường THPT
1.4.3.1.

Đối với giáo viên:

1.4.3.2.

Đối với học sinh:

Kết luận chương 1: Trong chương 1, chúng ta đã nghiên cứu
về các kiến thức tổng quan liên quan đến xử lý ngôn ngữ tự nhiên và
xử lý tiếng Việt; Dịch tự động và dịch tự động tiếng Việt; Kho ngữ
liệu xử lý ngôn ngữ tự nhiên; Thực trạng học lập trình tại các trường
trung học phổ thông.


8
CHƯƠNG 2 - XÂY DỰNG KHO NGỮ LIỆU SONG NGỮ
ANH - VIỆT CÁC LỖI LẬP TRÌNH
2.1. Giới thiệu
2.2. Tổng quan về lỗi lập trình
2.2.1. Lỗi cú pháp

2.2.2. Lỗi chính tả
2.2.3. Lỗi thời gian (timing error)
2.2.4. Lỗi chia cho 0
2.2.5. Gán sai dữ liệu
2.2.6. Các lỗi biên:
2.2.7. Lỗi về quản lý bộ nhớ.
2.2.8. Lỗi thuật toán
2.2.9. Lỗi về lập luận
2.3. Tập dữ liệu lỗi của các ngôn ngữ lập trình phổ biến giảng dạy
tại các trường THPT.
2.3.1. Ngôn ngữ lập trình Pascal
2.3.1.1.

Giới thiệu về ngôn ngữ lập trình Pascal

2.3.1.2.

Tập dữ liệu lỗi của ngôn ngữ lập trình Pascal

2.3.2. Ngôn ngữ lập trình C
2.3.2.1.

Giới thiệu về ngôn ngữ lập trình C

2.3.2.2.

Tập dữ liệu lỗi của ngôn ngữ lập trình C

2.4. Các giải pháp thu thập và xây dựng kho ngữ liệu Error!
Reference source not found..

2.4.1. Giải pháp thu thập và xây dựng kho ngữ liệu từ

các tài nguyên đa ngữ
2.4.1.1.

Thu thập dữ liệu

2.4.1.2.

Xử lý ngôn ngữ tự nhiên

2.4.1.3.

Xử lý đầu vào


9
2.4.1.4.

Tách đoạn

2.4.1.5.

Tách câu

2.4.2. Các phương pháp phân lớp dữ liệu để xây dựng

kho ngữ liệu
2.4.2.1.


Khái niệm về phân lớp dữ liệu và bài toán phân
lớp dữ liệu

2.4.2.2.

Các phương pháp phân lớp dữ liệu

a. Phương pháp phân lớp dữ liệu Bayes.
b. Phương pháp cây quyết định
c. Phương pháp mạng nơ ron nhân tạo
d. Phương pháp sinh luật quyết định theo tiếp cận tập thô
e. Phương pháp SVM
2.4.3. Giải pháp hợp nhất để xây dựng kho ngữ liệu lớn

và đồng nhất
2.4.3.1.

Tồn tại các cặp ngữ liệu ở cả hai kho ngữ liệu

a. Giống nhau hoàn toàn
b. Khác nhau về ngữ nghĩa
cho ngữ liệu đó trong nguồn tài nguôn dữ liệu chung.
2.4.3.2.

Cặp ngữ liệu chỉ tồn tại ở một trong hai kho ngữ
liệu

2.4.3.3.

Thuật toán hợp nhất các kho ngữ liệu song ngữ


2.5. Giải pháp xây dựng kho ngữ liệu các lỗi lập trình Anh - Việt
2.5.1. Giải pháp thu thập lỗi lập trình tiếng Anh
2.5.1.1.

Giải pháp thu thập từ các nguồn dữ liệu thô

2.5.1.2.

Giải pháp trích từ các từ điển điện tử

2.5.2. Giải pháp dịch tập lỗi lập trình tiếng Anh sang

tiếng Việt


10
2.5.3. Giải pháp xây dựng kho ngữ liệu lỗi lập trình

Anh - Việt phục vụ xây dựng hệ thống dịch tự
động sử dụng mạng nơ ron
Kết luận chương 2: Trong chương này đã trình bày Tập dữ
liệu lỗi của các ngôn ngữ lập trình phổ biến giảng dạy tại các trường
THPT; Các giải pháp thu thập và xây dựng kho ngữ liệu; Giải pháp
xây dựng kho ngữ liệu các lỗi lập trình Anh - Việt


11
CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG DỊCH SONG NGỮ
ANH - VIỆT CÁC LỖI LẬP TRÌNH

3.1. Dịch tự động sử dụng mạng nơ ron Error! Reference source
not found.
3.1.1. Tổng quan dịch máy sử dụng mạng nơ ron
Bản dịch máy đã được phổ biến rộng rãi trong các ứng dụng
và trang web kể từ giữa những năm 2000.
Trong nhiều năm (từ những năm 1960), các nhà khoa học máy
tính đã cố gắng xây dựng các hệ thống dịch máy dựa trên các quy tắc
và cấu trúc ngữ pháp của từng ngôn ngữ. Trong hầu hết các trường
hợp, kết quả là, hãy nói rằng, ít hơn tuyệt vời.
Bước đột phá đến khi một khái niệm mới, học máy, được áp
dụng cho dịch máy. Sử dụng một lượng lớn dữ liệu được dịch trước
bởi các dịch giả chuyên nghiệp, các thuật toán mạnh mẽ sẽ tìm hiểu
cách dịch các từ được đưa ra trong một số ngữ cảnh hạn chế và các
bản dịch đã có sẵn này.
Tất cả các sản phẩm dịch máy (trang web hoặc ứng dụng) có
sẵn cho đến cuối năm 2016 đều dựa trên thuật toán sử dụng các phương
pháp thống kê để thử đoán bản dịch tốt nhất có thể cho một từ nhất định.
Công nghệ này được gọi là dịch máy thống kê.
Tuy nhiên, một trong những hạn chế của dịch máy thống kê là
nó chỉ dịch các từ trong ngữ cảnh của một vài từ trước và sau từ được
dịch. Đối với các câu nhỏ, nó hoạt động khá tốt. Đối với những cái dài
hơn, chất lượng bản dịch có thể thay đổi từ rất tốt đến, trong một số
trường hợp, đường biên không vô nghĩa. Nó gần như luôn luôn có thể
nhìn thấy nó đã được máy tạo ra.
Vào cuối những năm 2000, một công nghệ học máy mới gọi
là học sâu hoặc mạng thần kinh sâu, một công cụ tìm cách bắt chước


12
bộ não con người hoạt động (ít nhất một phần), trở thành một lựa chọn

khả thi để làm việc trên nhiều khó khăn. tiến bộ cả về phía nghiên cứu
(cách xây dựng, đào tạo và điều hành các mạng nơron lớn) và ở phía
tính toán với sự xuất hiện của sức mạnh tính toán quy mô cực lớn của
đám mây.
Cụ thể, các mạng nơron cho dịch máy gần đây đã trở thành có
thể và mặc dù vẫn còn ở giai đoạn đầu, nó đã cung cấp các bản dịch
tốt hơn so với bản dịch máy thống kê cũ hơn 10 năm làm cho nhiều
ngôn ngữ.
3.1.2. Các bước triển khai xây dựng hệ thống dịch máy

sử dụng mạng nơ ron
Ở mức độ cao, dịch thuật mạng nơron hoạt động theo hai giai
đoạn:
 Giai đoạn đầu tiên mô hình từ cần được dịch dựa trên ngữ
cảnh của từ này (và bản dịch có thể của nó) trong câu đầy đủ, cho dù
câu dài 5 từ hay 20 từ.
 Giai đoạn thứ hai sau đó dịch mô hình từ này (không phải
từ chính nó mà là mô hình mà mạng nơron đã xây dựng nó), trong ngữ
cảnh của câu, sang ngôn ngữ khác.
Một cách để suy nghĩ về dịch thuật dựa trên mạng thần kinh
có thể là suy nghĩ của một người nói thông thạo ngôn ngữ khác mà sẽ
nhìn thấy một từ, nói "con chó". Điều này sẽ tạo ra hình ảnh của một
con chó trong não của mình, sau đó hình ảnh này sẽ được liên kết với,
ví dụ "le chien" bằng tiếng Pháp. Mạng lưới thần kinh về bản chất sẽ
biết rằng từ "chien" là nam tính bằng tiếng Pháp ("le" không phải là
"la"). Nhưng, nếu câu nói là “con chó vừa sinh ra sáu con chó”, nó sẽ
hình dung cùng một con chó với con chó đang cho con bú và sau đó
sẽ tự động sử dụng “la chienne” (dạng nữ của “le chien”) khi dịch câu.



13
Cách tiếp cận này cung cấp kết quả tốt hơn vì nó:
 Đưa vào tài khoản câu đầy đủ, không chỉ một vài từ liên
tiếp
 Có thể xử lý các biến thể vô hạn của ngôn ngữ thông qua
nhận dạng mẫu giống như não
 Tìm hiểu sự tinh tế của các ngôn ngữ dựa trên các đặc điểm
của mỗi ngôn ngữ như giới tính, hình thức, v.v.
Do cách tiếp cận này, các câu được tạo ra từ một bản dịch máy
dựa trên mạng thần kinh thường tốt hơn các máy thống kê nhưng cũng
âm thanh trôi chảy và tự nhiên hơn, như thể một người đã dịch chúng
chứ không phải máy Error! Reference source not found..
3.1.3. Một số hệ thống dịch máy sử dụng mạng nơ ron
Hệ thống dịch máy sử dụng mạng nơron của Google: Kết nối
khoảng cách giữa con người và máy dịch
3.2. Cài đặt chương trình xây dựng kho ngữ liệu song ngữ Anh Việt các lỗi lập trình theo hướng mạng nơ ron Error!
Reference source not found.
3.2.1. Tách từ mạng nơ ron các tập dữ liệu của kho ngữ

liệu lỗi lập trình
Trong bài toán dịch tự động giữa tiếng Việt và các ngôn ngữ
khác, vấn đề xây dựng kho ngữ liệu có chất lượng đóng vai trò quan
trọng. Đối với các phương pháp dịch tối ưu nhất hiện nay là phương
pháp dịch thống kê và phương pháp dịch sử dụng trí tuệ nhân tạo thông
qua mạng nơ ron, trong quá trình huấn luyện dữ liệu, mô hình dịch sẽ
thống kê và tạo lập bộ từ điển của ngôn ngữ nguồn và ngôn ngữ đích
trên cơ sở liệt kê các từ xuất hiện với mặc định các từ được phân cách
nhau bởi khoảng trắng. Chính vì vậy, nếu dữ liệu không được tiền xử
lý với phương pháp tách từ, từ điển được tạo ra sẽ bao gồm các từ đơn



14
vô nghĩa hoặc kết hợp n-gram tạo thành những cụm từ vô nghĩa nhưng
vẫn được thống kê và đánh trọng số làm ảnh hưởng đến kết quả dịch.
Chẳng hạn nội dung của các tập tin từ điển được hiển thị tại Hình 3.1

khi sử dụng mô hình dịch thống kê (hình b và c) và khi sử dụng mô
hình dịch mạng nơ ron (hình a).
Hình 3.1.

Nội dung tập tin từ điển khi sử dụng mô hình dịch
thống kê (a)

và dịch sử dụng mạng nơ ron (b)(c) Error! Reference source not
found.
Do đặc điểm của tiếng Việt mỗi từ chứa một hoặc nhiều âm
tiết, vì vậy nếu phân biệt rõ ranh giới giữa các từ thì sẽ giảm bớt tính
nhập nhằng của ngữ nghĩa, xác định từ loại sẽ chính xác hơn, từ đó
giúp quá trình xử lý và huấn luyện dữ liệu đạt hiệu quả tốt. Đối với bất
kỳ mô hình dịch máy nào, quá trình tiền xử lý dữ liệu kết hợp tách từ
vựng sẽ làm giảm kích thước của bộ từ điển, tăng tính chính xác khi
gióng hàng và giúp cải tiến chất lượng của bản dịch máy.
Một ví dụ điển hình về sự nhập nhằng ngữ nghĩa nếu không
phân biệt được ranh giới giữa các từ là câu “Ông già đi nhanh quá”,
có thể được hiểu theo các cách khác nhau:


15
(1)


[Ông già] [đi] [nhanh] [quá]

(2)

[Ông] [già đi] [nhanh] [quá]

Với 2 phương án tách từ khác nhau sẽ biểu diễn 2 nghĩa hoàn
khác nhau, vì vậy hệ thống dịch sẽ có thể cho kết quả dịch sai nếu dữ
liệu đầu vào chưa được xử lý tách từ. Như vậy, hiệu quả của quá trình
tách từ ảnh hưởng trực tiếp đến chất lượng của các hệ thống dịch tự
động tiếng Việt.
Một số phương pháp tách từ (word segmentation) tiếng Việt
đã được nghiên cứu và ứng dụng, trong đó nổi bật nhất là ứng dụng
vnTokenizer và Đông Du. Trong đề tài này, tác giả luận văn và nhóm
nghiên cứu sử dụng giải pháp tách từ sử dụng mạng nơ ron được đề
xuất tại “Giải pháp tách từ sử dụng mạng nơ ron nhằm nâng cao chất
lượng dịch tự động tiếng Việt” Error! Reference source not found.
3.2.2. Xây dựng vector biểu diễn từ
Các từ, chuỗi của kho ngữ liệu không thể trực tiếp trở thành
thông tin đầu vào của một mạng nơ ron, vì vậy cần biểu diễn mỗi từ
thành một vector số học bằng một phương pháp nào đó. Trong trường
hợp này chúng ta biểu diễn mỗi từ thông qua one-hot vector. Đây là
một vector có n phần tử (với n là kích thước của bộ từ điển được tạo
ra từ kho ngữ liệu), trong đó phần tử tương ứng với từ được biểu diễn
nhận giá trị là 1, các phần tử còn lại nhận giá trị là 0. Từ dữ liệu đầu
vào này, sử dụng mô hình CBOW và Skip-gram để xây dựng
Word2Vec. Word2Vec là mô hình biểu diễn các từ thành một vector
đặc trưng thể hiện ý nghĩa của từ đó. Vector này có các phần tử mang
giá trị diễn tả mối quan hệ giữa từ này với từ khác bằng cách sử dụng
mạng nơ ron. Khi được huấn luyện với kho ngữ liệu lớn, mô hình này

có thể học và nắm bắt được mối quan hệ giữa các từ.


16
Có hai mô hình để sinh ra Word2Vec: Mô hình CBOW và mô
hình Skip-gram.

Hình 3.2.

Mô hình CBOW và Skip-gram Error! Reference
source not found.

Mô hình CBOW (Continuous Bag-of-word hay Mô hình túi
từ liên tục) sử dụng mạng nơ ron nhằm dự đoán một từ khi biết các từ
lân cận. Trong mô hình này, đầu vào là one-hot vector của các từ lân
cận đóng vai trò ngữ cảnh, thông qua một lớp ẩn đã được huấn luyện
để cực đại hóa xác suất có điều kiện của từ sẽ xuất hiện ở đầu ra.
Mô hình Skip-gram (Continuous Skip-gram) có chức năng
ngược lại, nhằm dự đoán các từ lân cận khi cho trước một từ. Mô hình
được minh họa tại Hình 3.2.
Bằng cách sử dụng 2 mô hình này, chúng ta biểu diễn được
bất kỳ từ nào thông qua vector số học chứa đựng ngữ nghĩa của từ và
mối quan hệ với các từ khác, từ đó suy luận được ngữ cảnh và dự đoán


17
được các từ lân cận và có thể áp dụng được vào bài toán xác định ranh
giới các từ ghép trong tiếng Việt.
3.2.3. Cài đặt và kết quả thực nghiệm
Quá trình thực nghiệm ứng dụng mô hình Word2Vec trong bài

toán tách từ tiếng Việt được thực hiện như sau:
Thu thập kho ngữ liệu tiếng Việt: nhóm tác giả sử dụng các
phương pháp rút trích tự động để lấy về các bài viết trên trang một số
trang web về lĩnh vực công nghệ thông tin, lập trình. Kết quả thu được
461.815 câu tiếng Việt. Dữ liệu được tiền xử lý để loại bỏ các ký tự
đặc biệt, chuyển về định dạng Unicode…
Huấn luyện mô hình: tác giả sử dụng ngôn ngữ Python để
chuẩn bị và tiền xử lý dữ liệu, sau đó sử dụng thư viện Gensim
(gensim.models.word2vec và gensim.models.phrases) để huấn luyện
và lưu trữ mô hình học máy từ kho ngữ liệu tiếng Việt, thông qua kỹ
thuật CBOW và Skip-gram.
Các thư viện của Gensim sử dụng thông số mặc định, gồm
kích thước bộ từ vựng (max_vocab_size=40000000), ngưỡng số lượng
từ được bỏ qua nếu số lần xuất hiện ít (min_count=5) ... Vì vậy để mô
hình đạt kết quả tốt với dữ liệu đã có cần kiểm tra trên một tập dữ liệu
mẫu và chọn tham số cho kết quả tốt nhất.
Sử dụng mô hình để tách từ: từ mô hình đã huấn luyện, khi
đưa một câu làm dữ liệu đầu vào thì hệ thống sẽ cho kết quả với các
từ ghép đã được tách. Theo lý thuyết, số lượng kho ngữ liệu dùng để
học tập càng lớn thì kết quả càng chính xác, vì mô hình học được sự
phân bố và mối quan hệ giữa các từ ở nhiều ngữ cảnh khác nhau.
-

Mô tả sử dụng các thư viện trong chương trình Python:
import nltk
from gensim.models import Phrases


18
from gensim.models import Word2Vec

import pandas as pd
Thư viện NLTK là một nền tảng được sử dụng rộng rãi để xây
dựng các chương trình xử lý ngôn ngữ tự nhiên bằng ngôn ngữ Python.
NLTK cung cấp các hàm hỗ trợ giúp quá trình xử lý chuỗi văn bản trở
nên nhanh chóng, đồng thời cung cấp các kho ngữ liệu mẫu đa dạng.
Thư viện Gensim cũng được viết trên ngôn ngữ Python, cung
cấp các mã nguồn triển khai thuật toán xử lý ngôn ngữ tự nhiên đã
được công bố.
-

Xây dựng mô hình ngôn ngữ thông qua mô hình
Word2Vec:
model

=

Word2Vec(texts,

size=100,

window=5,

min_count=5, workers=4)
-

Huấn luyện mô hình tách từ:
bigram = Phrases(texts, min_count=4, threshold=10)

-


Biểu diễn kết quả tách từ:
print(bigram[input_sentence])

Một số kết quả sau khi tách từ
Câu nguồn: "kiểu kết quả của hàm không hợp lệ "
Kết quả tách từ: “kiểu kết_quả của hàm không hợp_lệ”
Câu nguồn: “kiểu cơ sở cho kiểu đoạn không hợp lệ”
Kết quả tách từ: “kiểu cơ_sở cho kiểu đoạn không hợp_lệ”
3.3. Cài đặt chương trình và môi trường xây dựng hệ thống dịch
song ngữ Anh - Việt các lỗi lập trình sử dụng mạng nơ ron
3.3.1. Mô hình dịch máy mạng nơ ron
Mô hình học máy sử dụng mạng nơ ron đã được ứng dụng
trong nhiều lĩnh vực nghiên cứu và đã đạt được hiệu quả cao trong các
tác vụ quan trọng như xử lý mô hình ngôn ngữ, nhận dạng giọng nói…


19
NMT thường là một mạng nơ ron kích thước lớn được đã được huấn
luyện, lưu trữ các véc tơ biểu diễn thông tin liên kết giữa các từ trong
ngữ cảnh, chính vì vậy có khả năng dịch tốt các câu văn bản dài.
Không giống như mô hình dịch truyền thống dựa trên cụm từ, phụ
thuộc vào các cụm từ riêng biệt để dịch và ghép nối như mô hình dịch
thống kê, NMT sẽ huấn luyện từ dữ liệu đầu vào để tạo ra một mạng
nơ ron có lớn có thể đọc các câu nguồn và tái tạo câu đích dựa trên
nguyên tắc hoạt động của các mạng nơ ron tái phát (Recurrent Neural
Networks). Các mô hình NMT có bộ mã hóa – giải mã, trong đó bộ
mã hóa sẽ đọc các câu nguồn và xây dựng véc tơ thông tin tương ứng,
dựa trên đó bộ giải mã sẽ tái tạo câu cần dịch trên cơ sở tính toán xác
suất cực đại tại đầu ra.
3.3.2. Cài đặt hệ thống dịch mạng nơ ron sử dụng mã


nguồn mở OpenNMT
Xây dựng hệ thống: Để xây dựng hệ thống dịch sử dụng mạng
nơ ron, nhóm nghiên cứu đã sử dụng mã nguồn mở OpenNMT.
OpenNMT ứng dụng các thuật toán mới nhất trong dịch tự động, được
cung cấp từ năm 2016 và đang tiếp tục được cộng đồng các nhà nghiên
cứu phát triển. OpenNMT được xây dựng dựa trên các nghiên cứu cải
tiến mô hình NMT truyền thống, cho phép mô hình dịch tự động quan
sát toàn bộ chuỗi đầu vào để khởi tạo những từ mới ở đầu ra, cho các
kết quả tốt khi dịch các câu dài. Đồng thời, OpenNMT cho phép tối
ưu hóa bộ nhớ, tăng tốc độ tính toán khi sử dụng bộ xử lý đồ họa GPU.
Xây dựng kho ngữ liệu: để chuẩn bị kho ngữ liệu phục vụ cho
hệ thống dịch, tôi sử dụng các phương pháp trích rút thông tin từ
Internet và các tài liệu song ngữ, thu thập 270.000 cặp câu song ngữ
trong lĩnh vực công nghệ thông tin từ các tài liệu và một số website
song ngữ... Tôi sử dụng một số phương pháp để loại bỏ các cặp câu có


20
khả năng không tương đồng, các cặp câu trùng lặp, đồng thời dữ liệu
được tiền xử lý để loại bỏ các câu quá dài, chuyển bảng mã về Unicode
dựng sẵn, xóa bỏ các ký tự đặc biệt.
Tham số hệ thống: sử dụng các tham số mặc định của
OpenNMT, với mô hình 2 lớp RNN kích thước 500, kích thước từ
vựng 50.000 từ, sử dụng 13 vòng lặp để huấn luyện. Kết quả cuối cùng
cho hệ số Perplexity PPL = 10,93 (tại vòng lặp 13).

3.3.3. Kết quả chương trình và đánh giá
Sau khi xây dựng hệ thống dịch các lỗi lập trình tiếng Anh –
tiếng Việt bằng mô hình mạng nơ ron kết hợp kho ngữ liệu lớn, tôi sử

dụng bộ dữ liệu lỗi lập trình Anh – Việt của ngôn ngữ lập trình C để
kiểm tra và đánh giá chất lượng của hệ thống. Kết quả dịch được lấy
thông qua câu lệnh “th translate.lua” của OpenNMT, sử dụng mô hình
đã huấn luyện ở bước trên.


21

Các câu tiếng Anh sau khi được hệ thống dịch sang tiếng Việt
sẽ được đối chiếu với các câu dịch chuẩn để đánh giá chỉ số BLEU,
NIST thông qua hệ thống Asiya. Kết quả nhận được điểm BLEU là
0.27 và NIST là 5.31. Như vậy, bằng cách sử dụng kho ngữ liệu trong
lĩnh vực công nghệ thông tin với chất lượng tốt, hệ thống dịch dựa trên
mô hình mạng nơ ron được thực nghiệm trong đề tài này đã cho kết
quả tốt.
Kết luận chương 3: Trong chương này đã trình bày cách Cài
đặt chương trình xây dựng kho ngữ liệu song ngữ Anh - Việt các lỗi
lập trình theo hướng mạng nơ ron; Cài đặt chương trình và môi trường
xây dựng hệ thống dịch song ngữ Anh - Việt các lỗi lập trình sử dụng
mạng nơ ron.


22
KẾT LUẬN VÀ KIẾN NGHỊ
1. Kết quả đạt được
Trước nhu cầu cấp bách về phát triển công nghệ thông tin đáp
ứng yêu cầu đặt ra của quốc gia và cuộc cách mạng công nghiệp 4.0,
các trường THPT đã triển khai và đẩy mạnh đào tạo tin học, nhất là
lập trình. Tuy nhiên, thực trạng chung hiện nay là học sinh rất khó tiếp
cận và tiếp thu kiến thức, kỹ năng lập trình. Một trong những nguyên

nhân chính làm cản trở rất lớn đối với học sinh hiện nay là xử lý lỗi,
do lỗi lập trình hiện đang ở dạng ngôn ngữ tiếng Anh. Do đó, việc xây
dựng kho ngữ liệu và hệ thống dịch tự động các lỗi lập trình rất cần
thiết, có ý nghĩa thực tiễn, góp phần phát triển CNTT của quốc gia nói
chung và hỗ trợ giảng dạy, học tập tin học tại các trường THPT nói
riêng.
Để thực hiện đề tài nay, luận văn nghiên cứu tổng quan kiến
thức về xử lý ngôn ngữ tự nhiên và xử lý tiếng Việt; Dịch tự động và
dịch tự động tiếng Việt; Các giải pháp xây dựng nguồn tài nguyên dữ
liệu, các mô hình dịch, đồng thời tác giả luận văn cùng với nhóm
nghiên cứu PGS. Huỳnh Công Pháp, NCS. Nguyễn Văn Bình, học
viên Nguyễn Đức Lê Huy đã nghiên cứu giải pháp, thực nghiệm và
xây dựng kho ngữ liệu song ngữ Anh - Việt các lỗi lập trình; Xây dựng
hệ thống dịch song ngữ Anh - Việt các lỗi lập trình sử dụng mô hình
mạng Nơron dịch các lỗi lập trình của ngôn ngữ lập trình Pascal và C.
2. Hạn chế
Tuy nhiên luận văn không tránh khỏi các hạn chế như: Nguồn
dữ liệu song ngữ ở Việt Nam có chất lượng bản dịch không cao, Việc
cập nhật kho dữ liệu nói chung vẫn mang tính bán tự động, nhiều công
đoạn thủ công.


23
3. Kiến nghị
Tiếp tục đẩy mạnh nghiên cứu xây dựng hệ thống dịch song
ngữ Anh - Việt các lỗi lập trình sử dụng mô hình mạng Nơron dịch
các lỗi lập trình cho các ngôn ngữ lập trình khác và xây dựng hệ thống
tra cứu lỗi, tích hợp vào trình biên dịch.
4. Hướng phát triển
Trong tương lai, luận văn có thể được nghiên cứu tiếp tục theo

các hướng sau:
- Trong thời gian đến: Xây dựng kho ngữ liệu cho nhiều ngôn
ngữ lập trình, chất lượng tốt hơn
- Cải thiện chất lượng dịch tự động Hệ thống dịch, và xây dựng
hệ thống tra cứu lỗi, tích hợp vào trình biên dịch…


×