我有一系列基本上是英文段落的字符串。
我想提取上下文中单词Act(带大写字母)的所有实例。这里的上下文意味着,我希望看到some text some text some text Act some text some text some text
大概左边12-15个字,右边5-8个字。这非常类似于单词Act的语料库一致性。
但是,我想排除Act的实例,其中:
Act[0-2个词](Cap.//即当Act后跟0-2个词,然后字符串(Cap.
Act[0-2个单词(Act///即当act后跟0-2个单词,然后字符串(Act
[Act/即当act前面有[
…还有其他类似的案子…
如何使用本地php或支持nlp的php框架来实现这一点?请准确显示(即提供代码),即使您使用的是NLP或其他框架或库,请显示您使用的函数、对象或方法。
我只能使用php,但如果您有其他语言可以更好地做到这一点,请在评论中提供。注意,我需要先与mysql接口以将字符串提取到数组中,因此该语言最好支持mysql接口。
如果在php中很难做到这一点,我可以不用处理单词,而是处理字符(例如,我可以在左边有40-45个字符,在右边有20-25个字符作为单词act的上下文)。我也不介意用regex。

最佳答案

第一个标准答案是左边12-15个单词,右边5-8个单词:

^(([a-zA-Z]{1,})\s){12,15}Act\s(([a-zA-Z]{1,})\s){5,8}

你应该用消极的展望
^((?!Act\s(([a-zA-Z]{1,})\s){0,2}Cap | (?!Act\s(([a-zA-Z]{1,})\s){0,2})Act))(([a-zA-Z]{1,})\s){12,15}Act\s(([a-zA-Z]{1,})\s){5,8}

关于php - 使用PHP提取上下文中某个单词出现的实例,并按特定条件过滤结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56404132/

10-11 22:35