首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于特定模式的文本句子抽取

基于特定模式的文本句子抽取
EN

Stack Overflow用户
提问于 2014-11-25 14:53:31
回答 2查看 670关注 0票数 0

我正在编写一小段代码,用于从文本文档中提取包含特定单词的句子。

以下是句子合格的条件:

句子必须包含搜索词。

句子必须以大写字母开头。

句子必须以句点结尾

句子必须至少包含8个单词。

经过一些研究,我发现最快的方法是使用preg_split(),但是我对regex真的很陌生,因此我对前两个条件有困难。最后一个可以在str_word_count()中使用if else来完成(我想)。

示例:

代码语言:javascript
复制
  Der er en lang og bevæget forhistorie bag lov om varsling m.v. i forbindelse med afskedigelser af større omfang. Det er ikke en bureaukratisk lovtekst blandt så mange andre.

搜索词:

代码语言:javascript
复制
bureaukratisk

它将返回第二个句子Det er ikke en bureaukratisk lovtekst blandt så mange andre.,因为它包含我们的搜索词,并且满足所有三个条件

如有任何帮助,将不胜感激

亲切地问候艾哈迈尔

EN

回答 2

Stack Overflow用户

发布于 2014-11-25 15:00:25

要检查句子中是否存在单词,请使用

代码语言:javascript
复制
if (strpos($str,'are') !== false) {
    echo 'word is present';
}

检查字数的步骤

代码语言:javascript
复制
str_word_count($str);

检查第一个单词是否以大写字母开头

代码语言:javascript
复制
if (strtoupper($str[0]) == $str[0])
{
   echo "match";
}

编辑:从段落中获取句子。

代码语言:javascript
复制
$strarr = explode(".",$para)

foreach($strarr as $check)
{

//use the functions i mentioned above here...if it matches print it or concanate it.
}
票数 1
EN

Stack Overflow用户

发布于 2014-11-25 15:06:06

您的正则表达式字符串可能需要以下元素:

代码语言:javascript
复制
([A-Z]\w* (.* ){6,} \w+[\.\?\!])

[A-Z] - any capital letter
\w* - zero or more letters
' ' - space
(.* ){6,} - six or more strings of anything ending with a space
' ' - space
\w+[\.\?\!] - at least one letter ending with a . or ? or !

我现在明白了,你的问题比我想象的要复杂一点。但这是一个很好的开始。Check this site out

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27120449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档