我创建了一个matlab程序来在文本文件中查找单词bigrams及其频率。为此,我创建了一个使用textread函数的字符串数组:使用matlab从文件中读取文本时跳过某些词
unigrams = textread('file.txt','%s');
但我也希望省略一堆词,如'to','the','is',''''等,特殊字符'#','$','&'和'%'从我的细胞阵列。有没有办法在阅读原始文件中的单词时排除这些单词。
谢谢。
我创建了一个matlab程序来在文本文件中查找单词bigrams及其频率。为此,我创建了一个使用textread函数的字符串数组:使用matlab从文件中读取文本时跳过某些词
unigrams = textread('file.txt','%s');
但我也希望省略一堆词,如'to','the','is',''''等,特殊字符'#','$','&'和'%'从我的细胞阵列。有没有办法在阅读原始文件中的单词时排除这些单词。
谢谢。
您可以使用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'
我同意在阅读后有一堆简单的方法可以做到这一点。虽然不知道为什么... OP虽然不希望这样做*虽然不知道为什么... – 2011-12-29 19:42:15
我相信,如果在阅读**之后执行操作**,性能将会提高。这可能不是海报问的方式,但它会达到相同的效果,假设整个文件将适合内存,也就是说。 – 2011-12-29 20:06:43
我已经阅读了数千个文件来查找bigrams,这占用了很多时间。所以我只需要最好的方法来排除这些词。 Kavka建议的方式非常完美。如果在阅读文件的时候,之前或之后有另一种更好的表现方法来排除单词,请告诉我。 @ cyborg我从来没有使用Python,如果有更好的方法来在python中执行这些代码,可以请你建议从哪里开始。 @全部感谢您的帮助。 – AbbyJ 2011-12-30 09:43:30
是否有一个具体的原因,你为什么会想这样做*而*从文件中读取单词,而不是*后*?如果没有,请参阅下面的答案。 – Kavka 2011-12-29 19:47:22
我建议使用Python,尤其是NLTK。 – cyborg 2011-12-29 22:25:44
@cyborg我同意...... python非常适合字符串处理。 – 2011-12-29 23:02:14