Kiểm tra trùng lặp, đạo văn đang dần được quan tâm tại Việt Nam. Tuy nhiên, hiện chỉ có số ít phần mềm hỗ trợ kiểm tra cả một luận văn với chất lượng tốt, tốc độ nhanh và đáp ứng được nhiều người sử dụng. Nguyên do là vì việc tự xây dựng một phần mềm kiểm tra đạo văn không hề đơn giản và mất rất nhiều chi phí. Bài viết này là chia sẻ của đội kỹ thuật phần mềm Kiểm Tra Tài Liệu về một số vấn đề mà đội kỹ thuật phải đối mặt để phát triển nên phần mềm đáp ứng được hàng chục ngàn lượt kiểm tra mỗi ngày như hiện nay.
Với nhu cầu đơn giản chỉ cần kiểm tra những văn bản ngắn, không cần tốc độ nhanh và không thường xuyên thì ta có thể viết một công cụ nhỏ sử dụng Google để tìm từng câu trên Google. Tuy nhiên, để có thể xây dựng được một hệ thống mà nhiều người cùng sử dụng thì chắc chắn Google không thể đáp ứng được. Hãy thử tính toán rằng một luận văn của sinh viên có trung bình tầm 1.500 câu văn, nếu muốn 1 tiếng sau có kết quả thì trung bình mỗi phút ta phải tìm trên Google 25 câu. Khi đó, chỉ sau vài phút thôi là Google sẽ hỏi captcha rằng bạn có phải robots không hoặc là chặn luôn cả IP của bạn. Còn nếu bạn muốn giãn thời gian ra để Google không chặn nữa thì có lẽ sẽ phải treo máy cả ngày thì mới có kết quả. Thêm một sự thật đau lòng nữa là việc sử dụng kết quả trên Google là chưa đủ nếu muốn có một kết quả chính xác. Google chỉ đưa ra kết quả tóm lược, đôi lúc không phải câu hoàn chỉnh, hoặc đôi khi kết quả chỉ trùng 20-30% cũng vẫn ở trong danh sách. Bạn nên vào chi tiết từng website trong kết quả mà Google trả về để có được kết quả chính xác hơn.
Do vậy, để xây dựng một hệ thống kiểm tra đạo văn đáp ứng nhiều người dùng thì không thể phụ thuộc vào các nền tảng tìm kiếm miễn phí như Google, Bing,… Thực sự nếu bạn muốn trả phí cho nó thì cũng không được, vì các bên đó không hỗ trợ API hay gói dịch vụ trả phí cho dịch vụ tìm kiếm của họ. Do vậy, việc phải tự xây dựng một hệ thống là điều không thể trách khỏi. Vậy để xây dựng một phần mềm kiểm tra đạo văn thì cần phải chuẩn bị những gì. Dưới đây là một số vấn đề cơ bản mà ta bắt buộc phải giải quyết khi tự xây dựng một hệ thống kiểm tra đạo văn.
1. Thu thập nguồn dữ liệu từ internet
Dữ liệu chính là trái tim của một hệ thống kiểm tra trùng lặp, đạo văn. Càng nhiều dữ liệu thì chất lượng quét và rà soát trùng lặp càng chính xác. Do vậy điều kiện tiên quyết khi ta bắt đầu xây dựng phần mềm là thu thập dữ liệu. Trong tiếng Anh, bộ thu thập này gọi là crawler, lấy ý tưởng từ việc những con nhện đang lần bò và mò mẫm trên mạng (internet).
Để thu thập được dữ liệu, ta cần xác định là ta cần thu thập website nào và ta quét website đó như thế nào. Ở vấn đề thứ nhất, hiện tại không có một cơ sở dữ liệu nào để biết hiện đang có những website nào đang hoạt động trên internet. Đó thực ra cũng là vấn đề chung của các máy tìm kiếm (search engine) hiện nay. Ví dụ đôi khi ta sẽ thấy cùng một câu văn mà trên Google ra một kiểu và Bing hay Cốc Cốc ra một kiểu. Một phần nó là do thuật toán xếp hạng của họ nhưng cũng một phần là do dữ liệu bên có bên không. Các bên search engine này thường có công cụ để người chủ website đăng ký website của họ, hoặc là dựa trên thống kê truy cập từ trình duyệt hoặc mạng internet để khám phá được những website mới. Tuy nhiên, khi ta tự xây dựng nguồn dữ liệu này thì hoàn toàn không có cách nào để biết rằng có những website nào mà ta cần thu thập.
Vấn đề thứ hai, khi ta có website rồi thì giờ cần làm thế nào để quét toàn bộ các trang trong website đó. Hiện tại đã có những tiêu chuẩn chung về khai báo robots.txt, tạo sitemaps để các search engine thu thập website. Nhưng thực tế là không phải website nào cũng theo chuẩn (do chưa thực hiện hoặc cố ý làm vậy) và ta phải tự mò mẫm trong website đó. Một số website thì giới hạn truy cập theo quốc gia, hoặc chặn IP không có truy cập cùng một lúc. Số khác thì lại sử dụng SPA hoặc các công nghệ client rendering khác. Do đó, vì mỗi website một kiểu và cũng không phải ai cũng tuân theo chuẩn, nên việc quét dữ liệu từ một website cũng là một bài toán khó khăn.
Cách thức mà phần mềm Kiểm Tra Tài Liệu hiện đang sử dụng là xuất phát điểm từ những website phổ biến và dùng Google để khám phá website mới. Với mỗi website thì có một bộ nhận diện và phân tích sơ đồ và cấu trúc website, cùng với nhiều đặc điểm khác về cách render, rate limit,… Nhìn chung, dường như đây có thể được coi là một hệ thống lớn khác nằm tách biệt với hệ thống kiểm tra trùng lặp, được chạy liên tục hàng ngày, hàng giờ để cung cấp dữ liệu cho hệ thống chính.
2. Xây dựng bộ tìm kiếm trên nguồn dữ liệu lớn
Với hàng triệu website trên internet mà ta đã thu thập, việc lưu trữ và xử lý chúng cũng là một vấn đề đau đầu. Bài toán này thuộc về mảng Big Data, dịch ra là công nghệ xử lý dữ liệu lớn. Trước tiên, để lưu trữ thì bạn nên chuẩn bị sẵn ít nhất một ổ cứng tầm 16TB dữ liệu (nếu bạn nào chưa biết thì 1 TB = 1024 GB). Đó là dung lượng tối thiểu được khuyến nghị nếu bạn đã tối ưu được việc lưu trữ (nén, lọc trùng dữ liệu,…) và tối ưu quy trình xử lý (không có file tạm, file thừa sau khi xử lý). Do đó, bạn có thể cần ổ cứng nhiều hơn số này nếu muốn lưu trữ toàn bộ dữ liệu internet của Việt Nam. Còn với dữ liệu của cả thế giới, con số này có thể cần nhiều hơn.
Đó là việc lưu trữ, còn với việc xây dựng bộ tìm kiếm (search engine) dựa trên dữ liệu đó còn phức tạp hơn nhiều. Giả dụ với dữ liệu đã thu thập, ta lọc trùng, lọc dư thừa, xong chuyển thành dạng text (dạng mà chỉ có các ký tự chữ mà không có định dạng) và lưu trữ lại thì còn tầm chưa đến 1TB dữ liệu text. Vấn đề là làm sao tìm kiếm được một câu văn trên đó một cách nhanh nhất. Để quét được 1 luận văn với 1.500 câu trong vòng 5 phút và giả sử chỉ có duy nhất 1 tài liệu xử lý trong cùng một thời điểm. Mỗi giây ta phải xử lý được 5 câu, tức tầm 200 mili giây mỗi câu. Để so sánh, hãy kiếm một máy tính đã có dữ liệu 500GB (ổ SSD) và gõ một vài từ để tìm xem file nào chứa từ đó xem (bạn lưu ý là tìm nội dung chứ không phải là chỉ tìm tên file). Máy tính của bạn sẽ cũng phải mất hàng chục giây thì mới báo là đã tìm kiếm tất cả các file. Một điều lưu ý nữa, khi ta gõ Google hàng ngày hoặc tìm file trên máy tính thì là các từ khoá ngắn, trung bình chưa đến 5 từ; nhưng tìm kiếm trùng lặp thì là tìm kiếm cả câu văn, gấp nhiều lần số đó.
Do vậy, đây cũng là vấn đề lớn sau khi đã thu thập dữ liệu. Đội kỹ thuật của Kiểm Tra Tài Liệu cũng phải làm việc nhiều năm, trải qua nhiều phiên bản mới đạt được tốc độ và chất lượng kiểm tra tốt và ổn định như hiện nay. Từng giai đoạn xử lý đều được tinh chỉnh đến từng dòng code. Đồng thời, chi phí hạ tầng để lưu trữ và xử lý chúng cũng không hề nhỏ.
3. Xây dựng luồng phân tích và xử lý tài liệu
Quy trình sử dụng phần mềm là người dùng tải lên một file (tệp) lên hệ thống, chờ hệ thống xử lý phân tích và trả về kết quả kiểm tra trùng lặp. Về khía cạnh kỹ thuật, phần mềm sẽ xử lý theo từng giai đoạn như sau:
- Đọc nội dung và tách câu trong tài liệu
- Kiểm tra từng câu với nguồn dữ liệu
- Tổng hợp kết quả kiểm tra và tính điểm trùng lặp
- Tạo báo cáo kết quả kiểm tra
Một lưu ý quan trọng là khi đọc file và tạo báo cáo, ta cũng cần phải xem xét các kỹ thuật để có thể hiển thị đơn giản nhất trên giao diện người dùng, ví dụ như là làm sao để bôi đỏ những phần trùng lặp, làm sao để người dùng loại trừ kết quả hoặc lọc theo một số yếu tố,…
Một phần quan trọng nữa ta cần để ý là người dùng có thể ồ ạt tải tài liệu lên cùng 1 thời điểm. Ví dụ như là sắp đến hạn nộp bài tập, khoá luận thì hệ thống có thể xảy ra tình trạng quá tải. Trong khi đó, một luồng xử lý tài liệu phải cần nguồn tài nguyên hệ thống (CPU, RAM, ổ đĩa,…) rất lớn. Nếu không xử lý đúng cách, hiệu ứng “cánh bướm” sẽ xảy ra khiến sập toàn bộ hệ thống và mất rất nhiều công để khôi phục lại.
Do vậy, việc xây dựng một luồng xử lý tài liệu ổn định là một bài toán cần phải để ý. Các kỹ thuật về microservice, phân tải, điều khiển luồng được đội kỹ thuật Kiểm Tra Tài Liệu tinh chỉnh và áp dụng linh hoạt để quá trình xử lý được diễn ra trơn tru nhất.
4. Xây dựng giao diện và các chức năng cho người dùng
Một điều quan trọng cuối cùng là xây dựng giao diện để mọi người dùng có thể đăng nhập và sử dụng được. Mặc dù độ khó của phần này không bằng các phần trước nhưng lại đóng vai trò cực kỳ quan trọng đối với phần mềm. Nếu có nhiều dữ liệu, xử lý nhanh nhưng mà lại gây nhiều khó khăn trong quá trình sử dụng thì khó thu hút được người dùng và cũng tăng gánh nặng cho việc hỗ trợ hướng dẫn sử dụng. Do vậy, từng chức năng từ cơ bản như đăng nhập, đăng ký đến các chức năng nâng cao như xem báo cáo, tải báo cáo hay chỉnh sửa kết quả để cần phải được xây dựng mượt mà, hướng tới người dùng nhất.
Lời kết
Việc xây dựng một hệ thống kiểm tra trùng lặp là không hề đơn giản và mất rất nhiều thời gian để phát triển, kể cả khi đội kỹ thuật có trình độ kỹ năng cao. Đồng thời, sau khi phát triển xong thì quá trình vận hành và duy trì cũng mất nhiều chi phí về cơ sở hạ tầng, máy chủ và nhân sự. Do vậy, giải pháp luôn được các đơn vị lựa chọn là thuê phần mềm. So với việc tự xây dựng phần mềm và tự vận hành, giải pháp thuê có chi phí đầu tư thấp hơn nhiều mà nhận được nhiều lợi ích như phần mềm ổn định, không cần lo về nhân sự kỹ thuật hay hạ tầng, nguồn dữ liệu lớn và luôn được cập nhật,…
Hiện nay, Kiểm Tra Tài Liệu vẫn đang là phần mềm thương mại duy nhất tại Việt Nam hỗ trợ cho thuê phần mềm không qua đại lý trung gian. Các đơn vị có nhu cầu triển khai phần mềm xin vui lòng liên hệ với chúng tôi qua https://kttl.vn/lien-he/ để được tư vấn và hỗ trợ.
Xin trân trọng cảm ơn!