2012-03-06 15 views
6

Gần đây tôi đã nghiên cứu phân tích ngữ nghĩa tiềm ẩn. Tôi đã thực hiện nó trong java bằng cách sử dụng gói Jama.Làm cách nào để chúng tôi quyết định số thứ nguyên cho phân tích ngữ nghĩa tiềm ẩn?

Đây là mã:

Matrix vtranspose ; 
    a = new Matrix(termdoc); 
    termdoc = a.getArray(); 
    a = a.transpose() ; 
    SingularValueDecomposition sv =new SingularValueDecomposition(a) ; 
    u = sv.getU(); 
    v = sv.getV(); 
    s = sv.getS(); 
    vtranspose = v.transpose() ; // we obtain this as a result of svd 

    uarray = u.getArray(); 
    sarray = s.getArray(); 
    varray = vtranspose.getArray(); 
    if(semantics.maketerms.nodoc>50) 
    { 

     sarray_mod = new double[50][50]; 
     uarray_mod = new double[uarray.length][50]; 
     varray_mod = new double[50][varray.length]; 
     move(sarray,50,50,sarray_mod); 
     move(uarray,uarray.length,50,uarray_mod); 
     move(varray,50,varray.length,varray_mod); 
     e = new Matrix(uarray_mod); 
     f = new Matrix(sarray_mod); 
     g = new Matrix(varray_mod); 
     Matrix temp =e.times(f); 
     result = temp.times(g); 

    } 
    else 
    { 
     Matrix temp = u.times(s); 
     result = temp.times(vtranspose); 
    } 
    result = result.transpose(); 
    results = result.getArray() ; 

    return results ; 

Nhưng làm thế nào để chúng tôi xác định số lượng kích thước? Có một phương pháp để xác định số lượng các kích thước mà hệ thống nên được giảm để có được kết quả tốt nhất? Các thông số khác chúng ta xem xét để thực hiện hiệu quả LSA là gì?

Trả lời

12

Về sự lựa chọn của số kích thước:

1) http://en.wikipedia.org/wiki/Latent_semantic_indexing:

Một thách thức đối với LSI đã trở thành khó khăn bị cáo buộc trong xác định số lượng tối ưu kích thước để sử dụng cho việc thực hiện SVD. Theo nguyên tắc chung, ít tham số hơn cho phép so sánh rộng hơn của các khái niệm chứa trong tập hợp văn bản, trong khi số thứ nguyên cao hơn cho phép so sánh các khái niệm cụ thể hơn (hoặc có liên quan hơn) . Số lượng kích thước thực tế có thể được sử dụng được giới hạn bởi số lượng tài liệu trong bộ sưu tập. Nghiên cứu đã chứng minh rằng khoảng 300 kích thước thường sẽ cung cấp kết quả tốt nhất với các bộ sưu tập tài liệu cỡ vừa (hàng trăm nghìn tài liệu) và có lẽ 400 kích thước cho tài liệu lớn hơn bộ sưu tập (hàng triệu tài liệu). Tuy nhiên, các nghiên cứu gần đây cho thấy rằng kích thước 50-1000 phù hợp tùy thuộc vào kích thước và tính chất của bộ sưu tập tài liệu.

Kiểm tra số lượng phương sai trong dữ liệu sau khi tính toán SVD có thể được sử dụng để xác định số thứ nguyên tối ưu cần giữ lại. Phương sai chứa trong dữ liệu có thể được xem bằng cách vẽ các giá trị số ít nhất (S) trong một âm mưu scree . Một số học viên LSI chọn kích thước được kết hợp với đầu gối của đường cong làm điểm cắt cho số thứ nguyên cần giữ lại. Những người khác cho rằng một số số lượng của phương sai phải được giữ lại và số lượng phương sai trong dữ liệu sẽ ra lệnh cho thứ nguyên thích hợp để giữ lại. Bảy mươi phần trăm thường được đề cập là số lượng phương sai trong dữ liệu nên được sử dụng để chọn kích thước tối ưu cho tính lại SVD.



2) http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html?showall=1:

Bí quyết trong việc sử dụng SVD là tìm ra có bao nhiêu kích thước hoặc "khái niệm" để sử dụng khi xấp xỉ ma trận. Quá ít kích thước và các mẫu quan trọng bị bỏ qua, quá nhiều và tiếng ồn gây ra bởi lựa chọn từ ngẫu nhiên sẽ trở lại. Thuật toán SVD có liên quan một chút, nhưng may mắn là Python có chức năng thư viện . Bằng cách thêm một dòng phương pháp bên dưới vào lớp LSA của chúng tôi, chúng tôi có thể đưa ma trận của chúng tôi vào 3 ma trận khác.Ma trận U cho chúng ta tọa độ của từng từ trên không gian “khái niệm” của chúng tôi, ma trận Vt cho chúng ta tọa độ của mỗi tài liệu trong không gian “khái niệm” của chúng ta và ma trận S của các giá trị đơn số cho chúng ta một đầu mối chúng tôi cần bao nhiêu kích thước hoặc “khái niệm” để bao gồm .

def calc(self): self.U, self.S, self.Vt = svd(self.A)

Để chọn đúng số kích thước để sử dụng, chúng ta có thể tạo ra một biểu đồ của bình phương của các giá trị duy nhất. Điều này biểu thị tầm quan trọng của mỗi giá trị số góp phần xấp xỉ ma trận của chúng tôi. Đây là biểu đồ trong ví dụ của chúng tôi.

enter image description here

Đối với các bộ sưu tập lớn các tài liệu, số lượng kích thước sử dụng là trong 100-500 range. Trong ví dụ nhỏ của chúng tôi, vì chúng tôi muốn vẽ đồ thị , chúng tôi sẽ sử dụng 3 thứ nguyên, đưa ra thứ nguyên đầu tiên và đồ thị thứ nguyên thứ hai và thứ ba.

Lý do chúng tôi giải thích thứ nguyên đầu tiên là thú vị. Đối với tài liệu , thứ nguyên đầu tiên tương quan với độ dài của tài liệu . Đối với các từ, nó tương quan với số lần từ đã được sử dụng trong tất cả các tài liệu. Nếu chúng tôi đã căn giữa ma trận của chúng tôi, bằng cách trừ giá trị cột trung bình khỏi mỗi cột, thì chúng tôi sẽ sử dụng thứ nguyên đầu tiên. Tương tự, cân nhắc điểm số của gôn. Chúng tôi không muốn biết điểm số thực tế, chúng tôi muốn biết số điểm sau khi trừ số điểm đó ra khỏi mệnh giá. Cho chúng ta biết liệu các cầu thủ thực hiện một birdie, bogie vv



3) Landauer, TK, Foltz, PW, Laham, D., (1998), 'Giới thiệu về tiềm ẩn Semantic Phân tích ', Quy trình Discourse, 25, 259-284:

enter image description here

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