如何在使用python在文本中找到关键字后提取一些先词

时间:2018-10-09 14:40:30

标签: python nlp n-gram

我有一个关键字“ grand master”,我正在大文本中搜索该关键字。我需要提取该关键字的单词前5个单词和单词后5个单词(根据位置,它也可能转到下一个/句子之前的位置),并且此关键字在大文本中多次出现。

首先,我尝试使用text.find()在文本中找到关键字的位置,并在4个不同位置找到了关键字。

>>positions
>>[125, 567,34445, 98885445] 

因此尝试根据空格分割文本并采用前5个字,

text[positions[i]:].split([len(keyword.split()):len(keyword.split())+5]

但是如何提取该关键字之前的5个单词?

2 个答案:

答案 0 :(得分:1)

您可以简单地使用

text[:position[i]].split()[-5:]

答案 1 :(得分:0)

为此使用re模块。对于第一个关键字匹配:

tmux

模式中的括号表示组号。第一对括号对应于match.group(1),第二对括号对应于match.group(2),依此类推。如果需要所有组,可以使用:

pattern = "(.+) (.+) (.+) (.+) (.+) grand master (.+) (.+) (.+) (.+) (.+)"
match = re.search(pattern, text)
if match:
    firstword_before = match.group(1) # first pair of parentheses
    lastword_before = match.group(5)

    firstword_after = match.group(6)
    lastword_after = match.group(10)

match.groups() # returns tuple of groups

对于文本中所有匹配的关键字,请使用re.findall。阅读re  有关详细信息。

P.S:有更好的方式来编写模式。那只是我懒。