php实现根据词频生成tag云的方法


Posted in PHP onApril 17, 2015

本文实例讲述了php实现根据词频生成tag云的方法。分享给大家供大家参考。具体如下:

这里给定一段文本,分析文本的词频分布,生成tag云

<?php
/**
 * Tag cloud demo based on word frequency
 * @author: unknown
 * @since: 2007-02-27
 */
// Store frequency of words in an array
$freqData = array();
// Random words
$lorem = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Phasellus vestibulum ullamcorper tortor. Aenean quis lacus quis neque
adipiscing ultricies. Pellentesque tincidunt ligula vitae nibh ornare
pharetra. Proin dignissim tortor. Donec et ipsum nec tellus gravida
tempor. Aliquam ullamcorper purus vel felis. Praesent faucibus.
Curabitur porta. Nulla in lorem quis mi lacinia fringilla. Integer
adipiscing mi quis felis. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Quisque sagittis ante in
arcu. Sed libero enim, venenatis sit amet, vestibulum at, porttitor id,
neque. Vestibulum ornare semper erat. Sed tincidunt nibh et massa. Cras
sed diam. Quisque blandit enim.
Sed nonummy. Aenean mollis turpis quis enim. Nam massa nulla, varius
molestie, aliquet et, feugiat eget, nisi. Sed mollis, leo ut pretium
placerat, nibh turpis egestas ipsum, sed aliquam neque enim in risus.
Nullam nisl. Sed tincidunt leo quis tellus. Mauris non lorem. Aenean
tristique justo at arcu. Fusce et lorem. Nam sodales. Mauris condimentum
diam. Nam commodo. Cum sociis natoque penatibus et magnis dis parturient
montes, nascetur ridiculus mus. Cras ac risus. Proin et dolor laoreet mi
gravida sodales. Duis bibendum, ipsum posuere egestas posuere, dui lacus
feugiat turpis, id tincidunt urna est sit amet est. Cras eu sem.
";
// Get individual words and build a frequency table
foreach( str_word_count( $lorem, 1 ) as $word )
{
 // For each word found in the frequency table, 
 //increment its value by one
 array_key_exists($word,$freqData)?$freqData[$word]++:$freqData[$word]=0;
}
// ==============================================================
// = Function to actually generate the cloud from provided data =
// ==============================================================
function getCloud($data = array(), $minFontSize = 12, $maxFontSize = 30)
{
 $minimumCount = min( array_values( $data ) );
 $maximumCount = max( array_values( $data ) );
 $spread = $maximumCount - $minimumCount;
 $cloudHTML = '';
 $cloudTags = array();
 $spread == 0 && $spread = 1;
 foreach( $data as $tag => $count )
 {
 $size = $minFontSize + ( $count - $minimumCount )
 * ( $maxFontSize - $minFontSize ) / $spread;
 $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'
 . '" class="tag_cloud" href="http://www.google.com/search?q='
 . $tag
 . '" title="\'' . $tag . '\' returned a count of ' . $count
 . '">'
 . htmlspecialchars( stripslashes( $tag ) ) . '</a>';
 }
 return join( "\n", $cloudTags ) . "\n";
} 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Tag Cloud Demo</title>
 <style type="text/css" media="screen">
 /*<![CDATA[*/
 .tag_cloud { padding: 3px; text-decoration: none; }
 .tag_cloud:link { color: #81d601; }
 .tag_cloud:visited { color: #019c05; }
 .tag_cloud:hover { color: #ffffff; background: #69da03; }
 .tag_cloud:active { color: #ffffff; background: #ACFC65; }
 /*]]>*/
 </style>
</head>
<body>
 <h1>Sample Tag Cloud</h1>
 <div id="wrapper">
 <?php echo getCloud( $freqData ) ?>
 </div>
</body>
</html>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP 函数语法介绍一
Jun 14 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
php开发文档 会员收费1期
Aug 14 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
goto语法在PHP中的使用教程
Sep 17 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 #PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 #PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 #PHP
php和editplus正则表达式去除空白行
Apr 17 #PHP
PHP生成唯一订单号的方法汇总
Apr 16 #PHP
微信access_token的获取开发示例
Apr 16 #PHP
微信自定义菜单的处理开发示例
Apr 16 #PHP
You might like
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
javascript 伪数组实现方法
2010/10/11 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
Python与R语言的简要对比
2017/11/14 Python
python机器学习实战之树回归详解
2017/12/20 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Pandas之缺失数据的实现
2021/01/06 Python
python生成word合同的实例方法
2021/01/12 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
文化建设工作方案
2014/05/12 职场文书
小学推普周活动总结
2015/05/07 职场文书
学校运动会感想
2015/08/10 职场文书