Trong bài viết này, tập thể tác giả giới thiệu một mô hình kiến trúc hệ thống và thuật toán xử lý kiểm tra sự trùng lặp văn bản được sử dụng trong quá trình thực hiện đề tài “Nghiên cứu xây dựng phần mềm kiểm tra, đánh giá sự trùng lặp của các đề tài cấp Bộ, cấp cơ sở, thử nghiệm tại Trường Đại học Tài nguyên và Môi trường Hà Nội”.
Trang 1MÔ HÌNH KIẾN TRÚC HỆ THỐNG VÀ THUẬT TOÁN XỬ
LÝ KIỂM TRA, ĐÁNH GIÁ TRÙNG LẶP CÁC ĐỀ TÀI CẤP
CƠ SỞ, CẤP BỘ, THỬ NGHIỆM TẠI TRƯỜNG ĐẠI HỌC
TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
Trần Cảnh Dương, Kiều Đức Hồng
Trường Đại học Tài nguyên và Môi trường Hà Nội
Tóm tắt
Công bố khoa học ngày càng nhiều dẫn đến việc xác định bản quyền, sự trùng lặp văn bản là công việc không đơn giản, đặc biệt khó khăn khi số lượng tài liệu lớn, số trang văn bản nhiều trong phạm vi so sánh rộng Trong bài báo này, tập thể tác giả giới thiệu một mô hình kiến trúc hệ thống và thuật toán xử lý kiểm tra sự trùng lặp văn bản được sử dụng trong quá trình thực hiện đề tài “Nghiên cứu xây dựng phần mềm kiểm tra, đánh giá sự trùng lặp của các đề tài cấp Bộ, cấp cơ sở, thử nghiệm tại Trường Đại học Tài nguyên và Môi trường Hà Nội”
Từ khóa: Mô hình kiến trúc; Thuật toán; Chương trình phần mềm; Kiểm tra,
đánh giá đề tài
Abstract
The structured system model and testing algorithms for overlapping assessment of research projects: pilot study for Hanoi University of Natural
Resources and Environment
Vast amount of scientifi c publication make plagiarism detection more complicated In this paper the authors present the structured system model and testing algorithms to analyze text overlapping that has been used in the scientifi c project titled “Research to build the software to for overlapping assessment of Ministry and Grassroot level scientifi c projects: Pilot study at Hanoi University of Natural Resources and Environment”
Keywords: Structured model; Algorithm; Software; Overlapping
1 Giới thiệu
Ngày nay mạng internet phát triển
mạnh mẽ với lượng thông tin ngày càng
tăng Việc kiểm tra sự trùng lặp rất cần
thiết nhằm bảo vệ bản quyền tác giả,
tránh đạo văn, tránh trùng lặp tên cũng
như toàn bộ hoặc từng phần nội dung
các ấn phẩm, tài liệu Trên thế giới có
một số công cụ kiểm tra trùng lặp, chẳng
hạn như Small SEO, Tool, Copyscape,
Plagium, Duplicheker, DMCA Scan,
Copygator, Plagiarisma, Plagspotter,
Dustball, Article Checker, Tuy nhiên,
mỗi công cụ chỉ sử dụng phù hợp cho
từng trường hợp cụ thể Một số công cụ miễn phí nhưng có những hạn chế nhất định về tính năng sử dụng
Hoạt động khoa học và kỹ thuật của
Bộ Tài nguyên và Môi trường phát triển mạnh mẽ với số lượng lớn đề tài cấp Bộ, cấp Cơ sở trên các lĩnh vực từ khi Bộ được thành lập cho đến nay Hàng năm, ngoài các đơn vị đề xuất đã rà soát sự trùng lặp, Vụ Khoa học và Công nghệ
là cơ quan chủ trì kiểm tra, đánh giá
sự trùng lặp và hoàn chỉnh hồ sơ trình Lãnh đạo Bộ xem xét, quyết định Việc kiểm tra, rà soát đánh giá sự trùng lặp
Trang 2như hiện nay mất khá nhiều thời gian và
công sức Chính vì vậy, đề tài “Nghiên
cứu xây dựng phần mềm kiểm tra, đánh
giá sự trùng lặp của các đề tài cấp Bộ,
cấp Cơ sở, thử nghiệm tại Trường Đại
học Tài nguyên và Môi trường Hà Nội”
đã góp phần đẩy nhanh tiến độ rà soát,
tiết kiệm thời gian và công sức Trong
quá trình thực hiện đề tài, các tác giả đề
tài đã nghiên cứu và đề xuất sử dụng mô
hình kiến trúc hệ thống và thuật toán xử
lý kiểm trùng một cách hợp lý và hiệu
quả cao, đó là cơ sở để xây dựng chương
trình phần mềm, tạo ra sản phẩm có tính
ứng dụng cao
2 Nội dung
2.1 Giải pháp công cụ và ngôn
ngữ Lập trình
Hệ điều hành máy chủ: Microsoft
Windows Server 2012
Hệ điều hành máy trạm: Microsoft
Windows XP, Windows 7, 8, 8.1 hoặc 10
Hệ quản trị CSDL: Microsoft SQL Server 2014
Web Server: Microsoft IIS v8.0 Portal core: Dotnetnuke v7
Công nghệ lập trình: Visual Studio .NET v2013
Ngôn ngữ lập trình: C#.NET, nền tảng NET Framework 4.5
Microsoft NET Framework cung cấp môi trường lập trình và thực hiện chương trình có hiệu quả cao với sự hỗ trợ tối đa về các tính năng có sẵn của Microsoft Môi trường này có thể rút ngắn thời gian lập trình đồng thời có nhiều tính năng cao cấp
2.2 Kiến trúc hệ thống
Kiến trúc hệ thống được mô tả ở Hình 1
Hình 1: Mô hình kiến trúc hệ thống
- Tầng dữ liệu (data layer)
Tầng dữ liệu chứa máy chủ CSDL
(Database Server) đóng vai trò nền tảng
của hệ thống, nó lưu trữ đầy đủ các thông
tin về người dùng, các đề tài, dự án khoa
học, tin tức, tạp chí khoa học, sách, giáo
trình,…Hệ thống yêu cầu quản lý một
lượng lớn dữ liệu, ngoài ra hệ thống còn
yêu cầu tính chính xác, bảo mật và tính
sẵn sàng cao của dữ liệu [1]
- Tầng ứng dụng (application layer) bao gồm hai thành phần chính như sau
o Thành phần tương tác với CSDL: đóng vai trò trung gian giữa thành phần nghiệp vụ với lớp dữ liệu, xử lý các thao tác liên quan đến cơ sở dữ liệu
o Web services: đóng vai trò
xử lý các yêu cầu giữa người dùng
và hệ thống
- Tầng giao diện (Presentation Layer)
Ở đầu cuối, hệ thống giao tiếp với người dùng thông qua các trình duyệt web thông dụng như Chrome, Internet Explorer, FireFox, Safari,… Mô hình tập trung và giao diện đầu cuối thông qua trình duyệt web hỗ trợ việc triển khai, mở rộng ứng dụng đơn giản và nhanh chóng,
dễ quản lý và bảo trì hệ thống, tốn ít thời gian, nhân lực và chi phí
Trang 32.3 Thuật toán xử lý kiểm trùng
So sánh một hoặc một vài chuỗi với
văn bản để tìm nơi và số lần xuất hiện
của chuỗi đó trong văn bản được thực
hiện bởi thuật toán kiểm trùng Việc so
sánh có thể tiến hành từ trái qua phải, từ
phải qua trái, tại vị trí cụ thể hoặc không
theo thứ tự nhất định Mặt khác kết quả
so sánh có thể là chính xác hoặc gần
đúng Nghiên cứu các thuật toán sau đó
đánh giá hiệu năng của từng thuật toán,
lựa chọn thuật toán so sánh chuỗi một
cách phù hợp trong từng trường hợp là
điều rất quan trọng Đánh giá hiệu năng
của thuật toán so sánh chuỗi căn cứ
số lần tìm kiếm, độ nén văn bản, thời
gian, tiêu chuẩn, số mẫu, Trên thực
tế có các thuật toán so sánh như
Brute-Force, Rabin-Karp, Knuth-Morris-Pratt,
Boyer-Moore, Mỗi thuật toán tương
ứng một phương pháp tìm kiếm mẫu
trong văn bản Thuật toán Brute-Force
tiến hành so sánh không theo thứ tự
nhất định, không thực hiện tiền xử lý,
dịch chuyển từng ký tự một và tính tối
ưu không cao Thuật toán Rabin-Karp
tiến hành so sánh từ trái qua phải, sử
dụng hàm băm, rất hiệu quả trong các
thuật toán đối sánh đa mẫu Thuật toán
Knuth-Morris-Pratt tiến hành so sánh
từ trái qua phải, căn cứ mẫu để quyết
định bước dịch chuyển sau đó Thuật
toán này khá tin cậy, giảm độ trễ và thời
gian so sánh Thuật toán Boyer-Moore
tiến hành so sánh từ phải qua trái Thuật
toán này dùng hai hàm dịch chuyển
là hậu tố tốt (good suffi x) và ký tự tồi
(bad character) Thuật toán cho kết quả
tìm kiếm nhanh và được áp dụng nhiều
trong thực tế Tuy nhiên, thứ tự so sánh
là khác nhau và biểu diễn thuật toán
Boyer-Moore phức tạp hơn vì nó dựa
trên hai quy tắc để dịch chuyển pattern
trên văn bản
Trong quá trình nghiên cứu các thuật toán so sánh, kiểm tra sự trùng lặp, nhóm nghiên cứu đề tài đã lựa chọn thuật toán WinDiff và Diff để xây dựng
Hệ thống cung cấp chức năng kiểm trùng văn bản nhằm hiển thị vị trí và nội dung trùng lặp giữa hai văn bản Hai thuật toán này được dùng để so sánh hai văn bản khác nhau hay hai đoạn văn bản Hệ thống sẽ phát hiện được những câu chép nguyên xi, trùng ý và đánh dấu cho người quản trị so sánh với văn bản khác Tính toán sự khác biệt giữa hai văn bản là cốt lõi của hệ thống [2]
2.3.1 Xử lý tối ưu hóa thuật toán a) Kiểm tra sự giống nhau
Việc so sánh hai văn bản rõ ràng và đơn giản nhất là kiểm tra sự giống nhau Câu lệnh được mô tả như sau
Khả năng không nhỏ là hai văn bản
so sánh đều giống hệt nhau, việc kiểm tra này là rất đơn giản đối với các hệ thống Vì vậy, việc trước tiên chúng
ta phải kiểm tra trường hợp này Khâu kiểm tra này làm đơn giản hóa mã tiếp theo [4]
b) Kiểm tra sự giống nhau ở tiền tố/hậu tố
Tiếp theo, nếu có sự khác biệt giữa các văn bản, chúng ta sẽ chia sẻ một chuỗi con phổ biến ở đầu và/hoặc cuối
c) Kiểm tra Chèn/Xóa chuỗi đơn giản
Cài đặt thuật toán:
Trang 4d) Kiểm tra văn bản chỉnh sửa cả
đầu và cuối đoạn
Kiểm tra văn bản chỉnh sửa cả đầu
và cuối đoạn khó khăn hơn nhiều so với
các chỉnh sửa đơn lẻ Hai chuỗi chèn
đơn giản có thể được phát hiện bằng
cách tìm kiếm sự hiện diện của ‘Text 1’
trong ‘Text 2’
Loại bỏ các tiền tố và hậu tố chung
như là một bước đầu đảm bảo rằng phải
có sự khác biệt ở mỗi đầu của các văn bản
còn lại Sau đó, ta dễ dàng xác định được
chuỗi ngắn hơn hiện diện trong chuỗi dài
hơn Trong những tình huống này kết quả
khác nhau có thể được xác định mà không
cần chạy một thuật toán phức tạp
Nếu một chuỗi con tồn tại trong cả
hai văn bản, ít nhất bằng một nửa độ dài
của văn bản dài hơn, thì nó sẽ được xác
định là giống nhau Trong trường hợp này
các văn bản có thể được chia thành hai,
và hàm so sánh phức tạp được thực hiện
Thực hiện phép kiểm tra này một cách đệ
quy có thể tạo nên sự phân chia khác
Việc tính toán chuỗi con phổ biến
dài nhất là một hoạt động phức tạp như
hàm kiểm tra sự khác nhau, có nghĩa
là không tối ưu được độ phức tạp Tuy
nhiên, giới hạn mà chuỗi ký tự chung
phải có ít nhất một nửa độ dài của văn
bản dài hơn
2.3.2 Thuật toán kiểm trùng
Một khi quá trình tối ưu hóa hoàn
tất, văn bản còn lại được so sánh với một
thuật toán diff Kỹ thuật vét cạn có độ
phức tạp O(n1*n2 ) để thực hiện (trong
đó n1 và n2 là độ dài của mỗi chuỗi đầu vào) [2]
a) Đầu vào thuật toán
Bất kỳ thuật toán khác biệt về mặt
lý thuyết có thể xử lý bất kỳ đầu vào, bất
kể nó được phân chia theo ký tự, từ hay câu Tuy nhiên, một số thuật toán khác biệt hiệu quả hơn nhiều trong việc xử lý các thẻ nhỏ như các ký tự, các hiệu ứng khác hiệu quả hơn khi xử lý các thẻ lớn như xử lý câu Lý do là có một số lượng
vô hạn các dòng không xuất hiện trong một văn bản nhưng xuất hiện ở phần kia được biết là một sự chèn hoặc xóa một Ngược lại, chỉ có 80 mã ký tự riêng biệt khi xử lý các ký tự (az, AZ, 0-9 và một
số dấu câu), có nghĩa là bất kỳ văn bản không nhỏ nào sẽ chứa nhiều trường hợp nhất nếu không phải là tất cả các
ký tự này Các thuật toán khác nhau có thể khai thác những khác biệt thống kê trong các văn bản đầu vào, dẫn đến các chiến lược hiệu quả hơn
b) Đầu ra thuật toán
Thuật toán kiểm trùng văn bản truyền thống tạo ra một danh sách các chuỗi chèn và chuỗi xóa mà khi thực hiện trên văn bản đầu tiên sẽ được văn bản thứ hai Một phần mở rộng của điều này là việc thêm vào một toán tử ‘move’ Một cách tiếp cận hoàn toàn khác đó là
sử dụng ‘copy’ và ‘chèn’ làm toán tử
c) Độ chính xác
Nói chung thuật toán kiểm trùng đưa ra kết quả chính xác, mô tả một đường dẫn hợp lệ của sự khác biệt từ văn bản này sang văn bản khác Tuy nhiên, một số thuật toán có thể trở lại đầu ra phụ tối ưu vì lợi ích của tốc độ Thuật toán diff được mô tả chi tiết nhất trong bài báo năm 1986 của E Myers Một trong những đề xuất tối ưu
Trang 5hóa đó là xử lý sự khác biệt từ cả hai đầu
cùng một lúc, hội tụ ở giữa
d) Xử lý
Một thuật toán diff hoàn hảo sẽ trả
về số lượng tối thiểu các chỉnh sửa cần
thiết để chuyển đổi một văn bản sang
một văn bản khác Việc chuyển đổi hoàn
toàn an toàn, nhưng vấn đề lớn hơn đó
là sự khác biệt giữa hai văn bản không
giống nhau thường bị xáo trộn với
những sự trùng hợp ngẫu nhiên nhỏ Kết
quả mong đợi ở trên có thể là xóa tất cả
‘Text 1’và chèn tất cả ‘Text 2’, có thể
ngoại trừ khoảng thời gian ở cuối
Các văn bản dài hơn sẽ dẫn đến
nhiều từ chia sẻ hơn Tuy nhiên, ngay
cả sự khác biệt dựa trên câu cũng dễ
bị ảnh hưởng Vấn đề trùng hợp ngẫu
nhiên nhỏ thực sự là một trong hai vấn
đề khác nhau đó là khả năng hoặc ngữ
nghĩa Mỗi vấn đề này đòi hỏi một giải
pháp xử lý
2.4 Quy trình vận hành hệ thống
kiểm trùng đề tài
2.4.1 Quy trình kiểm trùng đề tài
Trước thời điểm đăng ký xét duyệt
đề xuất đề tài, thuyết minh đề tài và đánh giá nghiệm thu đề tài cán bộ quản lý đề tài sẽ tiến hành kiểm tra trùng lặp các nội dung nghiên cứu của đề tài Việc sử dụng công cụ hỗ trợ kiểm trùng theo dữ liệu có sẵn và được quản lý theo cấp độ khác nhau sẽ hạn chế hiện tượng trùng lắp của đề tài
Quá trình kiểm trùng của hệ thống kiểm trùng đề tài được diễn ra theo tuần
tự của quá trình thực hiện đề tài đó là đề xuất đề tài xây dựng thuyết minh đề tài báo cáo kết quả thực hiện đề tài Khi tiến hành kiểm trùng hệ thống chỉ kiểm trùng dữ liệu ở giai đoạn đang thực hiện đề tài và không kiểm trùng đối chiếu dữ liệu ở giai đoạn đề xuất đề tài
2.4.2 Sơ đồ kiểm trùng đề tài
Sơ đồ kiểm trùng đề tài được thể hiện ở Hình 2
Hình 2: Sơ đồ kiểm trùng đề tài
2.4.3 Các bước kiểm trùng đề tài
Bước 1 Đăng nhập
Sau khi đăng nhập hệ thống kiểm
trùng (vào địa chỉ http://kiemtrung.
hunre.vn), màn hình sẽ xuất hiện trang
chủ với các thông tin cơ bản, chẳng hạn
số liệu về đề tài đã được cập nhật Trang chủ hệ thống cung cấp một số chức năng tác nghiệp của phần mềm (ở phía bên trái màn hình) bao gồm “tìm kiếm đề
Trang 6tài, Quản trị đề tài, Báo cáo và Quản trị
hệ thống”
Bước 2 Kiểm trùng đề tài
Hệ thống kiểm trùng đề tài cho
phép kiểm trùng từng đề tài riêng lẻ và
từng giai đoạn cụ thể như sau:
a) Kiểm trùng đề xuất đề tài
b) Kiểm trùng Thuyết minh đề tài
và báo cáo tổng kết đề tài
Khi kết thúc quá trình kiểm trùng cán bộ quản lý đề tài sẽ thực hiện thao tác chuyển trạng thái đề tài sang tình trạng “Đề tài đã hoàn thành” Danh sách
đề tài được mô tả ở Hình 3
Hình 3: Danh sách đề tài
Bước 3 Báo cáo thống kê kiểm
trùng đề tài
Tại giao diện trang chủ, người dùng
nhấn chuột vào mục “báo cáo”, hệ thống
sẽ cung cấp các báo cáo Hệ thống có
báo cáo tổng hợp và báo cáo chi tiết
Tại chức năng báo cáo chi tiết, hệ
thống thiết kế để người sử dụng có thể
chọn một đề tài hoặc nhiều đề tài cần báo
cáo Sau khi lựa chọn đề tài cần báo cáo
sẽ nhấn nút xuất báo cáo hệ thống sẽ xuất
ra một fi le excel chứa đầy đủ nội dung
kiểm trùng đề tài đã đưa vào hệ thống
theo lựa chọn đề tài của người dùng
4 KẾT LUẬN
Mô hình kiến trúc hệ thống và thuật
toán xử lý kiểm trùng là cơ sở để xây
dựng phần mềm kiểm tra, đánh giá sự
trùng lặp của các đề tài cấp Bộ, cấp Cơ
sở, thử nghiệm tại Trường Đại học Tài
nguyên và Môi trường Hà Nội Kết quả
thử nghiệm cho thấy sản phẩm có những
tính năng hiện đại, sử dụng tiện lợi, đảm bảo độ chính xác, tin cậy và hỗ trợ tích cực trong việc quản lý các đề tài khoa học Phần mềm này có thể được nâng cấp để sử dụng trong phạm vi rộng hơn đối với dữ liệu lớn, đa dạng và phong phú hơn
TÀI LIỆU THAM KHẢO
[1] Phạm Hữu Khang (2010)
Microsoft SQL Server 2008 - Quản trị Cơ
sở dữ liệu (Tập 2) Nhà xuất bản: Nxb Lao
động - Xã hội
[2] Hoàng Nghĩa Tý (2006) Cấu trúc
dữ liệu và thuật toán Nhà xuất bản Xây
dựng.
[3] Phạm Hữu Khang (2006) C# Lập
trình hướng đối tượng Nhà xuất bản Lao
động xã hội.
[4] Nguyễn Ngọc Bình Phương - Thái
Thanh Phong (2006) Các giải pháp lập
trình C# Nhà xuất bản Giao thông Vận tải.
[5] Andrew Troelsen - Philip Japikse
Pro C# 7: With NET and NET Core 8th Edition.
BBT nhận bài: Ngày 26/9/2017; Phản biện xong: Ngày 26/10/2017