How do I compare two sentences with similar words?
10 次查看(过去 30 天)
显示 更早的评论
I have two string sentences with similar words, I want to know if there is a common word between them, case insensitive.
string1='Install peoplenet antenna';
string2='ANT-PMG,PEOPLENET,30';
So I want the answer to be 'true' or logical because 'peoplenet' is there in both the sentences.
0 个评论
采纳的回答
Sindar
2020-1-20
First, split each sentence into the individual words
words_1 = split(string1,[" ",","]);
words_2 = split(string2,[" ",","]);
Then check if they share any words (comparing lowercase versions)
common_words = intersect(lower(words_1),lower(words_2))
share_words = ~isempty(common_words);
3 个评论
Sindar
2020-1-20
编辑:Sindar
2020-1-20
Yup, agreed that yours is more robust in that case. If you know the delimiters, mine might be better (is "ANT-PMG" one word or two? What about "30" or "John's"?).
(It looks like I was typing when you submitted your answer. Otherwise, I would have just commented on it instead of creating a separate near-duplicate answer)
Adam Danz
2020-1-20
Not a problem - different approaches listed in the answers section is often helpful.
更多回答(1 个)
Adam Danz
2020-1-20
编辑:Adam Danz
2020-1-20
I wouldn't be surprised if a more robust algorithm already exists but this simple appraoch takes the following steps.
- Replace the non-letters with empty spaces {, . ; ( 0 - etc... }
- Converts all characters to lower case
- Splits the strings into words
- Detects if there are matching words.
isMatch is the logical output that identifies if there is a match or not.
string1='Install peoplenet antenna';
string2='ANT-PMG,PEOPLENET,30';
% replace non-letters with a space and convert to lower case.
str1 = lower(string1);
str2 = lower(string2);
str1(~isstrprop(str1,'alpha')) = ' ';
str2(~isstrprop(str2,'alpha')) = ' ';
% Split the strings into words
words1 = strsplit(str1);
words2 = strsplit(str2);
% Detect matches
isMatch = any(ismember(words1, words2));
% Note, the following line will show which words were similar
% ismember(words1, words2)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!