TD-IDF - Term frequency-inverse document frequency (TD-IDF) là từ ngữ thường được dùng trong công tác thống kê, trích xuất văn bản phi cấu trúc. Cụ thể, nó là phương pháp dùng để xác định tầm quan trọng của một từ nào đó trong văn bản và kho tài liệu bằng cách đếm tần suất xuất hiện của từ đó.
Lý thuyết và ví dụ của thuật toán TD-IDF
Theo lý thuyết, tầm quan trọng của từ (TD-IDF) được xác định dựa trên hai biến chính: (TF) Tần suất của từ đó trong văn bản và kho tài liệu và (IDF) tần suất nghịch đảo (độ hiếm, ít phổ biến) của từ đó trong toàn bộ kho văn bản.
Term Frequency (TF) - Tần suất của từ
Đo lường tần suất xuất hiện của một từ trong một tài liệu cụ thể. Tính toán bằng cách đếm số lần xuất hiện của từ đó trong tài liệu và chia cho tổng số từ trong tài liệu. Công thức TF được mô tả như sau:
TF(t,d) = (số lần từ t xuất hiện trong tài liệu d) / (tổng số từ trong tài liệu d)
Inverse Document Frequency (IDF) - Độ hiếm của từ
Đo lường sức quan trọng của từ đó trên toàn bộ bộ sưu tập tài liệu. Từ ít xuất hiện trong nhiều tài liệu sẽ có giá trị IDF cao hơn. Công thức IDF được tính bằng cách lấy logarithm cơ số tự nhiên của tổng số tài liệu chia cho số tài liệu có chứa từ đó, và thêm 1 để tránh trường hợp chia cho 0:
TF(t,D) = log((Tổng số tài liệu trong bộ sưu tập D)/(Số tài liệu trong D chưa từ t+1))
Sau khi có giá trị của 2 biến, chúng ta tính trọng số:
TF-IDF(t,d,D)=TF(t,d)×IDF(t,D)
Ví dụ triển khai thuật toán TF-IDF
Như ví dụ bên dưới, giả sử chúng ta có 5 tài liệu và yêu cầu là tính trọng số TF-IDF cho từ fox.
https://tummosoftware.com/themes/upload/images/post/idf2.jpg
- Bước 1: Chúng ta tính chỉ số TF trong 5 tài liệu, kết quả như hình bên dưới!
https://tummosoftware.com/themes/upload/images/post/idf3.jpg
- Bước 2: Chúng ta tính chỉ số DF: DF = 3 (Doc1, Doc3, and Doc4)
- Bước 3: Chúng ta tính trọng số IDF: IDF = log(5/3) = 0.5108
- Bước 4: Chúng ta tính chỉ số TF-IDF = TF * IDF
Doc1: 1 * 0.5108 = 0.5108
Doc2: 0 * 0.5108 = 0
Doc3: 1 * 0.5108 = 0.5108
Doc4: 2 * 0.5108 = 1.0216
Doc5: 1 * 0.5108 = 0.5108
Từ điểm TF-IDF từ "fox" có trọng số cao nhất trong Doc4, cho thấy là mức độ quan trọng của từ "fox" trong tài liệu này. Mặc khác, trọng số trong tài liệu Doc2 = 0, cho thấy từ "fox" không liên quan đến văn bản này.
Thuật toán TF-IDF có giá trị trong công tác tìm kiếm văn bản, nó giúp đề xuất tài liệu nào là phù hợp với từ khóa cần tìm kiếm. Thuật toán TF-IDF có hiệu suất tốt, có thể dùng để xử lý kho dữ liệu lớn. Giá trị nghịch đảo của TF-IDF nó giúp loại bỏ những từ xuất hiện thường xuyên trong văn bản (stop words) nhưng không có nhiều ý nghĩa trong câu, do đó, nó làm cho việc tìm kiếm văn bản chính xác hơn.
Nhược điểm của thuật toán TF-IDF là nó chỉ giúp xem xét tần suất của một từ khóa mà không xét đến ngữ cảnh trong câu. Bởi vì lý thuyết của TF-IDF là xem tất cả các từ khóa trong câu có giá trị ngang bằng nhau.
Phạm vi ứng dụng của thuật toán TF-IDF
TD-IDF là một con số thống kê cụ thể về tầm quan trọng của một từ trọng một văn bản hoặc trong một kho văn bản. TD-IDF được dùng để tìm kiếm mức độ liên quan giữa một từ khóa cần tìm kiếm và kho dữ liệu văn bản.
Thuật toán TF-IDF được ứng dụng rộng rãi trong các lĩnh vực xử lý ngôn ngữ tự nhiên và trí tuệ nhân tạo như xác định từ khóa quan trọng trong tài liệu, xây dựng hệ thống gợi ý tìm kiếm, phân tích điểm số tình cảm trong câu...
Một số lưu ý về hàm số logarit (log)
Hàm số log là hàm ngược của hàm số mũ, do đó ta có thể sử dụng hàm log để tính ngược số mũ của một số. Ví dụ, nếu ta muốn tính 1000^0.5, ta có thể sử dụng hàm log như sau:
log(1000^0.5) = 0.5 * log(1000) = 2.0
Hàm số log được ứng dụng rộng rãi trong lĩnh vực khoa học máy tính, ví dụ như đo lường hiệu suất của một thuật toán, tính toán giá trị tăng trưởng (Geometric Progression) của các chỉ số. Ví dụ: doanh thu của doanh nghiệp ABC trong năm 2019 (n^n) tăng gấp đôi so với năm 2018, hãy tính hiệu suất tăng trưởng của họ.
log(x) = log(2^n) = n * log(2)
Một ứng dụng quan trọng khác của hàm số log là giúp tối ưu hóa thuật toán tìm kiếm nhị phân. Trong thuật toán tìm kiếm nhị phân, ta chia mảng cần tìm kiếm thành hai phần bằng nhau và kiểm tra phần nào có thể chứa phần tử cần tìm. Ta có thể sử dụng hàm log để tính toán số bước cần thiết để tìm kiếm phần tử cần tìm.
Ngoài ra, hàm số logarit còn được ứng dụng trong việc phân chia vấn đề thành các phần nhỏ hơn, giúp giảm độ phức tạp của bài toán.