【问题标题】:Efficient reg ex to remove stop words in python有效的正则表达式删除python中的停用词
【发布时间】:2014-05-20 02:51:01
【问题描述】:

我正在使用以下正则表达式从文本中删除停用词

  pattern = re.compile(r'\b(' + r'|'.join(stopwords.words('english')) + r')\b\s*')

但它也去掉了空格。因此,在删除停用词后,我得到了一个在剩余单词之间没有空格的句子。我该如何克服它?

【问题讨论】:

  • stopwords.words('english') 返回的字符串有没有可能是空字符串?
  • 我无法使用派生的stopwords 列表重现此内容。此列表包含空格或其他内容,或者您​​的代码存在其他问题

标签: regex python-2.7 stop-words


【解决方案1】:

不确定这是否是您的意思,但删除末尾的 \s* 将停止匹配空格。你的 \b 仍然会寻找单词边界,所以也许这就是你所需要的?

pattern = re.compile(r'\b(' + r'|'.join(stopwords.words('english')) + r')\b')

...但是你会有两个或多个空格在一起的句子。也许你想要:

pattern = re.compile(r'\b(' + r'|'.join(stopwords.words('english')) + r')\b\s?')

另外,请注意其他评论者的警告:如果您的停用词列表中有空字符串或空格字符串,可能会给您带来麻烦。

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 2021-08-07
    • 2011-10-12
    • 2021-11-04
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多