Tôi đang cố gắng để làm theo các Wikipedia Article on latent semantic indexing bằng Python sử dụng đoạn mã sau:Latent Semantic Analysis bằng Python biệt
documentTermMatrix = array([[ 0., 1., 0., 1., 1., 0., 1.],
[ 0., 1., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 1., 1.],
[ 0., 0., 0., 1., 0., 0., 0.],
[ 0., 1., 1., 0., 0., 0., 0.],
[ 1., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 1., 0.],
[ 0., 0., 1., 1., 0., 0., 0.],
[ 1., 0., 0., 1., 0., 0., 0.]])
u,s,vt = linalg.svd(documentTermMatrix, full_matrices=False)
sigma = diag(s)
## remove extra dimensions...
numberOfDimensions = 4
for i in range(4, len(sigma) -1):
sigma[i][i] = 0
queryVector = array([[ 0.], # same as first column in documentTermMatrix
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 1.],
[ 0.],
[ 0.],
[ 1.]])
Làm thế nào toán học nói rằng nó nên làm việc:
dtMatrixToQueryAgainst = dot(u, dot(s,vt))
queryVector = dot(inv(s), dot(transpose(u), queryVector))
similarityToFirst = cosineDistance(queryVector, dtMatrixToQueryAgainst[:,0]
# gives 'matrices are not aligned' error. should be 1 because they're the same
gì không làm việc, với toán trông không đúng: (từ here)
dtMatrixToQueryAgainst = dot(s, vt)
queryVector = dot(transpose(u), queryVector)
similarityToFirst = cosineDistance(queryVector, dtMatrixToQueryAgainsst[:,0])
# gives 1, which is correct
Tại sao rou te làm việc, và lần đầu tiên không, khi tất cả mọi thứ tôi có thể tìm thấy về toán của LSA cho thấy đầu tiên là chính xác? Tôi cảm thấy như tôi đang thiếu một cái gì đó hiển nhiên ...
Loại bỏ '## thứ nguyên bổ sung nào ...' liên quan? – Avaris
được chỉnh sửa để hiển thị giảm xếp hạng – Jmjmh
tại 'u, s, vt = linalg.svd (a, full_matrices = False)', ở đâu là 'a' đến từ ??? – Oerd