2011-12-29 328 views
0

我创建了一个matlab程序来在文本文件中查找单词bigrams及其频率。为此,我创建了一个使用textread函数的字符串数组:使用matlab从文件中读取文本时跳过某些词

unigrams = textread('file.txt','%s');

但我也希望省略一堆词,如'to','the','is',''''等,特殊字符'#','$','&'和'%'从我的细胞阵列。有没有办法在阅读原始文件中的单词时排除这些单词。

谢谢。

+1

是否有一个具体的原因,你为什么会想这样做*而*从文件中读取单词,而不是*后*?如果没有,请参阅下面的答案。 – Kavka 2011-12-29 19:47:22

+0

我建议使用Python,尤其是NLTK。 – cyborg 2011-12-29 22:25:44

+0

@cyborg我同意...... python非常适合字符串处理。 – 2011-12-29 23:02:14

回答

1

您可以使用setdiff后阅读的文本删除不需要的话:

unigrams = {'I' 'like' 'this' 'or' 'that' 'Here' 'are' 'some' 'symbols' '#' '$' '&'} 
setdiff(unigrams, {'the', 'is' 'or' '#' '$' '&'}, 'stable') 

unigrams = 
    Columns 1 through 8 
    'I' 'like' 'this' 'or' 'that' 'Here' 'are' 'some' 
    Columns 9 through 12 
    'symbols' '#' '$' '&' 
ans = 
    'I' 'like' 'this' 'that' 'Here' 'are' 'some' 'symbols' 
+0

我同意在阅读后有一堆简单的方法可以做到这一点。虽然不知道为什么... OP虽然不希望这样做*虽然不知道为什么... – 2011-12-29 19:42:15

+0

我相信,如果在阅读**之后执行操作**,性能将会提高。这可能不是海报问的方式,但它会达到相同的效果,假设整个文件将适合内存,也就是说。 – 2011-12-29 20:06:43

+0

我已经阅读了数千个文件来查找bigrams,这占用了很多时间。所以我只需要最好的方法来排除这些词。 Kavka建议的方式非常完美。如果在阅读文件的时候,之前或之后有另一种更好的表现方法来排除单词,请告诉我。 @ cyborg我从来没有使用Python,如果有更好的方法来在python中执行这些代码,可以请你建议从哪里开始。 @全部感谢您的帮助。 – AbbyJ 2011-12-30 09:43:30