How to use spell checker with matlab?
12 次查看(过去 30 天)
显示 更早的评论
I have written few words in text file result.txt using matlab....but there are some spelling mistakes on it... i am doing character recognition...How should i correct the spelling and show the result in the next line in the same file result.txt....can anyone help
0 个评论
采纳的回答
Cedric
2015-7-26
编辑:Cedric
2015-7-26
You could try this:
UPDATE : here is a slightly modified version (also attached)
function wordsChecked = checkWordsSpelling( words )
%
% Based on Mathworks thread:
% http://www.mathworks.com/matlabcentral/answers/91885-is-there-any-way-to-check-spelling-from-within-matlab
%
% - Split space-separated words into cell array of words, or wrap
% single word into cell array.
if ischar( words )
if any( words == ' ' )
words = strsplit( words, ' ' ) ;
else
words = {words} ;
end
end
% - Launch MS Word and create document.
h = actxserver( 'word.application' ) ;
h.Document.Add ;
% - Build cell array of originals and suggestions.
words = words(:) ; % -> columns cell array.
nWords = numel( words ) ;
for wId = 1 : nWords
% - Check if spelling correct. Loop back if so.
isCorrect = h.CheckSpelling( words{wId,1} ) ;
words{wId,2} = isCorrect ;
if isCorrect
words{wId,3} = false ;
continue ;
end
% - Build cell array of suggestions.
nSug = h.GetSpellingSuggestions( words{wId,1} ).count;
words{wId,3} = nSug > 0 ;
if nSug > 0
for sId = 1 : nSug
words{wId,4}{sId} = ...
h.GetSpellingSuggestions( words{wId,1} ).Item(sId).get( 'name' ) ;
end
end
end
% - Quit MS Word.
h.Quit
% - Build table (or struct array if you prefer).
%wordsChecked = cell2struct( words, {'original', 'isCorrect', 'hasSuggestion', 'suggestion'}, 2 ) ;
wordsChecked = cell2table( words, 'VariableNames', {'original', 'isCorrect', 'hasSuggestion', 'suggestion'} ) ;
end
With that, you can do the following:
>> checked = checkWordsSpelling( 'Helloo' )
checked =
original isCorrect hasSuggestion suggestion
________ _________ _____________ _______________________________
'Helloo' false true 'Hello' 'Halloo' 'Hellos'
>> checked = checkWordsSpelling( 'Helloo Wolrd Hello' )
checked =
original isCorrect hasSuggestion suggestion
________ _________ _____________ __________
'Helloo' false true {1x3 cell}
'Wolrd' false true {1x2 cell}
'Hello' true false []
>> checked.suggestion{2}
ans =
'World' 'Word'
>> checked = checkWordsSpelling( {'Helloo', 'Wolrd'} )
checked =
original isCorrect hasSuggestion suggestion
________ _________ _____________ __________
'Helloo' false true {1x3 cell}
'Wolrd' false true {1x2 cell}
Hope it helps!
4 个评论
Isabelle Goy
2023-5-12
Hi,
thanks for the code provided. I'm using a similar spell-check on my side but I need that the spell-check done through Word uses french as a refernce language. I have tried to set it this way:
h = actxserver( 'word.application' ) ;
h.Document.Add ;
selection = h.Selection;
selection.LanguageID = 1036; % which is the code for french language
but also the code is running, this line is not taken into consideration when the spell checking is happening, or at the leat the spell checking is still happening on an english base ?
Any suggestion/help aprreciated.
Daniel
2023-7-23
移动:DGM
2023-7-23
Some words produce an error
checked = checkWordsSpelling( 'Procuremend' )
Error using cell2table (line 77)
The VariableNames property must contain one name for each variable in the table.
Error in checkWordsSpelling (line 52)
wordsChecked = cell2table( words, 'VariableNames', {'original', 'isCorrect', ...
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!