Tần suất từ vựng,  tần suất nghịch đảo (TD-IDF) và ứng dụng trong tìm kiếm văn bản

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ừ đó. 
Tần suất từ vựng,  tần suất nghịch đảo (TD-IDF) và ứng dụng trong tìm kiếm văn bản
Tần suất từ vựng,  tần suất nghịch đảo (TD-IDF) và ứng dụng trong tìm kiếm văn bản
Nguyễn Văn Hiến
16:05 ngày 15/11/2023
0
0

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.

Tác giả

Nguyễn Văn Hiến

Tôi là Nguyễn Văn Hiến, Founder của Tummosoft. Tôi có hơn 20 năm lập trình, vào thời điểm máy vi tính còn là tài sản quý giá của người giàu. Nhưng sức đam mê công nghệ của tôi đã giúp tôi vượt qua những khó khăn và theo đuổi nghề lập trình. Đối với tôi, sáng tạo các sản phẩm công nghệ bằng ngôn ngữ cũng giống như người nghệ sĩ sáng tác những họa phẩm.

Tổng quan về xử lý ngôn ngữ tự nhiên

Chatbot ngày nay đã vượt qua vai trò là công cụ tiêu khiển, nó thông minh hơn, hiểu biết nhiều vấn đề hơn, biết lập trình và biết xử lý cả tình huống…. Và để có được thành tựu như hôm nay, chatbot đã khởi đầu bằng công nghệ kiểu như robot ELIZA.

Hệ thống lý luận Bayesian

Từ những năm 1960, việc sử dụng kho ngữ liệu lớn để xử lý ngôn ngữ tự nhiên bắt đầu được định hình. Bộ sưu tập Ameriacan English đã tổng hợp được hơn một triệu văn bản từ các tạp chí, báo, tiểu thuyết...

Mô hình xác xuất The Noisy Channel, giải pháp xử lý tín hiệu bị nhiễu sau truyền dẫn

Giai đoạn thứ 3 (1970-1983) chứng kiến sự phát triển mạnh mẽ của ngành xử lý ngôn ngữ tự nhiên và nhận dạng tiếng nói và đồng thời các thuật toán và mô hình đã được phát triển đó vẫn được duy trì phát triển.

Mô hình ẩn Hidden Markov Model (HMM), bước tiến lớn trong lĩnh vực trí tuệ nhân tạo

Mô hình ẩn Hidden Markov Model (HMM) được phát triển trên lý thuyết xác xuất thông kê, giả định rằng: Có 2 nguồn thông tin: (1) Một nguồn thì có thể thu thập được; và nguồn thứ (2) thì không thu thập được (bị ẩn). Và chúng ta có thể giải mã nguồn thông tin thứ 2 qua xác xuất và suy luận.

Xác suất có điều kiện (conditional probability) và ví dụ bằng Java

Xác suất có điều kiện là bài toán dùng để tính một sự kiện B có (hoặc không) khả năng xảy ra khi biết rằng sự kiện A đã xảy ra. Công thức dùng để tính xác xuất có điều kiện là P(B|A).

Automata không có gì khó hiểu!

Khi nhắc đến Lý thuyết tính toán (Theory of Computation) nghĩa là chúng ta đang bàn đến một nhánh của Khoa học máy tính (Coputer Science), lĩnh vực có thể giải quyết các vấn đề tính toán bằng cách sử dụng thuật toán (algorithm) và các mô hình tính toán (model of computation).