有什么推荐的快速python包在文本中搜索单词?

2024-05-12 04:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个Python包,它将获得单词列表,然后根据给定的单词列表在文本中搜索单词。在

我尝试使用FlashText(http://flashtext.readthedocs.io/en/latest/

所以我构建了一个类,从文件code: keyword_processor.add_keyword(word)添加关键字

然后用code: keyword_processor.extract_keywords(text)在文本中搜索关键字

但我也得到了部分单词,例如我有一个“关键字”(希伯来语):גיל

还有一句话:האישהבגילהההלפארק

单词“בגילה”作为已找到的关键字出现,因为它包含גילה,所以对我不好。。。在

这里的任何人都有使用另一个Python包的经验,该包正在执行我在这里描述的内容,并且不会返回“partial keywords”? 也许和flashtext一样快,从我参加的测试来看,它非常快。在


Tags: io文本http列表readthedocscode关键字processor
1条回答
网友
1楼 · 发布于 2024-05-12 04:27:05

为什么不使用^{}?在

import re

s = 'asef se fese fes fse se'
words = ['se', 'fes', 'foo']
words_re = '(?:^|\s+)({})(?:$|\s+)'.format('|'.join(words))
re.findall(words_re, s)

将返回['se', 'fes', 'se'],即,s中找到的words中的单词,按找到它们的顺序并包括重复项。在

正则表达式含义:

  • 单词以字符串开头或前面有空格:(?:^|\s+)
  • 单词要么结束字符串,要么后跟空格:(?:$|\s+)
  • 我们不关心单词前面或后面是什么:(?:...)
  • |是“OR”:我们想要一个单词:'|'.join(words)
  • 我们要捕获找到的单词:({})

可以在单词前面或后面添加更多可接受的字符(我在想,.,…)。在


或者,如果你在文本中寻找单词,你的查找器将返回你已经拥有的单词。如果您这样做是为了检查文本中是否有该单词,您可以使用in

^{pr2}$

相关问题 更多 >