我需要在字符串中的特定单词的两侧提取上下文单词。在这种情况下,特定单词与字符串中的专有名词有关。 E.g。
我喜欢Martha烘焙的蛋糕,因为它们非常美味!
在这种情况下,Martha是一个专有名词,我想在Martha的两边提取4个单词,以便能够将Martha归类为名称,位置或组织。在这种情况下,烘烤是我的线索,Marth是一个人。我正在查看4的窗口大小,但是在目标词的两边少于4个单词的情况下,或者如果它是句子的第一个单词的话。
基本上是这样的:
答案 0 :(得分:1)
我假设您有相关专有名称的开始和结束索引(在I love the cakes Martha bakes as they are so delicious!
的情况下,我认为它们将是17和23)。
建议您在两个子字符串中取出正确名称前后的句子部分,然后使用正则表达式匹配所需的单词数。在我们的示例中,Martha
之前的子字符串是I love the cakes
,而正则表达式\S+(\s+\S+){0,3}\s*$
将匹配此子字符串末尾最多四个以空格分隔的单词(在这种情况下,它将是整个字符串,但如果有更多的单词,它只会是最后四个字)。您必须从所需的单词数中减去1并填写表达式中3的结果。
我相信你会对名字后的字词做同样的事情。