1. Giới thiệu

Trong nhiều hệ thống phân tích nội dung như social listening, quảng cáo trực tuyến hay quản lý danh mục sản phẩm, việc xác định tên thương hiệu trong văn bản là một bước quan trọng.

Bài toán đặt ra:
Làm thế nào để tự động phát hiện các từ hoặc cụm từ thể hiện thương hiệu (brand word) trong văn bản tự nhiên? Trong bài viết này mình sẽ chia sẻ về cách làm thực tế mình đã áp dụng trong dự án.

2. Ví dụ minh họa

Đầu tiên ta sẽ đi qua một số ví dụ minh hoa.

Ví dụ 1:
Input:

“Tôi vừa mua một đôi giày của Nike, chất lượng cực tốt.”
Output:
["Nike"]

Ví dụ 2:
Input:

“xem phim netlix.”
Output:
["netlix"]

3. Thách thức

Bài toán Brand word extraction có một số thách thức như sau mà mình gặp phải trong quá trình xử lý:

  • Thương hiệu có thể viết hoa, viết thường, hoặc viết sai chính tả.
  • Một số thương hiệu là từ đa nghĩa (ví dụ: Apple).
  • Không phải từ viết hoa nào cũng là thương hiệu.
  • Tồn tại biến thể hoặc cách viết không chính thống: "Uniqlo", "Uni Q Lo", "net flix"...

4. Các hướng tiếp cận

Với bài toán Brand word extraction sẽ có một số cách xử lý như sau:

1. Rule-based

  • Dùng danh sách từ khóa thương hiệu cố định (dictionary).
  • Dễ triển khai, nhưng không phát hiện được thương hiệu mới.

2. Machine Learning

  • Sử dụng mô hình phân loại hoặc sequence labeling (ví dụ: NER).
  • Cần dữ liệu huấn luyện có nhãn.

3. Sử dụng LLM

  • Đưa nội dung vào mô hình ngôn ngữ lớn (LLM) để trích xuất brand word.
  • Không cần nhãn, nhưng cần thiết kế prompt tốt và kiểm soát chi phí inference.

4. Hybrid (kết hợp)

  • Kết hợp rule-based + LLM/ML để tận dụng ưu điểm của cả hai.
  • Áp dụng thêm heuristic để mở rộng và kiểm soát chất lượng.

Và mình đã lựa chọn phương pháp hybrid để đạt được kết qủa tối ưu nhất.

5. Phân chia công việc

Bài toán Brand word extraction thường sẽ có 2 nhiệm vụ chính:

Job 1: Crawl dữ liệu web

  • Lấy title, metadata, description, homepage từ các domain.

Job 2: Extract brand word

  • Phân tích dữ liệu crawl từ Job 1 để tìm ra brand words.

Nếu các bạn đã có sẵn dữ liệu từ trước thì không cần thực hiện job 1.

Bài viết này mình sẽ tập trung vào chia sẻ về Job 2.


6. Chi tiết hệ thống

Phương pháp sử dụng: Hybrid

  • Dùng LLM để khám phá từ thương hiệu.
  • Áp dụng rule-based và heuristic để mở rộng tập brand words

6.1. Thiết kế DB

  • Sử dụng BigQuery để lưu trữ dữ liệu metadata và brand word.
  • Job chạy định kỳ và cập nhật dữ liệu crawl mới.

6.2. Thiết kế prompt cho LLM

prompt để trích xuất brand word sử dụng như dưới đây

Hãy trích xuất các từ khóa thương hiệu (brand word) được cho là đặc trưng của một trang web dựa trên thông tin do người dùng cung cấp.

Từ khóa thương hiệu là những từ hoặc cụm từ đặc trưng của trang web đó, có thể bao gồm tên công ty, tổ chức, sản phẩm hoặc dịch vụ.

Trước tiên, hãy trích xuất tất cả các từ được cho là từ khóa thương hiệu trên toàn bộ nội dung.

Nếu không có từ khóa thương hiệu nào, hãy trả về danh sách rỗng.

Tiếp theo, nếu từ khóa thương hiệu là một cụm từ gồm nhiều từ, và từng thành phần trong cụm đó cũng phù hợp, hãy thêm chúng vào danh sách kết quả.

6.3. Áp dụng thêm Heuristic

Một số heuristic hữu ích để tăng độ bao phủ:

  • Cho phép so khớp viết hoa/viết thường: "Netflix""net flix", "NETFLIX"
  • Phiên âm từ tiếng Anh → tiếng Việt hoặc tiếng Nhật (romaji <-> hiragana)
  • Ví dụ: "Vietnam Airlines""Việt Nam E Lai"
  • Với tiếng Nhật: "Amazon""あまぞん"

6.4. Các thư viện và công cụ hỗ trợ

  • Phiên âm: mình tự viết theo quy tắc chuyển âm
  • Chuyển đổi romaji <-> kana: tự chuẩn bị custom mapping
  • Tách từ tiếng Nhật: sử dụng thư viện Sudachipy

Tóm tắt lại flow thực tế

  1. Crawl metadata từ web
  2. Lưu vào BigQuery
  3. Extract brand word bằng rule-based + LLM
  4. Ghi kết quả vào DB
  5. Đánh giá độ chính xác và tối ưu chi phí

8. Kết quả

  • Dữ liệu brand word được đánh giá có độ chính xác cao
  • Củng cố hiểu biết về NLP thực chiến
  • Áp dụng thành công mô hình LLM vào hệ thống thực tế

Hi vọng bài viết này giúp các bạn có cái nhìn tổng quan và hướng xử lý bài toán Brand word extraction. Hẹn gặp lại các bạn trong các bài viết tiếp theo.