删除Python中的停用词

时间:2013-12-01 18:00:30

标签: python python-2.7 stop-words

我正在尝试使用.join功能从用户输入字符串中删除停用词。它看起来像这样:

while True:
    line = raw_input()
    if line.strip() == stopword:
        break
    remove_stopwords = ''.join(word for word in line.split() if word not in stop_words)

我在顶部的列表中定义了stop_words。问题是当我输入要删除的停用词的字符串时,它只会删除第一个单词而剩下的就剩下了。任何帮助都会很棒。我是新手,所以这可能是愚蠢的。

1 个答案:

答案 0 :(得分:4)

以下是使用filter函数的单行内容:

" ".join(filter(lambda word: word not in stop_words, line.split()))

此外,请考虑将停用词存储在set而不是list中。搜索操作(in)的平均算法复杂度对于set是恒定的而对于list是线性的。

编辑:您的程序似乎按预期工作,并为join字符串增加了空间。这是有道理的,因为(x for x in y if f(x))大致相当于filter

  stop_words = set(["hi", "bye"])
  stopword = "DONE"
  while True:
      line = raw_input()
      if line.strip() == stopword:
          break
      print(" ".join(word for word in line.split() if word not in stop_words))

输入:

hello hi my name is bye justin

输出:

hello my name is justin

您的错误必须在程序的其他位置。你还在做什么?