Разреженная матрица / внутренняя матрица - PullRequest
1 голос
/ 24 февраля 2011

Ну, пытаюсь что-то сделать с поисковиками.

Я сгенерировал матрицу (term-document) из коллекции из 5 документов. Выход:

документы = (5,1) 1,0000 (1,2) 0,7071 (3,2) 0,7071 (1,3) 0,7071 (5,3) 0,7071 (3,4) 1,0000 (4,5) 1,0000

Кроме того, я сгенерировал матрицу запросов из пользовательских запросов.

q = (1,1) 1 (2,1) 1

Я пытаюсь найти сходство набора документов с запросом пользователя, использующим моделирование векторного пространства. Вот код:

% docs is a sprase matrix presenting a number of document.
sc=zeros(1, n); doc_inds=zeros(1, n);

% q is the user query. 
sc=q'*docs;

%sort documents according to their
similarity coefficient with the query
[sc, doc_inds]=sort(sc);
sc=sc(end:-1:1);doc_inds=doc_inds(end:-1:1);

Строка sc=q'*docs; всегда выдает ошибку, говорящую: ??? Внутренние размеры матрицы должны . согласен.

Может кто-нибудь помочь мне получить идею разобраться с этим? Цените свое время.

1 Ответ

3 голосов
/ 24 февраля 2011

Согласно данным в вашем примере, docs - это 5x5, а q - это 2x1.Умножение матрицы q'*docs пытается умножить матрицу 1x2 на матрицу 5x5.Умножение матриц требует, чтобы второе измерение первой матрицы совпадало с первым измерением второй матрицы, поэтому вы получаете ошибку.

Почему вы определяете sc в строке sc=zeros(1, n); и затем перезаписываетэто с умножением этой матрицы?

...