关于在文本中搜索单词的快速python软件包的任何建议?

问题描述 投票:0回答:1

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

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

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

并且比使用code: keyword_processor.extract_keywords(text)在文本中搜索关键字>

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

和一个句子:האישהבגילההלכהלפארק

单词“בגילה”作为发现的关键词出现,因为其中包含גיל,所以对我不利。...>

这里的人有没有使用过与我在此描述的内容相同的Python软件包的经验,并且不会返回“部分关键字”?也许和flashtext一样快,从我参加的测试中来看,速度非常快。

我正在寻找一个Python程序包,该程序包将获取单词列表,然后根据提供给它的单词列表在文本内搜索单词。我尝试使用FlashText(http://flashtext.readthedocs ....

为什么不使用re

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)

['se', 'fes', 'se']中找到的words中的单词,顺序是找到它们的顺序,包括重复项。

Regex含义:

  • 一个单词要么以字符串开头,要么以空格开头:s
  • 一个单词要么结束字符串,要么后跟一个空格:(?:^|\s+)
  • 我们不在乎单词(?:$|\s+)之前或之后的内容>
  • [(?:...)是“ OR”:我们需要以下单词之一:|
  • 我们要捕获找到的单词:'|'.join(words)
  • 随意在单词之前或之后添加更多可接受的字符(我在考虑({}),,...)。


    或者,如果您正在寻找文本中的单词,那么查找者将要返回的是您已经拥有的单词。如果您这样做的原因是要检查单词是否在文本中,则可以使用.

in
python text nlp package word
1个回答
2
投票

为什么不使用re

© www.soinside.com 2019 - 2024. All rights reserved.