对在文本中搜索单词的快速 python 包有什么建议吗?
Any recommendations for fast python package that search a word inside a text?
我正在寻找一个 Python 包,它将获取单词列表,然后根据给定的单词列表在文本中搜索单词。
我尝试使用 FlashText (http://flashtext.readthedocs.io/en/latest/)
所以我构建了一个 class 从文件 code: keyword_processor.add_keyword(word)
添加关键字
然后使用 code: keyword_processor.extract_keywords(text)
在文本中搜索关键字
但我也得到部分单词,例如我有一个 "keyword"(希伯来语):גיל
还有一个句子:האישה בגילה הלכה לפארק
单词“בגילה”作为找到的关键字出现,因为它包含 גיל 在里面,所以它对我不利...
这里有没有人有使用不同的 Python 软件包的经验,该软件包正在执行我在此处描述的操作,但不会 return "partial keywords"?
也许和 flashtext 一样快,从我进行的测试来看,它非常快。
为什么不使用 re
?
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)
将 return ['se', 'fes', 'se']
即 来自 words
的单词在 s
中找到的顺序找到并包括重复项。
正则表达式含义:
- 字符串的开头或前面有一个空格:
(?:^|\s+)
- 一个词要么结束字符串,要么后跟一个空格:
(?:$|\s+)
- 我们不关心单词之前或之后的内容:
(?:...)
|
是 "OR":我们想要其中一个词:'|'.join(words)
- 我们要捕获找到的单词:
({})
欢迎在单词前后添加更多可接受的字符(我正在考虑 ,
、.
、...)。
或者,如果您要在文本中查找单词,那么您的查找器将 return 提供给您的是您已经拥有的单词。如果你这样做的原因是检查文本中是否有这个词,你可以使用 in
:
text = '...' # your input text
words = ['foo', 'bar']
words_in_text = [word for word in words if word in text]
我正在寻找一个 Python 包,它将获取单词列表,然后根据给定的单词列表在文本中搜索单词。
我尝试使用 FlashText (http://flashtext.readthedocs.io/en/latest/)
所以我构建了一个 class 从文件 code: keyword_processor.add_keyword(word)
然后使用 code: keyword_processor.extract_keywords(text)
但我也得到部分单词,例如我有一个 "keyword"(希伯来语):גיל
还有一个句子:האישה בגילה הלכה לפארק
单词“בגילה”作为找到的关键字出现,因为它包含 גיל 在里面,所以它对我不利...
这里有没有人有使用不同的 Python 软件包的经验,该软件包正在执行我在此处描述的操作,但不会 return "partial keywords"? 也许和 flashtext 一样快,从我进行的测试来看,它非常快。
为什么不使用 re
?
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)
将 return ['se', 'fes', 'se']
即 来自 words
的单词在 s
中找到的顺序找到并包括重复项。
正则表达式含义:
- 字符串的开头或前面有一个空格:
(?:^|\s+)
- 一个词要么结束字符串,要么后跟一个空格:
(?:$|\s+)
- 我们不关心单词之前或之后的内容:
(?:...)
|
是 "OR":我们想要其中一个词:'|'.join(words)
- 我们要捕获找到的单词:
({})
欢迎在单词前后添加更多可接受的字符(我正在考虑 ,
、.
、...)。
或者,如果您要在文本中查找单词,那么您的查找器将 return 提供给您的是您已经拥有的单词。如果你这样做的原因是检查文本中是否有这个词,你可以使用 in
:
text = '...' # your input text
words = ['foo', 'bar']
words_in_text = [word for word in words if word in text]