1. Tổng quan hệ thống:
  2. Giải thích các thuật toán:
    1. TF-IDF:

      image.png

      • Term Frequency - Inverse Document Frequency là một phương pháp thống kê được sử dụng phổ biến trong NLP cổ điển và information retrieval để đánh giá mức độ quan trọng của từ vựng (word) trong một tài liệu so với toàn bộ tập tài liệu..
      • TF: Term Frequency:
        • Đo lường tần suất xuất hiện của 1 từ trong 1 tài liệu
        • TF = Số lần xuất hiện từ ‘X’ trong tài liệu / Tổng số từ đang có trong tài liệu
        • TF cao → từ xuất hiện nhiều trong tài liệu
      • IDF: Inverse Document Frequency:
        • Đo lường mức độ phổ biến / hiếm của 1 từ trong toàn bộ các tài liệu.
        • IDF = log( Tổng số lượng tài liệu hiện có / số tài liệu có chưa từ ‘X’)
        • IDF cao → Từ đó hiếm xuất hiện.
      • TF-IDF: Term Frequency - Inverse Document Frequency:
        • TF-IDF = TF * IDF
        • Từ xuất hiện nhiều trong tài liệu đó → TF cao
        • Từ xuất hiện ít trong các tài liệu khác → IDF cao
    2. Cosine Similarity:

      image.png

      • Cosine similarity là một phương pháp tính độ tương đồng giữa 2 vector. Nó đo góc giữa 2 vector đó, nếu 2 vector gần nhau (nội dung tương tự nhau) thì hướng của vector tương tự → góc của 2 vector nhỏ → cosine similarity cao.
      • Thường được dùng để so sánh văn bản sau khi được vector hóa (vectorizer) bằng TF-IDF hoặc word embeddings (Encoding),…
      • Consine similarity = tích vô hướng / tích độ dài giữa 2 vector
      • Giá trị thu được sẽ nằm trong khoảng [-1, 1].
    3. Tokenizer:

      • Tokenizer là bước tiền xử lý trong NLP, giúp chia nhỏ văn bản thành các đơn vị nhỏ hơn để mô hình có thể hiểu và xử lý, các đơn vị đó được gọi là token.
      • Tokenizer giúp giảm kích thước tự vựng, xử lý những từ chưa từng được thấy, giảm chi phí tính toán và tăng độ chính xác của mô hình.
      • Ví dụ:
        • ‘Phân tích dữ liệu’
        • Token:
          • [Phân, tích, dữ, liệu]
          • [Phân tích, dữ liệu]
    4. Vector Embedding:

      image.png

      • Vector embedding (hay embedding) là cách biểu diễn (nhúng) các dữ liệu phức tạp, phi cấu trúc (hình ảnh, văn bảng) bằng các vector số trong không gian nhiều chiều.
      • Embedding là một tập hợp các vector ngữ nghĩa:
        • Embedding lưu trữ ngữ nghĩa (semantic meaning) hoặc đặc tính của dữ liệu.

        • 1 token được nhúng vào không gian tạo thành 1 vector số thực trong không gian nhiều chiều.

          • VD:
            • “cat” -> [0.21, 0.54, …. , -0.33]
            • “dog” -> [0.19, 0.60, … , -0.25]
        • Các token được nhúng sao cho chúng có ngữ nghĩa, ngữ cảnh giống nhau sẽ có vector gần nhau, khoảng cách giữa các vector biểu diễn mức độ quan hệ giữ các token

          • VD:

          image.png

    5. Sentence Transformer (keepitreal//vietnamese-sbert):

      • Đây là 1 quy trình:
        • Data → Transformer Encoder + pooling → sentence embedding.
  3. Dataflows của hệ thống:

image.png

  1. Data Crawling:

  2. Data Preprocessing:

  3. Vectorizer - Vector Embedding:

    1. TF-IDF:
      • Tạo một vectorizer từ TF-IDF.
      • Vector hóa ‘movie_content_data’ bằng vectorizer, tạo thành một ma trận số: movie content vectorizer.
      • Vector hóa dữ liệu user nhập vào thành một ma trận số: user input vectorizer.
    2. Sentence Transformers:
  4. Cosine Similarity Score:

  5. Deploy demo into Streamlit:

  6. So sánh mức độ hiệu quả:

  7. TF-IDF:

  8. Sentence Transformers:

→ TF-IDF hoạt động tốt hơn Sentence Transformers trong trường hợp trên.

⇒ 1 số định hướng giúp sentence transformers hoạt động tốt hơn (có thể tốt hơn cả TF-IDF):