使用python删除停用词

时间:2012-02-22 19:36:50

标签: python string stop-words

所有

我有一些文字需要清理,我有一些“大部分”工作的算法。

def removeStopwords(self, data):
    with open(r'stopwords.txt') as stopwords:
        wordList = []
        for i in stopwords:
            wordList.append(i.strip())
        charList = list(data)
        cat = ''.join(char for char in charList if not char in wordList).split()
        return ' '.join(cat)

点击此页面的第一行。 http://en.wikipedia.org/wiki/Paragraph并删除我们不感兴趣的所有字符,在这种情况下,所有字符都是非字母数字字符。

  

段落(来自希腊语段落,“写在旁边”或“写在旁边”)是一个独立的文字话语单元,处理特定的观点或想法。一段由一个或多个句子组成。[1] [2]从新行开始表示段落的开头。有时第一行是缩进的。在不同的时间,一个段落的开头已经由pilcrow表示:¶。

输出看起来很不错,只是有些单词重新组合不正确,我不确定如何纠正它。

  

希腊文章中旁边或旁边写的段落是一个自包含单位

请注意,“selfcontained”这个词是“自包含的”。

编辑:停用词文件的内容,它只是一堆字符。

  

!   $   %   ^   ,   &安培;   *   (   )   {   }   [   ]   <

     

,   。   /   |   \   ?   〜   `   :   ;   “

原来我根本不需要一个单词列表,因为我只是想删除在这种情况下是标点符号的字符。

        cat = ''.join(data.translate(None, string.punctuation)).split()
        print ' '.join(cat).lower()

3 个答案:

答案 0 :(得分:2)

版本2.x

line = 'hello!'
line.translate(None, '!$%') #'hello'

answers

答案 1 :(得分:1)

将您的停用词/停用词加载到单独的功能中。

不要对文件名/路径进行硬编码。

你的wordList应该是set,而不是列表。

但是,如果你正在处理字符而不是单词,请调查str.translate。

答案 2 :(得分:-2)

一种方法是使用替换方法,并提供您不想要的详尽字符列表。

例如:

c=['a','h']
a= 'john'
for item in c:
    a =a.replace(item,'')
    print a

打印以下内容: 约翰 乔恩