2015-02-24 2 views
0

Я хочу сравнить ячейки [1 * 232] строк, содержащих отдельные слова из текстового документа с ячейками [1 * 23], содержащие отдельные предложения из одного текста, может ли кто-нибудь помочь мне как запрограммировать его в Matlab? например: «загрязнение» и «деревья» - это два слова в отдельных ячейках и следующие два предложения в отдельных ячейках: 1. деревья уменьшают загрязнение. 2. деревья предотвращают наводнения.Сравнение ячейки строк с разным размером в matlab

Что я хочу сделать, это положить 0 или 1 после сравнения загрязнения и деревьев как с предложениями, так и в моих случаях «n» и поставить 1 и 0 в виде матриц. любая помощь будет оценена по достоинству.

+1

Посмотрите на 'strfind', например:' document = {'деревья уменьшают загрязнение', 'деревья предотвращают наводнения'}; index = strfind (document, 'pollution'); found = cellfun (@ (x) (~ isempty (x)), index) ' – Daniel

ответ

1

Вы можете использовать сочетание cellfun и strfind. Вот попытка:

Sentences = {'trees reduce pollution' ; ... 
    'trees prevent floods' ; ... 
    'pollution is bad' ; ... 
    'flood is worse'}; 

Words = {'trees', 'pollution', 'bad'}; 

Out = NaN(numel(Sentences), numel(Words)); 

for i = 1:numel(Words) 
    Out(:,i) = cellfun(@(x) numel(strfind(x, Words{i})), Sentences); 
end 

И Out содержит:

Out = 

    1  1  0 
    1  0  0 
    0  1  1 
    0  0  0 

Надеется, что это помогает.

+0

спасибо тонну, эта логика сработала для меня абсолютно fine.cheers –

+1

Спасибо за хороший комментарий. Не стесняйтесь отмечать этот вопрос как «решенный». – Ratbert

Смежные вопросы