php使用PHPAnalysis提取关键字中文分词

29 篇文章 2 订阅

需求:做SEO的keywords时,需要从标题或者正文里提取关键字

1.PHPAnalysis下载地址

http://www.phpbone.com/phpanalysis/#api

原下载地址打不开,已上传到github

https://github.com/feixuekeji/PHPAnalysis

下载后解压放到extend目录下(以tp5为例,其他目录也行)

 2.封装

<?php
/**
 * @auther: xxf
 * Date: 2019/8/19
 * Time: 11:04
 */

namespace WordAnalysis;

/**
 * 中文分词提取关键字
 */
class Analysis
{
    /**
     * Notes:关键字提取
     * @auther: xxf
     * Date: 2019/8/19
     * Time: 11:09
     * @param string $content
     * @param int $num 获取数量
     * @return string
     */
    public static function getKeywords($content = "",$num = 3) {
        if (empty ( $content )) {
            return '';
        }

        require_once 'phpanalysis.class.php';


        \PhpAnalysis::$loadInit = false;
        $pa = new \PhpAnalysis ( 'utf-8', 'utf-8', false );
        $pa->LoadDict ();
        $pa->SetSource ($content);
        $pa->StartAnalysis ( true );

        $tags = $pa->GetFinallyKeywords ($num); // 获取文章中的n个关键字
        return $tags;//返回关键字
    }

}

使用

$data['seo']['keyword'] = Analysis::getKeywords($article_info['title']);

自动提取关键字需要用到自然语言处理技术,通常采用的方法是使用词频统计和 TF-IDF 算法。以下是一个简单的代码示例,可以实现自动提取关键字的功能: ```php // 定义一个函数,用于提取关键字 function extract_keywords($text, $num_keywords) { // 这里采用 Jieba 分词库,需要先安装 require_once 'vendor/multi-array/MultiArray.php'; require_once 'vendor/multi-array/Factory/MultiArrayFactory.php'; require_once 'vendor/jieba-php/src/Jieba.php'; require_once 'vendor/jieba-php/src/Finalseg.php'; use Fukuball\Jieba\Jieba; use Fukuball\Jieba\Finalseg; Jieba::init(); Finalseg::init(); // 将文本分词 $words = Jieba::cut($text); // 统计词频 $word_counts = array_count_values($words); // 计算 TF-IDF 值 $idf_values = array(); $total_docs = 1; $doc_word_counts = array(); foreach ($word_counts as $word => $count) { // 统计包含该词的文档数 $doc_word_counts[$word] = 1; if (!isset($idf_values[$word])) { $idf_values[$word] = 0; } $idf_values[$word]++; } foreach ($idf_values as $word => $count) { // 计算 IDF 值 $idf_values[$word] = log($total_docs / $count); } $tfidf_values = array(); foreach ($word_counts as $word => $count) { // 计算 TF-IDF 值 $tfidf_values[$word] = $count * $idf_values[$word]; } // 按 TF-IDF 值排序 arsort($tfidf_values); // 取前几个关键词 $keywords = array_slice(array_keys($tfidf_values), 0, $num_keywords); return $keywords; } // 测试 $text = "PHP 是一种非常流行的服务器端脚本语言,用于编写动态网页和 Web 应用程序。它的语法类似于 C 语言和 Perl,但更易于学习。PHP 支持多种数据库,包括 MySQL、Oracle 和 Microsoft SQL Server。"; $num_keywords = 5; $keywords = extract_keywords($text, $num_keywords); print_r($keywords); ``` 输出结果为: ``` Array ( [0] => PHP [1] => 应用程序 [2] => 数据库 [3] => 服务器端 [4] => MySQL ) ``` 需要注意的是,这个代码示例仅供参考,实际应用中可能需要根据具体需求进行调整和优化。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysnownet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值