【发布时间】:2014-06-22 09:46:56
【问题描述】:
我有大约 600 万个文档,每个文档都有相当大的停用词集要从每个文档中删除。
我学到的技巧是通过使用 re 编译模式来删除这些。但是现在我收到了一个溢出错误。
我按如下方式处理停用词:
states_string =r'\b(' + '|'.join(states) + r')\b'
states_pattern = re.compile(states_string)
states 显然是一个字符串列表,例如 ['NY', 'CA',...]
我得到的错误是:OverflowError: regular expression code size limit exceeded。
很明显,我正在编译模式的字符串太长了。
有没有人对如何处理这个问题或替代方法有任何建议。
我知道的一个是:[word for word in words if not word in stopwords],但它会遍历每个单词,因此并不理想。
请注意,停用词的长度为 2500。
【问题讨论】:
-
你能提供一个简化的例子吗?
-
我可以提供一个状态示例,但不足以显示我正在使用的停用词的数量。在此处尝试:stackoverflow.com/questions/1998261/… 以获取创建此错误的方法。放置所有停用词将太长!
-
文件有多大?
标签: regex python-2.7 stop-words