使用Python删除停用词

时间:2014-04-07 22:41:18

标签: python stop-words

我不明白为什么这段代码不起作用。当我点击运行时,它会显示"删除停用词后:无"。任何人都可以帮助解决问题吗?非常感谢。

 stop_words = ["the", "of", "a", "to", "be", "from", "or"]
 last = lower_words.split()

 for i in stop_words:
     lastone = last.remove(i)
     print "\nAAfter stopwords removal:\n",lastone

2 个答案:

答案 0 :(得分:1)

list.remove()函数修改了列表并返回None

因此,当您执行last.remove(i)时,它会从列表i中删除第一次出现last并返回None,因此lastone将永远是设为None

对于您要执行的操作,您可能希望删除stop_words项中出现的所有项目,因此last.remove()将不是最有效的方法。相反,我会使用列表理解来执行以下操作:

stop_words = set(["the", "of", "a", "to", "be", "from", "or"])
last = lower_words.split()
last = [word for word in last if word not in stop_words]

stop_words转换为集合是为了提高效率,但如果将其保留为列表,则会获得相同的行为。

为了完整起见,您需要使用remove()

执行此操作
stop_words = ["the", "of", "a", "to", "be", "from", "or"]
last = lower_words.split()
for word in stop_words:
    try:
        while True:
            last.remove(word)
    except ValueError:
        pass

答案 1 :(得分:0)

这是一个接收文本并返回没有停用词的文本的函数。它通过忽略字典停用词中的每个单词来实现其目标。我为每个单词i使用.lower()函数,因为大多数stopwords包都是小写字母,但我们的文本可能不是。

def cut_stop_words(text,stopwords):
  new_text= ''
  for i in text.split():

    if (i.lower()) in stopwords:
         pass
     else:
         new_text= new_text.strip() + ' ' + i

  return new_text