Импорт простого текста в матрицу MATLAB в виде чисел для анализа семантической нейронной сети - PullRequest
0 голосов
/ 16 октября 2019

Кажется, нужно использовать скрипт для импорта простого текста в MATLAB, преобразования его в числовой формат и сохранения в матрице. Этот шаг необходим для любого вида анализа текстовых данных в MATLAB, например, для извлечения семантических признаков с использованием нейронных сетей или классификации текстов по известным признакам. Я не нашел способа сделать это без сценариев. Вот что я написал:

%texttoconvertincellarray- is a cell array where each row has text data imported from a csv file

longestrow=texttoconvertincellarray(cellfun(@(x) numel(x),texttoconvertincellarray)==max(cellfun(@(x) numel(x),texttoconvertincellarray))); %find the longest string in cell array rows
maxrowsize=cellfun('length',longestrow); %get longest string size to set max matrix Y
A=zeros(maxrowsize,length(texttoconvertincellarray)); %create an empty matrix the size of data
                                                      %Y - rows of imported cell array
                                                      %X - size of the longest string in rows
                                                      %later will transpose the matrix
j=1; %matrix element sequential index
for i=1:length(texttoconvertincellarray)              %loop through each row of text data imported 
                                                      %into cell array
    conv = double(texttoconvertincellarray{i});       %convert characters of each row of the cell 
                                                      %array to integer code representations
    A(j:j+length(conv)-1) = conv;                     %update matrix element range starting at each 
                                                      %column's first element with the converted data
    j=j+size(A,1);                                    %increment matrix element sequential index to 
                                                      %the next column's first element
end
A=transpose(A); %transpose the matrix; this is necessary because matrix sequential element addressing works verically, then horizontally

%now each row in matrix A represents sentences in the imported cell array, with letters converted to 
%numerical representations

Можно ли это еще более упростить, если не для чего-то еще, то для элегантности?

...