Tải bản đầy đủ - 0 (trang)
Chương 4. HIỆN THỰC VÀ THỬ NGHIỆM

Chương 4. HIỆN THỰC VÀ THỬ NGHIỆM

Tải bản đầy đủ - 0trang

Hiện thực và thử nghiệm



Linux. Từ đó đến nay, cứ mỗi 06 tháng, một phiên bản Ubuntu sẽ được cho ra mắt,

tạo ra một môi trường cập nhật thường xuyên hơn cho người dùng. Khác với những

nhánh phát triển khác của Debian Linux, Ubuntu ln ln chỉ tích hợp các phần

mềm miễn phí trong bản phát hành. Trong q trình phát triển, dự án Ubuntu đã cho

ra đời nhiều phiên bản khác nhau của Ubuntu, như Ubuntu Desktop cho máy tính để

bàn, Ubuntu Netbook Remix cho netbook (đã ngừng phát triển), Ubuntu Server cho

các máy chủ, Ubuntu Business Desktop Remix cho các doanh nghiệp, Ubuntu for

Android và Ubuntu for Phones cho các thiết bị di động.

Các bản phát hành của Ubuntu có thể chia thành hai loại:

 Bản phát hành thông thường: các phiên bản của Ubuntu được đặt tên theo định

dạng YY.MM (tên), trong đó YY đại diện cho năm phát hành, MM tương ứng với

tháng phát hành và tên trong ngoặc là tên mã được đặt bởi các lập trình viên trước

khi phát hành bản chính thức. Hệ điều hành này được phát hành định kỳ 06 tháng

một lần và được hỗ trợ trong vòng 09 tháng sau đó. Tồn bộ việc nâng cấp lên

phiên bản mới cũng hồn tồn miễn phí và được khuyến khích bởi nhà phát triển.

Điều này giúp người dùng có thể tránh được những lỗi đã được vá, sử dụng và trải

nghiệm những phần mềm và môi trường mới nhất. Phiên bản phát hành mới nhất

hiện nay đó là Ubuntu 17.10 (Artful Aardvark) được ra mắt vào tháng 10 năm

2017.

 Phiên bản được hỗ trợ lâu dài: các phiên bản được hỗ trợ lâu dài có tên được theo

sau bởi từ khóa LTS (được viết tắt từ từ “long-term support”). Từ những ngày đầu,

các phiên bản này sẽ được thường xuyên hỗ trợ bảo mật, cập nhật bảo trì và bảo

hành trong suốt 3 năm đối với máy tính cá nhân và 05 năm đối với máy chủ. Đến

phiên bản Ubuntu 12.04 LTS cả phiên bản trên máy tính cá nhân và máy chủ đều

được hỗ trợ lên đến 5 năm. Phiên bản được hỗ trợ lâu dài hiện tại là Ubuntu 16.04

(Xenial Xerus) được hỗ trợ đến tháng 07 năm 2021. Các phiên bản hỗ trợ lâu dài

sẽ được ra mất mỗi 2 năm một lần, và dự kiến sẽ ra mắt bản hỗ trợ lâu dài tiếp theo

vào tháng 4 năm 2018.

Hệ điều hành Ubuntu kết hợp những đặc điểm nổi bật chung của họ các hệ điều hành

nhân Linux, như tính bảo mật trước virus và malware, khả năng tùy biến cao, tốc độ,

hiệu suất làm việc, và những đặc điểm riêng tiêu biểu của Ubuntu như giao diện bắt

- 61 -



Hiện thực và thử nghiệm



mắt, cài đặt ứng dụng đơn giản, sự dễ dàng trong việc sao lưu dữ liệu và sự hỗ trợ

của một cộng đồng người dùng khổng lồ.

Mặc định, đĩa cài đặt của Ubuntu bao gồm nhiều phần mềm mã nguồn mở để người

dùng có thể sử dụng trực tiếp. Đó là bộ ứng dụng văn phòng LibreOffice (Từ phiên

bản Ubuntu 10.04), trình duyệt internet Mozilla Firefox, trình quản lý thư điện tử

Mozilla Thunderbird, trình gửi tin nhắn tức thời Telegram, trình tải tập tin torrent

Tranmission. Về truyền thơng đa phương tiện, Ubuntu tích hợp trình chơi mọi loại

tập tin đa phương tiện nổi tiếng VLC. Một số ứng dụng nhỏ như chụp màn hình, máy

tính bỏ túi, các trò chơi bài và trò chơi giải đố cũng có sẵn.

Mơi trường Linux từ lâu đã là nơi triển khai các framework xử lý dữ liệu lớn mã

nguồn mở vì tính ổn định, chính xác và linh hoạt. Cộng với những công cụ hỗ trợ rất

tốt như Eclipse, ngôn ngữ Scala, Java đều triển khai một cách dễ dàng trên nền tảng

này. Chính vì thế, luận văn sẽ chọn môi trường hệ điều hành Ubuntu để xây dựng

luận văn.

4.1.2. Mơi trường phát triển tích hợp Eclipse

Eclipse là mơi trường phát triển tích hợp mã nguồn mở nổi tiếng, được sử dụng rộng

rãi trong lập trình trên máy tính và là mơi trường phát triển ứng dụng Java được sử

dụng rộng rãi nhất. Phần mềm này bao gồm một không gian làm việc cơ bản đi kèm

với một hệ thống các plug-in mở rộng phong phú để người dùng có thể tự do tùy biến

mơi trường làm việc.

Eclipse chủ yếu được viết bằng chính ngơn ngữ Java, ngồi việc được sử dụng để

phát triển các ứng dụng Java, nó còn được sử dụng để viết phần mềm trên những ngôn

ngữ khác như Ada, ABAP, C, C ++, C #, COBOL, D, Fortran , Haskell, JavaScript,

Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby (bao gồm cả

framework Ruby on Rails), Rust, Scala, Clojure, Groovy, Scheme và Erlang thông

qua các plug-in mở rộng. Ngồi ra, Eclipse còn có thể soạn thảo những tài liệu LaTeX

thông qua plug-in TeXlipse và các gói dành cho phần mềm Mathematica. Những

phiên bản Eclipse cùng với plug-in hỗ trợ quen thuộc như Eclipse Java development

tools (JDT) cho ngôn ngữ Java và Scala, Eclipse CDT cho ngôn ngữ C/C++ và

Eclipse PDT dành cho PHP.



- 62 -



Hiện thực và thử nghiệm



Được tạo nên dựa theo cảm hứng từ họ phần mềm mơi trường phát triển tích hợp nổi

tiếng VisualAge được viết trên nền tảng ngôn ngữ SmallTalk. VisualAge là một sản

phẩm thành công, tuy nhiên, các thành phần của nó khơng được viết dưới dạng các

mơ-đun mà mã nguồn được đóng chung thành một tập tin nén. Chính điều này đã làm

cho việc truy xuất của các lớp độc lập đến nó trở nên khó khăn và bên ngồi phần

mềm thì hồn tồn khơng được phép. Chính vì vậy, một nhóm với các thành viên chủ

yếu đến từ phòng thí nghiệm IBM Cary NC đã phát triển một phần mềm mới thay thế

dựa trên nền tảng Java. Vào tháng 11 năm 2001, một tổ hợp được thành lập với một

ban quản trị để tiếp tục phát triển Eclipse theo định hướng một phần mềm nguồn mở.

Người ta ước tính IBM đã đầu tư gần 40 triệu đơ la vào thời điểm đó. Các cơng ty

thành viên ban đầu là Borland, IBM, Merant, QNX Software Systems, Rational

Software, Red Hat, SuSE, TogetherSoft và WebGain. Vào tháng 1 năm 2004, Quỹ

Eclipse đã được thành lập.

Bộ phần mềm phát triển Eclipse là miễn phí và là phần mềm mã nguồn mở được phát

hành dưới giấy phép Eclipse Public License. Tuy giấy phép này khơng tương thích

với giấy phép GNU General Public License, nhưng nó là một trong những mơi trường

phát triển tích hợp đầu tiên chạy trên thư viện GNU Classpath.

Kể từ phiên bản 3.2, các bản phát hành Eclipse đều được đặt tên mã dựa trên các chủ

đề khoa học như: Eclipse 3.2 (Callisto), Eclipse 3.3 (Europa), Eclipse 3.6 (Helios)…

Phiên bản ổn định mới nhất 4.7 được phát hành vào ngày 28 tháng 06 năm 2017 có

tên mã là Oxygen.

Chính vì khả năng mở rộng mềm dẻo, linh hoạt và sức mạnh của Eclipse nên luận

văn chọn nó là mơi trường phát triển tích hợp sử dụng để hồn thành đề tài.

4.1.3. Ngơn ngữ Scala

❖ Giới thiệu Scala





Ngơn ngữ Scala (viết tắt cho Scalable Language) là một ngôn ngữ lập trình đa

mẫu hình. Nó được tạo ra bởi Martin Odersky và lần đầu tiên được ra mắt vào

năm 2003. Nó được thiết kế để có khả năng mở rộng tùy theo nhu cầu của

người sử dụng. Ngôn ngữ Scala được dùng trong nhiều lĩnh vực, quy mô, từ

những đoạn lệnh nhỏ cho đến những hệ thống lớn.



- 63 -



Hiện thực và thử nghiệm





Scala chạy trên nền máy ảo Java và nó tương thích hồn tồn với Java. Ngồi

ra nó cũng có thể chạy trên .NET, tuy nhiên kể từ các phiên bản Scala vào cuối

năm 2012 trở đi đã khơng còn hỗ trợ nền tảng này.







Scala được xây dựng với các tính năng của lập trình hàm và lập trình hướng

đối tượng. Sự kết hợp của lập trình hàm và lập trình hướng đối tượng được thể

hiện trong nhiều khia cạnh, hai kiểu lập trình này bổ sung sức mạnh cho nhau

đặc biệt khi hệ thống được mở rộng. Lập trình hàm có thể xây dựng nhanh

chóng và dễ dàng những tính năng từ những phần nhỏ trong khi lập trình hướng

đối tượng thích hợp để cấu trúc một hệ thống lớn.



❖ Một số đặc điểm của ngôn ngữ Scala





Cơ động linh hoạt về cú pháp







Sở hữu vòng lặp mạnh mẽ







Được thiết kế để phù hợp với cả lập trình hàm cũng như lập trình hướng đối

tượng







Hệ thống kiểu dữ liệu phong phú và có khả năng mở rộng (định nghĩa thêm

phương thức cho kiểu có sẵn)



❖ Các cơng cụ hỗ trợ lập trình:

Để lập trình ngơn ngữ Scala, có thể sử dụng các phần mềm dưới đây:





Phần mềm IntelliJ IDEA (với plugin);







Phần mềm Sublime Text;







Phần mềm Atom;







Phần mềm Eclipse IDE hoặc Scala IDE (dựa trên Eclipse).



❖ Các kiểu dữ liệu cơ bản

Bảng 4.1: Mô tả các kiểu dữ liệu trong ngơn ngữ Scala

STT



Kiểu dữ

liệu



1



Byte



Giá trị có dấu 8 bit. Khoảng giá trị từ -128 đến 127



2



Short



Giá trị có dấu 16 bit. Khoảng giá trị từ -32768 đến 32767



3



Int



4



Long



Mô tả



Giá trị có dấu 32 bit. Khoảng giá trị từ -2147483648 đến 2147483647

Giá trị có dấu 64 bit. Khoảng giá trị từ -9223372036854775808 đến

9223372036854775807



- 64 -



Hiện thực và thử nghiệm



5



Float



Kiểu dấu chấm động, độ chính xác đơn, 32 bit, tuân theo chuẩn IEEE

754



6



Double



Kiểu dấu chấm động, độ chính xác kép, 64 bit, tuân theo chuẩn IEEE

754



7



Char



Ký tự Unicode không dấu 16 bit. Khoảng giá trị từ U+0000 đến

U+FFFF



8



String



Một chuỗi các ký tự



9



Boolean



10



Unit



Tương ứng với khơng có giá trị



11



Null



Giá trị Null hoặc tham chiếu rỗng



12



Nothing



Kiểu con của tất cả các kiểu khác, bao gồm kiểu khơng có giá trị

(Unit)



13



Any



Kiểu cha của tất cả các kiểu; các đối tượng (object) đều có kiểu là

Any



14



AnyRef



Kiểu luận lý, đúng hoặc sai



Kiểu cha của tất cả các kiểu tham chiếu



❖ Cú pháp các lệnh cơ bản





Khai báo biến



Trong Scala có 2 loại biến là biến có giá trị biến đổi (mutable variable) và biến có giá

trị bất biến (immutable variable). Do đó sẽ có hai cách khai báo biến tương ứng với

hai loại này. Khai báo biến có giá trị biến đổi sẽ sử dụng từ khóa var, còn khai báo

biến có giá trị bất biến sử dụng từ khóa val, ví dụ:

var myvar : String = “Foo”

val myval : String = “Bar”



Cú pháp chung của việc khai báo biến là:

var (or val) variableName : Datatype = Initial value



Tuy nhiên, khi khai báo biến, có thể khơng cần cho trước giá trị khởi tạo, ví dụ:

var myvar : String



Hoặc, không cần khai báo kiểu dữ liệu, chỉ cần gán giá trị khởi tạo cho biến, trình

biên dịch sẽ tự xác định được kiểu dữ liệu của biến đó:

var myVar = 10

val myVal = "Hello, Duy Tri!"





Khai báo phương thức/hàm



Cú pháp:



- 65 -



Hiện thực và thử nghiệm



def tên_hàm(biến1 : kiểu_dữ_liệu [, biến2 : kiểu_dữ_liệu]) :

kiểu_dữ_liệu_trả_về = {

//thân_hàm

}



Khai báo một hàm/phương thức bắt đầu bằng từ khóa def sau đó tới tên hàm/phương

thức, các giá trị đầu vào nằm trong dấu ngoặc đơn. Tiếp sau đó là dấu hai chấm “:”

và kiểu dữ liệu trả về. Nội dung hàm/phương thức nằm trong cặp dấu ngoặc nhọn

“{}”.





Câu lệnh điều kiện, lặp

➢ Câu lệnh If … else …



Cú pháp:

if (biểu thức điều kiện) {

//Thực thi khi biểu thức điều kiện đúng

} else {

// Thực thi khi biểu thức điều kiện sai

}



Câu lệnh điều kiện if … else … có cú pháp giống như ở các ngơn ngữ lập trình thơng

dụng khác. Trong đó khối lệnh else có thể có hoặc khơng, khi đó khối lệnh if tồn tại

đơn lẻ biểu thị cho việc thực thi khối lệnh trong nó khi biểu thức điều kiện của nó là

đúng.

Hoặc có thể sử dụng cú pháp sau cho trường hợp có nhiều điều kiện cần xem xét:

if (biểu thức điều kiện 1) {

// Thực thi khi biểu thức điều kiện 1 đúng

} else if (biểu thức điều kiện 2) {

// Thực thi khi biểu thức điều kiện 2 đúng

} else if (biểu thức điều kiện 3) {

// Thực thi khi biểu thức điều kiện 3 đúng

} else {

// Thực thi khi không có biểu thức điều kiện

nào ở trên đúng.

}



➢ Câu lệnh lặp for

Trong Scala, cú pháp của vòng lặp for được mô tả như sau:

- 66 -



Hiện thực và thử nghiệm



for (biến <- Miền lặp/Danh sách giá trị) {

//khối lệnh

}



Có thể viết câu lệnh lặp cho cùng lúc nhiều biến chạy trên nhiều miền giá trị.

Câu lệnh lặp while/do–while

Cú pháp của hai loại câu lệnh lặp được trình bày như sau:

while (điều kiện) {

//khối lệnh

}



Hoặc

do {

//khối lệnh

}

while (điều kiện)



Điểm khác nhau giữa hai câu lệnh lặp này là câu lệnh while sẽ kiểm tra điều kiện

trước, nếu thỏa, sẽ tiến hành thực thi khối lệnh và sau đó lặp lại tương tự như thế cho

đến khi khơng còn thỏa điều kiện nữa thì thốt ra, trong khi đó, câu lệnh do–while sẽ

thực thi khối lệnh trước rồi sau đó mới kiểm tra điều kiện.

4.2. Dữ liệu sử dụng

Luận văn sử dụng dữ liệu từ tập dữ liệu văn bản Reuters-21578 [29]. Tập dữ liệu này

là những bài viết trên trang tin điện tử của Reuters năm 1987. Các văn bản được tập

hợp và đánh chỉ mục bởi nhân viên của công ty Reuters Ltd. (Sam Dobbins, Mike

Topliss, Steve Weinstein) và Carnegie Group, Inc (Peggy Andersen, Monica Cellio,

Phil Hayes, Laura Knecht, Irene Nirenburg) vào năm 1987.

Năm 1990, các tài liệu đã được Reuters và CGI cung cấp với mục đích nghiên cứu

cho Phòng Thí nghiệm Khai thác Thơng tin (do W. Bruce Croft làm Giám đốc) của

Khoa Máy tính và Khoa học Thông tin, Đại học Massachusetts tại Amherst. Định

dạng của các tài liệu và việc tạo ra các tập tin dữ liệu liên quan đã được thực hiện vào

năm 1990 bởi David D. Lewis và Stephen Harding tại Phòng Thí nghiệm Khai thác

Thông tin. Năm 1991 và 1992 công việc trên được tiếp tục thực hiện bởi David D.

Lewis và Peter Shoemaker tại Trung tâm Nghiên cứu Thông tin và Ngôn ngữ, Đại

học Chicago. Phiên bản này của dữ liệu đã được cung cấp nặc danh trên FTP dưới

- 67 -



Hiện thực và thử nghiệm



tên "Reuters-22173, Distribution 1.0" vào tháng 1 năm 1993. Từ năm 1993 đến năm

1996, bản Phân phối 1.0 được lưu trữ tại một loạt các trang FTP được duy trì bởi

Trung tâm Khai thác Thơng tin Thơng minh (do W. Bruce Croft làm Giám đốc) của

Khoa Khoa học Máy tính, Đại học Massachusetts tại Amherst.

Tại hội nghị ACM SIGIR '96 tháng 8 năm 1996, một nhóm các nhà nghiên cứu về

lĩnh vực phân loại văn bản đã thảo luận về việc làm thế nào để các kết quả được cơng

bố trên tập dữ liệu Reuters-22173 có thể được so sánh với các nghiên cứu khác. Họ

đã quyết định rằng cần tạo ra một tập dữ liệu mới với định dạng ít mơ hồ hơn, và bao

gồm tài liệu hướng dẫn cẩn thận cách sử dụng bộ sưu tập. Bên cạnh đó, các tập tin

cũng sẽ được sửa một loạt lỗi đánh máy và các lỗi khác trong phân loại, cũng như

định dạng tập dữ liệu.

Steve Finch và David D. Lewis đã thực hiện công việc chỉnh sửa tập dữ liệu từ tháng

9 đến tháng 11 năm 1996. Bộ sưu tập mới này chỉ có 21.578 tài liệu, và do đó được

gọi là bộ sưu tập Reuters-21578.

Do các hạn chế về tài nguyên khi thực hiện luận văn nên đề tài chỉ được thực hiện

trên một phần trong tập dữ liệu này.

4.3. Hiện thực phương pháp khai phá chủ đề đã đề xuất

Chương trình khai phá mơ hình chủ đề được lập trình bằng ngơn ngữ Scala, dưới nền

tảng xử lý phân tán được hỗ trợ bởi framework Apache Spark. Đầu vào của chương

trình là tập văn bản được lấy từ tập dữ liệu Reuters-21578, các văn bản này sau đó

được tiền xử lý để tách từ, loại bỏ khoảng trắng thừa, các ký tự đặc biệt… Tiếp theo,

các văn bản sẽ được đồ thị hóa, lần lượt từng văn bản sẽ trở thành từng đồ thị. Kế

đến, các đồ thị này sẽ được đưa vào khai phá tập đồ thị con phổ biến bằng thuật toán

gSpan phân tán. Cuối cùng, các tập đồ thị con sẽ được tính tốn khoảng cách với nhau

và rút trích ra được các tập đồ thị con đặc trưng ứng với từng chủ đề và đó cũng chính

là mơ hình của chủ đề cần tìm.



- 68 -



Hiện thực và thử nghiệm



Bảng 4.2: Số lượng đồ thị con đặc trưng ứng với từng chủ đề

Chủ đề



Số lượng đồ thị con đặc trưng



Bop



58



Coffee



72



Gnp



83



Gold



2



Heat



168



Interest



90



Ipi



65



Nat-gas



38



Orange



84



Palm-oil



59



Reserves



45



Retail



131



Rubber



82



Ship



37



Lei



205



Lin-oil



101



Trade



118



Wpi



107



Yen



104



Money-supply



55



Để kiểm chứng một phần hiệu quả về mặt thực thi của mơ hình phân tán, luận văn đã

thử cài đặt mơ hình trên hệ thống cục bộ bình thường, có cùng cấu hình và thực thi



- 69 -



Hiện thực và thử nghiệm



để so sánh kết quả. Thời gian thực thi của hai hệ thống trên cùng bộ dữ liệu trên thu

được như sau:



Biểu đồ thời gian thực thi

350



Thời gian (phút)



300



250

200



Cục bộ



150



Phân tán



100

50



0

Thời gian thực thi



Hình 4.1: Biểu đồ thời gian thực thi chương trình

Do tài nguyên hạn chế, nên qua thử nghiệm trên không thể thấy rõ được hiệu quả

vượt trội của mơ hình xử lý phân tán so với mơ hình cục bộ. Tuy nhiên, bước đầu

cũng đã thấy được tiềm năng rất lớn mà mơ hình đã đề xuất mang lại trong thực

tiễn.



- 70 -



Kết luận và hướng phát triển



Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương 5, chương cuối cùng của báo cáo luận văn sẽ trình bày những kết luận từ quá

trình thực hiện luận văn, kết quả ban đầu đã đạt được. Bên cạnh đó, phần này cũng

sẽ đề cập đến những ưu khuyết điểm mà luận văn hiện có. Từ đó, sẽ rút ra được những

đóng góp mà đề tài đã thực hiện được và hướng phát triển trong tương lai mà đề tài

muốn hướng đến.

5.1. Kết luận

Đề tài đã hoàn thành được những mục tiêu ban đầu đề ra trong đề cương nghiên cứu:

-



Bước đầu xây dựng được phương án lưu trữ cho kho văn bản lớn, tổ chức hợp

lý để có thể hỗ trợ cho các chức năng sau.



-



Khảo sát và lựa chọn được phương pháp biểu diễn văn bản bằng đồ thị, phù

hợp với nhu cầu lưu trữ thông tin thứ tự từ và khai phá đồ thị con.



-



Khảo sát các thuật tốn khai phá đồ thị con phổ biến, từ đó, đề xuất được mơ

hình phân tán cho thuật tốn khai phá đồ thị con phổ biến Graph-Based

Substructure Pattern Mining – gSpan.



5.2. Những đóng góp của đề tài

Bước đầu, đề tài đã có được những đóng góp nhất định, có thể được kể ra như sau:

-



Luận văn đã đề xuất được một phương pháp mới dùng để mơ hình hóa chủ đề

của tập văn bản theo tiếp cận đồ thị, giúp cho việc lưu trữ thông tin cấu trúc

của văn bản tốt hơn, cụ thể là trật tự của từ.



-



Luận văn đã xây dựng được mơ hình phân tán cho thuật toán Graph-Based

Substructure Pattern Mining – gSpan, và áp dụng vào việc khai thác đồ thị con

phổ biến cho tập văn bản lớn.



5.3. Khả năng ứng dụng thực tiễn

Những kết quả mà luận văn đã đạt được mang tính thực tiễn cao, do đó có thể được

áp dụng vào một số lĩnh vực như:

-



Áp dụng mơ hình khai phá chủ đề theo tiếp cận đồ thị vào các hệ thống hiện

đại, mơ hình khơng chỉ có thể được sử dụng cho kho văn bản lớn mà còn những

tập văn bản với số lượng nhỏ.



- 71 -



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Chương 4. HIỆN THỰC VÀ THỬ NGHIỆM

Tải bản đầy đủ ngay(0 tr)

×