我有一个字符串数组,它们本质上是英文段落。
我想在上下文中提取单词 Act
(大写字母)的所有实例。在此处的上下文中,我希望看到 some text some text some text Act some text some text some text
。
左边可能有 12-15 个单词,右边有 5-8 个单词。这很像 语料库索引 Act
一词。
但是,我想排除 Act
的实例,其中:
Act
[0-2 words](Cap.
//即当Act
后跟 0-2 个单词,然后是字符串(Cap.
Act
[0-2 个单词(Act
//即当 Act 后跟 0-2 个单词,然后是字符串(Act
[Act
//即当 Act 前面有[
- ……还有其他类似的案例……
您将如何使用 native PHP 或支持 NLP 的 PHP 框架来执行此操作?请准确显示(即提供代码),即使您使用 NLP 或其他框架或库也请显示您使用的函数或对象或方法。
我只能使用 PHP,但如果您有其他语言可以更好地做到这一点,请在评论中提供。请注意,我需要与 MySQL 接口(interface)以首先将字符串提取到数组中,因此该语言最好支持 MySQL 接口(interface)。
如果在 PHP 中很难做到这一点,我可以放弃处理单词并改为处理字符(例如,我可以在左侧有 40-45 个字符,在右侧有 20-25 个字符作为上下文法案这个词)。我也不介意使用正则表达式。
最佳答案
第一个正则回答左边 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/