PHP提取摘要

function getSummary($content,$words,$max_desc_len=200){

if(is_array($words)){
$arrwords = $words;
}else{
$arrwords = explode(',',$words);
}
//$arrwords = array('挖掘'=>30,'频繁'=>20);

//如果没有关键词,直接输出前几段
if(count($arrwords)==0){
$output = $content;

//有关键词,输出带关键词的段落
}else{
//将内容拆分成数组
$content = str_replace('\n','[]',$content);
$content = str_replace('.','.[]',$content);
$content = str_replace('。','。[]',$content);
$docs = explode('[]',$content);
$docs = array_filter($docs,'strlen');
//记录每个关键词的在每段出现的次数和每段的权重,按权重排序
$poss = 0;
$pos = true;
foreach($docs as $key=>$content){
foreach ( $arrwords as $word) {
while ($pos) {
$pos = mb_strpos ( $content, $word, $poss , 'utf8' );
if($pos===false){
break;
}else{
$pos_words['pos'] = $pos; //记录所有的关键词出现的位置
$pos_words['word'] = $word; //记录每个位置的关键词
$allpos[$key]['words'][] = $pos_words; //记录段落关键词位置
$allpos[$key]['weight'] += 20;

$poss = $pos+1;
$pos = true;
}
}
$poss = 0;
$pos = true;
}
$weight[$key] = intval($allpos[$key]['weight']);
}
$weight = array_flip($weight);
krsort($weight);
$weight = array_flip($weight);
foreach($weight as $k=>$v){
$summary[] = $docs[$k];
}

$output = array_slice($summary,0,2);
}
$output = getShort(implode('..',$output),$max_desc_len);
//$output = implode('..',$output);
return $output;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值