在句子中的特定单词的任一侧中获取n个单词数



我需要在字符串中特定单词的任一侧提取上下文单词。在这种情况下,特定单词与字符串中的一个专有名词有关。例如

我喜欢蛋糕玛莎烘烤,因为它们很美味!

在这种情况下,玛莎(Martha)是一个专有名词,我想在玛莎(Martha)的任一侧提取4个单词,以便能够将玛莎(Martha)归类为名称,位置或组织。在这种情况下,烘焙是我的线索,那就是玛斯是一个人。我正在看一个窗口大小4,但是在目标单词的任何一侧都少于4个单词或句子的第一个单词怎么办。

是什么。

本质上是如此:

  1. 我想在目标单词的任一侧得到4个单词。
  2. 将它们放入两个单独的列表中,称为左字和右字符
  3. 检查是否有少于4个单词,然后减小窗口大小,并在任一侧获得任何可用的单词。

我假设您有相关专有名称的开始和结尾索引(在I love the cakes Martha bakes as they are so delicious!的情况下,我认为它们将是17和23)。

一个建议是,您在两个子字中的专有名称之前和之后取出句子的部分,然后使用正则表达式匹配所需的单词数。在我们的示例中,Martha之前的子字符串为 I love the cakes,正则表达式S+(s+S+){0,3}s*$在此子字符串结束时最多匹配四个whitespace删除的单词(在这种情况下,它将是整个字符串,但是如果有更多单词,它,它将是它仅是最后四个)。您必须从所需的单词数量中减去1,并填充3个表达式中的3个结果。

我相信您可以对名称之后的单词进行类似的操作。

最新更新