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

(LUẬN văn THẠC sĩ) giải pháp xếp hạng và tính toán song song trên nền tảng apache spark luận văn ths máy tính 60 48 01

52 2 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

Định dạng
Số trang 52
Dung lượng 5,47 MB

Cấu trúc

  • Chương 1. Giới thiệu chung (12)
  • Chương 2. Tổng quan về xếp hạng (13)
  • Chương 3. Học máy xếp hạng (21)
    • 3.2.1 Hướng tiếp cận Pointwise (23)
    • 3.2.2 Hướng tiếp cận Pairwise (23)
    • 3.2.3 Hướng tiếp cận Listwise (23)
  • Chương 4. Giải pháp xếp hạng và tính toán song song trên nền apache spark (25)
    • 4.3.1 Tính năng của Apache Spark (28)
    • 4.3.2 Các thành phần của Apache Spark (28)
    • 4.3.3 Resilient Distributed Datasets (29)
    • 4.4.4 Nhược điểm của Elasticsearch (31)
  • Chương 5. Thực nghiệm và đánh giá (13)
    • 5.2.1 Hạ tầng tính toán (34)
    • 5.2.2 Các công cụ được sử dụng (34)
    • 5.3.1 Thu thập dữ liệu phim (35)
    • 5.3.2 Thu thập lịch sử click của người dùng (39)
    • 5.3.3 Đánh chỉ mục cho dữ liệu (41)
    • 5.3.4 Trích xuất dữ liệu huấn luyện (42)
    • 5.3.5 Trích xuất vector đặc trưng cho mô hình (43)
    • 5.3.6 Xây dựng hệ thống xếp hạng và tính toán song song (45)
    • 5.3.7 Kết quả thực nghiệm (46)
    • 5.4.1 Hiệu năng (47)
    • 5.4.2 Chất lượng xếp hạng (48)
  • Tài liệu tham khảo (51)

Nội dung

Giới thiệu chung

Với sự bùng nổ của công nghệ thông tin, người dùng internet thường gặp khó khăn trong việc tìm kiếm thông tin do khối lượng lớn dữ liệu Để đáp ứng nhu cầu tìm kiếm chính xác và chuyên biệt của người dùng, Cốc Cốc đã nhận thấy nhu cầu tìm kiếm phim online là rất lớn, với hàng triệu lượt truy vấn mỗi tuần Để giải quyết vấn đề này, Cốc Cốc đã phát triển một thành phần tìm kiếm phim trực tuyến, giúp cập nhật thông tin về các bộ phim mới nhất và cung cấp nhiều thông tin hữu ích cho người dùng Hệ thống này không chỉ hiển thị trailer, nội dung phim, đạo diễn, diễn viên, và điểm IMDb, mà còn cung cấp liên kết đến các trang web xem phim trực tuyến, mang lại trải nghiệm tìm kiếm phim tốt hơn cho người dùng.

Hệ thống tìm kiếm phim trực tuyến ban đầu được thiết kế trên một máy chủ, cho phép trả về kết quả và xếp hạng phim hiệu quả Tuy nhiên, với sự gia tăng dữ liệu, cần một mô hình tính toán song song trên nhiều máy tính để đảm bảo khả năng mở rộng và tính ổn định, đồng thời chịu lỗi khi nâng cấp hoặc gặp sự cố trên một máy.

Trong giai đoạn đầu, các hệ số nhân của các yếu tố trong hệ thống xếp hạng phim được cố định và điều chỉnh dựa trên cảm quan ban đầu, dẫn đến tình trạng quá khớp với một số trường hợp tìm kiếm Do đó, cần thiết phải phát triển một mô hình xếp hạng tổng quan, có khả năng xác định tham số tối ưu cho từng truy vấn và áp dụng cho nhiều loại truy vấn khác nhau, không chỉ giới hạn trong lĩnh vực phim ảnh.

Mục tiêu và nội dung của luận văn

Bài viết này sẽ khám phá các phương pháp mô hình học máy xếp hạng cho việc xếp hạng trang web xem phim trên Cốc Cốc, sử dụng Apache Spark và Elasticsearch để lưu trữ và phân tích dữ liệu Nghiên cứu nhấn mạnh khả năng mở rộng dễ dàng và tính năng chịu lỗi của hệ thống khi xử lý dữ liệu quy mô lớn.

• Nghiên cứu, khảo sát bài toán xếp hạng tổng quát và nền tảng Apache Spark

• Phân tích, đánh giá một số kỹ thuật Listwise trong học xếp hạng

• Xây dựng giải pháp triển khai kỹ thuật học xếp hạng kiểu Listwise trên nền Apache Spark

Thực nghiệm và đánh giá khả năng xử lý xếp hạng trên Apache Spark được thực hiện thông qua bài toán xếp hạng phim, tích hợp vào dịch vụ tìm kiếm của Cốc Cốc Nghiên cứu này nhằm tối ưu hóa hiệu suất xếp hạng và cải thiện trải nghiệm người dùng trong việc tìm kiếm thông tin phim.

Tổ chức của luận văn

Khóa luận bao gồm năm chương sau đây là mô tả vắn tắt các chương:

Chương 1 Giới thiệu chung Chương này giới thiệu về mục tiêu và động lực nghiên cứu của luận văn.

Tổng quan về xếp hạng

hạng truyền thống được sử dụng và phân loại các mô hình xếp hạng

Chương 3 cung cấp cái nhìn tổng quan về các mô hình học máy xếp hạng, đặc biệt là những mô hình được áp dụng trong các hệ thống truy hồi thông tin Nội dung chương này sẽ giúp người đọc hiểu rõ hơn về cách thức hoạt động và tầm quan trọng của học máy xếp hạng trong việc cải thiện hiệu quả tìm kiếm và sắp xếp thông tin.

Chương 4 trình bày các công nghệ tính toán song song và đề xuất giải pháp cho bài toán xếp hạng kết quả tìm kiếm bằng cách sử dụng Apache Spark và Elasticsearch.

Chương 5 trình bày về thực nghiệm và đánh giá, bao gồm dữ liệu sử dụng, các giai đoạn xử lý và thực nghiệm Chương này cũng đưa ra kết quả mô hình cùng với nhận xét và phân tích về các kết quả thu được.

Chương 6 Kết luận Chương này tổng kết và tóm lược nội dung chính của khóa luận

Chương 2 Tổng quan về xếp hạng

Tổng quan về xếp hạng

Sự bùng nổ thông tin trên thế giới Web đã dẫn đến tình trạng tràn ngập dữ liệu trên internet Theo một nghiên cứu năm 2005, có khoảng 11.5 tỷ tài liệu được ghi nhận trên Web vào tháng 1 năm 2005 Cùng năm đó, Yahoo thông báo rằng công cụ tìm kiếm của họ có hơn 19.2 tỷ tài liệu web Hiện nay, con số này đã vượt quá 50 triệu tỷ tài liệu đã được lập chỉ mục trên các công cụ tìm kiếm Những số liệu này cho thấy số lượng tài liệu web đang gia tăng với tốc độ nhanh chóng.

Với kích thước khổng lồ của thế giới Web, người dùng gặp khó khăn trong việc tìm kiếm thông tin mong muốn chỉ bằng cách duyệt qua các trang web Do đó, việc tìm kiếm và trích xuất thông tin trở nên ngày càng quan trọng, khiến các công cụ tìm kiếm trở thành công cụ thiết yếu cho mọi người dùng Internet.

Một kiến trúc điển hình của công cụ tìm kiếm được hiển theo hình dưới đây

Hình 2-1 Hệ thống tìm kiếm tổng quát [24]

Có 6 thành phần chính trong một hệ thống tìm kiếm (Search Engine) là:

• Crawler (Bộ thu thập dữ liệu): Thu thập dữ liệu từ trang web và các tài liệu khác từ mạng internet theo sự ưu tiên

• Parser (Bộ bóc tách dữ liệu): Lấy tài liệu từ crawler đánh chỉ mục và tạo đồ thị liên kết chứa các đường dẫn tới trang web (Hyperlink graph)

Bộ đánh chỉ mục (Indexer) có chức năng quan trọng trong việc thu thập dữ liệu từ Parser, từ đó tạo ra các chỉ mục từ và cấu trúc dữ liệu Những chỉ mục này giúp tối ưu hóa quá trình tìm kiếm, cho phép người dùng nhanh chóng truy cập các tài liệu trên web.

Bộ phân tích liên kết (Link Analyzer) thu thập dữ liệu từ đồ thị siêu liên kết để xác định độ quan trọng của từng trang web Kết quả này có thể được sử dụng để ưu tiên cập nhật trang web thông qua Crawler hoặc làm tham số đặc trưng cho việc xếp hạng.

Bộ xử lý truy vấn là thành phần quan trọng trong hệ thống tìm kiếm, chịu trách nhiệm nhận và xử lý các truy vấn từ người dùng Nó thực hiện các bước như loại bỏ các từ phổ biến và sửa lỗi trong truy vấn, nhằm chuyển đổi chúng thành các từ (term) mà hệ thống tìm kiếm có thể hiểu được.

Bộ xếp hạng là thành phần quan trọng trong hệ thống tìm kiếm, có nhiệm vụ xác định tài liệu phù hợp nhất dựa trên truy vấn của người dùng và các tài liệu đã được lập chỉ mục Nó có thể trực tiếp nhận các truy vấn và tài liệu để tính toán điểm số bằng các công thức heuristic, hoặc trích xuất đặc điểm giữa các cặp tài liệu và truy vấn để tạo ra điểm số kết hợp từ những đặc điểm đó.

Hệ thống xếp hạng đóng vai trò quan trọng trong các máy tìm kiếm, với các công ty công nghệ lớn như Yahoo, Google, Microsoft và Cốc Cốc tại Việt Nam đang liên tục nghiên cứu và cải tiến thuật toán xếp hạng nhằm nâng cao chất lượng tìm kiếm.

Bộ xếp hạng đóng vai trò quan trọng trong nhiều ứng dụng truy hồi thông tin như lọc cộng tác, hệ thống hỏi đáp, truy hồi đa phương tiện, tóm tắt văn bản và quảng cáo trực tuyến Để cải thiện hiệu quả của hệ thống truy hồi thông tin, nhiều mô hình xếp hạng heuristic đã được đề xuất và áp dụng.

Trong những năm gần đây, học máy xếp hạng đã nổi lên như một lĩnh vực nghiên cứu quan trọng trong truy hồi thông tin, với nhiều bài báo khoa học được công bố tại các hội nghị hàng đầu Hàng năm, các chuyên đề trong hội nghị SIGIR đều tập trung vào chủ đề này, và các dataset như LETOR đã được phát hành để hỗ trợ nghiên cứu Nhiều nghiên cứu đã áp dụng dataset LETOR cho thực nghiệm, cho thấy tầm quan trọng và sự phổ biến của học máy xếp hạng trong các hệ thống truy hồi thông tin.

Trong hệ thống truy hồi thông tin, nhiều mô hình xếp hạng đã được đề xuất, có thể chia thành hai loại chính: mô hình xếp hạng dựa trên độ liên quan và mô hình xếp hạng dựa trên độ quan trọng.

Mô hình xếp hạng dựa trên độ liên quan

Mô hình xếp hạng dựa trên độ liên quan nhằm tạo ra danh sách tài liệu được sắp xếp theo mức độ liên quan với truy vấn Tất cả tài liệu sẽ được sắp xếp theo thứ tự giảm dần dựa trên mức độ liên quan của chúng.

Mô hình xếp hạng dựa trên độ liên quan trong hệ thống truy hồi thông tin đầu tiên dựa vào sự xuất hiện của các thuật ngữ trong tài liệu theo truy vấn, với mô hình Boolean là một ví dụ điển hình Mô hình này có khả năng xác định liệu một tài liệu có liên quan hay không với truy vấn, nhưng không thể đo lường mức độ liên quan.

Học máy xếp hạng

Hướng tiếp cận Pointwise

Trong lĩnh vực học máy, các đối tượng trong dữ liệu thường được gán một điểm số hoặc thứ tự Học xếp hạng có thể được mô hình hóa thông qua hồi quy, cụ thể là hồi quy có thứ tự Với tập dữ liệu D = {(xi, yi)}, hàm hạng h(x) cần thỏa mãn điều kiện r(xi) = yi Một số thuật toán phổ biến trong học xếp hạng bao gồm OPRF và SLR.

Hướng tiếp cận Pairwise

Có D = {(xi, xj)} là tập hợp các cặp đối tượng được sắp xếp theo thứ tự, trong đó mỗi cặp (xi, xj) thể hiện rằng thứ hạng của xi cao hơn thứ hạng của xj, tức là xi phù hợp hơn xj (xi > xj) Tìm kiếm r(x) là bước tiếp theo trong quá trình phân tích này.

Một số thuật toán học xếp hạng như SVM-rank, RankRLS 


Hướng tiếp cận Listwise

Các thuật toán này tập trung vào việc sắp xếp tất cả các đối tượng trong dữ liệu học, điều này thực sự là một thách thức lớn Khi thứ hạng của K đối tượng đầu tiên đã được xác định, tất cả các đối tượng còn lại sẽ có thứ hạng thấp hơn.

Vớ i D={x1,x2 ,xm} có s ắp thứ tự : x1 >x2 > >xm, tìm hàm tính h ạ ng r(x) sao cho r(x1)

Một số thuật toán học xếp hạng như ListMLE, ListNet, PermuRank

Chương này giới thiệu nền tảng cơ sở về học máy xếp hạng, nêu ra ba cách tiếp cận chính: Pointwise, Pairwise và ListWise Luận văn sẽ áp dụng phương pháp ListWise, và chương tiếp theo sẽ trình bày cách triển khai phương pháp này cùng với mô hình xếp hạng và tính toán song song cho máy tìm kiếm phim tại Cốc Cốc.

Giải pháp xếp hạng và tính toán song song trên nền apache spark

Tính năng của Apache Spark

Apache Spark có các tính năng đặc trưng sau đây

Apache Spark có khả năng hoạt động trên cụm Hadoop, cho phép xử lý dữ liệu nhanh hơn 100 lần khi sử dụng bộ nhớ RAM và nhanh hơn 10 lần khi chạy trên ổ cứng Điều này đạt được nhờ việc giảm thiểu số lần đọc ghi lên đĩa cứng, giúp lưu trữ trực tiếp dữ liệu vào bộ nhớ trong quá trình xử lý.

Spark hỗ trợ đa ngôn ngữ với các API cho Java, Scala và Python, cho phép bạn phát triển ứng dụng bằng nhiều ngôn ngữ khác nhau Ngoài ra, Spark còn cung cấp 80 truy vấn tương tác ở mức cao, giúp tăng cường khả năng xử lý dữ liệu.

Spark không chỉ cung cấp chức năng 'Map' và 'Reduce', mà còn hỗ trợ truy vấn SQL, xử lý dữ liệu theo luồng, học máy và các thuật toán đồ thị.

Các thành phần của Apache Spark

Hình 4-4 Các thành phần Apache Spark [25]

Apache Spark Core là thành phần cốt lõi thực thi cho các tác vụ cơ bản, đóng vai trò nền tảng cho các chức năng khác trong Apache Spark Nó cung cấp khả năng tính toán hiệu quả trên bộ nhớ và quản lý dữ liệu trong bộ nhớ hệ thống cũng như lưu trữ ngoài.

Spark SQL là một thành phần của Spark Core, cung cấp sự ảo hóa dữ liệu thông qua SchemaRDD, hỗ trợ xử lý các loại dữ liệu có cấu trúc và bán cấu trúc.

• Spark Streaming: Cho phép thực hiện phân tích xử lý trực tuyến xử lý theo lô

MLlib, the Machine Learning Library, is a distributed machine learning platform built on Spark, leveraging a memory-based distributed architecture Benchmarks demonstrate its efficiency and performance in various machine learning tasks.

Spark MLlib nhanh hơn chín lần so với phiên bản chạy trên Hadoop (Apache Mahout)

GrapX là nền tảng xử lý đồ thị được xây dựng trên công nghệ Spark, cung cấp các API mạnh mẽ cho phép người dùng thực hiện các tính toán đồ thị thông qua Pregel API.

Resilient Distributed Datasets

Resilient Distributed Datasets (RDD) là cấu trúc dữ liệu cốt lõi của Spark, bao gồm một tập hợp bất biến và phân tán của các đối tượng Mỗi RDD được chia thành nhiều phần vùng logical, cho phép tính toán trên các node khác nhau trong một cụm máy chủ RDDs hỗ trợ nhiều kiểu dữ liệu, bao gồm Python, Java và Scala, cũng như các kiểu dữ liệu do người dùng định nghĩa.

RDD (Resilient Distributed Dataset) thường chỉ cho phép đọc và phân mục tập hợp các bản ghi Các RDD có thể được tạo ra thông qua việc điều khiển xác định trên dữ liệu trong bộ nhớ hoặc từ các RDD khác RDD là một tập hợp có khả năng chịu lỗi, với mỗi thành phần có thể được tính toán song song, giúp tối ưu hóa hiệu suất xử lý dữ liệu.

Có hai cách để tạo RDDs

• Tạo từ một tập hợp dữ liệu có sẵn trong ngôn ngữ sử dụng như Java, Python, Scala

• Lấy từ dataset hệ thống lưu trữ bên ngoài như HDFS, Hbase hoặc các cơ sở dữ liệu quan hệ

Elasticsearch được phát triển bởi Shay Banon vào năm 2010 và dựa trên Apache Lucene, Elasticsearch được phát hành theo Giấy phép Apache 2.0

Elasticsearch là một hệ thống tìm kiếm full-text và phân tích mã nguồn mở, hoạt động theo thời gian thực Hệ thống này sử dụng RESTful với định dạng JSON để chứa dữ liệu, và được phát triển bằng ngôn ngữ Java, cho phép chạy trên nhiều nền tảng khác nhau Elasticsearch giúp người dùng truy vấn dữ liệu lớn với tốc độ nhanh chóng và hiệu quả.

• Elasticsearch có thể được mở rộng lên đến Petabyte dữ liệu có cấu trúc và không có cấu trúc

• Elasticsearch có thể được sử dụng như một thay thế cho các lưu trữ tài liệu như

• Elasticsearch được sử dụng để cải thiện hiệu năng tìm kiếm, đặc biệt là tìm kiếm full-text

• Elasticsearch là một máy tìm kiếm phổ biến nhất được sử dụng bởi nhiều tổ chức lớn như Wikipedia, The Guardian, StakOverflow, GitHub, v.v

Nút (Node) trong Elasticsearch là đại diện cho một chương trình hoạt động độc lập Một máy chủ vật lý hoặc máy chủ ảo có thể chứa nhiều nút, tùy thuộc vào tài nguyên như RAM, CPU và bộ nhớ ngoài mà chúng sở hữu.

Cụm (Cluster) là một tập hợp bao gồm một hoặc nhiều node, cho phép cung cấp khả năng đánh chỉ mục và tìm kiếm toàn diện trên toàn bộ dữ liệu trong các node này.

Chỉ mục (Index) là tập hợp các kiểu dữ liệu và thuộc tính tài liệu đa dạng, sử dụng khái niệm shard để nâng cao hiệu suất tính toán Ví dụ, một bộ tài liệu có thể chứa dữ liệu cho mạng xã hội, giúp tổ chức và truy xuất thông tin hiệu quả hơn.

Type/Mapping là tập hợp tài liệu mô tả các trường dữ liệu trong cùng một index Ví dụ, trong một index dành cho ứng dụng mạng xã hội, có các kiểu dữ liệu cụ thể cho thông tin người dùng, dữ liệu tin nhắn và bình luận.

Tài liệu là một tập hợp các trường dữ liệu được xác định rõ ràng theo định dạng JSON, với mỗi tài liệu thuộc về một loại cụ thể và được lưu trữ trong từng chỉ mục Mỗi tài liệu có một định danh duy nhất gọi là UID.

Shard là các chỉ mục được mở rộng theo chiều ngang bằng cách chia thành nhiều phần, với mỗi shard chứa tất cả các thuộc tính của một tài liệu nhưng ít đối tượng JSON hơn chỉ mục Phân chia theo chiều ngang giúp mỗi shard trở thành một nút độc lập và có thể được lưu trữ trên bất kỳ nút nào Shard cũng là phần gốc của mỗi phân chia và các phần này có thể được nhân bản để tăng cường khả năng lưu trữ và truy xuất dữ liệu.

Elasticsearch cho phép người dùng tạo nhiều bản sao cho các chỉ mục và phân đoạn, giúp tăng cường độ sẵn sàng của dữ liệu khi xảy ra sự cố Sự nhân bản này cũng nâng cao hiệu suất tìm kiếm thông qua khả năng tìm kiếm song song trên các bản sao.

Hình 4-6 Minh họa một Cluster trong Elasticsearch

• Elasticsearch được phát triển trên Java điều này cho phép nó có thể chạy trên hầu hết mọi nền tảng

• Elasticsearch có thể hoạt động một cách trực tuyến, nghĩa là việc thêm tài liệu được cập nhập và tìm kiếm ngay lập tức

• Xử lý đa người sử dụng trong Elasticsearch là dễ dàng hơn so với Apache Solr

• Elasticsearch sử dụng định dạng JSON cho truy vấn và kết quả trả về do đó dễ dàng gọi Elasticsearch từ nhiều ngôn ngữ lập trình khác nhau

• Elasticsearch hỗ trợ nhiều loại kiểu dữ liệu khác nhau như văn bản, ngày tháng, số thực, số nguyên, địa chỉ IP… và nhiều truy vấn phức tạp.

Thực nghiệm và đánh giá

Hạ tầng tính toán

Quá trình thực nghiệm được tiến hành trên hệ thống máy tính có cấu hình phần cứng như sau:

Bảng 5-1 Thông số máy chủ sử dụng trong thực nghiệm

STT Thông số Số lượng

OS: Debian 8.0 HDD: 2TB RAM: 32GB CPU: 2.7 GHz x 24 Core

OS: Debian 8.0 HDD: 1TB RAM: 64GB CPU: 2.7 GHz x 24 Core

Các công cụ được sử dụng

Dưới đây là các công cụ mã nguồn mở được sử dụng

Bảng 5-2 Danh sách phần mềm mã nguồn mở được sử dụng

STT Tên phần mềm Nguồn Phiên bản

1 Elasticsearch-hadoop https://www.elastic.co/downloads/hadoop 2.4.0

2 Apache Spark http://spark.apache.org/downloads.html 2.0.1

3 Ranklib https://sourceforge.net/p/lemur/wiki/RankLib/ 2.7 Elasticsearch-Jdbc https://github.com/jprante/elasticsearch-jdbc 2.3.4.1

Quá trình thực nghiệm học máy xếp hạng gồm các bước chính sau đây:

• Thu thập dữ liệu: thu thập toàn bộ dữ liệu về phim và dữ liệu lịch sử của người dùng trong hệ thống tìm kiếm Cốc Cốc

• Xử lý dữ liệu: tiền xử lý dữ liệu, đánh chỉ mục cho dữ liệu, xây dựng tập tài liệu học cho mô hình, véc tơ hóa dữ liệu

• Xây dựng hàm xếp hạng: tiến hành training trên tập dữ liệu đã có bằng thuật toán ListNet trong tự viện RankLib 2.7

Thu thập dữ liệu phim

Tất cả dữ liệu sẽ được thu thập từ nhiều trang web và thông tin người dùng thông qua hệ thống crawler và tìm kiếm của Cốc Cốc, hoạt động hàng ngày để cập nhật dữ liệu mới Bộ phân tích sử dụng Jsoup để bóc tách dữ liệu HTML, cho phép chọn các thẻ và thuộc tính bằng cú pháp CSS, sau đó lưu trữ vào cơ sở dữ liệu Hệ thống cũng sẽ trích xuất thông tin từ trang web IMDb (Internet Movie Database) để thu thập dữ liệu phim, ví dụ như thông tin chi tiết về một bộ phim từ liên kết http://www.imdb.com/title/tt2193021/.

Hình 5-2 Thông tin phim trên trang IMDb

IMDb là một trang web trực tuyến nổi tiếng, hoạt động như một thư viện thông tin chi tiết về các tác phẩm điện ảnh và truyền hình Trang web này không chỉ cung cấp đánh giá và xếp hạng cho các bộ phim dựa trên kịch bản, đạo diễn, bối cảnh, hiệu ứng hình ảnh và kỹ thuật quay phim, mà còn được xem là một nguồn uy tín cho các tín đồ của nghệ thuật thứ 7 Ngoài việc phê bình các tác phẩm điện ảnh, IMDb còn đánh giá các chương trình truyền hình, ngôi sao và nhà sản xuất phim, tạo nên một cộng đồng yêu thích và tin tưởng vào thông tin mà nó cung cấp.

Thông tin trên trang IMDb bao gồm tên phim, năm sản xuất, đạo diễn, diễn viên, nội dung phim, thể loại và điểm số rating.

Bước này thu thập được 117.094 thông tin phim IMDb dữ liệu ban đầu được chứa vào cơ sở dữ liệu MySQL, và được chứa theo định dạng sau

Bảng 5-3 Định dạng trường dữ liệu thông tin phim IMDb trong cơ sở dữ liệu

The article provides a structured overview of a film, including essential details such as the title, description, IMDb identification, director, genre, and poster link It also includes the film's name, a brief outline of the plot, release year, release date, and actor information Additionally, it highlights the runtime, total rating count, and average rating of the film, ensuring a comprehensive understanding for readers.

Dưới đây là một vài thông tin phim đã thu thập được

Hình 5-3 Dữ liệu IMDb trong cơ sở dữ liệu Mysql b Thu th ậ p d ữ li ệ u trên trang chi ế u phim tr ự c tuy ế n

Hệ thống crawler của Cốc Cốc sẽ thu thập dữ liệu từ các trang chiếu phim trực tuyến hàng ngày, đảm bảo cung cấp thông tin cập nhật từ nhiều domain khác nhau.

Bộ phim "Mũi Tên Xanh Phần 5" đã được phân tích từ HTML của các trang web, với thông tin chi tiết được trích xuất từ trang “http://www.phimmoi.net/phim/mui-ten-xanh-phan-5-4268/”.

Hình 5-4 Dữ liệu thông tin phim trên trang phimmoi.net

Dữ liệu thông tin thu thập về được lưu trữ vào cơ sở dữ liệu MySQL theo bảng dưới đây

Bảng 5-4 Định dạng trường dữ liệu dữ liệu phim trực tuyến trong cơ sở dữ liệu

The article provides essential details about a film, including the school's name, a description, an ID for identification, the director, genre, poster image link, IMDb ID, outline, release year, release date, actors, runtime, Vietnamese title, and English title.

Bước này thu thập được 213.253 dữ liệu mẫu cho phim online và được mô tả dưới đây

Hình 5-5 Thông tin được trích xuất trong trang phim trực tuyến.

Thu thập lịch sử click của người dùng

Dữ liệu thu thập được khi hệ thống hoạt động là một tham số quan trọng trong vector đặc điểm để huấn luyện mô hình Thông tin lịch sử bao gồm các yếu tố như truy vấn, định danh người dùng, liên kết phim đã được nhấp chuột và hạng mục đã được click.

Trước khi hệ thống chính thức hoạt động, thông tin sẽ được thu thập từ hệ thống tìm kiếm của Cốc Cốc, nhằm trích xuất dữ liệu về lượt click của người dùng từ các trang phim đã được xác định trước.

Hình 5-6 Mô hình lưu trữ lịch sử của người dùng

Mô hình query log của hệ thống tìm kiếm tại Cốc Cốc được phân loại theo chủ đề phim, với query log là dữ liệu quan trọng ghi lại hành vi người dùng qua các truy vấn Dữ liệu này không chứa quảng cáo và được hiển thị trực tiếp cho người sử dụng, đồng thời cũng phục vụ cho việc huấn luyện và đánh giá Thông tin về query log được tổng hợp hàng tuần và lưu trữ theo sơ đồ đã định.

Dữ liệu huấn luyện được xây dựng từ lịch sử ba tháng của log truy vấn người dùng, được lọc theo nội dung truy vấn và liên kết tài liệu để xác định tính chất truy vấn thông tin phim trực tuyến Qua quá trình trích chọn, đã thu được 583,129 truy vấn dữ liệu click, và dữ liệu này được lưu trữ theo định dạng đã chỉ định.

Bảng 5-5 Các trường dữ liệu được đánh chỉ mục của lịch sử click của người dùng

Tên trường bao gồm: Miêu tả, query_id (định danh truy vấn), user_id (định danh người dùng), link (liên kết được click), order (hạng của liên kết) và time (thời gian được click).

Đánh chỉ mục cho dữ liệu

Tất cả thông tin phim, dữ liệu IMDb và lịch sử click của người dùng được thu thập và đánh chỉ mục vào hệ thống Elasticsearch Quá trình này sử dụng thư viện Elasticsearch-Jdbc để chuyển đổi dữ liệu từ cơ sở dữ liệu MySQL đến một cụm máy chủ Elasticsearch.

Elasticsearch indexing processes are executed using the same configuration on a single server and across two servers simultaneously.

Hình 5-7 Cấu hình đánh chỉ mục từ Mysql sang cụm ElasticSearch

Sau bước này toàn bộ dữ liệu được đánh chỉ mục lên Elasticsearch và có thể tìm kiếm dùng các API tìm kiếm của Elasticsech

Hình 5-8 Dữ liệu được đánh chỉ mục lên Elasticsearch

Trích xuất dữ liệu huấn luyện

Dữ liệu huấn luyện được thu thập từ lịch sử click nhằm thể hiện mối liên hệ giữa truy vấn và hành vi click của người dùng Chúng tôi sẽ lọc ra các truy vấn và click liên quan đến chủ đề phim trực tuyến, sắp xếp theo số lượng click để đảm bảo tính chính xác và hiệu quả.

Ví dụ như truy vấn phim “quá nhanh quá nguy hiểm”

Bảng 5-6 Dữ liệu huấn luyện cho mô hình

1 http://hdonline.vn/phim-qua-nhanh-qua-nguy-hiem-7-

2 http://phim3s.net/phim-le/qua-nhanh-qua-nguy-hiem-

3 http://www.phimmoi.net/phim/qua-nhanh-qua-nguy- hiem-5-70/?utm_source=CocCoc

Sau khi trích xuất thông tin từ hạng tài liệu liên quan đến các truy vấn, chúng tôi tiến hành lấy vector đặc trưng để sử dụng làm dữ liệu huấn luyện Kết quả thu được là 583,129 truy vấn dữ liệu, thể hiện mối quan hệ giữa truy vấn của người dùng và các liên kết trang web được nhấp vào.

Trích xuất vector đặc trưng cho mô hình

Vector đặc trưng trong mô hình huấn luyện bao gồm các giá trị điểm số được tính toán dựa trên truy vấn và tài liệu Các thuộc tính của vector đặc trưng được trình bày chi tiết trong bảng dưới đây.

Bảng 5-7 Bảng mô tả vector đặc trưng cho mô hình học máy xếp hạng

Số thứ tự Mô tả

1 IDF của tiêu đề phim

2 Độ dài của tiêu đề phim

3 Điểm số BM25 của truy vấn và tiêu đề phim

4 IDF của nội dung phim

5 Độ dài của nội dung phim

6 Điểm số BM25 của truy vấn và nội dung phim

7 Hạng trang web của tài liệu

8 Hạng của domain gốc của tài liệu

9 Điểm số IMDB của tài liệu

10 Tổng số lượt click của tài liệu

11 Thời gian sản xuất phim (Năm hiện tại – Năm sản xuất)

Tại bước này, chúng tôi thu thập dữ liệu truy vấn của người dùng và thứ tự xếp hạng các truy vấn xem phim trên hệ thống tìm kiếm Cốc Cốc Dữ liệu lịch sử bao gồm tên truy vấn, liên kết được nhấp và số lượng nhấp chuột Để xác định truy vấn nào là liên quan đến phim, chúng tôi dựa vào hai tiêu chí chính.

Tiêu để truy vấn: Tiêu đề của truy vấn là những truy vấn mà xuất hiện trong cơ sở dữ liệu phim đã được đánh chỉ mục trong Elasticsearch

Liên kết được click: Các domain trong các liên kết được click phải nằm trong các trang web xem phim online như sau

Hình 5-9 Lịch sử click của người dùng

Sau khi phân tích các truy vấn xem phim và sắp xếp chúng theo thứ tự lượt click của người dùng, chúng ta có thể tạo ra danh sách các liên kết phim liên quan Tham số đầu vào cho mô hình huấn luyện được định nghĩa rõ ràng.

Độ liên quan giữa truy vấn và liên kết phim được xác định thông qua ID của truy vấn và ID của liên kết phim, cùng với 11 thuộc tính tính toán dựa trên truy vấn và liên kết phim gốc Bảng vector đặc trưng giữa truy vấn và liên kết phim sẽ được mô tả theo thứ tự chỉ số đã nêu.

Hình 5-10 Vector đặc trưng giữa truy vấn và liên kết phim

Sau khi thu thập bảng vector đặc trưng giữa truy vấn và liên kết phim, chúng ta sẽ tiến hành huấn luyện mô hình Mô hình này sẽ áp dụng thuật toán ListNet từ thư viện RankLib, với các tham số huấn luyện có thể tham khảo tại [đây](https://sourceforge.net/p/lemur/wiki/RankLib%20How%20to%20use/#eval).

Xây dựng hệ thống xếp hạng và tính toán song song

Sau khi hoàn thành huấn luyện mô hình học máy, bước tiếp theo là tích hợp mô hình vào hệ thống tìm kiếm phim trực tuyến Mỗi khi người dùng gửi truy vấn, hệ thống sẽ chuyển tiếp đến bộ tìm kiếm thô, sử dụng Apache Spark để thực hiện truy vấn và tìm kiếm song song trong Elasticsearch, nhằm thu thập 500 kết quả hàng đầu trên mỗi máy.

Sau khi dữ liệu được đánh chỉ mục trong Elasticsearch, người dùng có thể tìm kiếm theo tên tiếng Việt, tên tiếng Anh, nội dung và thể loại phim Cú pháp truy vấn cho cụm từ "quá nhanh quá nguy hiểm" sẽ giúp truy xuất thông tin liên quan đến bộ phim này một cách hiệu quả.

Sau khi gửi mẫu truy vấn này đến bộ phân tích truy vấn của Elasticsearch, chúng ta có thể thu thập được danh sách các bộ phim như dưới đây.

Sau khi thu thập được top 500 kết quả, chúng ta sẽ tiến hành trích xuất vector đặc trưng và đưa vào mô hình học máy xếp hạng Listnet đã được tính toán trước đó Kết quả cuối cùng sẽ được gửi đến người dùng thông qua Json Web Service.

Hình 5-11 Dữ liệu trả về từ service tìm kiếm phim trực tuyến tại Cốc Cốc

Kết quả thực nghiệm

Kết quả thực nghiệm cho thấy chức năng tìm kiếm riêng biệt hóa trên trình duyệt Cốc Cốc giúp người dùng nhanh chóng truy cập nội dung phim, bao gồm tiêu đề tiếng Anh, tiếng Việt, năm sản xuất và liên kết xem phim trực tuyến Tính năng này sử dụng mô hình học máy xếp hạng để trực quan hóa và sắp xếp tất cả các bộ phim Dưới đây là minh họa cho truy vấn phim.

“nhiệm vụ bất khả thi” http://coccoc.com/search#query=nhiệm vụ bất khả thi

Chức năng tìm kiếm phim trực tuyến là một công cụ hữu ích giúp người dùng dễ dàng tìm kiếm thông tin về nội dung phim và chọn lựa giữa các nhà cung cấp phim đã được xếp hạng Để đánh giá hiệu quả của mô hình xếp hạng bằng tính toán song song, nghiên cứu sẽ thực hiện hai phần đánh giá: một là so sánh thời gian thực thi và hai là so sánh chất lượng của phương pháp xếp hạng.

Hiệu năng

Để so sánh hiệu quả thời gian, tôi đã tiến hành các bước thực nghiệm trên một máy đơn và ba máy tính với thông số cụ thể Kết quả của quá trình thực nghiệm này được trình bày dưới đây.

Bảng 5-8 Bảng đánh giá hiệu quả về mặt thời gian

Công việc thực hiện Một máy tính

Ba máy tính Đánh chỉ mục dữ liệu cho 117.094 bản ghi IMDb, 213.253 phim online, 583,129 truy vấn dữ liệu click 32 phút

Huấn luyện mô hình 230.000 truy vấn và tài liệu 2h 30phút 44 phút

Chạy 930.321 truy vấn của người dùng 45 phút

Bảng kết quả cho thấy rằng ba máy tính đã cải thiện đáng kể tốc độ xử lý nhờ vào việc tận dụng sức mạnh tính toán đồng thời Mô hình này cũng cho phép kết nối thêm nhiều máy tính khác, giúp giảm thời gian chạy hoặc tăng cường khối lượng tính toán.

Chất lượng xếp hạng

Hệ thống tìm kiếm mới của Cốc Cốc đã tích hợp mô hình chạy, cho phép bổ sung giao diện trực quan hóa Nhờ đó, người dùng dễ dàng tìm kiếm và lựa chọn bộ phim phù hợp nhất thông qua các dữ liệu được hiển thị.

Hình 5-13 Hệ thống tìm kiếm phim online trên Cốc Cốc

Hệ thống tìm kiếm phim đã cải thiện đáng kể về tốc độ và chất lượng, đặc biệt là chỉ số CTR (Click through Rate), sau khi áp dụng mô hình xếp hạng mới và giải pháp tính toán song song Biểu đồ dưới đây thể hiện chức năng tìm kiếm với truy vấn “diep vien 007” và bảng thống kê chỉ số CTR trước và sau 10 ngày triển khai mô hình mới.

Bảng 5-9 Tỉ lệ CTR trước vào sau khi áp dụng mô hình

Kết quả trước và sau 10 ngày Số lần hiển thị Số lần nhấp chuột CTR

Trước khi áp dụng mô hình

Sau khi áp dụng mô hình

Kết quả từ việc xây dựng và đánh giá mô hình thực nghiệm cho thấy rõ rệt hiệu quả về thời gian khi áp dụng phương pháp tính toán song song Đồng thời, chất lượng tìm kiếm cũng được cải thiện đáng kể, với tỷ lệ CTR tăng từ 8,57% lên 12,3% khi triển khai mô hình mới tại máy tìm phim.

Tính toán song song đang trở thành xu hướng công nghệ được chú trọng, giúp xử lý khối lượng dữ liệu lớn trên nhiều máy tính khác nhau Điều này không chỉ đáp ứng nhu cầu ngày càng tăng của người dùng mà còn mở rộng khả năng tính toán và khả năng chịu lỗi.

Bài luận này tập trung vào vấn đề học máy xếp hạng và nghiên cứu, giới thiệu một mô hình mới nhằm cải thiện chất lượng của công cụ tìm kiếm Cốc Cốc.

Luận văn đã được những kết quả:

• Đưa ra cái nhìn tổng quát về bộ máy tìm kiếm và các thành phần bên trong một bộ máy tìm kiếm

• Trình bày các mô xếp hạng truyến thống và học máy xếp và các phương pháp đánh giá chất lượng của mô hình xếp hạng

• Tìm hiểu nghiên cứu Apache Spark và Elasticsearch hai phần mềm mã nguồn mở cho lưu trữ và tính toán song song

Mô hình xếp hạng phim trực tuyến tại Cốc Cốc được thiết kế với khả năng mở rộng và tính toán song song, nhằm nâng cao chất lượng nội dung và cải thiện tỷ lệ nhấp chuột (CTR).

• Hướng phát triển tiếp theo:

• Tiếp tục tham khảo nhiều thuật toán học máy xếp hạng khác để so sánh và nâng cao chất lượng tìm kiếm hơn nữa

• Áp dụng mô hình cho nhiều máy tìm kiếm chuyên biệt tại Cốc Cốc như tìm kiếm tin tức, sản phẩm mua sắm

Ngày đăng: 17/12/2023, 02:16