1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo kho dữ liệu và hệ hỗ trợ quyết Định hệ thống tìm kiếm sản phẩm

22 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Báo Cáo Kho Dữ Liệu Và Hệ Hỗ Trợ Quyết Định Hệ Thống Tìm Kiếm Sản Phẩm
Tác giả Nguyễn Văn Hoàng Khang, Trần Quốc Thắng, Phạm Anh Dũng, Cao Đức Dương
Người hướng dẫn Bùi Tiến Đức
Trường học Đại học Bách Khoa Thành Phố Hồ Chí Minh
Chuyên ngành Khoa Học Máy Tính
Thể loại báo cáo
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 6,31 MB

Nội dung

Mục tiêu: Nghiên cứu này hướng đến các mục tiêu sau: • Xây dựng một hệ thống tìm kiếm sản phẩm mạnh mẽ, có khả năng xử lý các truyvấn phức tạp và không chính xác • Áp dụng các kỹ thuật N

Trang 1

Khoa Khoa Học Và Kỹ Thuật Máy Tính

BÁO CÁO KHO DỮ LIỆU

VÀ HỆ HỖ TRỢ QUYẾT ĐỊNH

Hệ thống tìm kiếm sản phẩm

Chuyên ngành: Khoa học Máy tính

Trang 2

2.1 Vector nhúng (Vector Embeddings) 4

2.2 Cơ sở dữ liệu Vector(Vector Database) 5

2.3 Chỉ mục trong tìm kiếm tương đồng 6

2.3.1 Tìm kiếm tương đồng (Similarity search) 6

2.3.2 Chỉ mục trong similarity search 7

2.3.3 FAISS (Facebook AI Similarity Search) 7

2.4 Kỹ thuật TF-IDF (Term Frequency-Inverse Document Frequency) 10

2.5 Cosine Similarity 11

2.6 Công nghệ và Mô hình 12

3 Thực Nghiệm 14 3.1 Phân tích yêu cầu nghiệp vụ/chức năng người dùng 14

3.2 Tập dữ liệu 14

3.3 Mô tả hiện thực chi tiết (Sử dụng Sentence Embeddings (Sentence-BERT) và Faiss ) 14

3.3.1 Tiền xử lý dữ liệu 14

3.3.2 Tạo vector nhúng (Embeddings) 16

3.3.3 Xây dựng chỉ mục tìm kiếm 16

3.3.4 Truy vấn 17

3.4 Mô tả hiện thực chi tiết (Sử dụng TF-IDF và Cosine Similarity) 19

3.4.1 Tiền xử lý dữ liệu 19

3.4.2 Tạo ma trận TF-IDF 20

3.4.3 Tính toán Cosine Similarity 20

3.4.4 Tìm kiếm và hiển thị kết quả 21

Trang 3

và học máy để hiểu rõ ý định tìm kiếm của người dùng và trả về kết quả phù hợp nhất

về mặt ngữ nghĩa Hệ thống được thiết kế để xử lý hiệu quả lượng dữ liệu sản phẩm lớn,đồng thời cung cấp trải nghiệm tìm kiếm mượt mà và trực quan

Mục tiêu:

Nghiên cứu này hướng đến các mục tiêu sau:

• Xây dựng một hệ thống tìm kiếm sản phẩm mạnh mẽ, có khả năng xử lý các truyvấn phức tạp và không chính xác

• Áp dụng các kỹ thuật NLP tiên tiến, bao gồm Sentence Embeddings và TF-IDF,

để biểu diễn văn bản và so sánh độ tương đồng ngữ nghĩa

• Tối ưu hóa hiệu suất tìm kiếm bằng cách sử dụng các thuật toán tìm kiếm gần nhấthiệu quả, chẳng hạn như Faiss, trên GPU

Phương pháp:

Để đạt được các mục tiêu nêu trên, nghiên cứu sẽ áp dụng các phương pháp sau:

• Tiền xử lý dữ liệu: Làm sạch và chuẩn hóa dữ liệu văn bản, bao gồm loại bỏ ký

tự đặc biệt, chuyển đổi chữ thường và stemming

• Sử dụng Sentence Embeddings (Sentence-BERT) và Faiss: Phương phápnày tập trung vào việc nắm bắt ý nghĩa ngữ nghĩa của truy vấn và tên sản phẩm

Cụ thể, mô hình Sentence-BERT sẽ được sử dụng để chuyển đổi văn bản thànhvector nhúng (embeddings) Sau đó, thư viện Faiss sẽ được sử dụng để xây dựngchỉ mục và thực hiện tìm kiếm gần nhất trên các vector embeddings, giúp tìm kiếmnhanh chóng các sản phẩm có ngữ nghĩa tương đồng với truy vấn

• Sử dụng TF-IDF và Cosine Similarity: Phương pháp này tập trung vào việc

Trang 4

để tạo ma trận trọng số từ, biểu diễn mức độ quan trọng của từng từ trong mỗi sảnphẩm Độ tương đồng cosine sẽ được tính toán giữa vector TF-IDF của truy vấn vàcác vector TF-IDF của sản phẩm để xác định mức độ phù hợp.

Trang 5

2 Cơ sở lý thuyết

2.1 Vector nhúng (Vector Embeddings)

Vector nhúng (vector embeddings) là một khái niệm quan trọng và hữu ích trong họcmáy, đóng vai trò trung tâm trong nhiều thuật toán xử lý ngôn ngữ tự nhiên (NLP), hệthống đề xuất và tìm kiếm Nói một cách đơn giản, vector nhúng là một danh sách các

số thực được sử dụng để biểu diễn dữ liệu, cho phép các thuật toán học máy làm việc vớicác đối tượng trừu tượng như văn bản, hình ảnh, hoặc âm thanh

Các thuật toán học máy thường yêu cầu dữ liệu số để hoạt động Trong khi một số dữliệu có sẵn ở dạng số, thì những dữ liệu khác, chẳng hạn như văn bản, cần được chuyểnđổi thành dạng số Vector nhúng chính là cách để thực hiện việc chuyển đổi này Mỗiđoạn văn bản, hình ảnh, hoặc bất kỳ đối tượng nào khác đều có thể được biểu diễn bằngmột vector nhúng Thậm chí, cả dữ liệu số cũng có thể được chuyển đổi thành vector để

dễ dàng thực hiện các phép toán

Điểm đặc biệt của vector nhúng nằm ở khả năng chuyển đổi sự tương đồng về mặt ngữnghĩa mà con người nhận thức được thành khoảng cách trong không gian vector Khi cácđối tượng và khái niệm trong thế giới thực, chẳng hạn như hình ảnh, bản ghi âm, bài báo,

hồ sơ người dùng, kiểu thời tiết, và quan điểm chính trị, được biểu diễn dưới dạng vectornhúng, sự tương đồng về mặt ngữ nghĩa của chúng có thể được định lượng bằng khoảngcách giữa các điểm tương ứng trong không gian vector

Trang 6

Nhờ khả năng biểu diễn sự tương đồng ngữ nghĩa này, vector nhúng rất phù hợp chocác tác vụ học máy phổ biến như phân cụm, đề xuất và phân loại.

• Phân cụm: Các thuật toán phân cụm nhóm các điểm tương tự vào cùng một cụm,đồng thời giữ cho các điểm từ các cụm khác nhau càng khác biệt càng tốt

• Đề xuất: Khi đưa ra đề xuất cho một đối tượng chưa biết, hệ thống đề xuất sẽ tìmkiếm các đối tượng tương tự nhất với đối tượng đang xét, dựa trên độ tương đồngcủa vector nhúng

• Phân loại: Nhãn của một đối tượng chưa biết được phân loại dựa trên sự đồng thuậncủa các nhãn từ các đối tượng tương tự nhất

Vector nhúng là một công cụ mạnh mẽ cho phép biểu diễn dữ liệu phức tạp dưới dạng

số, giúp cho việc áp dụng các thuật toán học máy trở nên hiệu quả hơn Khả năng biểudiễn sự tương đồng ngữ nghĩa của vector nhúng đóng vai trò then chốt trong nhiều ứngdụng, bao gồm tìm kiếm thông tin, hệ thống đề xuất, và xử lý ngôn ngữ tự nhiên

2.2 Cơ sở dữ liệu Vector(Vector Database)

Vector nhúng (vector embeddings) - một dạng biểu diễn dữ liệu mang thông tin ngữ nghĩaquan trọng, giúp AI hiểu và duy trì bộ nhớ dài hạn để thực hiện các tác vụ phức tạp.Vector nhúng được tạo ra bởi các mô hình AI (như Mô hình Ngôn ngữ Lớn) và có nhiềuthuộc tính hoặc đặc trưng

Thách thức khi làm việc với dữ liệu vector là các cơ sở dữ liệu truyền thống không thểtheo kịp độ phức tạp và quy mô của dữ liệu này, gây khó khăn cho việc tra cứu, tríchxuất thông tin chi tiết và thực hiện phân tích Chính vì vậy, chúng ta cần một loại cơ sở

dữ liệu chuyên biệt được thiết kế riêng cho việc xử lý loại dữ liệu này Vector database

ra đời để giải quyết vấn đề này Chúng được thiết kế để xử lý loại dữ liệu vector và cungcấp khả năng lưu trữ và truy vấn tối ưu cho vector nhúng

Trang 7

Sơ đồ dưới đây giúp chúng ta hiểu rõ hơn về vai trò của cơ sở dữ liệu vector:

Quá trình có thể được tóm tắt như sau:

• Tạo vector nhúng: Sử dụng mô hình nhúng để tạo ra các vector nhúng cho nộidung mà chúng ta muốn lập chỉ mục

• Lưu trữ vector nhúng: Vector nhúng được chèn vào cơ sở dữ liệu vector, với một

số tham chiếu đến nội dung gốc mà vector nhúng được tạo ra

• Truy vấn: Khi ứng dụng đưa ra một truy vấn, cùng một mô hình nhúng được dùng

để tạo vector nhúng cho yêu cầu Vector nhúng này sau đó được dùng để truy vấnvector database, tìm kiếm các vector nhúng tương tự

• Trả về kết quả: Vector database trả về các vector nhúng tương tự nhất, cùng vớitham chiếu đến các nội dung gốc

2.3 Chỉ mục trong tìm kiếm tương đồng

2.3.1 Tìm kiếm tương đồng (Similarity search)

Similarity Search (hay tìm kiếm tương đồng) là việc tìm kiếm các đối tượng "tươngtự" nhất trong một tập dữ liệu lớn "Tương tự" được định nghĩa dựa trên một hàm đo

độ tương đồng (similarity measure) hoặc hàm đo khoảng cách (distance metric) Mụctiêu của Similarity Search là, cho một đối tượng truy vấn, tìm ra K đối tượng gần nhất(K-Nearest Neighbors - KNN) hoặc tìm tất cả các đối tượng nằm trong một bán kínhnhất định xung quanh đối tượng truy vấn (range search) Việc tìm kiếm này trở nên quantrọng khi tập dữ liệu lớn đến mức việc so sánh từng đối tượng truy vấn với mọi đối tượngtrong tập dữ liệu (brute-force) là không khả thi về mặt thời gian

Trang 8

2.3.2 Chỉ mục trong similarity search

Khi số lượng mục cần so sánh lên đến hàng triệu hoặc thậm chí hàng tỷ, tốc độ và độchính xác trở thành thách thức lớn Khi đó, giải pháp hiệu quả nằm ở việc tổ chức dữliệu và xây dựng các công cụ tối ưu hóa, trong đó việc sử dụng các chỉ mục (index) làmột bước quan trọng

Trong Similarity Search dựa trên vector, chỉ mục (index) được sử dụng để lưu trữ cácbiểu diễn vector của dữ liệu mà chúng ta muốn tìm kiếm Các vector này được tạo rathông qua các phương pháp thống kê hoặc học máy

Sau khi xây dựng các vector biểu diễn này, chúng ta lưu trữ chúng trong một chỉ mục.Khi cần tìm kiếm, một vector truy vấn sẽ được so sánh với các vector trong chỉ mục đểtìm ra các kết quả gần nhất

Các thuật toán phổ biến để so sánh và đo độ tương đồng vector gồm:

• Euclidean Distance (L2): Đo khoảng cách giữa hai điểm trong không gian vector

• Inner Product (IP): Đo mức độ tương tự thông qua tích vô hướng

2.3.3 FAISS (Facebook AI Similarity Search)

Faiss (Facebook AI Similarity Search) là một thư viện mạnh mẽ được thiết kế để xử lýSimilarity Search một cách hiệu quả Nó hỗ trợ nhiều loại chỉ mục, cho phép kết hợp hoặcxếp lớp các chỉ mục để đạt hiệu suất tốt nhất Một số chỉ mục phổ biến trong Faiss baogồm:

• Flat Index:

Trang 9

Mô tả: Chỉ mục Flat là loại chỉ mục đơn giản nhất trong Faiss Nó lưu trữ tất cảcác vector mà không có bất kỳ sự sửa đổi hay nén nào Do đó, việc tìm kiếm trênflat index chính là so sánh trực tiếp vector truy vấn với tất cả các vector trong chỉmục.

Ưu điểm: Chất lượng tìm kiếm hoàn hảo do không xấp xỉ hay nhóm vector, đảmbảo kết quả chính xác nhất, luôn trả về đúng K láng giềng gần nhất

Nhược điểm: Tốc độ tìm kiếm chậm do phải so sánh vector truy vấn với mọivector, tỷ lệ thuận với kích thước tập dữ liệu Với tập dữ liệu lớn, thời gian tìmkiếm có thể rất lâu

Hiệu năng: Sử dụng bộ nhớ hợp lý do chỉ lưu trữ vector gốc Tuy nhiên, với tập

dữ liệu rất lớn, bộ nhớ vẫn có thể là vấn đề Tốc độ tìm kiếm chậm, đặc biệt vớitập dữ liệu lớn, phụ thuộc vào phần cứng và số chiều vector IndexFlatIP (innerproduct) thường nhanh hơn IndexFlatL2 (khoảng cách Euclidean) Sử dụng GPUcải thiện đáng kể tốc độ

Khi nào nên sử dụng: Khi ưu tiên chất lượng tìm kiếm tuyệt đối hoặc với tập dữliệu nhỏ (<10K vector) hoặc khi thời gian tìm kiếm không quan trọng Với tập dữliệu nhỏ, thời gian tìm kiếm có thể chấp nhận được, đặc biệt khi dùng phần cứngmạnh

• Inverted File Index - IVF

Mô tả:

Trang 10

– Chỉ mục Inverted File (IVF) sử dụng phương pháp phân cụm để giảm phạm vitìm kiếm Đây là một chỉ mục phổ biến nhờ dễ sử dụng, chất lượng tìm kiếmcao và tốc độ tìm kiếm hợp lý.

– IVF hoạt động dựa trên khái niệm Voronoi diagrams (hay còn gọi là Dirichlettessellation) Không gian vector được chia thành các ô Voronoi, mỗi ô có mộtcentroid (tâm cụm) Mỗi điểm dữ liệu được gán vào ô Voronoi chứa nó.– Khi tìm kiếm, vector truy vấn được so sánh với các centroid để xác định ôVoronoi chứa nó Phạm vi tìm kiếm sau đó được giới hạn trong ô này

– Để giảm thiểu vấn đề này và tăng chất lượng tìm kiếm, ta có thể tăng tham số

‘nprobe‘ ‘nprobe‘ xác định số lượng ô Voronoi được tìm kiếm Tăng ‘nprobe‘

sẽ mở rộng phạm vi tìm kiếm, tăng chất lượng kết quả nhưng cũng làm giảmtốc độ tìm kiếm

Trang 11

Ưu điểm: Chất lượng tìm kiếm cao, tốc độ tìm kiếm tốt, sử dụng bộ nhớ hợp lý.Nhược điểm: Cần phải điều chỉnh tham số ‘nprobe‘ để cân bằng giữa chất lượng

TF-IDF (Term Frequency-Inverse Document Frequency) là một kỹ thuật thống kê dùng

để đánh giá tầm quan trọng của một từ trong một tài liệu thuộc một tập hợp tài liệu

Nó dựa trên nguyên tắc rằng một từ càng xuất hiện nhiều trong một tài liệu (tần suất từ

- Term Frequency) và càng ít xuất hiện trong các tài liệu khác (tần suất nghịch đảo tàiliệu - Inverse Document Frequency), thì từ đó càng quan trọng đối với tài liệu đó.Cách tính TF-IDF:

TF-IDF được tính bằng cách nhân Term Frequency (TF) với Inverse Document quency (IDF)

Fre-• Term Frequency (TF): Đo lường tần suất xuất hiện của một từ trong một tài

Trang 12

– TF thô: T F (t, d) = ft,d (với ft,d là số lần từ t xuất hiện trong tài liệu d)– TF chuẩn hóa:

IDF(t) = log

Tổng số tài liệu

Số tài liệu chứa từ t + 1

Ý nghĩa của TF-IDF trong việc biểu diễn văn bản:

TF-IDF cung cấp một cách biểu diễn văn bản dưới dạng vectơ số, trong đó mỗi phần

tử của vectơ đại diện cho trọng số TF-IDF của một từ trong văn bản Điều này cho phépmáy tính hiểu và xử lý văn bản một cách hiệu quả Cụ thể, TF-IDF có ý nghĩa sau:

• Làm nổi bật các từ quan trọng: Các từ xuất hiện nhiều trong một tài liệu và

ít xuất hiện trong các tài liệu khác sẽ có trọng số TF-IDF cao, thể hiện tầm quantrọng của chúng đối với tài liệu đó

• Lọc bỏ các từ phổ biến: Các từ xuất hiện trong hầu hết các tài liệu (ví dụ: các

từ dừng) sẽ có IDF thấp, do đó trọng số TF-IDF của chúng cũng thấp, giúp giảmnhiễu trong quá trình phân tích

• Hỗ trợ so sánh văn bản: Biểu diễn văn bản dưới dạng vectơ TF-IDF cho phép sosánh các tài liệu dựa trên nội dung của chúng bằng cách sử dụng các phương phápnhư cosine similarity

2.5 Cosine Similarity

• Định nghĩa: Cosine Similarity là một phương pháp đo lường độ tương đồng giữa haivectơ bằng cách tính toán cosin của góc giữa chúng Giá trị Cosine Similarity nằm

Trang 13

trong khoảng từ -1 đến 1 Giá trị càng gần 1 thể hiện độ tương đồng càng cao, giátrị 0 thể hiện không có mối liên hệ, và giá trị càng gần -1 thể hiện độ tương phảncàng cao Trong ngữ cảnh bài báo cáo này các vectơ đại diện cho người dùng hoặcvật phẩm, và ta sẽ sử dụng Cosine Similarity để tính sự tương đồng giữa chúng.

• Công thức tính Cosine Similarity

similarity = cos(θ) = A · B

||A|| · ||B|| =

Pn i=1AiBi

pPn i=1A2

i ·pPni=1B2

i

• Ưu điểm:

– Dễ hiểu và dễ triển khai, cho kết quả khá chính xác

– Chỉ quan tâm đến góc giữa hai vectơ, không phụ thuộc vào độ dài Hữu íchkhi so sánh các vectơ có độ dài khác nhau

– Hoạt động tốt với dữ liệu thưa thớt, chỉ tập trung vào các phần tử khác không

– scikit-learn: Cung cấp TfidfVectorizer để tính toán TF-IDF

– nltk: Thư viện xử lý ngôn ngữ tự nhiên, cung cấp PorterStemmer cho

Trang 14

stem-– pandas: Dùng để xử lý và phân tích dữ liệu dạng bảng.

– numpy: Thư viện tính toán khoa học, dùng để xử lý mảng

– cupy: Thư viện tương tự NumPy nhưng chạy trên GPU, dùng để tăng tốc tínhtoán

– cupyx.scipy.sparse: Thư viện ma trận thưa trên GPU

– pickle: Dùng để lưu trữ và tải các đối tượng Python

• Mô hình:

– Sentence-BERT (all-MiniLM-L6-v2): Mô hình biến đổi (transformer) đượchuấn luyện trước, tạo ra các vector nhúng (embeddings) đại diện cho ngữ nghĩacủa câu Mô hình này sử dụng kiến trúc MiniLM-L6 với 6 lớp transformer vàđược huấn luyện trên một tập dữ liệu lớn

– TF-IDF: Kỹ thuật tính toán trọng số từ dựa trên tần suất xuất hiện của từtrong tài liệu (TF) và nghịch đảo tần suất tài liệu của từ (IDF) TF-IDF giúpxác định các từ quan trọng, đặc trưng cho từng sản phẩm

– FAISS (IndexIVFFlat): Chỉ mục tìm kiếm gần đúng dựa trên phương phápInverted File và lượng tử hóa vector IndexIVFFlat chia không gian vectorthành các vùng Voronoi và tìm kiếm gần nhất trong vùng gần nhất với vectortruy vấn

Trang 15

3 Thực Nghiệm

3.1 Phân tích yêu cầu nghiệp vụ/chức năng người dùng

Người dùng nhập truy vấn tìm kiếm (tên sản phẩm hoặc từ khóa liên quan), hệ thống trả

về danh sách sản phẩm phù hợp nhất, được sắp xếp theo độ tương đồng Hệ thống cầnđảm bảo tốc độ tìm kiếm nhanh và kết quả có độ chính xác cao

3.2 Tập dữ liệu

Nghiên cứu này sử dụng tập dữ liệu về đánh giá và xếp hạng sản phẩm Amazon Tập dữliệu được thu thập từ trang web chính thức của Amazon và chứa thông tin chi tiết về sảnphẩm, bao gồm cả đánh giá của người dùng

3.3 Mô tả hiện thực chi tiết (Sử dụng Sentence Embeddings

2 category_df = pd read_csv( '/content/drive/MyDrive/category.csv' )

2 Chuyển đổi cột rating thành kiểu số, loại bỏ giá trị không hợp lệ

1 product_df[ 'rating' ] = pd to_numeric(product_df[ 'rating' ], errors = 'coerce' )

2 product_df dropna(subset = 'rating'], inplace = True )

3 Cập nhật lại cột id bắt đầu từ 8

1 product_df[ 'id' ] = range ( , len (product_df) + 8

4 Chuẩn hóa chữ cái đầu của main_category và sub_category

1 product_df[ 'main_category' ] = product_df[ 'main_category' ] str capitalize()

2 product_df[ 'sub_category' ] = product_df[ 'sub_category' ] str capitalize()

Ngày đăng: 19/12/2024, 20:30

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w