当前位置:首页 > PHP

PHP 实现自动摘要

2026-03-13 04:34:31PHP

PHP 实现自动摘要的方法

基于字符串截取的方法

对于简单的摘要需求,可以直接截取字符串的前N个字符。这种方法适用于内容开头部分包含关键信息的情况。

function getSummary($text, $length = 100) {
    if (strlen($text) <= $length) {
        return $text;
    }
    return substr($text, 0, $length) . '...';
}

基于句子分割的方法

通过标点符号分割文本为句子,然后选择前几个句子作为摘要。这种方法能保持句子完整性。

function getSentenceSummary($text, $sentences = 2) {
    $sentencesArray = preg_split('/(?<=[.?!])\s+/', $text, -1, PREG_SPLIT_NO_EMPTY);
    $summary = array_slice($sentencesArray, 0, $sentences);
    return implode(' ', $summary) . '...';
}

基于关键词提取的方法

使用TF-IDF算法或简单词频统计提取关键词,然后选择包含关键词的句子作为摘要。

function getKeywordSummary($text, $keywordsCount = 3) {
    $words = str_word_count(strtolower($text), 1);
    $wordFrequencies = array_count_values($words);
    arsort($wordFrequencies);
    $keywords = array_slice(array_keys($wordFrequencies), 0, $keywordsCount);

    $sentences = preg_split('/(?<=[.?!])\s+/', $text, -1, PREG_SPLIT_NO_EMPTY);
    $summarySentences = [];

    foreach ($sentences as $sentence) {
        foreach ($keywords as $keyword) {
            if (stripos($sentence, $keyword) !== false && !in_array($sentence, $summarySentences)) {
                $summarySentences[] = $sentence;
                break;
            }
        }
        if (count($summarySentences) >= 3) break;
    }

    return implode(' ', $summarySentences) . '...';
}

使用外部库

对于更复杂的摘要需求,可以使用专门的PHP库:

  1. 安装PHP-ML库(需要Composer):

    composer require php-ai/php-ml
  2. 使用文本摘要算法:

    
    require_once 'vendor/autoload.php';

use Phpml\FeatureExtraction\TfIdfTransformer; use Phpml\Tokenization\WordTokenizer;

function getTfIdfSummary($text, $sentences = 3) { $tokenizer = new WordTokenizer(); $sentencesArray = preg_split('/(?<=[.?!])\s+/', $text, -1, PREG_SPLIT_NO_EMPTY);

$wordsPerSentence = array_map(function($sentence) use ($tokenizer) {
    return $tokenizer->tokenize($sentence);
}, $sentencesArray);

$tfIdf = new TfIdfTransformer();
$tfIdf->fit($wordsPerSentence);
$tfIdf->transform($wordsPerSentence);

$sentenceScores = array_map('array_sum', $wordsPerSentence);
arsort($sentenceScores);
$topSentences = array_slice(array_keys($sentenceScores), 0, $sentences);
sort($topSentences);

$summary = array_map(function($index) use ($sentencesArray) {
    return $sentencesArray[$index];
}, $topSentences);

return implode(' ', $summary) . '...';

}

PHP 实现自动摘要


#### 处理HTML内容的摘要
如果需要从HTML内容中提取纯文本并生成摘要:

```php
function getHtmlSummary($html, $length = 150) {
    $plainText = strip_tags($html);
    $plainText = html_entity_decode($plainText);

    if (strlen($plainText) <= $length) {
        return $plainText;
    }

    $summary = substr($plainText, 0, $length);
    $lastSpace = strrpos($summary, ' ');
    if ($lastSpace !== false) {
        $summary = substr($summary, 0, $lastSpace);
    }

    return $summary . '...';
}

这些方法可以根据具体需求选择使用,从简单到复杂提供了不同层次的摘要实现方案。对于内容管理系统或新闻网站,基于关键词或TF-IDF的方法通常能产生更好的摘要效果。

标签: 摘要PHP
分享给朋友:

相关文章

拼团 PHP实现

拼团 PHP实现

拼团功能 PHP 实现 拼团是一种常见的电商营销模式,允许用户邀请好友一起购买商品,达到指定人数后享受优惠价格。以下是使用 PHP 实现拼团功能的关键步骤和代码示例。 数据库设计 拼团功能通常需要设…

PHP实现流程

PHP实现流程

PHP实现流程的基本步骤 环境准备 安装PHP运行环境,如XAMPP、WAMP或直接安装PHP和Web服务器(如Apache/Nginx)。确保环境变量配置正确,可通过命令行输入php -v验证安装。…

mvc实现 PHP

mvc实现 PHP

MVC 模式概述 MVC(Model-View-Controller)是一种设计模式,用于将应用程序的逻辑分离为三个核心组件:模型(Model)处理数据,视图(View)负责展示,控制器(Contro…

PHP实现wol

PHP实现wol

PHP实现WOL(Wake-on-LAN)功能 WOL(Wake-on-LAN)是一种通过网络唤醒处于休眠或关机状态计算机的技术。以下是使用PHP实现WOL功能的详细方法: 发送魔术包的基本原理 W…

PHP类实现

PHP类实现

PHP类的实现方法 PHP中类的实现主要围绕面向对象编程(OOP)的核心概念展开,包括类定义、属性、方法、构造函数、访问控制等。以下是一个完整的PHP类实现示例: class Person {…

PHP实现对账

PHP实现对账

PHP实现对账功能的方法 对账功能通常涉及比对两个数据源(如订单系统与支付系统)的记录,确保金额、状态等关键信息一致。以下是实现方案: 数据准备与获取 从数据库或API接口获取需要比对的数据源。例如…