liên kết LSA:
Đây là thuật toán hoàn chỉnh. Nếu bạn có SVD, bạn hầu hết ở đó. Các giấy tờ trên giải thích nó tốt hơn tôi.
Giả định:
- chức năng SVD của bạn sẽ cung cấp cho các giá trị số ít và vectơ đặc biệt trong thứ tự giảm dần. Nếu không, bạn phải làm thêm nhào lộn.
M: ma trận corpus, w (từ) bởi d (tài liệu) (w hàng, d cột). Đây có thể là số liệu thô, hoặc tfidf hoặc bất cứ điều gì. Các từ dừng có thể hoặc không thể bị loại bỏ, và bắt nguồn gốc có thể xảy ra (Landauer nói giữ lại các từ dừng và không xuất phát, nhưng có với tfidf).
U,Sigma,V = singular_value_decomposition(M)
U: w x w
Sigma: min(w,d) length vector, or w * d matrix with diagonal filled in the first min(w,d) spots with the singular values
V: d x d matrix
Thus U * Sigma * V = M
# you might have to do some transposes depending on how your SVD code
# returns U and V. verify this so that you don't go crazy :)
Sau đó reductionality .... giấy LSA thực tế cho thấy một xấp xỉ tốt cho cơ sở là giữ đủ vectơ như vậy mà giá trị đặc biệt của họ là hơn 50% trong tổng số các giá trị duy nhất.
succintly Nhiều hơn ... (giả)
Let s1 = sum(Sigma).
total = 0
for ii in range(len(Sigma)):
val = Sigma[ii]
total += val
if total > .5 * s1:
return ii
này sẽ trở lại thứ hạng của cơ sở mới, đó là min (d, w) trước đây, và chúng tôi sẽ hiện xấp xỉ với {ii}.
(ở đây, '-> đắc địa, không transpose)
Chúng tôi tạo ra ma trận mới: U', Sigma 'V', với kích thước w x ii, ii x ii, và ii x d.
Đó là bản chất của thuật toán LSA.
Ma trận kết quả này U '* Sigma' * V 'có thể được sử dụng cho tìm kiếm tương tự như cosin được cải thiện, hoặc bạn có thể chọn 3 từ trên cùng cho mỗi tài liệu trong đó. Cho dù anh em này nhiều hơn một tf-idf đơn giản là một vấn đề của một số cuộc tranh luận.
Đối với tôi, LSA hoạt động kém trong các tập dữ liệu thế giới thực bởi vì đa diện và tập dữ liệu có quá nhiều chủ đề. Đó là cơ sở toán học/xác suất là không rõ ràng (nó giả định phân phối bình thường-ish (Gaussian), mà không có ý nghĩa cho số lượng từ).
Số dặm của bạn chắc chắn sẽ thay đổi.
Gắn thẻ sử dụng LSA (một phương pháp!)
Xây dựng U 'Sigma' V' giảm chiều ma trận sử dụng SVD và giảm dựa trên kinh nghiệm
Bằng tay, nhìn qua U 'ma trận và đưa ra các thuật ngữ mô tả từng "chủ đề". Ví dụ, nếu phần lớn nhất của vectơ đó là "Bronx, Yankees, Manhattan" thì "Thành phố New York" có thể là một thuật ngữ tốt cho nó. Giữ chúng trong một mảng kết hợp hoặc danh sách. Bước này phải hợp lý vì số lượng vectơ sẽ là hữu hạn.
Giả sử bạn có vectơ (v1) từ cho tài liệu, thì v1 * t (U ') sẽ cung cấp' chủ đề 'mạnh nhất cho tài liệu đó. Chọn 3 cao nhất, sau đó cung cấp cho "chủ đề" của họ như được tính toán trong bước trước.
"Tôi đã đã thực hiện một cho Số ít giá trị gia tăng phân hủy" http://stackoverflow.com/questions/960060/singular-value-decomposition-svd-in-php – Ben
Xin lỗi, tôi đã đã thêm liên kết ngay bây giờ. – caw
Điều này phải làm gì với PHP? – Novelocrat