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

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

95 9 0

Đ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 đề 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
Tác giả Đặng Xuân Hùng
Người hướng dẫn PGS, TS. Huỳnh Công Pháp
Trường học Đại học Bách Khoa - ĐH Đà Nẵng
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 2018
Thành phố Đà Nẵng
Định dạng
Số trang 95
Dung lượng 6,16 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ó 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 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 biệt luận văn đã 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 được 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 Hệ thống 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

Trang 1

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

LUẬN VĂN THẠC SĨ - Khoa Học Máy Tính

Đà Nẵng - Năm 2018

Trang 2

ĐẠ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

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn với tiêu đề “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” hoàn toàn

là kết quả nghiên cứu của chính bản thân tôi và chưa được công bố trong bất cứ một công trình nghiên cứu nào của người khác Trong quá trình thực hiện luận văn, tôi đã thực hiện nghiêm túc các quy tắc đạo đức nghiên cứu; các kết quả trình bày trong luận văn là sản phẩm nghiên cứu, khảo sát của riêng cá nhân tôi; tất cả các tài liệu tham khảo

sử dụng trong luận văn đều được trích dẫn tường minh, đúng theo quy định Tôi xin hoàn toàn chịu trách nhiệm về tính trung thực của số liệu và các nội dung khác trong luận văn của mình

Đà Nẵng, ngày 01 tháng 06 năm 2018

Tác giả luận văn

Đặng Xuân Hùng

Trang 4

LỜI CẢM ƠN

Tác giả xin chân thành cảm ơn thầy giáo – PGS TS Huỳnh Công Pháp đã định hướng khoa học, hướng dẫn tận tình, chu đáo trong suốt quá trình thực hiện luận văn

Xin được bày tỏ lòng biết ơn đến:

- Lãnh đạo sở GD-ĐT Quảng Ngãi, lãnh đạo trường THPT Huỳnh Thúc Kháng cùng bạn bè đồng nghiệp đã tạo điều kiện thuận lợi cho tác giả được theo học chương trình sau đại học và thực hiện luận văn này

- Quý thầy cô giáo, lãnh đạo khoa Công nghệ thông tin – Trường ĐHBK Đà Nẵng, Trường Cao đẵng Công nghệ thông tin Đà Nẵng, đã tạo điều kiện thuận lợi cho tác giả trong suốt thời gian học tập và thực hiện đề tài tại trường!

Trang 5

TÓM TẮT LUẬN VĂN

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

Học viên: Đặng Xuân Hùng

Chuyên ngành: Khoa học Máy tính

Mã số: 60.48.01 Khóa: K33-QNG, Trường Đại học Bách khoa - ĐHĐN

Tóm tắt -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ó 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

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 biệt, luận văn đã 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 được 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 Hệ thống 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

Từ khóa – Kho ngữ liệu song ngữ; Hệ thống dịch song ngữ; lỗi lập trình;

SOLUTIONS FOR BUILDING THE CORPUS AND THE ENGLISH - VIETNAMESE BILINGUAL SYSTEM TO TRANSLATE PROGRAMING ERRORS TO SUPPORT TO THE HIGH SCHOOL STUDENTS

Computing is a new and relatively difficult subject for high school students in which programming language in the 11th grade program is even harder The current situation is that students are difficult to access and acquire knowledge, programming skills One of the main reasons for this is that it is an error-free, programming error is currently in English language

The dissertation has studied the knowledge of natural language processing and processing Vietnamese; Automatic translation and automatic translation of Vietnamese

In particular, the thesis has studied solutions, experiments and building bilingual English-Vietnamese bilingual programming errors Build a bilingual English-Vietnamese translation system for programming errors using neural network model to solve the programming errors of the Pascal and C programming languages The system has practical significance, contributing to the national IT development in general and support teaching, studying information technology in high schools in particular

Keywords - Bilingual language bureau; Bilingual translation system;

programming error;

Trang 6

MỤC LỤC

MỞ ĐẦU 1

1 Lý do chọn đề tài 1

2 Mục đích nghiên cứu 2

3 Đối tượng và phạm vi nghiên cứu 2

3.1 Đối tượng nghiên cứu: 2

3.2 Phạm vi nghiên cứu 2

4 Phương pháp nghiên cứu 2

4.1 Phương pháp lý thuyết 2

4.2 Phương pháp thực nghiệm 2

5 Ý nghĩa của đề tài 2

5.1 Ý nghĩa khoa học: 2

5.2 Ý nghĩa thực tiễn: 3

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

CHƯƠNG 1 - TỔNG QUAN 4

1.1 Xử lý ngôn ngữ tự nhiên và xử lý tiếng Việt 4

1.1.2 Các bước xử lý ngôn ngữ tự nhiên 4

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

1.1.4 Tình hình xử lý tiếng Việt 7

1.1.5 Một số công trình và ứng dụng xử lý tiếng Việt tiêu biểu [3] 7

1.2 Dịch tự động và dịch tự động tiếng Việt 8

1.2.1 Khái niệm dịch tự động 8

1.2.2 Các phương pháp dịch tự động phổ biến 9

1.2.3 Tình hình dịch tự động tiếng Việt 10

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 11

1.3 Kho ngữ liệu xử lý ngôn ngữ tự nhiên 12

1.3.1 Khái niệm kho ngữ liệu 12

1.3.2 Các loại kho ngữ liệu 12

1.3.3 Một số kho ngữ liệu phổ biến 12

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

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

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 15

Trang 7

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 15

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 17

CHƯƠNG 2 - XÂY DỰNG KHO NGỮ LIỆU SONG NGỮ ANH - VIỆT CÁC LỖI LẬP TRÌNH 20

2.1 Giới thiệu 20

2.2 Tổng quan về lỗi lập trình 20

2.2.1 Lỗi cú pháp 20

2.2.2 Lỗi chính tả 20

2.2.3 Lỗi thời gian (timing error) 21

2.2.4 Lỗi chia cho 0 21

2.2.5 Gán sai dữ liệu 21

2.2.6 Các lỗi biên: 21

2.2.7 Lỗi về quản lý bộ nhớ 22

2.2.8 Lỗi thuật toán 22

2.2.9 Lỗi về lập luận 22

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 22

2.3.1 Ngôn ngữ lập trình Pascal 22

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

2.4 Các giải pháp thu thập và xây dựng kho ngữ liệu [5] 25

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ữ 25

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

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 34

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 [5] 37

2.5.1 Giải pháp thu thập lỗi lập trình tiếng Anh 37

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 38

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 38

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 41

3.1 Dịch tự động sử dụng mạng nơ ron [3] 41

3.1.1 Tổng quan dịch máy sử dụng mạng nơ ron 41

Trang 8

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 41

3.1.3 Một số hệ thống dịch máy sử dụng mạng nơ ron 42

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 42

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 42

3.2.2 Xây dựng vector biểu diễn từ 44

3.2.3 Cài đặt và kết quả thực nghiệm 45

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 46

3.3.1 Mô hình dịch máy mạng nơ ron 46

3.3.2 Cài đặt hệ thống dịch mạng nơ ron sử dụng mã nguồn mở OpenNMT 46

3.3.3 Kết quả chương trình và đánh giá 47

KẾT LUẬN VÀ KIẾN NGHỊ 49

DANH MỤC TÀI LIỆU THAM KHẢO 50

QUYẾT ĐỊNH GIAO ĐỀ TÀI 52

QUYẾT ĐỊNH ĐIỀU CHỈNH TÊN ĐỀ TÀI 53

PHỤ LỤC A – DANH MỤC LỖI CỦA NGÔN NGỮ LẬP TRÌNH PASCAL 54

PHỤ LỤC B – DANH MỤC LỖI CỦA NGÔN NGỮ LẬP TRÌNH C 67

Trang 9

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

TT Viết tắt Viết đầy đủ

1 ANN Artificial neural network

2 CBOW Continuous Bag of Words

3 CCG Combinatory Categorial Grammar

4 CFG Context Free Grammar

5 CNTT Công nghệ thông tin

6 DG Dependency Grammar

7 GPU Graphics processing unit

8 IDE Integrated Development Environment

9 IR Information Retrieval

10 MT Machine translation

11 NMT Neural Network Translation

12 QA Question Answer

13 RNN Recurrent Neural Networks

14 SVM Support Vector Machine

15 THPT Trung học phổ thông

16 XML eXtensible Markup Language

Trang 10

DANH MỤC CÁC HÌNH ẢNH

Trang 11

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ữ 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 [6] đặ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

Trang 12

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 Đố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, …

 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

Trang 13

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

Trang 14

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

Ngôn ngữ tự nhiên là ngôn ngữ mà các loài động vật sáng tạo ra để giao tiếp với đồng loại Con người cũng là một loại động vật sử dụng ngôn ngữ để giao tiếp Thế giới ngôn ngữ của con người rất phong phú, theo thống kê của các nhà khoa học thì có tới hàng ngàn ngôn ngữ tồn tại trên trái đất Ngôn ngữ tự nhiên có 2 dạng là chữ viết và âm thanh (tức tiếng nói) Ngôn ngữ của mỗi dân tộc, quốc gia lại khác nhau bao gồm khác nhau cả về cách viết cũng như cách phát âm [5]

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ị:

Là sự nhận biết, phân tích, và miêu tả cấu trúc của những hình vị trong một ngôn ngữ cho trước và các đơn vị ngôn ngữ khác, như từ gốc, biên từ, phụ tố, từ loại, … Có hai loại bài toán điển hình trong phần này, bao gồm bài toán tách từ (word segmentation)

và gán nhãn từ loại (POS) [5]

1.1.2.2 Phân tích cú pháp:

Là quy trình phân tích một chuỗi các biểu tượng, ở dạng ngôn ngữ tự nhiên hoặc ngôn ngữ máy tính, tuân theo văn phạm hình thức Văn phạm hình thức thường dùng trong phân tích cú pháp của ngôn ngữ tự nhiên bao gồm Văn phạm phi ngữ cảnh (Context-free grammar – CFG), Văn phạm danh mục kết nối (Combinatory categorial grammar – CCG), và Văn phạm phụ thuộc (Dependency grammar – DG) Đầu vào của quá trình phân tích là một câu gồm một chuỗi từ và nhãn từ loại của chúng, và đầu ra là một cây phân tích thể hiện cấu trúc cú pháp của câu đó Các thuật toán phân tích cú pháp phổ biến bao gồm CKY, Earley, Chart, và GLR [5]

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

Là quá trình liên hệ cấu trúc ngữ nghĩa, từ cấp độ cụm từ, mệnh đề, câu và đoạn đến cấp độ toàn bài viết, với ý nghĩa độc lập của chúng Nói cách khác, việc này nhằm tìm ra ngữ nghĩa của đầu vào ngôn từ Phân tích ngữ nghĩa bao gồm hai mức độ: Ngữ nghĩa từ vựng biểu hiện các ý nghĩa của những từ thành phần, và phân biệt nghĩa của từ; Ngữ nghĩa thành phần liên quan đến cách thức các từ liên kết để hình thành những nghĩa rộng hơn [5]

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

Ngữ dụng học là môn nghiên cứu về mối quan hệ giữa ngôn ngữ và ngữ cảnh sử dụng (context-of-use) Ngữ cảnh sử dụng bao gồm danh tính của người hoặc vật, và vì thế ngữ dụng học bao gồm những nghiên cứu về cách ngôn ngữ được dùng để đề cập

Trang 15

(hoặc tái đề cập) tới người hoặc vật Ngữ cảnh sử dụng bao gồm ngữ cảnh diễn ngôn, vì vậy ngữ dụng học cũng bao gồm những nghiên cứu về cách thức cấu tạo nên diễn ngôn,

và cách người nghe hiểu người đang đối thoại với mình [5]

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)

Có nhiệm vụ tìm các tài liệu dưới dạng không có cấu trúc (thường là văn bản) đáp ứng nhu cầu về thông tin từ những nguồn tổng hợp lớn Những hệ thống truy xuất thông tin phổ biến nhất bao gồm các công cụ tìm kiếm như Google, Yahoo, hoặc Bing search Những công cụ này cho phép tiếp nhận một câu truy vấn dưới dạng ngôn ngữ tự nhiên làm đầu vào và cho ra một danh sách các tài liệu được sắp xếp theo mức độ phù hợp [5]

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

Nhận diện một số loại thực thể được xác định trước, mối quan hệ giữa các thực thể và các sự kiện trong văn bản ngôn ngữ tự nhiên Khác với truy xuất thông tin trả về một danh sách các văn bản hợp lệ thì trích chọn thông tin trả về chính xác thông tin mà người dùng cần Những thông tin này có thể là về con người, địa điểm, tổ chức, ngày tháng, hoặc thậm chí tên công ty, mẫu sản phẩm hay giá cả [5]

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

Có khả năng tự động trả lời câu hỏi của con người ở dạng ngôn ngữ tự nhiên bằng cách truy xuất thông tin từ một tập hợp tài liệu Một hệ thống QA đặc trưng thường bao gồm ba mô đun: Mô đun xử lý truy vấn (Query Processing Module) – tiến hành phân loại câu hỏi và mở rộng truy vấn; Mô đun xử lý tài liệu (Document Processing Module) – tiến hành truy xuất thông tin để tìm ra tài liệu thích hợp; và Mô hình xử lý câu trả lời (Answer Processing Module) – trích chọn câu trả lời từ tài liệu đã được truy xuất [5]

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

Là bài toán thu gọn văn bản đầu vào để cho ra một bản tóm tắt ngắn gọn với những nội dung quan trọng nhất của văn bản gốc Có hai phương pháp chính trong tóm tắt, là phương pháp trích xuất (extractive) và phương pháp tóm lược ý (abstractive) Những bản tóm tắt trích xuất được hình thành bằng cách ghép một số câu được lấy y nguyên từ văn bản cần thu gọn Những bản tóm lược ý thường truyền đạt những thông tin chính của đầu vào và có thể sử dụng lại những cụm từ hay mệnh đề trong đó, nhưng nhìn chung được thể hiện ở ngôn ngữ của người tóm tắt [5]

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

Là việc sử dụng máy tính để tự động hóa một phần hoặc toàn bộ quá trình dịch

từ ngôn ngữ này sang ngôn ngữ khác Các phương pháp dịch máy phổ biến bao gồm

Trang 16

dịch máy dựa trên ví dụ (example-based machine translation – EBMT), dịch máy dựa trên luật (rule-based machine translation – RBMT), và dịch máy thống kê (statistical machine translation – SMT) Những nghiên cứu gần đây tập trung vào dịch máy thống

kê bởi nhiều ưu điểm của nó so với các phương pháp khác Dịch dựa trên từ (word-based translation), dịch dựa trên cú pháp (syntax-based translation), dịch dựa trên cụm từ (phrase-based translation), và dịch dựa trên cụm từ phân cấp (hierarchical phrase-based translation) là những mô hình dịch máy thống kê thành công nhất [5]

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

Có hai kiểu nhận dạng, thứ nhất là nhận dạng chữ in, ví dụ nhận dạng chữ trên sách giáo khoa rồi chuyển nó thành dạng văn bản điện tử như dưới định dạng doc của Microsoft Word chẳng hạn Phức tạp hơn là nhận dạng chữ viết tay, có khó khăn bởi vì chữ viết tay không có khuôn dạng rõ ràng và thay đổi từ người này sang người khác Với chương trình nhận dạng chữ viết in có thể chuyển hàng ngàn đầu sách trong thư viện thành văn bản điện tử trong thời gian ngắn Nhận dạng chữ viết của con người có ứng dụng trong khoa học hình sự và bảo mật thông tin (nhận dạng chữ ký điện tử) [7]

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

Nhận dạng tiếng nói rồi chuyển chúng thành văn bản tương ứng Giúp thao tác của con người trên các thiết bị nhanh hơn và đơn giản hơn, chẳng hạn thay vì gõ một tài liệu nào đó bạn đọc nó lên và trình soạn thảo sẽ tự ghi nó ra Đây cũng là bước đầu tiên cần phải thực hiện trong ước mơ thực hiện giao tiếp giữa con người với robot Nhận dạng tiếng nói có khả năng trợ giúp người khiếm thị rất nhiều [7]

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

Từ một văn bản tự động tổng hợp thành tiếng nói Thay vì phải tự đọc một cuốn sách hay nội dung một trang web, nó tự động đọc cho chúng ta Giống như nhận dạng tiếng nói, tổng hợp tiếng nói là sự trợ giúp tốt cho người khiếm thị, nhưng ngược lại nó

là bước cuối cùng trong giao tiếp giữa robot với người [7]

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

Từ rất nhiều tài liệu khác nhau phát hiện ra tri thức mới Thực tế để làm được điều này rất khó, nó gần như là mô phỏng quá trình học tập, khám phá khoa học của con người, đây là lĩnh vực đang trong giai đoạn đầu phát triển Ở mức độ đơn giản khi kết hợp với máy tìm kiếm nó cho phép đặt câu hỏi để từ đó công cụ tự tìm ra câu trả lời dựa trên các thông tin trên web mặc cho việc trước đó có câu trả lời lưu trên web hay không (giống như trang Yahoo! hỏi và đáp, nơi chuyên đặt các câu hỏi để người khác trả lời), nói một cách nôm na là nó đã biết xử lý dữ liệu để trả lời câu hỏi của người sử dụng, thay vì máy móc đáp trả những gì chỉ có sẵn trong bộ nhớ [7]

Trang 17

Ở Việt Nam cũng đã có một số nhóm bắt đầu nghiên cứu về xử lý ngôn ngữ, bước đầu đã có những kết quả nhất định, như: các nhóm nghiên cứu đến từ các trường đại học, đại học Bách Khoa, đại học Công Nghệ, đại học Khoa Học Tự Nhiên, Viện Nghiên Cứu Công Nghệ Thông Tin, Nhóm Nghiên Cứu VLNP, Bên ngoài Việt Nam cũng có các nghiên cứu đến từ các nghiên cứu sinh Việt Nam tại JAIST Phần lớn các sản phẩm hiện nay đang tập trung vào lĩnh vực dịch máy, một sản phẩm khó, và yêu cầu làm dài hạn Ngoài ra còn có các bài toán phân loại chia nhóm văn bản Và đa phần chỉ dừng lại

ở đề tài tiến sĩ, thạc sĩ, mang tính chất tìm hiểu, chưa hệ thống và định hướng rõ ràng [6]

Bên cạnh những thành quả ban đầu, các công trình nghiên cứu xử lý ngôn ngữ ở Việt Nam vẫn đang gặp rất nhiều những khó khăn

- Ít các nghiên cứu nền tảng, những công cụ và tài nguyên Các bộ dữ liệu chưa hoàn chỉnh, không được public hay thương mại hóa Dữ liệu thường hay bị spam, sai chính tả, ngữ pháp không rõ ràng

- Phần lớn là các nghiên cứu ngắn hạn, đơn lẻ như đề tài thạc sĩ, tiến sĩ, với nhiều hạn chế về mô hình, thời gian, điều kiện phát triển

- Nhiều nhóm bắt đầu nghiên cứu khi còn thiếu kiến thức, dẫn đến nhiều sản phẩm vẫn chưa thể đưa ra được kết quả

- Và điều quan trọng hơn hết là người Việt Nam mình mắc căn bệnh thiếu chia

sẻ, liên kết, hợp tác làm việc theo đúng quy trình, và không có tính kế thừa, khiến cho người mới khi gặp vấn đề không biết phải xử lý sao, hỏi ai để có thể giải quyết [6]

1.1.5 Một số công trình và ứng dụng xử lý tiếng Việt tiêu biểu [6]

Trang 18

 DongDu - A Vietnamese word segmentation tool by Luu Tuan Anh (2014)

 UETsegmenter - a toolkit for Vietnamese word segmentation by Nguyen Tuan Phong (2016)

 Vitk - A Vietnamese Text Processing Toolkit by Le Hong Phuong (2016)

 pyvi - Python Vietnamese Toolkit by Tran Viet Trung (2016)

Part-Of-Speech Tagging

 vnTagger - an automatic part-of-speech tagger for tagging Vietnamese texts

by Le Hong Phuong (2010)

 pyvi - Tran Viet Trung (2016)

 vitk - Le Hong Phuong (2016)

 VnCoreNLP - A Vietnamese natural language process toolkit by NQ Dat (2018)

 vTools - Vietnamese NLP toolkit: Tokenizer, Sentence detector, POS tagger, Phrase chunker by TM Vu et al (2015)

Chunking

 VieyChunker - Vietnamese chunking tool by VLSP (2010)

 vTools - Phrase chunker by TM Vu (2015)

 NNVLP - A Neural Network-Based Vietnamese Language Processing Toolkit

by Pham Thai Hoang (2017)

Parsing

 Vitk - Le Hong Phuong (2016)

 VnDP - A Vietnamese dependency parsing toolkit by Nguyen Quoc Dat and Nguyen Quoc Dai

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

Dịch tự động hay còn gọi là dịch máy (tiếng Anh: machine translation) là một nhánh của xử lý ngôn ngữ tự nhiên thuộc phân ngành trí tuệ nhân tạo, nó là sự kết hợp giữa ngôn ngữ, dịch thuật và khoa học máy tính Như tên gọi, dịch tự động thực hiện dịch một ngôn ngữ này (gọi là ngôn ngữ nguồn) sang một hoặc nhiều ngôn ngữ khác (gọi là ngôn ngữ đích) một cách tự động, không có sự can thiệp của con người trong quá trình dịch Khó khăn của việc thiết kế chương trình dịch tự động là làm sao khử nhập nhằng hiệu quả Nói về tính nhập nhằng, đây là khái niệm chỉ tính không rõ ràng của

Trang 19

ngôn ngữ, chẳng hạn khi viết từ đường kính thì vẫn chưa rõ là nó chỉ một loại "chất ngọt dùng để pha làm đồ uống" hay là "đoạn thẳng đi qua tâm và nối hai điểm của đường tròn, của mặt cầu" Nhập nhằng như ví dụ vừa rồi là do hiện tượng đồng âm (hoặc đồng tự) gây ra, một số kiểu nhập nhằng khác như nhập nhằng từ loại, nhập nhằng từ đa nghĩa Khi dịch tự động từ tiếng Việt sang tiếng Anh, khó khăn đầu tiên lại là việc xác định ranh giới từ, không giống như tiếng Anh (và nhiều ngôn ngữ khác) mỗi từ đã mang trọn vẹn một nghĩa và được xác định ranh giới qua khoảng trắng, tiếng Việt là ngôn ngữ đơn lập do vậy có rất nhiều từ ghép, nếu không xác định đúng sẽ xuất hiện kiểu dịch từng từ rồi ghép lại với nhau ví dụ như từ "miễn bàn" có thể bị dịch thành free table Với tiếng Anh do là ngôn ngữ biến hình nên việc xác định từ loại dễ hơn, ngoài ra nó cũng ít từ đồng tự (hai từ có ký tự hoàn toàn giống nhau nhưng mang nghĩa khác nhau), còn về từ

đa nghĩa tiếng Anh cũng như tiếng Việt và hầu như tất cả các ngôn ngữ khác đều rất phức tạp, muốn xác định nghĩa chính xác phải phải thực hiện phân tích văn cảnh [18]

Sau khi xác định nghĩa phù hợp của từ, công việc tiếp theo là sắp xếp để tạo thành câu hoàn chỉnh Nếu hai ngôn ngữ có cấu trúc càng khác nhau bao nhiêu công việc này càng phức tạp bấy nhiêu, với những ngôn ngữ gần nhau như tiếng Anh và tiếng Pháp công việc tương đối đơn giản, nhưng giữa tiếng Pháp và tiếng Trung thì rất khó khăn

Để sắp xếp người ta đưa vào các cấu trúc ngữ pháp hết sức phức tạp, áp dụng nhiều kiến thức toán học nhưng thực tế cho thấy hiệu quả của chúng vẫn không được tốt [18]

Một cách tiếp cận khác trong lĩnh vực này là dựa vào tư liệu đã dịch sẵn của con người, điển hình là Google Translate, nó nạp hàng triệu trang tư liệu sau đó thực hiện các thao tác mà nó gọi là thống kê kiến thức để phân tích cho các lần dịch tự động sau này, kiểu dịch rất gần với thao tác tìm kiếm - lĩnh vực đặc biệt mạnh của Google [18]

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

Đó là việc áp dụng các tri thức ngôn ngữ của các cặp ngôn ngữ nguồn-đích do các nhà ngôn ngữ học xây dựng để từ đó mở ra một hướng tiếp cận phổ biến trong một thời gian dài: tiếp cận dựa trên luật (rule-based machine translation) Cách tiếp cận này đòi hỏi rất nhiều công sức để xây dựng nên cơ sở tri thức cần thiết cho một hệ thống dịch máy Hơn nữa sẽ có những lỗi do mâu thuẫn giữa các luật hoặc do tập luật không bao quát sẽ dẫn đến hiệu quả không cao Khó khăn lớn nhất trong việc áp dụng cách tiếp cận này đối với những ngôn ngữ mới là những yêu cầu về phân tích từ pháp, cú pháp,

… cũng như những yêu cầu nghiên cứu về việc chuyển đổi từ vựng, cấu trúc giữa cặp ngôn ngữ Vì vậy, xây dựng một hệ dịch trên ngôn ngữ mới (với ngôn ngữ tiếng Việt chẳng hạn) sẽ gặp rất nhiều khó khăn [18]

Trang 20

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

Dịch máy dựa trên thống kê là hướng tiếp cận hoàn toàn dựa trên dữ liệu nên nó

có tính độc lập ngôn ngữ Xây dựng một hệ thống dịch dựa trên hướng tiếp cận này chỉ cần tối thiểu một ngữ liệu song ngữ giữa cặp ngôn ngữ của hệ thống Những tham số thống kê thu được từ việc huấn luyện trên ngữ liệu song ngữ sẽ được sử dụng cho việc dịch ở lần sau Do vậy, không cần phải có một đội ngũ các chuyên gia ngôn ngữ học để

hỗ trợ, kiểm tra các tri thức ngôn ngữ Với yêu cầu tối thiểu của một hệ thống dịch máy, chi phí để xây dựng sẽ giảm được rất nhiều cũng như thời gian xây dựng một hệ thống dịch máy cho một cặp ngôn ngữ mới cũng sẽ giảm đi đáng kể Và điểm đặc biệt hơn cả nếu ngữ liệu song ngữ được bổ sung càng nhiều sẽ càng nâng cao chất lượng cho hệ dịch [12]

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

Hiện tại, dịch máy thống kê đang ngày càng khẳng định sức mạnh của nó do ngày càng có nhiều kho ngữ liệu lớn cho việc thống kê, nhưng nó không cho được kết quả như ý muốn trong một số trường hợp như các câu chuyên ngành

Các tiếp cận theo dịch máy dựa trên ví dụ rất đơn giản, không đòi hỏi phải có sự phân tích ngôn ngữ học, cú pháp, ngữ nghĩa vì mọi câu dịch đều dựa vào việc “so khớp” mẫu Việc “so khớp” mẫu dựa hoàn toàn vào kho ngữ liệu song ngữ để xác định mẫu nào gần đúng nhất và xuất ra thành phần dịch tương ứng của mẫu đó Vậy thì việc xây dựng kho ngữ liệu song ngữ như thế nào để hệ dịch máy dựa trên ví dụ có thể dịch ra kết quả khả quan hơn là điều đáng quan tâm [12]

Tuy nhiên, hiện nay chất lượng của các bản dịch tự động chưa thật tốt, các bản dịch chỉ cho biết đại ý và nó hoàn toàn có thể dịch sai một phần hoặc toàn bộ nội dung cốt lõi của văn bản Vì vậy, hầu hết các sản phẩm dịch tự động đều chỉ mang tính tham khảo [12]

1.2.3 Tình hình dịch tự động tiếng Việt

Những năm thập niên 1960 vấn đề dịch tự động cho tiếng Việt đã bắt đầu được nghiên cứu, hầu hết đều do các nguyên nhân chính trị và quân sự Các tài liệu nước ngoài cho thấy, được sự bảo trợ của Không lực Hoa Kỳ, Bernard E Scott thành lập công

ty Logos vào năm 1969 với mục đích tiếp tục nghiên cứu việc tổ chức hệ thống dịch tự động từ tiếng Anh ra tiếng Việt Scott bắt đầu chuẩn bị cho việc tổ chức hệ thống dịch

tự động này vào mùa xuân năm 1965 tại Viện công nghệ máy tính tại New York, Mỹ Vào khoảng tháng 6 năm 1970 hệ thống dịch tự động có tên Logos I ra đời với từ điển

tự động hóa hỗ trợ chỉ có hơn 1.000 từ tiếng Việt, tác giả của hệ thống này là Byrne, Charles E.; Scott, Bernard E.; Binh, Truong N [7] Nhưng hệ thống này không tồn tại được lâu, việc nghiên cứu của Scott chấm dứt vào năm 1973 Cũng trong khoảng thời

Trang 21

gian này, một dự án khác về xây dựng hệ thống dịch tự động từ tiếng Anh ra tiếng Việt

đã được tiến hành vào đầu thập niên 1970 tại Tập đoàn viễn thông Xyzyx, California

Hệ thống này đầu tiên được xây dựng để dịch văn bản Anh - Pháp về vũ trụ học trên máy IBM 360 theo nguyên tắc hoạt động tương tự như của hệ thống Logos Tuy nhiên,

hệ dịch máy Anh-Việt được sử dụng rộng rãi tại Việt nam đầu tiên là EVTRAN - 1997

Và sau đó EVTRAN 2.0, 1999 với hơn 200.000 từ và cụm từ Từ năm 2006, bản EVTRAN 3.0 (được gọi là Ev-Shuttle) biên dịch văn bản hai chiều Anh-Việt và Việt-Anh (với hơn 500.000 mục từ vựng) [7]

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ữ

- Babel Fish: Một trong các tiện ích dịch tự động đầu tiên trên ứng dụng web,

được công cụ tìm kiếm Alta Vista phát triển và đưa lên mạng vào năm 1997, sau đó Yahoo một công cụ tìm kiếm khác mua lại vào năm 2004 Hỗ trợ 38 cặp ngôn ngữ, trong

đó tiếng Anh, tiếng Pháp và tiếng Trung Quốc (cả giản thể và phồn thể) được hỗ trợ nhiều nhất; tiếp đến là các tiếng Đức, Tây Ban Nha, Ý, Bồ Đào Nha, Nga, Triều Tiên, Nhật, Hy Lạp và Hà Lan Liên kết: babelfish.yahoo.com [8]

- Google Translate: Dịch vụ này tính đến thời điểm tháng 2 năm 2010 đã hỗ trợ

52 ngôn ngữ trong đó có tiếng Việt, hiện là dịch vụ trực tuyến duy nhất hỗ trợ khả năng dịch toàn trang web cho tiếng Việt, không giống Yahoo, do sử dụng kiểu dịch trung gian nên cặp ngôn ngữ có khả năng dịch qua lại với nhau lên tới con số 1326 (52*51/2), tuy nhiên rất nhiều cặp chất lượng dịch thấp, vì thực tế đó là kiểu dịch tự động 2 lần qua một ngôn ngữ trung gian nào đó (thường là tiếng Anh), với tính năng này có thể dịch một câu tiếng Việt sang 51 ngôn ngữ còn lại Có tính năng tương tác với người dùng nhằm tăng chất lượng dịch cho các lần sau, không hỗ trợ dịch chuyên ngành Tốc độ dịch của Google là rất tốt so với các dịch vụ trực tuyến tương tự khác dành cho người Việt, khi sử dụng người dùng sẽ dễ dàng nhận thấy Tốc độ, đơn giản dù sao vẫn là những đặc điểm vốn có từ lâu của người khổng lồ Internet này Liên kết: translate.google.com.vn [8]

1.2.4.2 Tiếng Việt

- Lạc Việt (công ty từng phát triển và đưa ra bộ từ điển Lạc Việt): chỉ hỗ trợ dịch

từ Anh sang Việt có thêm phần dịch chuyên ngành (tin học, toán học, y học và kế toán)

và hỗ trợ dịch tốt hơn bởi người dùng [8]

- Vdict: Dịch vụ trực tuyến đầu tiên dịch tự động Anh-Việt, mua lại bản quyền

phần mềm EVTRAN của Softex (Phòng Công nghệ Phần Mềm - Viện Ứng dụng công nghệ - Bộ Khoa học và Công nghệ Việt Nam) phát triển, sau đó từ bỏ phần mềm này (trong một thời gian ngắn) để sử dụng công nghệ của Google Translate Tuy nhiên, vì

Trang 22

trong nhiều trường hợp EVTRAN dịch tốt hơn Google Translate nên Vdict đã sử dụng lại EVTRAN đồng thời với Google Translate: hiện nay khi dịch Anh<->Việt, vdict cho

ra cả hai kết quả Không hỗ trợ dịch chuyên ngành cũng như trợ giúp từ phía người dùng Liên kết: vdict.com/autotranslation [8]

- Baamboo: Dịch dưới 500 từ được hỗ trợ bởi Google

- Evtran: Phần mềm dịch tự động Anh-Việt, Việt-Anh đầu tiên do người Việt

làm ra

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

Kho ngữ liệu văn bản bao gồm một tập hợp lớn các văn bản, có thể được phân tích và xử lý phục vụ nhiều công việc của ngôn ngữ học tính toán Thông tin ngôn ngữ trong đó là cơ sở tri thức ngôn ngữ học, được sử dụng trong việc phân tích thống kê và kiểm tra các giả thiết ngôn ngữ, kiểm tra sự xuất hiện hoặc xác nhận các quy tắc ngữ pháp trong mỗi ngôn ngữ [8]

1.3.2 Các loại kho ngữ liệu

- Ngữ liệu đơn ngữ: gồm những văn bản bằng một thứ tiếng

- Ngữ liệu đa ngữ: gồm những văn bản bằng nhiều thứ tiếng

1.3.3 Một số kho ngữ liệu phổ biến

Hiện nay trên thế giới có rất nhiều kho ngữ liệu được chia sẻ miễn phí cho cộng đồng nghiên cứu Dưới đây sẽ liệt kê một số kho ngữ liệu tiêu biểu [8]

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

Kho ngữ liệu Brown cho tiếng Anh Mỹ (Brown Corpus) là kho ngữ liệu văn bản

đã được Henry Kucera và W Nelson Francis biên soạn vào những năm 1960 Kho văn bản này chứa 500 văn bản tiếng Anh, biên soạn từ các tác phẩm xuất bản tại Hoa Kỳ năm 1961, tổng cộng 1.014.312 từ, được chú giải ở mức từ loại [8]

1.3.3.2 Kho ngữ liệu tiếng Anh (BNC - The British National Corpus)

Kho ngữ liệu này có khoảng 100 triệu từ của ngôn ngữ nói và viết được lấy từ nhiều nguồn dữ liệu khác nhau, trong đó kho ngữ liệu viết chiếm 90 % đã được gán nhãn

từ loại được trích rút từ báo chí nội địa và Quốc gia, tạp chí dành cho mọi lứa tuổi, sách giáo khoa… Kho ngữ liệu này bắt đầu được xây dựng từ năm 1991 và hoàn thành năm

1994, sau đó thì không có văn bản nào được thêm vào kho ngữ liệu trong dự án này này nhưng kho ngữ liệu này đã được chỉnh sửa thành một phiên bản thứ hai là BNC Wold (2001) Và phiên bản thứ ba BNC XML Edition (2007) [8]

Trang 23

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

Kho ngữ liệu này hiện có 22 triệu từ thuộc ngôn ngữ viết và nói, được chú giải ở mức từ loại, cú pháp nông, và các chú giải tên thực thể… khung chú giải 3 ngôn ngữ của kho ngữ liệu được cung cấp theo các tiêu chuẩn thiết lập bởi tiểu ban kỹ thuật ISO/TC 37/SC4, sử dụng định dạng XML phù hợp với tiêu chuẩn mã hoá kho ngữ liệu XML (XML Corpus Encoding Standard -XCES), hiện nay có khoảng 15 triệu từ đã được định dạng GrAF (Graph Annotation Fortmat) [8]

Hiện tại dự án xây dựng ANC đang tiếp tục được mở rộng thêm, mục đích là tạo

ra một bộ sưu tập điện tử khổng lồ toàn diện nhất của tiếng Anh Mỹ, sẽ là nguồn tài nguyên hữu ích phục vụ cho giáo dục, cho nghiên cứu ngôn ngữ và phát triển công nghệ Kho ngữ liệu bao gồm văn bản của tất cả các thể loại và bảng dịch của dữ liệu nói được sản xuất từ năm 1990 trở đi [8]

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

American English)

Kho ngữ liệu hiện đại COCA là kho ngữ liệu lớn nhất cho tiếng Anh Mỹ, có khoảng hơn 425 triệu từ và dữ liệu được lấy đều từ các nguồn tiểu thuyết, nói, các tạp chí nổi tiếng, báo chí, và các văn bản học thuật, được xây dựng từ năm 1990-2011, kho ngữ liệu được cập nhật một đến hai lần trong một năm (các văn bản gần đây nhất là từ tháng 3 năm 2012), mỗi năm lấy khoảng 20 triệu từ Do cách cập nhật, thiết lập dữ liệu, đây có lẽ là kho ngữ liệu tiếng Anh phù hợp để nhìn vào hiện tại, thay đổi đang diễn ra trong ngôn ngữ [8]

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

Kho ngữ liệu này được xây dựng trong 8 năm (1989-1996), có khoảng 7 triệu từ

đã được gán nhãn từ loại, 3 triệu từ đã được phân tích cú pháp cơ bản, trên 2 triệu từ của văn bản đã phân tích cú pháp cho cấu trúc đối vị từ, 1.6 triệu từ là dữ liệu tiếng nói (phiên âm) Dữ liệu văn bản định dạng dưới dạng đặt ngoặc, mỗi câu trong kho ngữ liệu

sẽ được đặt ngoặc - mỗi thành phần cú pháp sẽ có một cặp dấu ngoặc bao quanh, ngay sau dấu ngoặc đầu tiên là ký hiệu ngữ pháp và các thuộc tính (nếu có), tiếp theo là danh sách các thành phần cú pháp con [8]

Kho văn bản này được lấy từ các nguồn sách máy tính của IBM, tạp chí tài chính phố Wall, các cuộc đàm thoại V.V.4

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

Kho ngữ liệu Tiger (Tiger Treebank, phiên bản 2.1) có khoảng 900,000 từ (50,000 câu) Được lấy từ báo Frankfurter Rundschau của tiếng Đức Kho ngữ liệu này

đã được gán nhãn từ loại và chú giải cú pháp cho các câu, việc chú giải được thực hiện

Trang 24

bán tự động Ngoài các nhãn từ loại và nhãn cấu trúc cú pháp, kho ngữ liệu còn chứa các các thông tin về hình thái, từ nguyên thể cho các nút từ vựng [9]

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

Kho ngữ liệu tiếng Trung (Chinese Treebank 7.0) được công bố qua Tổ chức dữ liệu ngôn ngữ (LDCƯ Linguistic Data Consortium) Bao gồm khoảng 1 triệu từ đã được chú giải cú pháp Chinese Treebank được bắt đầu tại Đại học

Pennsylvania vào năm 1998, sau đó tiếp tục ở Đại học Colorado và là hiện đang được phát triển tại Đại học Brandeis Mục tiêu của dự án là cung cấp một kho ngữ liệu lớn được chú giải từ loại và đặt ngoặc toàn bộ.[9]

Một số kho ngữ liệu song ngữ

- Kho ngữ liệu song ngữ song song do dự án EuroMatrix (tham khảo tại địa chỉ http://euromatrix.net/) Xây dựng gồm các cặp ngôn ngữ khác nhau được lấy nguồn từ các kỷ yếu của Quốc hội Châu Âu từ năm 1996–2006 Kho ngữ liệu này gồm 9 cặp ngôn ngữ khác nhau [9];

- Kho ngữ liệu song ngữ song song Anh - Pháp (Canadian Hansard) Của hiệp hội

dữ liệu ngôn ngữ học (LDC), kho ngữ liệu này gồm 2.8 triệu cặp câu Dữ liệu văn bản thuần chủ yếu được lấy từ trang web của Quốc hội Canada [9];

- Kho ngữ liệu WaCky (Web as Corpus kool ynitiative) Đây là kho ngữ liệu lớn, trong đó có 3 kho ngữ liệu của tiếng Anh (ukWaC), tiếng Đức (deWaC) Và tiếng Ý (itWaC) Các kho ngữ liệu này được phát triển từ năm 2005 cho đến năm 2007, mỗi kho ngữ liệu có khoảng hơn 1 tỷ từ đã được chú giải từ loại và được thu thập từ Internet thông qua các trang web.[9]

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ê

Ngôn ngữ học - thống kê là ứng dụng phương pháp xác suất - thống kê vào việc thống kê, đo, đếm các đối tượng trong ngành ngôn ngữ học

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

Ngôn ngữ học so sánh là so sánh các điểm tương đồng, khác biệt giữa các ngôn ngữ Để so sánh chúng ta cần có các cứ liệu của các ngôn ngữ mà chúng ta cần so sánh

vì vậy việc thu thập, tổng hợp cứ liệu từ các nguồn khác nhau là rất cần thiết

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

Kho ngữ liệu song ngữ đóng vai trò quan trọng trong việc làm nguồn ngữ liệu và tài liệu sư phạm rất phong phú, làm giàu thêm kiến thức của họ và cũng là công cụ hữu ích trong việc thiết kế giáo trình, sử dụng trong việc dạy và học ngoại ngữ

Trang 25

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

Kho ngữ liệu song song có thể giúp phiên dịch để tìm ra sự tương đương giữa ngôn ngữ nguồn và đích Chúng cung cấp thông tin về tần số của từ, sử dụng cụ thể từ vựng và cú pháp Giúp phiên dịch để phát triển các chiến lược dịch thuật có hệ thống các từ hay cụm từ hay câu không có tương đương trực tiếp bằng ngôn ngữ đích

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

Qua quá trình giảng dạy tôi nhận thấy rằng đa số học sinh gặp khó khăn nhiều khi học các tiết học về chương trình và viết chương trình bằng ngôn ngữ lập trình Pascal Nhiều em không hiểu ý nghĩa của các câu lệnh, quá trình giải một bài toán và không tìm

ra được thuật toán nên các em học theo kiểu máy móc, học thuộc không hiểu về quy trình lập trình Vẫn còn những học sinh học tập một cách thụ động, chỉ chờ thầy, cô đọc cho chép, hoặc trả bài một cách đối phó hay lười suy nghĩ… Một phần cũng do giáo viên hay sử dụng các phương pháp dạy học cũ là đọc chép, lý thuyết nhiều mà ít thực hành Đa số các em rất khó giải quyết các bài toán, đặc biệt là không biết áp dụng các câu lệnh vào từng bài toán cụ thể Nhiều em kỷ năng phân tích bài toán còn rất yếu

Là môn học sử dụng ngôn ngữ lập trình Pascal (ngôn ngữ viết bằng Tiếng Anh) nên các em có nhiều bỡ ngỡ vì đây là lần đầu tiên các em biết đến khái niệm lập trình

và hiểu nghĩa các từ khóa bằng Tiếng Anh Mặt khác là môn học vận dụng kiến thức về Toán học rất khó cho các em trong quá trình lập trình

Theo tôi, kiến thức không bao giờ là cô lập, không đứng độc lập mà nó có mối liên hệ chặt chẽ với nhau Nếu chúng ta không học hỏi, trau dồi kiến thức ở những môn học khác thì cũng giống như “con chuột chui vào sừng trâu; càng chui sâu càng hẹp” mà thôi Những hạn chế mà đề tài đưa ra cũng sẽ được khắc phục nếu như cả giáo viên và học sinh đều không ngừng học hỏi, trau dồi kiến thức ở những môn học khác có liên quan thì sẽ thu lại kết quả khả quan

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

Để tìm ra những vấn đề tồn tại trong việc dạy, học và chương trình môn Tin học

11, tôi đã tiến hành phương pháp điều tra phỏng vấn 10 giáo viên và 40 học sinh ở trường THPT trên địa bàn tỉnh Quảng Ngãi gồm: trường THPT Chuyên Lê Khiết, trường THPT Trần Quốc Tuấn, trường THPT Lê Trung Đình, trường THPT Huỳnh Thúc Kháng, trường THPT Võ Nguyên Giáp, trường THPT Sơn Mỹ, THPT Ba Gia, THPT Phạm Kiệt, trường THPT Sơn Hà, trường THPT Quang Trung Kết quả thu được tôi xin tổng hợp lại thành các nội dung:

Trang 26

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

Theo kết quả khảo sát, phần lớn các trường đều gặp phài một số vấn đề về cơ sở vật chất như:

- Thiếu phòng máy tính, máy chiếu phục vụ dạy lý thuyết và thực hành

- Phòng máy tính số lượng máy hỏng còn nhiều, máy cũ với cấu hình thấp gây khó khăn cho việc cài đặt các phần mềm phiên bản cao phục vụ học tập, tốc độ máy chậm, chạy không ổn định ảnh hưởng đến chất lượng các buổi học thực hành

- Nhiều trường phòng máy tính còn chưa được kết nối Internet hoặc tốc độ Internet rất chậm như THPT Phạm Kiệt, THPT Sơn Hà, THPT Quang Trung

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

Đối với các trường THPT, thì môn Tin học chỉ là môn “phụ”, không tham gia thi tốt nghiệp hay đại học cao đẳng vì thế chưa nhận được sự quan tâm của nhà trường cũng như phụ huynh và học sinh: học sinh chỉ học để đối phó, nhà trường chỉ tổ chức dạy cho đúng yêu cầu, phụ huynh không khuyến khích ủng hộ con em yêu thích đam mê môn học, thậm chí nhiều phụ huynh còn cấm con em họ tham gia thi học sinh giỏi môn Tin học, tạo áp lực cho giáo viên và nhà trường để con em học được ra khỏi đội tuyển tập trung vào học các môn ôn thi đại học Phần lớn giáo viên môn Tin học đều phải kiêm nhiệm rất nhiều công tác khác nhau như thủ quỹ, văn phòng, hoạt động đoàn thể nên ảnh hưởng không nhỏ tới chất lượng giảng dạy Vấn đề trên dẫn tới tâm lý học sinh chán học, giáo viên chán dạy nên chất lượng môn Tin học trong trường THPT không đáp ứng được mục đích, yêu cầu của môn học Đặc biệt với môn Lập trình Pascal trong tin học lớp 11, là môn học được đánh giá là khó và lạc hậu thì việc dạy và học càng trở lên “đối phó”

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

Dựa trên kết quả khảo sát, có khá nhiều em học sinh đều quan tâm và cảm thấy hứng thú với lập trình công việc lập trình viên Tuy nhiên, việc học ngôn ngữ lập trình Pascal trong chương trình lớp 11 hiện nay đang gây khó khăn cho các học sinh mới bắt đầu tìm hiểu học lập trình Pascal được chọn sử dụng để dạy ngôn ngữ lập trình cho học sinh phổ thông vì 30 năm trước nó không có đối thủ về mặt diễn tả thuật toán một cách trong sáng Tuy nhiên, hơn 10 năm nay, Pascal mất ưu thế về mọi mặt và có một số nhược điểm gây khó khăn cho các em học sinh so với một số ngôn ngữ khác như:

- Giao diện chương trình không thân thiện, dễ gây sự nhàm chán cho học sinh

- Về mặt cú pháp nó chỉ dễ đọc đối với những học sinh các nước nói tiếng Anh

- Không có tính thực tiễn, nên không gây hứng thú cho học sinh

- Rườm rà, không có IDE giúp bắt lỗi cú pháp nhanh chóng

Trang 27

Đối với chương trình Pascal lớp 11 hiện nay thì có một số vấn đề sau:

- Các bài tập áp dụng công thức toán học quá nhiều, học sinh phải có kiến thức tốt về toán thì mới có thể làm được các bài tập trong sách giáo khoa

- Phần lớn các bài tập chỉ liên quan đến tính toán, thuần về toán học, không liên quan đến thực tiễn do đó học sinh chưa hiểu được lập trình để làm gì ngoài viêc tính toán với các con số

- Không trực quan và sinh động

- Phần lớn học sinh chỉ cố hoàn thành các bài tập giáo viên cho một cách bị động, không kích thích tư duy tính sáng tạo, không thu hút sự chú ý của học sinh, do đó học sinh học chỉ để đối phó với môn học

- Với ngôn ngữ Pascal, học sinh khó liên hệ với việc xây dựng các ứng dụng trong thực tế, vì thế học sinh không hình dung hết vai trò của sản phẩm lập trình trong cuộc sống hàng ngày

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

Giáo viên tin học cấp THPT hiện nay trên địa bàn tỉnh Quảng Ngãi xét về mặt bằng chung còn thiếu Nhiều trường giáo viên Tin học là các thầy cô được đào tạo chuyên ngành Toán - Tin (trong đó chương trình Toán là chủ yếu), vì thế dẫn đến việc lúng túng trong giảng dạy môn Tin học, đặc biệt là việc ứng dụng kiến thức trong sách giáo khoa vào thực tế và việc cập nhật các kiến thức mới cho học sinh Số lượng học sinh/lớp ở các trường THPT khá cao (trung bình 35 – 45 học sinh) gây khó khăn rất lớn cho giáo viên khi hướng dẫn học sinh thực hành Bên cạnh đó cơ sở vật chất còn thiếu

và lạc hậu cũng dẫn tới chất lượng các tiết học thực hành không cao Với tâm lý là môn học “phụ”, nên nhiều giáo viên không yêu thích và đam mê với công tác giảng dạy chuyên môn, lại phải kiêm nhiệm nhiều công tác khác nên cũng không có nhiều thời gian để giáo viên đầu tư cho soạn giáo án, thiết kế chương trình đổi mới phương pháp giảng dạy hay tự bồi dưỡng chuyên môn Ngôn ngữ Pascal là một ngôn ngữ lạc hậu, tính thực tế không cao nên không thu hút sự yêu thích tìm tòi khám phá 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:

- Cần phải nắm vững các phương pháp dạy học Tin học nhằm phát huy tính tích cực, chủ động của học sinh trong học tập Để nâng cao chất lượng dạy học môn Tin học, giáo viên phải tiếp cận nội dung bài và lựa chọn các phương pháp, xây dựng hệ thống câu hỏi logic, phù hợp với ba đối tượng: giỏi, trung bình, yếu Từ đó dẫn dắt học sinh tự khám phá kiến thức, không thụ động ghi nhận kiến thức mà giáo viên cung cấp, phải có

sự phối hợp giữa hoạt động dạy và hoạt động học trên cơ sở lấy học sinh làm trung tâm

Trang 28

- Để tạo hứng thú học tập và hoạt động tích cực chủ động của học sinh, giáo viên phải phối hợp nhuần nhuyễn các phương pháp dạy học Giáo viên phải tích hợp các môn học khác nhau trong mỗi tiết dạy

- Tùy theo từng dạng bài mà giáo viên sử dụng phương pháp dạy học và lập kế hoạch, chuẩn bị nội dung dạy học cho phù hợp Sau đây là một số giải pháp:

- Tìm hiểu các từ khóa

+ Trong mỗi bài học việc tìm hiểu nghĩa các từ khóa rất quan trọng, phải làm cho các em hiểu được ý nghĩa của các từ khóa trước khi yêu cầu các em vận dụng nó vào công việc viết chương trình hay cấu trúc lệnh Vì mỗi cấu trúc lệnh của Pascal đều có nghĩa của nó Nếu công việc này nếu chúng ta cho học sinh hiểu được thì xem như chúng

ta đã đạt được 30% mục tiêu bài học

Ví dụ:

- Write nghĩa là viết, ở đây chúng ta có thể nói rõ cho học sinh biết viết ra màn hình

- Read nghĩa là đọc, ở đây ta có thể hiểu là đọc (nạp) dữ liệu vào cho máy tính

- If … then … else …: có nghĩa là Nếu … thì … ngược lại …

- While … do …: Trong khi … thì làm việc …

- Begin … end.: Bắt đầu … kết thúc

Cho học sinh thực hiện và luyện tập những hoạt động tương tự với nội dung và mục tiêu dạy học:

+ Dạy lý thuyết

Phát hiện những hoạt động tương tự với nội dung

1.4.3.2 Đối với học sinh:

- Giáo viên phải giúp đỡ, hướng dẫn và tác động để học sinh hiểu được môn tin học nó cũng rất cần thiết trong học tập và cuộc sống

- Học sinh phải nghiên cứu kĩ sách giáo khoa để nắm vững kiến thức trong quá trình học tập Ngoài ra, học sinh phải biết chọn lọc những quyển sách hoặc mạng internet

để đọc, tham khảo giúp em học tốt môn Tin học

- Học sinh phải tích cực chủ động học tập và thực hiện các yêu cầu chuẩn bị ở nhà trước khi đến lớp Trong quá trình học tập, các em phải tư duy theo gợi dẫn của giáo viên, phải chủ động quan sát vấn đề, hiện tượng, phối hợp giải quyết, khám phá ra nội dung bài học, thực hành vận dụng Các em phải nắm vững kiến thức của các môn Toán, Tiếng Anh để hỗ trợ các em trong quá trình làm bài tập

Trang 29

- Học sinh phải phải thực hành nhiều hơn Thực hành là thước đo đánh giá tiếp nhận và vận dụng kiến thức Hành thông thường là áp dụng bài tập trên lớp và ở nhà

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

Trang 30

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

Trong chương này, tác giả tập trung đề xuất giải pháp xây dựng kho ngữ liệu song ngữ Anh – Việt các lỗi lập trình, nhằm chuẩn bị cho việc xây dựng hệ thống dịch máy Xây dựng kho ngữ liệu là một phần quan trọng trong quá trình xây dựng các hệ thống xử lý ngôn ngữ tự nhiên nói chung và dịch tự động nói riêng Các lỗi lập trình hiện nay chủ yếu ở dạng tiếng Anh, với sự mô tả rất ngắn gọn và vắn tắt làm cho những người mới học lập trình như các học sinh phổ thông rất khó hiểu và theo dõi Do vậy, việc xây dựng kho ngữ liệu Anh – Việt các lỗi lập trình sẽ bao gồm việc thu thập tập hợp các lỗi lập trình gốc (ở dạng tiếng Anh), sau đó đề xuất giải pháp xây dựng tập dịch

và giải nghĩa trong tiếng Việt Ở kho ngữ liệu này, với mỗi câu lỗi gốc ở dạng tiếng Anh

sẽ có một hoặc tập hợp giải nghĩa câu lỗi đó ở tiếng Việt Phần giải nghĩa tiếng Việt có thể bao gồm các ví dụ, các đoạn giải nghĩa, chú thích để người học lập trình không chỉ nhận biết lỗi cụ thể mà còn tìm thấy được các cách sửa chữa lỗi, các chia sẽ kinh nghiệm

về sửa lỗi này của cộng đồng lập trình

Để có được giải pháp về xây dựng kho ngữ liệu song ngữ Anh – Việt các lỗi lập trình, trong chương này tôi sẽ nghiên cứu các kiến thức liên quan đến lỗi lập trình, giải pháp và các bước xây dựng kho ngữ liệu

2.2 Tổng quan về lỗi lập trình

2.2.1 Lỗi cú pháp

Vi phạm khi đặt hay gọi tên biến và hàm: Lỗi loại này thường rất dễ tìm ra trong lúc phát triển mã Thường người ta có thể đọc lại các bảng tham chiếu về ngôn ngữ để tránh sai cú pháp mẫu (prototype) của hàm hay tránh dùng các ký tự đặc biệt bị cấm không cho dùng trong khi đặt tên Trong không ít trường hợp người lập trình có thể đã định nghĩa cùng một tên cho nhiều hơn một đối tượng khác nhau và lại có giá trị toàn cục Trong nhiều trường hợp chúng tạo thành lỗi ý nghĩa

2.2.2 Lỗi chính tả

Người viết mã có thể viết hay gọi sai tên hàm, tên biến Trong nhiều ngôn ngữ

có kiểu tĩnh thì các lỗi này sẽ rất dễ bị phát hiện Còn đối với ngôn ngữ có kiểu độnghay

có kiểu yếu thì nó có thể dẫn đến sai sót nghiêm trọng vì bản thân phần mềm dịch không

hề phát hiện ra

Vượt quá khả năng tính toán: Bản thân máy tính và hệ điều hành cũng có rất nhiều giới hạn về phần cứng, phần mềm và các đặc điểm chuyên biệt Khi người lập trình yêu cầu máy làm quá khả năng sẽ gây ra các lỗi mà đôi khi không xác định được

Trang 31

2.2.3 Lỗi thời gian (timing error)

Thường thấy trong các hệ thống đa luồng hay đa nhiệm

2.2.4 Lỗi chia cho 0

Bản thân phần cứng máy tính sẽ ở trạng thái bất định khi thực hiện phép chia cho 0; trong nhiều trường hợp, mã sau khi dịch mới phát hiện ra trong lúc thi hành và được đặt tên là lỗi division by 0

Dùng hay gọi tới các địa chỉ hay các thiết bị mà bản thân máy hay hệ điều hành đang thực thi lại không có hay không thể đạt tới Đây là trường hợp rất khó lường Bởi

vì thường ngưòi lập trình có thể viết mã trên một máy nhưng lại cho thi hành trong các máy khác và các máy này lại không thỏa mãn các yêu cầu Để giảm trừ các lỗi loại này thường người lập trình nên xác định trước các điều kiện mà phần mềm làm ra sẽ hỗ trợ

Ví dụ: trong nhiều phần mềm ngày nay ở trong vỏ hộp đều được ghi rõ các yêu cầu về vận tốc, bộ nhớ tối thiểu, và quan trọng là hệ điều hành nào mà phần mềm đó hỗ trợ được

2.2.5 Gán sai dữ liệu

Tức là dùng một dữ liệu có kiểu khác với kiểu của biến để gán cho biến đó một cách không chủ ý Đối với các ngôn ngữ tĩnh hay có kiểu mạnh thì lỗi này dễ tìm thấy hơn Còn những ngôn ngữ động hay ngôn ngữ có kiểu yếu thì lỗi tạo ra sẽ có thể khó phát hiện và thường xảy ra lúc thi hành

Ví dụ: Gán một giá trị lớn hơn 255 cho một biến có kiểu là short trong ngôn ngữ

C Tạo nên các lỗi khi biến chạy trong vòng lặp đạt giá trị ở biên

Ví dụ: đoạn mã C/C++ sau đây sẽ gây ra lỗi biên - Chia cho 0

Trang 32

2.2.7 Lỗi về quản lý bộ nhớ

Trong nhiều loại ngôn ngữ người lập trình có thể xin đăng ký một lượng nào đó của bộ nhớ để dùng làm chỗ chứa giá trị cho một biến (một hàm hay một đối tượng)

Thường thì sau khi dùng xong người viết mã phải có phần lệnh trả về các phần

bộ nhớ mà nó đã đăng ký dùng Nếu không, sự trả về này chỉ xảy ra ở giai đoạn kết thúc việc thi hành Trong nhiều trường hợp, số lượng bộ nhớ xin đăng ký quá nhiều và không được dùng đúng chỗ có thể làm cho máy kiệt quệ về mặt tài nguyên bộ nhớ và gây ra treo máy Điển hình nhất là việc xin đăng ký các phần của bộ nhớ trong các vòng lặp lớn để gán cho các đối tượng bên trong vòng lặp nhưng không trả về sau khi sử dụng

Người ta thường gọi lỗi kiểu này là lỗi rò rỉ bộ nhớ (memory leaking)

2.2.8 Lỗi thuật toán

Trước khi viết một chương trình, để giảm thiểu sai sót về mặt lập luận thì người

ta có nhiều biện pháp để làm giảm lỗi trong đó có các phương pháp vẽ lưu đồ, vẽ sơ đồ khối, hay viết mã giả Những biện pháp này nhằm tạo nên các thuật toán để giải quyết vấn đề Tuy nhiên, một thuật toán không chặt chẽ, xử lý không rốt ráo mọi trường hợp

có thể xảy ra, không dự đoán được sự thay đổi trong lúc thi hành thì có thể tạo nên các lỗi và các lỗi này thường khó thấy bởi vì nó chỉ xảy ra ở những chỗ, những thời điểm

mà người lập trình không ngờ trước Một trong những phương pháp đơn giản làm giảm thiểu lỗi thuật toán là phải chú ý xử lý mọi tình huống khi dùng câu lệnh điều kiện (hay chẻ nhánh) mặc dù có thể có các trường hợp tưởng như hiển nhiên

2.2.9 Lỗi về lập luận

Đây có thể xem là trường hợp đặc biệt của sai sót trong thuật toán Trong các biểu thức tính giá trị, đôi khi không quen dùng đại số Bool (nhất là khi dùng luật De Morgan để phủ định một biểu thức phức tạp) nên người lập trình có thể tính toán sai, hay định nghĩa sai các phép toán Do đó, giá trị trả về của các biểu thức logic hay biểu thức nhị phân sẽ bị sai trong một vài trường hợp hay toàn bộ biểu thức Trong những tình huống như vậy phần mềm dịch sẽ không thể nào phát hiện ra cho đến khi chương trình được thi hành và lọt vào tình huống tính sai của người lập trình

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

Pascal là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970 là ngôn ngữ lập trình đặc biệt thích hợp cho kiểu lập trình cấu trúc và cấu trúc dữ liệu Được đặt theo tên của nhà toán học, triết gia và nhà vật lí người Pháp, Blaise Pascal

Trang 33

Pascal được phát triển theo khuôn mẫu của ngôn ngữ ALGOL 60 Wirth đã phát triển một số cải tiến cho ngôn ngữ này như một phần của các đề xuất ALGOL X, nhưng chúng không được chấp nhận và Ngôn ngữ Pascal được phát triển riêng biệt và phát hành vào năm 1970 Một phiên bản cải tiến được gọi là Object Pascal được thiết kế cho lập trình hướng đối tượng được phát triển vào năm 1985, được sử dụng bởi Apple Computer và Borland vào cuối những năm 1980 và sau đó phát triển thành ngôn ngữ Delphi trên nền tảng Microsoft Windows Wirth đồng thời cũng xây dựng Modula-2 và Oberon, là những ngôn ngữ tương đồng với Pascal Oberon cũng hỗ trợ kiểu lập trình hướng đối tượng Đặc điểm ngôn ngữ lập trình Pascal

* Đặc điểm ngôn ngữ lập trình Pascal

Pascal ở dạng nguyên thủy của nó là một ngôn ngữ thuần túy và bao gồm các cấu trúc điều khiển giống như ALGOL truyền thống với các từ dành riêng như if, then, else, while, for và case khác nhau trên một câu lệnh khối lệnh Pascal cũng

có cấu trúc dữ liệu cấu trúc của ngôn ngữ lập trình ALGOL 60 như bản ghi, biến thể, con trỏ, liệt kê và bộ Những cấu trúc như vậy được lấy cảm hứng từ Simula 67, ALGOL

68, ALGOL W của Niklaus Wirth và được đề xuất bởi C A R Hoare [1]

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

Các lỗi lập trình trong ngôn ngữ lập trình pascal được biểu diễn dưới dạng <Error number>:<Description>

Ví dụ: Error 85: ";" expected

Trang 34

- Lỗi thiếu dấu “;” tại câu lệnh readln(a) {dòng 8} nhưng khi thông báo lỗi thì

Pascal đặt con trỏ tại dòng 9 Điều này gây nhầm lẫn cho người lập trình và không hiểu tại sao lại thế

- So với ngôn ngữ lập trình C thì ngôn ngữ lập trình pascal dịch và phát hiện lỗi từng câu 1, nên mỗi lần biên dịch Pascal chỉ thông báo 1 lỗi (nếu có) còn ngôn ngữ lập trình C thì dịch phát hiện lỗi và thông báo tất cả các lỗi tìm thấy Chính điều này Pascal làm cho người lập trình đỡ bị rối hơn

Tuy nhiên, mô tả lỗi được biểu diễn bằng tiếng Anh, đơn giản sơ sài, quá ngắn gọn không đưa ra được sự hướng dẫn cụ thể lỗi này thường gặp trong trường hợp nào, hướng khắc phục lỗi như thế nào làm cho người lập trình khó hiểu, khó kiểm soát và sửa lỗi

* Danh mục lỗi của ngôn ngữ lập trình Pascal (Phụ lục A)

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

Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX Từ đó, ngôn ngữ này

đã lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất

C là ngôn ngữ rất có hiệu quả và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được dùng cho việc viết các ứng dụng Ngoài ra, C cũng thường được dùng làm phương tiện giảng dạy trong khoa học máy tính mặc dù ngôn ngữ này không được thiết kế dành cho người nhập môn

* Đặc điểm ngôn ngữ lập trình C

C là một ngôn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng và

nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao Hơn thế, C đôi khi được đánh giá như là "có khả năng di động", cho thấy sự khác nhau quan trọng giữa

nó với ngôn ngữ bậc thấp như là Assembler, đó là việc mã C có thể được dịch và thi hành trong hầu hết các máy tính, hơn hẳn các ngôn ngữ hiện tại trong khi đó thì Assembler chỉ có thể chạy trong một số máy tính đặc biệt Vì lý do này C được xem là ngôn ngữ bậc trung

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

Các lỗi lập trình trong ngôn ngữ lập trình pascal được biểu diễn dưới dạng <Error FileName number>:<Description>

Ví dụ: Error TONGBP.CCP 8: Undefined symbol ‘a’

Error TONGBP.CCP 10: Undefined symbol ‘b’

Trang 35

Hình 2.2 Thông báo lỗi trong ngôn ngữ lập trình C

- Lỗi thiếu định nghĩa ‘a’ tại câu lệnh scanf("%d", &a); và thiếu định nghĩa ‘b’ tại câu lệnh scanf("%d", &b);

- So với ngôn ngữ lập trình Pascal thì ngôn ngữ lập trình C dịch và phát hiện tất

cả các lỗi trong chương trình, nên mỗi lần biên dịch C thông báo toàn bộ lỗi (nếu có) còn ngôn ngữ lập trình Pascal thì dịch phát hiện và thông báo từng lỗi tìm thấy Chính điều này C làm cho người lập trình bị rối hơn

Tuy nhiên, mô tả lỗi được biểu diễn bằng tiếng Anh, đơn giản sơ sài, quá ngắn gọn không đưa ra được sự hướng dẫn cụ thể lỗi này thường gặp trong trường hợp nào, hướng khắc phục lỗi như thế nào làm cho người lập trình khó hiểu, khó kiểm soát và sửa lỗi

* Danh mục lỗi của ngôn ngữ lập trình C (Phụ lục B)

2.4 Các giải pháp thu thập và xây dựng kho ngữ liệu [6]

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ữ

Trang 36

Các nguồn ngữ liệu song ngữ Anh - Việt có thể thu thập:

 Nguồn từ điển: trong mỗi từ điển, ở mỗi mục từ, thường chứa các ví dụ hướng dẫn sử dụng từ đó, và các ví dụ bằng tiếng Anh này cũng được dịch chính xác (1 - 1) sang tiếng Việt

 Ngữ liệu SUSANNE: đây là ngữ liệu điện tử tiếng Anh, gồm khoảng 128.000

từ được rút từ ngữ liệu Brown

 Nguồn Internet: đây là nguồn dữ liệu khổng lồ, nguồn ngữ liệu này có lợi thế

là chúng đã tồn tại sẵn dưới dạng điện tử, nhưng chỉ có một số ít các trang Web song ngữ là đáp ứng được đúng tiêu chuẩn

 Nguồn sách: bao gồm các sách dạy tiếng Anh, các mẫu câu tiếng Anh, sách song ngữ tin học, khoa học kỹ thuật, …

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

Song song với việc thu thập dữ liệu, với các nguồn dữ liệu đầu vào thì cần phải

có một số công đoạn xử lý văn bản đầu vào, phân tích, tách đoạn, tách câu, … để đạt được mục đích

2.4.1.3 Xử lý đầu vào

Các văn bản sẽ được làm sạch, xóa những phần không cần thiết

Các trang web sau khi tải xuống sẽ được trích rút nội dung trang web

và một số trường hợp như địa chỉ trang web, email … (www.udn.vn hoặc abc@udn.vn) Dấu chấm hỏi hay dấu chấm thang có thể xuất hiện trong dấu ngoặc đơn, ngoặc kép hay

ở cuối 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

Phân lớp (classification) là một tiến trình xử lý nhằm xếp các mẫu dữ liệu hay

Trang 37

các đối tượng vào một trong các lớp đã được định nghĩa trước Các mẫu dữ liệu hay các đối tượng được xếp về các lớp dựa vào giá trị của các thuộc tính (attributes) cho một mẫu dữ liệu hay đối tượng Sau khi đã xếp tất của các đối tượng đã biết trước vào các lớp tương ứng, lúc này mỗi lớp được đặc trưng bởi tập các thuộc tính của các đối tượng chứa trong lớp đó

Khi nghiên cứu một đối tượng, hiện tượng, ta chỉ có thể dựa vào một số hữu hạn các đặc trưng của chúng Nói cách khác, ta chỉ xem xét biểu diễn của đối tượng, hiện tượng trong một không gian hữu hạn chiều, mỗi chiểu ứng với một đặc trưng được lựa chọn Khi đó, phân lớp dữ liệu trở thành phân hoạch tập dữ liệu thành các tập con theo một tiêu chuẩn nhận dạng được Như vậy, phân lớp là quá trình "nhóm” các đối tượng

"giống” nhau vào "một lớp” dựa trên các đặc trưng dữ liệu của chúng Bài toán phân lớp

dữ liệu có thể được mô tả như hình 2.3 dưới đây

Ta có thể phát biểu bài toán phân lớp dữ liệu như sau:

 Đầu vào của bài toán phân lớp dữ liệu:

Cho tập dữ liệu mẫu D = {(xi, yi) | i = 1, 2, …, n}, trong đó, xi = (xi1, xi2, …,

xik) ϵ Rk là dữ liệu gồm k thuộc tính tương ứng trong tập thuộc tính A = {A1, A2, …,

Ak} và yi ϵ C = {c1, c2, …, cm} là nhãn các lớp dữ liệu (1.1)

 Đầu ra của bài toán phân lớp dữ liệu:

Một ánh xạ/hàm (mô hình phân lớp) F: Rk  C, tương ứng mỗi phần tử x ϵ Rk

một nhãn lớp F(x) ϵ C, sao cho đối với tập mẫu D là phù hợp nhất theo nghĩa sau đây:

||F(xi) – yi||  0, với mọi (xi, yi) ϵ D và || || là một độ đo nào đó (1.2)

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 [6]

 Giới thiệu phương pháp

Ý tưởng cơ bản của cách tiếp cận phân lớp dữ liệu Bayes là sử dụng công thức Bayes về xác suất có điều kiện để lựa chọn kết quả phân lớp là sự kiện có xác suất lớn nhất

Mô hình phân lớp

Dữ liệu

Lớp 1 Lớp 2 Lớp … Lớp n

Trang 38

- P(H|E): xác suất hậu nghiệm của H nếu biết E

 Nội dung phương pháp

Xét bài toán phân lớp dữ liệu (1.1)-(1.2) Mô hình phân lớp dữ liệu Bayes được xây dựng dựa trên công thức (1.3) với mỗi lớp dữ liệu ci ϵ C = {c1, c2, …, cm} như sau:

- Lựa chọn sự kiện H = “Dữ liệu mẫu thuộc lớp ci”; E = “Thỏa mãn điều kiện đối với một số thuộc tính thuộc A”

- Tính các xác suất P(E), P(H) và P(E|H) trong tập các mẫu dữ liệu huấn luyện

- Tính xác suất P(H|E) theo công thức (1.3)

- Lựa chọn E sao cho xác suất P(H|E) đạt giá trị lớn nhất

Để thực hiện phân lớp đối với dữ liệu mới z = (z1, z2, …, zk) ta sẽ tiến hành như sau:

- Tính xác suất P(H|( z1, z2, …, zk)) theo công thức (1.3) theo nghĩa các thuộc tính của Z xét trên E tương ứng

- Xuất kết quả xếp dữ liệu Z vào lớp ci ứng với lớp có xác suất tính được ở bước trên là lớn nhất

 Nhận xét

So với các phương pháp khác, phương pháp phân lớp dữ liệu Bayes lập luận theo kinh nghiệm được tích lũy và áp dụng vào mô hình phân lớp đối tượng khá linh hoạt và phù hợp với đặc trưng của bài toán cụ thể Các cơ chế ước lượng trong phương pháp này cũng gần gũi với cách suy luận thông thường Phương pháp phân lớp dữ liệu Bayes được ứng dụng rất rộng rãi bởi tính dễ hiểu và dễ triển khai

Tuy nhiên, phương pháp phân lớp dữ liệu Bayes cho hiệu quả không cao trong trường hợp tập dữ liệu mẫu có độ phức tạp lớn và các thuộc tính của dữ liệu mẫu có quan hệ phụ thuộc hoặc không đầy đủ

Trang 39

b Phương pháp cây quyết định [6]

 Giới thiệu phương pháp

Cây quyết định là một cấu trúc ra quyết định có dạng cây Cây quyết định nhận đầu vào là một bộ giá trị thuộc tính mô tả một đối tượng hay một tình huống và trả về một giá trị rời rạc Mỗi bộ thuộc tính đầu vào được gọi là một mẫu hay một ví dụ, đầu

ra gọi là lớp hay nhãn phân lớp Thuộc tính đầu vào còn được gọi là đặc trưng và có thể nhận giá trị rời rạc hoặc liên tục Để đơn giản, trong mục này luận văn chỉ xem xét các thuộc tính rời rạc Khi đó, với tập thuộc tính đầu vào được cho dưới dạng véc tơ X, nhãn phân lớp đầu ra được ký hiệu là y thì cây quyết định là hàm f(x) trả lại giá trị y

Cây quyết định được biểu diễn dưới dạng một cấu trúc cây (Hình 2.4)

Trong cây quyết định, mỗi nút trung gian, tức là nút không phải nút lá và nút gốc, tương ứng với phép kiểm tra một thuộc tính Mỗi nhánh phía dưới của nút đó tương ứng với một giá trị của thuộc tính hay một kết quả của phép thử Khác với nút trung gian, nút lá không chứa thuộc tính mà chứa nhãn phân lớp Để xác định nhãn phân lớp cho một dữ liệu mẫu nào đó, ta cho dữ liệu mẫu chuyển động từ gốc cây về phía nút lá Tại mỗi nút, thuộc tính tương ứng với nút được kiểm tra, tùy theo giá trị của thuộc tính đó

mà dữ liệu mẫu được chuyển xuống nhánh tương ứng bên dưới Quá trình này lặp lại cho đến khi dữ liệu mẫu tới được nút lá và được nhận nhãn phân lớp là nhãn của nút lá tương ứng

 Nội dung phương pháp

Xây dựng bộ phân lớp dữ liệu ở đây chính là quá trình xây dựng cây quyết định cho bài toán (1.1)-(1.2) Tiến trình thực hiện như sau:

(1) Bắt đầu từ nút đơn biểu diễn tất cả các mẫu

(2) Nếu các mẫu thuộc về cùng một lớp, nút đang xét trở thành nút lá và được gán nhãn bằng lớp đó

Gốc

Node trong Node Lá

Nhánh

Trang 40

(3) Ngược lại, dùng độ đo thuộc tính để chọn thuộc tính sẽ phân tách tốt nhất các mẫu vào các lớp

(4) Một nhánh được tạo cho từng giá trị của thuộc tính được chọn và các mẫu được phân hoạch theo

(5) Lặp lại tiến trình trên để tạo cây quyết định

(6) Tiến trình kết thúc chỉ khi bất kỳ điều kiện nào sau đây là đúng

- Tất cả các mẫu cho một nút cho trước đều thuộc về cùng một lớp

- Không còn thuộc tính nào mà mẫu có thể dựa vào để phân hoạch xa hơn

- Không còn mẫu nào cho nhánh

Tuy nhiên, nếu không chọn được thuộc tính phân loại hợp lý tại mỗi nút, có thể

sẽ tạo ra cây quyết định rất phức tạp Trong thực tế, thường sử dụng hai cách sau để tạo được cây quyết định phù hợp:

- Dừng phát triển cây sớm hơn bình thường, trước khi đạt tới điểm phân lớp hoàn hảo tập dữ liệu huấn luyện

- Sử dụng các kỹ thuật “cắt”, “tỉa” cây phù hợp

Với cả hai phương pháp trên, một thách thức đặt ra là tiêu chuẩn nào được sử dụng để xác định kích thước hợp lý của cây cuối cùng

 Nhận xét

Mô hình phân lớp dữ liệu sử dụng cây quyết định có các ưu điểm sau đây

- Cây quyết định tự giải thích và khi được gắn kết lại, chúng có thể dễ dàng tự sinh ra Nói cách khác, nếu cây quyết định mà có số lượng nút lá vừa phải thì người không chuyên cũng dễ dàng hiểu được nó Hơn nữa, cây quyết định cũng có thể chuyển sang tập luật Vì vậy, cây quyết định được xem như là dễ hiểu, dễ sử dụng khi phân lớp

dữ liệu

- Cây quyết định có thể xử lý được nhiều kiểu các thuộc tính đầu vào Cây quyết định được xem như là một phương pháp phi tham số

Bên cạnh đó, cây quyết định cũng có những nhược điểm sau đây:

- Khi cây quyết định sử dụng phương pháp “chia để trị”, chúng có thể thực hiện tốt nếu tồn tại một số thuộc tính liên quan chặt chẽ với nhau, nhưng sẽ khó khăn nếu một số tương tác phức tạp xuất hiện

- Các đặc tính liên quan của cây quyết định dẫn đến những khó khăn khác như là

độ nhạy với tập huấn luyện, các thuộc tính không phù hợp, hay có nhiễu

Ngày đăng: 24/04/2021, 15:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w