Chúng ta có thể đã gặp ứng dụng của hệthống này khi qua các trang Amazon, Netflix, Vinabook, Tiki … Ngoài nội dung mà bạn đang xem, các trang nói trên còn hiển thị các nội dung liên quan
CƠ SỞ LÝ THUYẾT
Hệ thống gợi ý
1.1.1 Hệ thống gợi ý là gì?
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
Nội dung liên quan nói trên chính là các gợi ý, là kết quả được tính toán dựa trên việc thu thập dữ liệu về người dùng như khi mua hàng, khi đưa ra các đánh giá cá nhân hoặc dựa trên mối quan hệ giữa người dùng và món hàng, hay giữa các món hàng với nhau Việc thực hiện tính toán được xây dựng trên các thuật toán Học máy (Machine Learning), đưa ra các dự đoán tốt nhất về sản phẩm mà người dùng có thể thích, giúp gia tăng số lượng sản phẩm bán được.
1.1.2 Sự quan trọng của hệ thống gợi ý
Hệ gợi ý được xác định ở đây chính là kĩ thuật của trí tuệ nhân tạo, được nghiên cứu để cung cấp những gợi ý tự động tới người dùng hoặc khách hàng. sự bùng nổ của Internet như thời đại hiện nay, thương mại điện tử này càng phát triển Với mạnh mẽ Người mua và người bán không cần đến gặp gỡ trực tiếp, mà họ giao dịch với nhau qua trang web Việc tích hợp các kĩ thuật gợi ý (Recommender Systems) trong các website bán hàng như 1 chuyên gia tư vấn, dự đoán thông minh sở thích của khách hàng và cung cấp những thông tin mà họ thực sự quan tâm Các kỹ thuật gợi ý đã và đang được nghiên cứu, ứng dụng mạnh mẽ mang lại lợi ích cho cả người cung cấp và sử dụng dịch vụ Nếu quảng cáo sản phẩm tới đúng người dùng, khả năng các món hàng được mua sẽ nhiều hơn Nếu gợi ý một video mà đúng sở thích của người dùng hoặc gợi ý kết bạn đúng đối tượng, họ sẽ ở lại bên nên nền tảng của bạn lâu hơn Khi đó, lợi nhuận từ phía quảng cáo sẽ tăng lên.
Hệ thống gợi ý mang lại nhiều mục đích to lớn cho doanh nghiệp, bao gồm:
Khả năng đưa ra các dịch vụ cá nhân hóa, hướng tới từng đối tượng khách hàng cụ thể
Tăng mức tín nhiệm và trung thành của khách hàng
Tăng doanh thu, tăng tỉ lệ chuyển đổi của khách hàng Thêm hiểu biết về khách hàng
Có rất nhiều ứng dụng liên quan đến tích hợp hệ thống gợi ý vào thực tế trong nhiều lĩnh vực khác nhau, như của Amazon, Ebay, Youtube, Netflix,LastFM, …
Trên các trang thương mại điện tử, hệ hống gợi ý đóng vai trò như một chuyên gia thông minh hỗ trợ khách hàng trong quá trình tìm và chọn mua sản phẩm Amazon được coi là một trong những hệ thống gợi ý tiên phong, đặc biệt trong thương mại và hệ thống gợi ý đã sử dụng rất thành công ở Amazon Hệ thống này sử dụng đánh giá của người dùng, hành vi của người dùng và lịch sử hoạt động để làm dữ liệu dự đoán Ratings ở Amazon có thang điểm từ 1 đến 5, còn lịch sử mua hàng và lịch sử hoạt động có thể dễ dàng được thu thập bằng khi mà user thực hiện đăng nhập trên trang web của Amazon Những gợi ý cho người dùng được hiển thị trên trang chủ của Amazon, ngay khi người dùng truy cập vào trang web Trong nhiều trường hợp, những items được gợi ý cũng được giải thích, ví dụ như trong mối quan hệ của sản phẩm được gợi ý với những sản phẩm mà user đã mua trước đó Ngoài ra, một số trang thương mại điện tử khác như Shopee, Lazada, Tiki, … cũng đã ứng dựng rất tốt hệ thống gợi ý để đưa ra những sản phẩm gợi ý cho khách hàng.
Last.fm là một trang web (hệ thống) gợi ý bài hát nổi tiếng trên thế giới. Dựa trên các xếp hạng mà người dùng đã cho trên các bài hát trong quá khứ, hệ thống gợi ý có những bài hát kế tiếp mà người dùng dự doán là sẽ thích chúng. Ở Việt Nam cũng có rất nhiều trang nghe nhạc trực tuyến có tích hợp kĩ thuật gợi ý như: zingmp3.vn, nhccuatui.com, nhacso.net, … tuy nhiên phần lớn các hệ thống này gợi ý dạng không cá nhân hóa, nghã là gợi ý dựa vào các bài hát cùng ca sĩ, cùng thể loại, …
Hệ thống gợi ý cũng được ứng dụng vào để đưa ra các gợi ý các bộ phim,các video cho khách hàng Một trong các hệ thống gợi ý phim nổi tiếng trên thế giới là Netflix.com Hệ thống này cũng dựa trên các đánh giá, các tương tác trong quá khứ để dự đoán sở thích của người dùng trên các bộ phim mà họ chưa xem.
Facebook thường gợi ý cho chúng ta kết bạn với những người mà chúng ta có thể quen, nhằm mục đích tăng số lượng kết nối trên mạng xã hội Kiểu gợi ý này với mục tiêu có chút khác biệt so với hệ thống gợi ý sản phẩm Trong khi hệ thống gợi ý sản phẩm trực tiếp tạo ra lợi nhuận cho người cung cấp dịch vụ bằng cách tăng doanh số sản phẩm bán được, thì trong mạng xã hội, việc gợi ý kết bạn nhằm tăng số lượng kết nối trên mạng xã hội và từ đó nâng cao trải nghiệm của người dùng Cùng với việc tăng được số lượng kết nối, lợi nhuận thu được từ việc quảng cáo cũng sẽ tăng lên.
Gợi ý bài viết, tin tức
Các cổng tin tức phổ biến như Google News, Yahoo News, The New YorkTimes, cùng với nhiều cổng thông tin khác đã thu hút được sự chú ý ngày càng tăng của độc giả trên Internet Các hệ thống gợi ý tin tức trực tuyến đã được các nhà nghiên cứu đề cập đến trong những năm qua, bằng cách sử dụng các phương pháp khác nhau.
Mô hình hóa chủ đề văn bản
LSA (Latent Semantic Allocation) [4] là viết tắt của phân tích ngữ nghĩa tiềm ẩn, là một trong những kĩ thuật nền tảng được sử dụng trong mô hình hóa chủ đề Có thể hiểu, phân tích ngữ nghĩa là đưa rả cách “hiểu” văn bản qua mối liên quan ngữ nghĩa của văn bản với tập khái niệm cho trước Khái niệm là ý chung và trừu tượng về một vật, do hoặt động của trí tuệ nhân tạo nên qua các kinh nghiệm đúc kết thành Các khái niệm này được biểu thị nghĩa thông qua tập từ khóa sử dụng trong nó Ví dụ, khi nói đến “bệnh viện” thì ta nghĩ ngay đến bác sĩ, y tá, bệnh nhân, thuốc, v.v… Ý tưởng của phương pháp là từ một ma trận tài liệu và các thuật ngữ, và phân tách nó thành hai ma trận riêng biệt:
Một ma trận document – topicMột ma trận topic – term
Hình 2: Tổng quan mô hình LSA
Bước 1: Tạo ma trận A - Ma trận document - term
Bỏ qua trật tự xuất hiện của các từ, tập tài liệu D = { d 1, d 2, …, d n } chứa tập từ W = { w 1, w 2, …, d m } Giá trị phần tử a ij của ma trận chính là chỉ số tf- idf của từ w j trong tài liệu d i
Hình 3: Ma trận documents – term
Trong đó, các chỉ số trong ma trận được tính bằng điểm tf – idf
Hình 4: tf-idf cho giá trị trong ma trận trận documents – term
Bước 2: Áp dụng SVD - phân tích ma trận gốc thành 3 ma trận với số chiểu nhỏ hơn.
A = [a ij ]: Ma trận document - term, trong đó a ij là trọng số của từ j trong tài liệu i.
U: Ma trận document - topic, là ma trận trực giao theo cột thỏa mãn
V: Ma trận term - topic, ma trận trực giao theo cột thỏa mãn V T xV= I
S: Ma trận chéo chứa các trị riêng của A
Hình 5: Phân tích ma trận gồm m documents và n từ thành k topic
LDA (Latent Dirichlet Allocation) [8] là mô hình thuộc lớp mô hình sinh xác suất của một bộ văn bản Ý tưởng cơ bản của mô hình là mọi văn bản được biểu diễn bởi một hỗn hợp các chủ đề, mỗi chủ đề được đặc tả bởi phân phối của các nhóm từ.
Hình 6: Mọi tài liệu bao gồm một phân phối các chủ đề 1
Hình 7: Mỗi chủ đề được đặc trưng bởi sự phân bố các từ 2
LDA dựa trên ý tưởng: Mỗi tài liệu là sự trộn lẫn của nhiều chủ đề(topic).
Về bản chất, LDA là một mô hình Bayesian 3 cấp (three- level hierarchical Bayes model: copus level, document level, word level) trong đó mỗi phần của mô hình được coi như là một mô hình trộn hữu hạn trên cơ sở tập các xác suất chủ đề.
1 https://www.youtube.com/watch?v=DWJYZq_fQ2A
2 https://www.youtube.com/watch?v=DWJYZq_fQ2A
Hình 8: Tài liệu với chủ đề ẩn 3 Ước lượng tham số cho mô hình LDA: Cho một corpus của M tài liệu biểu diễn bởi D = {d 1 , d 2 , …, d m }, trong đó, mỗi tài liệu m trong corpus bao gồm nxm, từ w i rút từ một tập từ vựng của các mục từ {t 1 , t 2 , …, t v }, V là số lượng các mục từ t trong tập từ vựng LDA cung cấp một mô hình sinh đầy đủ chỉ ra kết quả tốt hơn các phương pháp trước Quá trình sinh văn bản như hình vẽ sau:
Hình 9: Ước lượng tham số cho tập dữ liệu
- Các khối vuông biểu diễn quá trình lặp Như vậy ta có thể thấy có 2 quá trình lặp lại liên tục trong LDA là quá trình lựa chọn topic và quá trình lựa chọn từ Các tham số được khởi tạo tiến trình ban đầu là α và β Từ đó tính toán được phân phối hỗn hợp của topic θ⃗ m và phân phối của từ theo topic w mn
3 https://medium0.com/m/the-complete-guide-for-topics-extraction-in-python-a6aaa6cedbbc
- Tham số đầu vào gồm α và β: α: là tham số của phân phối tiên nghiệm Dirichlet của topic đối với mỗi văn bản. β: là tham số của phân phối tiên nghiệm Dirichlet của topic đối với mỗi từ. θ ⃗ m: phân phối của topic trong document thứ m
Z m, n : là topic của từ thứ m đối với văn bản thứ n Là một số nguyên có giá trị trong khoảng [1, k]
W m, n : là vị trí trong từ điển của từ thứ n thuộc văn bản m Giá trị là một số nguyên trong khoảng [1, V]. φ⃗ k : phân phối của các từ được sinh ra từ topic z m, n m : số lượng các tài liệu
N m : số lượng các từ trong tài liệu thứ m K: số lượng các topic ẩn
- LDA sinh ra một tập các từ w m, n cho các văn bản ⃗ d m bằng cách: Với mỗi văn bản m, sinh ra phân phối topic θ ⃗ m cho văn bản Với mỗi từ z m, n được lấy mẫu dựa vào phân phối topic trên.
Với mỗi topic index z m, n dựa vào phân phối φ⃗ k , w m, n được sinh ra φ⃗ k : được lấy mẫu một lần cho toàn bộ corpus.
- Trong mô hình LDA biến duy nhất nà chúng ta quan sát được là các từ w mn, các biến còn lại đều là những nhân tố ẩn được sinhh ra từ các phân phối xác định. Trong đó quan trọng nhất là một phân phối tiên nghiệm Dirichlet được sử dụng để mô hình hóa các cặp topic - word Phân phối của một topic qua các từ thường có skew lớn (phân phối dạng nhọn, đuôi mỏng) để xác xuất tập trung vào một nhóm nhỏ các từ.
- Ta cũng có thể coi rằng θ⃗ m và φ⃗ k tương tự như những ma trận được tạo ra từ phép phân tích suy biến từ ma trận document – word ở thuật toán LSA.
Cơ sở lý thuyết
Cosine similarity [1] là một cách đo độ tương tự giữa 2 vectơ khác không của một không gian tích vô hướng Độ đo tương tự này được định nghĩa bằng giá trị cosine của góc giữa hai vectơ, và cũng là tích vô hướng của cùng các vectơ đơn vị.
Cosine của hai vectơ khác không được suy ra bằng cách sử dụng công thức tích vô hướng Euclid:
A.B = ¿∨| A |∨⋅∨| B |∨⋅ cos (θ) Cho hai vectơ chứa các thuộc tính, A và B, độ tương tự cosine, cos(θ),), được thể hiện bằng tích vô hướng và độ lớn là n
A ⋅ B ∑ A similarity = cos(θ),) = i=1 n ¿| A |∨⋅∨| B |∨¿¿ √ ∑ i=1 A i với A i và B i là thành phần của vectơ A và B tương ứng. Độ tương tự có giá trị −1 có nghĩa là trái nghĩa hoàn toàn, với giá trị 1 nghĩa là giống nhau hoàn toàn, với 0 có nghĩa là trực giao hay tương quan
(decorrelation), trong khi các giá trị ở giữa biểu thị sự giống nhau hoặc không giống nhau ở mức trung gian.
1.3.2 SVD Ý tưởng đằng sau SVD [7] vô cùng đơn giản, Một ma trận A m, n bất kỳ đều có thể phân tích thành dạng:
A m, n =U m ,m Σ m,n (V ¿¿ n ,n) T ¿ trong đó U ,V là các ma trận trực giao, Σ là ma trận đường chéo với các phần tử trên đường chéo σ 1 ≥ σ 2 ≥ σ 3 ≥ … ≥ σ r ≥ 0 với r là rank của ma trận A Số lượng các phần tử khác 0 trong Σ chính là rank của ma trận A :
Dấu bằng thứ 3 xảy ra vì V T V =I do V là 1 ma trận trực giao.
Các tham số σ 2 1 ,σ 2 2 , … chính là các trị riêng của A A T Ma trận A A T luôn là ma trận xác định dương nên các trị riêng của nó là không âm Các σ i là căn bậc hai của các trị riêng của A A T còn được gọi là singular value của A Theo đó phương pháp chung được gọi là Singular Value Decomposition
Mỗi cột của U chính là 1 vector riêng của A A T Ta gọi mỗi cột này là left - singular vectơ của A Tương tự như thế, A T A=V Σ T ΣV T là các cột của V còn được gọi là các right - singular vectơ của A
Bước 1: Tìm trị riêng của ma trận A T A và sắp xếp chúng theo thứ tự giảm dần, kí hiệu là i
Bước 2: Tính số các trị riêng khác 0 của ma trận A T A
Bước 3: Tìm các vectơ riêng trực giao của ma trận A T A tương ứng với các trị riêng i , và sắp xếp chúng theo trật tự tương ứng với các trị riêng dưới dạng các vectơ cột của ma trận V R NxN
Bước 4: Ma trận chéo R MxN chứa p = min{m, n} trị riêng trên đường chéo chính, khi đó i √ λ i
Bước 5: Tính các vectơ cột đầu tiên của ma trận U R MxM theo công thức sau: u i -1 Av i (i = 1, 2, …, r)
Bước 6: Tìm m - r vectơ còn lại của ma trận U bằng cách sử dụng phương pháp chéo hóa trực giao
Mỗi từ trong không gian vectơ sẽ có một trọng số, có nhiều phương pháp xếp hạng khác nhau, nhưng Tf - Idf (term frequency - inverse document frequency) là một phương pháp phổ biến để đánh giá và xếp hạng một từ trong một tài liệu TF - IDF [3] là một kĩ thuật sử dụng trong khai phá dữ liệu văn bản, một phương thức thống kê được biết đến rộng rãi để xác định độ quan trọng của một từ trong đoạn văn bản trong một tập nhiều đoạn văn bản khác nhau Giá trị càng cao thể hiện độ quan trọng cao và nó phụ thuộc vào số lần từ xuất hiện trong văn bản Tf - Idf chuyển đổi dạng biểu diễn văn bản thành dạng không gian vectơ (VSM), hoặc thành những vectơ thưa thớt Công thức tổng quát của phương pháp Tf-Idf:
- Tf (Term Frequency): Là tần suất xuất hiện của một từ trong một đoạn văn bản Với những đoạn văn bản có độ dài khác nhau, sẽ có những từ xuất hiện nhiều ở đoạn văn bản dài thay vì đoạn văn bản ngắn Vì thế, tần suất này thường được chia cho độ dài của đoạn văn bản như một phương thức chuẩn hóa (normalization) Tf được tính bởi công thức:
Tf(t) = f (t T ,d) Với: t là một từ trong đoạn văn bản f (t, d) là tần suất xuất hiện của t trong đoạn văn bản d T là tổng số từ trong đoạn văn bản đó
- Idf (Inverse Document Frequency): Tính toán độ quan trọng của một tà Khi tính toán tần số xuất hiện TF, mỗi từ đều quan trọng như nhau, nhưng còn một số từ thường được sử dụng nhiều nhưng không quan trọng như: “và”, “nhưng”, “vì thế”,
“trong”, trên”, “đó”, … để thể hiện ý nghĩa cho đoạn văn Vì thế, chúng ta cần một phương thức bù trừ những từ xuất hiện nhiều lần và tăng độ quan trọng của những từ ít xuất hiện nhưng có ý nghĩa đặc biệt cho một số đoạn văn bản hơn bằng cách tính Idf:
N: tổng số đoạn văn bản
Tập | tϵ D : tϵd | là số văn bản chứa từ t, với điều kiện t xuất hiện trong văn bản d
CÁC PHƯƠNG PHÁP GỢI Ý
Hệ thống gợi ý dựa trên nội dung
Hệ thống gợi ý dựa trên nội dung (Content - Based Filtering) [9] [10] là phương pháp đánh giá đặc tính của items được “recommend” dựa trên mối quan hệ giữa nội dung các sản phẩm và thông tin người dùng Như tên gọi của phương pháp này, dĩ nhiên nó phụ thuộc vào thuộc tính của các sản phẩm, đặc biệt rất mạnh đối với các sản phẩm giàu nội dung như các sản phẩm thuộc lĩnh vực truyền thông, quảng cáo, y tế Đặc biệt có thể gợi ý các item mới, thích hợp khi danh sách sản phẩm được cập nhật liên tục và giải quyết tốt vấn đề “Item cold start” sẽ được nói kĩ hơn trong phần sau của báo cáo.
Ví dụ: Cách tiếp cận này có thể sử dụng thông tin duyệt lịch sử, chẳng hạn như blog mà người dùng đã đọc và đặc điểm của các blog đó Nếu người dùng thường đọc các bài báo về Linux hoặc có khả năng để lại bình luận trên các blog về kỹ thuật phần mềm, Content - Based Filtering có thể sử dụng lịch sử này để xác định và giới thiệu nội dung tương tự (bài viết trên Linux hoặc các blog khác về kỹ thuật phần mềm) Nội dung này có thể được định nghĩa bằng tay hoặc tự động chiết xuất dựa trên các phương pháp tương tự khác.
Như đã đề cập, thường có hai thực thể chính trong các hệ thống gợi ý là users và items Mỗi user sẽ có mức độ quan tâm tới từng item là khác nhau.
Mức độ quan tâm này nếu đã biết trước, được gán cho một giá trị ứng với mỗi cặp user-item Giả sử rằng mức độ quan tâm được đo bằng giá trị user đánh giá cho item, ta tạm gọi giá trị này là các “rating” Các giá trị rating đó thường gom vào 1 tập (set), nhóm xác định, ví dụ: các user có thể đánh giá từ 1-5 sao cho 1 sản phẩm, dựa trên trải nghiệm người dùng, thông tin mà sản phẩm đó cung cấp. Tập hợp tất cả các ratings, bao gồm cả những giá trị chưa biết cần được dự đoán, tạo nên một ma trận gọi là Utility matrix Thông thường, các ma trận đó là các ma trận sparse (thưa thớt), khi phần lớn không tồn tại các cặp user-item dựa trên rating, hay ngoài trường hợp user cho sao với 1 sản phẩm từ 1-5, sẽ có rất nhiều các sản phẩm khác không hề có các đánh giá từ phía người dùng hay
Bảng 1: Unility Matrix biểu diễn các giá trị "rating" giữa người dùng và sản phẩm
Chú ý rằng, kích thước của ma trận thường rất lớn, ví dụ với 100.000 user và 100.000 sản phẩm sẽ sản sinh ra 1 ma trận unility có kích thước (100.000 x
100.000), 1 số lượng phần tử “rating” tương đối lớn Phần lớn các ô trong ma trận đều bỏ trống, đồng nghĩa với việc người dùng chưa đánh giá sản phẩm đó.
Trong thực tế, ma trận user-item còn thưa thớt hơn rất nhiều, khi mà số lượt rating chỉ là 1 phần rất nhỏ trong tổng số sản phẩm thực tế.
Unitity matrix chính là ma trận trọng số thể hiện mối liên hệ giữa đối tượng A và B Với từng bài toán cụ thể, Unitily matrix là khác nhau và thành phần tạo nên ma trận cũng khác nhau Thông thường, Unitily matrix được tạo thành từ 2 yếu tố là users và items Trong trường hợp khác, Unitily matrix có thể bao gồm 2 thành phần, ví dụ tập các văn bản và tập các từ Trọng số của ma trận thể hiện mức độ quan trọng của từng từ trong từng đoạn văn bản Qua đó, rất phù hợp với những bài toán xử lí ngôn ngữ tự nhiên, ví dụ tìm kiếm sự tương đồng giữa các đoạn văn bản hoặc rút ngắn văn bản nhưng vẫn giữ được nội dung chính (Text Summarization),
Xây dựng Utility Matrix là bước quan trọng nhất để gợi ý sản phẩm tới người dùng Tuy nhiên, dữ liệu đáp ứng đủ để xây dựng Utility Matrix thường khá khó khăn.
Có 2 hướng tiếp cận chính để xác định các giá trị rating cho mỗi cặp user-item:
- Cách thứ 1: Có thể nhờ người dùng “rating” sản phẩm Tuy nhiên, cách này không thực sự hiểu quả với đa phần các hệ thống Recommend System Tuy nhiên, cách tiếp cận của các trang bán hàng trực tuyến rất hạn chế, vì thường người dùng rất ít khi rate sản phẩm Và nếu có, thường đến từ các đánh giá của những người dùng sẵn sàng rate hoặc đánh giá qua loa, đại khái.
Ví dụ: Một số trang thương mại điện tử khuyến khích người dùng đánh giá sản phẩm sau khi họ mua hàng Amazon luôn nhờ người dùng đánh giá các sản phẩm của họ bằng cách gửi các email nhắc nhở nhiều lần. Rất nhiều hệ thống khác cũng làm việc tương tự.
- Cách thứ 2: Là qua hành vi của người dùng Một số các trang cung cấp hay truyền tải nội dung như youtube, facebook, twitter, … thì có vẻ dễ dàng hơn khi đưa ra các rating (like hoặc dislike) cho sản phẩm (các bài post, video, tweet, ).
Ví dụ: Nếu một người dùng mua một sản phẩm trên Amazon, xem một clip trên Youtube (có thể là nhiều lần), hay đọc một bài báo, thì có thể khẳng định rằng ngừời dùng đó thích sản phẩm đó Facebook cũng dựa trên việc chúng ta thích những nội dung nào để hiển thị newsfeed những nội dung liên quan.
Thường thì với cách này, ta chỉ xây dựng được một ma trận với các thành phần là “1” và “0”, với “1” thể hiện người dùng thích sản phẩm,
“0” thể hiện chưa có thông tin Trong trường hợp này, “0” không có nghĩa là thấp hơn “1”, nó chỉ có nghĩa là người dùng chưa cung cấp thông tin Chúng ta cũng có thể xây dựng ma trận với các giá trị cao hơn
“1” thông qua thời gian hoặc số lượt mà người dùng xem một sản phẩm nào đó Đôi khi, nút dislike cũng mang lại những lợi ích nhất định cho hệ thống, lúc này có thể gán giá trị tương ứng bằng “-1” chẳng hạn.
Trong các hệ thống Content-Based, tức dựa trên nội dung của mỗi item, chúng ta cần xây dựng một bộ hồ sơ (profile) cho mỗi item Profile này được
25 biểu diễn dưới dạng toán học là một feature vector (vectơ hóa) Trong những trường hợp đơn giản, feature vector được trực tiếp trích xuất từ item.
Một số phương pháp thường được sử dụng để xây dựng feature vector là:
- Sử dụng biểu diễn nhị phân
Ví dụ: Xem xét các đặc điểm của một bộ cuốn sách mà có thể được sử dụng trong các hệ thống gợi ý
Tên tác giả: 1 số người dùng sẽ có xu hướng quan tâm nhiều hơn tới những những tác giả sách mình yêu thích
Nhà xuất bản: Nhiều người dùng cũng sẽ có xu hướng muốn xem những sách do nhà xuất bản mình yêu thích
Thể loại: là yếu tố rất quan trọng, nhiều người dùng thích đọc các cuốn sách về văn học, 1 số các lại thích đọc sách về trinh thám nhiều hơn,
Tôi thấy hoa vàng trên cỏ xanh 0.9 0
Tôi là Bêtô 0.99 0 Đắc nhân tâm 0.1 1.0
Tuổi trẻ đáng giá bao nhiêu 0 0.9
Books Liên Hoa Hoàng Hiền
Tôi thấy hoa vàng trên cỏ xanh 5 5 0 0
Tuổi trẻ đáng giá bao nhiêu 0 0 5
Bảng 3: Thông tin của users quan tâm tương ứng
Hệ thống gợi ý dựa trên người dùng – lọc cộng tác
Hệ thống gợi ý dựa trên người dùng – lọc cộng tác (Collabroative Filtering) [9] [10] hoạt động dựa trên mô hình là những hành vi của người dùng trước đó như: lịch sử giao dịch, để tìm các quy luật tương tác giữa người dùng (user) và các thông tin (item) Do đó những hệ thống gợi ý dựa trên cách tiếp cận này đều không quan tâm đến các thuộc tính của item, Nó có khả năng khai thác thông tin ngoài phạm vi của các thuộc tính thông tin Mô hình huấn luyện có thể xây dựng dựa trên hành vi của một người dùng, hoặc hiệu quả hơn, nó có thể từ nhiều người dùng khác có cùng đặc điểm Khi làm việc với hành vi của người dùng khác, Collaborative Filtering sử dụng kiến thức nhóm để tạo ra đề xuất dựa trên những người dùng tương tự Về bản chất, nó lọc trên những người có cùng sở thích, hay những người có cùng những hành vi tương tự, cùng bấm like, cho điểm đối với cùng một item Ví dụ, A, B đều thích đọc cuốn sách “Bảy bước tới mùa hè” của nhà văn Nguyễn Nhật Ánh, tức đều rate cho cuốn sách này 5 sao – tương ứng với mức đọ rất hài lòng Ta đã biết A cũng thích tác phẩm “Tôi thấy hoa vàng trên cỏ xanh”, 1 tác phẩm văn học khác và cũng của nhà văn Nguyễn Nhật Ánh, vậy nhiều khả năng B cũng thích bộ phim này.
Khi đó, để xây dựng được hệ thống Collaborative Filtering RS, 1 số câu hỏi được đặt ra là:
- Làm thế nào xác định được sự giống nhau giữa hai users?
- Khi đã xác định được các users gần giống nhau (similar users) rồi, làm thế nào dự đoán được mức độ quan tâm của một user lên một item?
Việc xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ quan tâm của similar users tới item đó còn được gọi là User-User Collaborative
Filtering Có một hướng tiếp cận khác được cho là làm việc hiệu quả hơn là
Item-Item Collaborative Filtering Trong hướng tiếp cận này, thay vì xác định user similarities, hệ thống sẽ xác định item similarities Từ đó, hệ thống gợi ý những items gần giống với những items mà user có mức độ quan tâm cao Cụ thể sẽ được bàn đến trong phần tiếp theo.
Bài toán đặt ra là xác định mức độ tương đồng giữa 2 user, từ đó dẫn tới việc gợi ý những item mà người B có thể thích dựa trên việc item đó đã được mua bởi người A Hiện tại dữ liệu duy nhất là Utility matrix, nên việc xác định sự tương đồng giữa 2 user phải được xem xét qua các vectơ cột của ma trận này.
Books Liên Hoa Hoàng Hiền
Tôi thấy hoa vàng trên cỏ xanh 5 5 0
Tôi là Bêtô ? 4 0 Đắc nhân tâm 0 0 5
Tuổi trẻ đáng giá bao nhiêu 0 0 5
Từ ma trận bên trên, thấy rằng Liên và Hoa có vẻ khá tương đồng với nhau khi cùng rate 5 sao cho “Tôi thấy hoa vàng trên cỏ xanh” và đều rate 0 sao cho 2 tác phẩm cuối Câu hỏi đặt ra bây giờ là làm sao xác định chính xác độ tương đồng bằng con số cụ thể là bao nhiêu. Đặt mức độ giống nhau của 2 user là ¿(u o ,u i ) Để đo giống nhau giữa hai users, cách thường làm là xây dựng feature vector cho mỗi user rồi áp dụng một hàm có khả năng đo độ tương tự giữa hai vectơ đó Việc xây dựng feature vector này khác với việc xây dựng item profiles như trong Content-Based
Recommendation Systems Các vectơ này được xây dựng trực tiếp dựa trên
Utility matrix chứ không dùng dữ liệu ngoài như Item Profiles Với mỗi user, thông tin duy nhất chúng ta biết là các rating mà user đó đã thực hiện, tức cột tương ứng với user đó trong Utility matrix Tuy nhiên, khó khăn là các cột này thường có rất nhiều giá trị trống(mising ratings) vì mỗi user thường chỉ đánh giá một số lượng rất nhỏ các items Cách khắc phục là bằng cách nào đó, giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnh hưởng nhiều tới sự giống nhau giữa hai vector.
Một số ý tưởng để thực hiện các giá trị còn thiếu:
- Thay bằng các giá trị 0: Điều này không thực sự tốt vì giá trị “0” tương ứng với mức độ quan tâm thấp nhất.
- Thay bằng giá trị rating trung bình: Điều này sẽ nảy sinh hạn chế đối với những users dễ tính hoặc khó tính, vì khiến cho việc dự đoán bị lệch đi khá nhiều khi xuất hiện rất nhiều dữ liệu nhiễu, kéo theo accuracy của mô hình bị giảm xuống.
- Một giá trị khác tốt hơn là lấy trung bình cộng của các rating mà user j đã đánh giá: Việc này sẽ tránh được việc user quá dễ tính hoặc khó tính vì khi đó luôn xuất hiện những item mà user có thể sẽ thích hơn so với các item khác nên độ lệch mô hình không quá lớn. u 0 u 1 u 2 u 3 u 4 u 5 u 6 i 0 5 5 2 0 1 ? ? i 1 3 ? ? 0 ? ? ? i 2 ? 4 1 ? ? 1 2 i 3 2 2 3 4 4 ? 4 i 4 2 0 4 ? ? ? 5
Bảng 7: Tính các giá trị trung bình rating của từng user_i
Việc cần làm tiếp theo là làm thế nào để loại bỏ hay thay thế bằng các giá trị nào khác để khiến cho ngữ nghĩa của ma trận là không đổi. u
Bảng 8: Chuẩn hóa Utility matrix Để thực hiện việc đó, trừ đi các giá trị trung bình rating này cho từng cột tương ứng sẽ được 1 ma trận mới gọi là ma trận chuẩn hóa (normalized utility matrix) Nhưng tại sao bước chuẩn hóa này lại quan trọng ?
Thứ nhất : vẫn đảm bảo được tính ngữ nghĩa của ma trận, các giá trị dương biểu thị mức độ khá hài lòng đối với sản phẩm, các giá trị âm biểu thị cho việc không thích hoặc chưa hài lòng về sản phẩm Còn các giá trị = 0 biểu thị cho các item i nào đó chưa được rate bởi user thứ j
Thứ hai : về mặt kĩ thuật, đưa ma trận unility matrix về dạng sparse matrix, nghĩa là phần lớn các phần tử trong ma trận có giá trị = 0 Việc này sẽ rất có giá trị trong việc lưu giữ thông tin khi ta không phải lưu toàn bộ ma trận mà chỉ lưu các vị trí mà tại đó giá trị khác 0 Để thuận lợi cho việc tính toán độ tương tự sau này , thay “?” bằng giá trị “0”, tức item j chưa được rate bởi user j.
=> Sau khi chuẩn hóa dữ liệu trên, 1 vài similarity thường được sử dụng là: Cosine Similarity, Pearson corelation,…
Trong CF, để đánh giá Rating, ta cũng đưa vào tham số k tương tự như k neighbor user trong thuật toán k-nearest neightbors Có 1 điểm cần lưu ý, đó là trong KNN, các trọng số được xác định dựa trên distance giữa 2 điểm và các
33 distance này là các số không âm; còn trong CF, các trọng số được xác định dựa trên similarity giữa 2 user và các trọng số có thể nhỏ hơn 0)
=> Công thức được dùng để dự đoán rating của user u cho item i là:
Trong đó N(u, i) là tập hợp k users trong neighborhood có độ tương tự cao nhất Giả sử muốn tính normalized rating của u 1 cho i 1 với k = 2 ( lấy 2 user gần nhất ).
Bước 1 Xác định các user đã rate i 1 là (u 0 , u 3 , u 5 )
Bước 2 Vector similarity của u 1 với các user này lần lượt là (0.83, -0.40, - 0.23) Vì k = 2 nên ta sẽ lấy 2 giá trị lớn nhất là 0.83 và -0.23 tương ứng với u 0 và u 5
Bước 3 Normalize rating của u 0 ,u 5 với i 1 lần lượt là 0.75 và 0.5
Bước 4 Dự đoán kết quả: y 0.83 x 0.75+(−0.23) x 0.5
Việc quy đổi các rating đã chuẩn hóa về thang 5 có thể được thực hiện bằng cách cộng các cột tương ứng với các giá trị trung bình đã tính được ở hình a) Cuối cùng ta có dự đoán rating của các user với item trong thang 5 như hình d) u 0 u 1 u 2 u 3 u 4 u 5 u 6 i 0 1.75 2.25 -0.5 -1.33 -1.5 0.18 -0.63 i
Bảng 9: Dự đoán các giá trị rating còn thiếu
Cuối cùng, quay lại chuẩn hóa theo thang 5 điểm, tính các giá trị rating của từng user u
Bảng 10: Quay lại các giá trị trung bình rating của từng user_i
Cũng tương tự như phương pháp User-User CF, nhưng ở đây chúng ta tính toán độ tượng tự giữa các item với nhau rồi gợi ý các item gần giống với những item yêu thích của user Vì số lượng phần tử trong Unility matrix trong 2 phương pháp là như nhau nhưng nếu tính theo user thì rất nhiều cột sẽ bị sparse
Hệ thống gợi ý sử dụng phương pháp mô hình hóa chủ đề
2.3.1 Hệ thống gợi ý dựa trên nội dung sử dụng mô hình hoá chủ đề
Việc sử dụng mô hình hoá chủ đề để xây dựng hệ thống gợi ý dựa trên nội dung thay vì chỉ tận dụng TF-IDF thuần túy để trích xuất các vectơ đặc trưng của dữ liệu văn bản cho từng item Mà sử dụng LDA/LSA để lập mô hình các chủ đề của những dữ liệu văn bản này và sử dụng phân phối trên các chủ đề để mô hình hoá Sau đó thực hiện tính độ tương đồng và đưa ra gợi ý.
Việc áp dụng mô hình hoá chủ đề thường áp dụng cho các hệ thống gợi ý giàu nội dung như nội dung bài viết, gợi ý dựa trên tiêu đề, …
Bước 1: Xây dựng mô hình LDA/LSA Bước 2: Xây dựng ma trận phân phối của topic ứng với các item Bước 3: Tính toán độ tương đồng của các item
Bước 4: Chọn ra top k item tương tự và gợi ý
Hình 10: Xây dựng mà trận phân phối topic 4
- Phù hợp với các hệ thống mà quan tâm nhiều tới nội dung như báo chí, văn học, blog, …
- Khắc phục được vấn đề khi biểu diễn tập tài liệu theo mô hình không gian vectơ (hiện tượng sparse và từ đồng nghĩa).
- Việc mô hình hóa chủ đề giúp giảm chiều dữ liệu vì thay vì phải lưu trữ một không gian vectơ có số chiều lớn mà chỉ lưu trữ phân phối của các topic với số lượng topic bé.
- Không tận dụng được thông tin người dùng.
4 https://www.analyticsvidhya.com/blog/2019/07/10-applications-linear-algebra-data-science/
XÂY DỰNG HỆ THỐNG GỢI Ý
Thu thập và xử lý dữ liệu
Dữ liệu là các bài viết trên vilbo với nội dung đa dạng thuộc nhiều chủ đề: công nghệ, khoa học…được lấy bằng cách truy cập API của Vilbo.
Dữ liệu được thu thập tự động bằng script python, tổng số dữ liệu thu thập là 33700 bài viết và được lưu trữ vào cơ sở dữ liệu Mogo DB.
Các trường thông tin cơ bản của bài viết thu thập được bao gồm: tiêu đề bài viết, ID, nội dung, …
Nội dung của bài viết bao gồm văn bản, các đoạn markdown, icon,
Vì mục tiêu của LDA là thực hiện mô hình hóa chủ đề nên chỉ tập trung vào dữ liệu văn bản từ mỗi bài báo và bỏ qua các loại siêu dữ liệu khác, ví dụ: dấu câu, icon, mã HTML, các số, email, …
Trong bộ dữ liệu thu thập được, nội dung được viết dưới dạng markdown - một ngôn ngữ đánh dấu với cú pháp văn bản thô khá đơn giản và dễ hiểu có thể chuyển sang HTML Với cách viết của Markdown, việc xử lý văn bản gặp khó khăn hơn vì không được tổ chức dưới dạng thẻ như HTML mà là các kí tự đặc biệt hay sử dụng nhiều các cú pháp như: dấu nháy dấu gạch ngang dấu sao [] dấu ngoặc vuông () dấu ngoặc tròn
Việc đầu tiên trong quá trình xử lý dữ liệu đó là phải chuyển dữ liệu từ dạng markdown sang HTML rồi tiếp tục xử lý Sau khi chuyển sang HTML, các
5 https://viblo.asia/p/xay-dung-he-thong-goi-y-don-gian-cho-website-viblo-YWOZrgLYlQ0 kí tự đặc biệt bên markdown đã được chuyển sang các thẻ bên HTML như
## Giới thiệu
Giới thiệuChào các bạn tới với series về
Chào các bạn tới với series về Terraform, ở bài trước Terraform, ở bài trước chúng ta đã tìm hiểu về chúng ta đã tìm hiểu về Ansible với Terraform Ở bài Ansible với Terraform Ở bài này chúng ta sẽ tìm này chúng ta sẽ tìm hiểu về cách sử dụng Gitlab CI để hiểu về cách sử dụng Gitlab CI để thiết lập CI/CD thiết lập CI/CD cho infrastructure trên AWS cho infrastructure trên AWS Gitlab CI là một tính
Gitlab CI là một tính năng rất tuyệt vời của Gitlab, nó năng rất tuyệt vời của Gitlab, nó hỗ trợ ta rất nhiều hỗ trợ ta rất nhiều use cases về CI/CD use cases về CI/CD.## Implement GitLab CIĐể
## Implement GitLab CI làm được bài này thì yêu cầu mọi người cần có tài Để làm được bài này thì yêu cầu mọi người cần có tài khoản gitlab trước nhé Ở bài này chúng ta sẽ làm khoản gitlab trước nhé Ở bài này chúng ta sẽ làm một một ví dụ đơn giản là tạo EC2 trên AWS thông qua ví dụ đơn giản là tạo EC2 trên AWS thông qua Gitlab Gitlab CI Ok, giờ ta bắt đầu nào.
CI Ok, giờ ta bắt đầu nào.
### Init
InitĐầu tiên là phần định nghĩa cho toàn bộ Đầu tiên là phần định nghĩa cho toàn bộ Job trong Job trong CI/CD của ta là sẽ dùng image
CI/CD của ta là sẽ dùng image `hashicorp/terraform` hashicorp/terraform để chạy các câu để chạy các câu lệnh terraform lệnh terraform.ymlimage: name:
```yml hashicorp/terraform entrypoint: - "/usr/bin/env" image: - name: hashicorp/terraform "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/ entrypoint: bin:/sbin:/bin"Tiếp theo là phần init
- "/usr/bin/env" provider trước khi ta chạy các câu lệnh plan và
-"PATH=/usr/local/sbin: apply ymlbefore_script: - terraform
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" init
Tiếp theo là phần init provider trước khi ta chạy các câu lệnh plan và apply.
Bảng 16: Chuyển markdown sang text
Tiếp theo là loại bỏ các thành phần không mang nhiều ý nghĩa cho câu và gây nhiễu khi huấn luyện mô hình.
- Phân tích HTML và loại bỏ các thẻ của HTML: Bỏ các thẻ và phần nội dung nằm giữa các thẻ đặc biệt như: , , vì đây là các thẻ được dùng để bọc các đoạn code, command, nên không có nhiều ý nghĩa.
- Loại bỏ các đường dẫn link: Trong bài viết sẽ xuất hiện những đường link không cung cấp nhiều thông tin cho việc huấn luyện mô hình Vì thế, cần loại bỏ để đảm bảo độ chính xác mô hình.
- Loại bỏ các email: Nội dung các bài viết tác giả sẽ thường đính kèm email để người đọc có thể liên hệ, thường không liên quan đến nội dung của bài viết nên cần loại bỏ.
- Loại bỏ các kí tự đặc biệt, các icon: Các kí tự đặc biệt là accs dấu câu như dấu chấm, dấu phẩy, ngoặc vuông, Ta cũng loại bỏ đi những biểu tượng cảm xúc xuất hiện trong bài viết để huấn luyện mô hình.
- Loại bỏ số: Những con số không mang ý nghĩa về mặt nội dung cho việc mô hình hóa chủ đề, vì thế cần loại bỏ chúng.
- Thay thế các kí tự khoảng trắng (bao gồm \n, \t thành ' ' hay loại bỏ nhiều kí tự khoảng trắng liền nhau).
- Chuyển tất cả ký tự hoa về ký tự thường: Viêc đưa dữ liêu về chữ viết thường là rất cần thiết Bởi vì đặc trưng này không có tác dụng ở bài toán mô hình hóa chủ đề Đưa về chữ viết thường giúp giam số lượng đặc trưng (vì máy tính hiểu hoa thường là hai từ khác nhau).
- Loại bỏ stopwords: Là các từ xuất hiện nhiều trong văn nói, văn viết nhưng không mang nhiều ý nghĩa, ví dụ: rằng, thì, là, mà,
Đào tạo mô hình LDA
3.2.1 Xác định số lượng chủ đề cho mô hình
Khi dữ liệu là tập hợp các đoạn văn bản (documents), việc đầu tiên cần làm là xác định số K topics để tiến hành phân phối sau này Mỗi topics sẽ biểu hiện một nội dung khác nhau của văn bản ta cần biết K là gì và chọn số K bao nhiêu là hợp lý.
Tính “Coherence score” trên tập dữ liệu với các giá trị K khác nhau, khi đó Coherence score càng cao thì càng tốt.
Thực hiện tạo mô hình LDA với số lượng chủ đề lần lượt là: 5, 10, 15, 20,
25, 30, 35, 40, 45, 50, 55, 60, 65 Sau đó thực hiện tính Corehence Score và điểm tương đồng Jacard giữa các chủ đề ở mỗi cấp độ chủ đề.
Hình 11: Biểu đồ Coherence score
Sau khi tính toán trên bộ dữ liệu thu thập được, số lượng topic lựa chọn là 45 cho “Coherence score” cao nhất là 0.6384
Bảng 20: Bảng jaccard similarity score
6 https://medium0.com/m/evaluate-topic-model-in-python-latent-dirichlet-allocation-lda- 7d57484bb5d0
7 https://medium0.com/m/tags-recommendation-algorithm-using-latent-dirichlet-allocation- lda-3f844abf99d7
3.2.2 Đào tạo mô hình LDA
Hình 13: Mô hình tổng quan đào tạo mô hình LDA
Trong bước này, chúng ta cần xây dựng từ vựng của kho văn bản, trong đó tất cả các từ độc đáo của kho văn bản được cung cấp index và số lượng tần số của chúng cũng được lưu trữ.
Tạo tập từ vựng (Dictionary) là kiểu dữ liệu ánh xạ (mapping type) Các phần tử trong từ điển được truy xuất qua khóa (key) Key là các từ được đánh số thứ tự từ 0 sao cho mỗi key ứng với một giá trị tương ứng Mỗi key chỉ đại diện cho một giá trị duy nhất. index key
Tạo corpus: Là một danh sách chứa các dữ liệu theo định dạng (thứ tự, số lần xuất hiện).
Input: giới_thiệu chào series terraform ansible terraform gitlab ci thiết_lập cicd infrastructure aws gitlab ci tính_năng tuyệt_vời gitlab ta use cases cicd implement gitlab ci tài_khoản gitlab ví_dụ đơn_giản ec aws thông_qua gitlab ci ok ta gitlab repository chứa code ta repository ta file code file đoạn code đơn_giản ec aws file ta file file chứa câu_lệnh ta cicd toàn_bộ docs file link giải_thích file init định_nghĩa toàn_bộ job cicd ta image chạy câu_lệnh terraform init provider ta chạy câu_lệnh plan apply plan init provider xong ta chạy câu_lệnh plan review resource ta artifacts ta output file ta truyền job job ta lưu toàn_bộ review xuất câu_lệnh plan file ta artifacts truyền job apply apply ta resource apply ta thuộc_tính gitlab ci đoạn job cần_ta approve chạy cache cache terraform state ta thuộc_tính.
Thực hiện đào tạo mô hình LDA với dictionary và corpus bên trên
Sau khi đào tạo mô hình:
Tên topic Từ Trọng số bang 0.0583 van 0.0408
Topic 2 cau 0.0223 hoc 0.0180 đung 0.0099 tra_loi 0.0097 giai_quyet 0.0084
Bảng 23: Topic của mô hình LDA
Xây dựng hệ thống gợi ý bằng LDA
3.3.1 Xây dựng ma trận document - topic
Sau khi dào tạo ta thu được một mô hình LDA với 45 chủ đề Thực hiện tạo ma trận phân phối của 33700 bài viết và 45 topic Thu được ma trận phân phối topic và tổng số bài viết là 33700 x 45.
Hình 15: Ma trận documents – topics
3.3.2 Gợi ý bài viết Ứng với mỗi bài viết người dùng đang lựa chọn, thực hiện xác định phân phối chủ đề của bài viết đó, thu được 1 vector phân phối tương ứng.
Thực hiện tính toán độ tương đồng của vectơ đó với các bài viết khác thông qua ma trận document-topic Độ tương đồng giữa các phân phối được thực hiện bằng khoảng cách Jensen Shannon Khoảng cách Jensen Shannon càng nhỏ thì phân phối có độ tương đồng càng cao Lấy top K chỉ số có khoảng cách nhỏ nhất, truy vấn trong cơ sở dữ liệu và đưa ra gợi ý cho người dùng.
Hình 16: Hệ thống gợi ý bài viết
Kết quả
Tiêu đề 10 từ phổ biến Kết quả
LÀM Test, du_an, tdd, 1 - Chuyện tình Dev - Tester
AUTOMATION huong, may, 2 - Chuyện tình Dev - Tester
TEST một chút, khach_hang, 3 - Các yếu tố hình thành và xây dựng nên ngành IT sẽ KHÁC cung, tien, kiem, một QA. ĐI! trinh_đo 4 - Đôi điều về TDD
5 - Tầm quan trọng của việc trao đổi
53 thông tin giữa Dev và Test Tìm hiểu về File Laravel, tep, 1 - Ví dụ về upload nhiều files trong Upload Laravel luu_tru, truong, Laravel 5.5 cap_nhat, 2 - Phân tích CVE-2019-8942 của xac_thuc, wordpress hinh_anh, tai, 3 - Mất không quá 5 phút để xây dựng luu, anh multi Auth cho web site của bạn với
4 - Danh sách câu lệnh Laravel
5 - Làm thế nào để tải lên nhiều files với Laravel 5.4?
Tìm hiểu bài toán ky_tu, rnn, 1 - Giới thiệu về Connectionist Temporal OCR với CRNN và output, chuoi, Classification (CTC) (Phần 2)
CTC loss - OCR ctc, text, loss, 2 - Nhận diện text trong hình ảnh với from scratch with alignment, anh, CRNN+CTC
PyTorch vector 3 - Giới thiệu về Connectionist Temporal
4 - Tìm hiểu về Automatic Speech Recognition
5 - Vision Transformer for image classification
Bảng 24: Kết quả gợi ý một số bài viết