php 自动提取关键字
时间: 2023-07-26 12:35:52 浏览: 48
自动提取关键字需要用到自然语言处理技术,通常采用的方法是使用词频统计和 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
)
```
需要注意的是,这个代码示例仅供参考,实际应用中可能需要根据具体需求进行调整和优化。