在MATLAB中从字典中删除非英语单词

时间:2014-03-05 13:24:27

标签: matlab dictionary matrix

我有一个字典,其中包含由于格式不一致而导致错误的单词,例如单词'directive'和'directiveâ',我想删除第二个单词,它既是重复单词又是非英语单词。我试过使用is letter但是这个方法仍然返回true它是一个重音字符。有谁知道这样做的方法?

我在TMG中创建了字典及其对应的值矩阵。

好的,数据的一个例子是相应的值矩阵:

  
    

X(1:20,1:10)
    ans =
    (17,3)2
    (17,5)2
    (17,7)1
    (17,8)2
    (17,10)2`

  

其中第17个单词在第三个文档中出现两次,第七个文档出现一次等。

`字典:

  
    

bothWordsWithDocNumberDictionary(17:17,:)
    ans =
    能够

  

我的问题是我有像sxusrvhvô°或clusterâ这样的词,这显然是不受欢迎的。

1 个答案:

答案 0 :(得分:1)

您可能想要做两件事:

首先,浏览整个列表并删除所有“不允许”的字符。例如,如果允许的唯一字符是大写和小写A-Z,则可以使用以下表达式去除任何其他字符:

newstring = regexprep(oldstring, '[^A-Za-z]', '', 'all');

这将找到所有不符(^)的字符属于标识的字符类。您可以添加其他允许的字符,如

newstring = regexprep(oldstring, '[^A-Za-zéè]', '', 'all');

如果允许重音字母é

显然,您可以使用for循环浏览字符串的单元格数组,或者,如果您愿意,可以使用cellfun。在前一种情况下,您可以覆盖旧数组,也可以创建一个新数组。如果你创建一个新的,请确保预先分配空间 - 这将使它更快。例如:

newstrings = cell(size(oldstrings));
for ii = 1:numel(oldstrings)
  newstrings{ii} = regexprep(oldstrings{ii}, '[^A-Za-z]', '', 'all');
end

然后,您可以使用

从单元格数组中删除重复项
uniqueStrings = unique(newstrings);

那应该为你做。 免责声明:未能测试以上内容 - 如果您遇到任何问题请告诉我