2011-07-25 47 views
7

Tôi chỉ tự hỏi liệu có ai thực hiện java về phân tích giá trị số ít (SVD) cho các ma trận thưa thớt lớn không? Tôi cần triển khai này cho phân tích ngữ nghĩa tiềm ẩn (LSA).Java thực hiện phân tách giá trị số ít cho các ma trận thưa thớt lớn

Tôi đã thử các gói từ UJMP và JAMA nhưng chúng bị nghẹt thở khi số hàng> = 1000 và col> = 500. Nếu bất kỳ ai có thể trỏ tôi đến psuedocode hoặc một cái gì đó, có thể sẽ được đánh giá cao.

+2

Câu trả lời trong [câu hỏi khác] (http://stackoverflow.com/questions/1750463/singular-value-decomposition-implementation) gần giống như vậy là thử [Colt] (http: //acs.lbl .gov/~ hoschek/colt /). –

+0

tốt, mã cho lớp SingularValueDecomposition trong cả hai Colt và JAMA gần như giống hệt nhau. hơn nữa, mã chỉ hoạt động khi m> n (số hàng lớn hơn số cột). Ngoài ra, tôi nghĩ rằng các thuật toán không được tối ưu hóa cho ma trận thưa thớt. – jake

+0

điều kiện m> n không thực sự làm phiền tôi. trong thực tế, đối với tôi, 99,99% thời gian, m> n, sẽ luôn là trường hợp (các hàng đại diện cho các từ và cols đại diện cho các tài liệu). nó chỉ là ràng buộc này không được ghi chép rõ ràng. – jake

Trả lời

3

Có một số list of Java numerical libraries at Wikipedia. Thư viện NIST, khá tốt, không may là không xử lý các ma trận thưa thớt. Tôi không quá quen thuộc với các gói khác. Bạn có thể xem Colt; nó cũng có chất lượng khá cao và xử lý các ma trận thưa thớt cho một số hoạt động; Tôi không biết về SVD, mặc dù tôi tưởng tượng nó. Tôi cũng nghe nói rằng UJMP cũng đáng xem.

EDIT: Rất tiếc khi biết rằng UJMP không xử lý được sự cố của bạn. Tôi đã nghe nói rằng nó đáng xem.

+0

cảm ơn. danh sách đó đã giúp. nếu có ai quan tâm, gói toán học apache commons không thực hiện SVD. nó lặp lại chỉ 30 lần, và ném một ngoại lệ. đào sâu hơn một chút vào mã, nó không phải là rõ ràng làm thế nào để tăng này (như có các lớp học trong các lớp học trong các lớp học). – jake

Các vấn đề liên quan