Je dois traiter une grande matrice clairsemée dont la taille est 6004 * 17842 (termes doc *). La fonction find() a été essayée pour obtenir ses lignes, cols et valeurs et le résultat a été sauvegardé sous forme d'ascii. Mais les termes ne sont pas triés dans chaque document. Quelqu'un pourrait-il me suggérer un moyen de trier la matrice et exporter le résultat trié s'il vous plaît?Comment puis-je trier une grande matrice clairsemée puis exporter le résultat dans matlab?
Répondre
Y a-t-il une raison pour laquelle le built in sort ne fonctionnera pas?
Il semble que vous ayez une question sur la façon dont find
renvoie les entrées non nulles dans la matrice fragmentée. Par exemple, considérons les commandes Matlab suivantes
m = 6004;
n = 17842;
A = sprand(m,n,0.000001);
[i, j, x] = find(A);
stocke Matlab sa raison matrice creuse sous forme de colonnes rares comprimé, les entrées non nulles renvoyées par find
sont triées par colonne. C'est-à-dire que les vecteurs i
, j
et x
contiennent d'abord toutes les entrées non nulles dans la première colonne, puis toutes les entrées non nulles dans la deuxième colonne, et ainsi de suite. Puisque votre matrice est une matrice de document terme x, cela signifie que vous voyez tous les termes dans le premier document, puis tous les termes dans le second document, et ainsi de suite. Dans chaque colonne (document), les entrées de ligne (terme) sont triées. Peut-être souhaitez-vous que les entrées non nulles soient triées par ligne (terme). Autrement dit, vous voulez voir tous les documents qui contiennent le premier terme, suivi de tous les documents qui contiennent le second terme, et ainsi de suite. Ceci est assez facile à faire juste effectuer find
sur la transposition:
[doc, term, val] = find(A');
Pour exporter les entrées triées dans un fichier texte que vous pouvez faire quelque chose comme:
dlmwrite('doc-term.txt',[doc term val]);
trop mauvais l'OP a été vu pour la dernière fois le 2 décembre 2010 ... peu probable que nous recevions des commentaires si c'est ce qu'il/elle voulait dire. –
définir ce que vous entendez par « genre ». –
Oui; et sont ces chaînes de texte dont vous parlez? Si oui, je me demande juste pourquoi vous avez choisi MATLAB pour faire cela? – Gilead