prueba de concepto de estadisticas en notas

This commit is contained in:
humano 2017-11-17 14:39:51 -05:00
parent b701d1c83d
commit 450245f254

View File

@ -1,12 +1,246 @@
<?php <?php
date_default_timezone_set('America/Bogota'); date_default_timezone_set('America/Bogota');
function limpiar_cadena($cadena) {
return (preg_replace('[^ A-Za-z0-9_-ñÑ]', '', $cadena));
// return preg_replace('/\&(.)[^;]*;/', '\\1', $cadena);
}
function cadena_array($text,$tipo,$cantidad) {
$limpios="";
$compuestos="";
$array_compuestos =array();
$wordCounter =array();
$cantidades =array();
if($cantidad =="") {$cantidad="10";}
$extras = array(
'p'=>array('de','la','que','el','en','y','a','los','del','se','las','por','un','para','con','no','una','su','al','es','lo',
'como','más','pero','sus','le','ya','o','fue','este','ha','sí','porque','esta','son','entre','está','cuando','muy','sin','sobre',
'ser','tiene','también','me','hasta','hay','donde','han','quien','están','estado','desde','todo','nos','durante','estados','todos',
'uno','les','ni','contra','otros','fueron','ese','eso','había','ante','ellos','e','esto','mí','antes','algunos','qué','unos','yo'
,'otro','otras','otra','él','tanto','esa','estos','mucho','quienes','nada','muchos','cual','sea','poco','ella','estar','haber',
'estas','estaba','estamos','algunas','algo','nosotros','mi','mis','tú','te','ti','tu','tus','ellas','nosotras','vosotros','vosotras',
'os','mío','mía','míos','mías','tuyo','tuya','tuyos','tuyas','suyo','suya','suyos','suyas','nuestro','nuestra','nuestros','nuestras',
'vuestro','vuestra','vuestros','vuestras','esos','esas','estoy','estás','está','estamos','estáis','están','esté','estés','estemos',
'estéis','estén','estaré','estarás','estará','estaremos','estaréis','estarán','estaría','estarías','estaríamos','estaríais',
'estarían','estaba','estabas','estábamos','estabais','estaban','estuve','estuviste','estuvo','estuvimos','estuvisteis','estuvieron',
'estuviera','estuvieras','estuviéramos','estuvierais','estuvieran','estuviese','estuvieses','estuviésemos','estuvieseis','estuviesen',
'estando','estado','estada','estados','estadas','estad','he','has','ha','hemos','habéis','han','haya','hayas','hayamos','hayáis',
'hayan','habré','habrás','habrá','habremos','habréis','habrán','habría','habrías','habríamos','habríais','habrían','había','habías',
'habíamos','habíais','habían','hube','hubiste','hubo','hubimos','hubisteis','hubieron','hubiera','hubieras','hubiéramos','hubierais',
'hubieran','hubiese','hubieses','hubiésemos','hubieseis','hubiesen','habiendo','habido','habida','habidos','habidas','soy','eres',
'es','somos','sois','son','sea','seas','seamos','seáis','sean','seré','serás','será','seremos','seréis','serán','sería','serías',
'seríamos','seríais','serían','era','eras','éramos','erais','eran','fui','fuiste','fue','fuimos','fuisteis','fueron','fuera','fueras',
'fuéramos','fuerais','fueran','fuese','fueses','fuésemos','fueseis','fuesen','siendo','sido','tengo','tienes','tiene','tenemos',
'tenéis','tienen','tenga','tengas','tengamos','tengáis','tengan','tendré','tendrás','tendrá','tendremos','tendréis','tendrán',
'tendría','tendrías','tendríamos','tendríais','tendrían','tenía','tenías','teníamos','teníais','tenían','tuve','tuviste','tuvo',
'tuvimos','tuvisteis','tuvieron','tuviera','tuvieras','tuviéramos','tuvierais','tuvieran','tuviese','tuvieses','tuviésemos',
'tuvieseis','tuviesen','teniendo','tenido','tenida','tenidos','tenidas','tened',
'ante', 'bajo', 'con', 'contra', 'desde', 'durante', 'entre',
'hacia', 'hasta', 'mediante', 'para', 'por', 'pro', 'según',
'sin', 'sobre', 'tras', 'vía', 'también','parecen','toca','numero','número','video','vídeo','fotos','asi','así','miles'
,'cientos','imágenes','imagenes','años','sentido','ultimos','últimos','mano','dicen','casi','servicio','vice','pero','Pero','trata','decir'
),
'a'=>array('el','él','los', 'las', 'una', 'unos', 'unas', 'este', 'estos', 'ese',
'esos', 'aquel', 'aquellos', 'esta', 'estas', 'esa', 'esas',
'aquella', 'aquellas', 'usted', 'nosotros', 'vosotros',
'ustedes', 'nos', 'les', 'nuestro', 'nuestra', 'vuestro',
'vuestra', 'mis', 'tus', 'sus', 'nuestros', 'nuestras',
'vuestros', 'vuestras', 'de', 'la', 'su', 'La', 'No', 'rcn', 'RCN', 'El', 'una', 'Una'
),
'o'=>array('esto', 'que', 'del', 'es', 'en', 'ha', 'al', 'lo', 'un','si','sí','no','se','art','luego','solo','más','como','cómo','dijo',
'buena','buen','algunos','algunas','el','donde','fueron','más','varios','personas','uno','dos','tres','cuatro','cinco','seis','siete','ocho','nueve','diez'
,'causa','cien','mil','millon','millones','pesos','quien','que','fecha','tiene','vez','hay','horas','fue','com','var','uri','mas','quot','minuto','the','event',
'param','pero','and','split','ciento','san','son','aacute','colombia','pais','un','Un','youtube','estaba','ayer','hoy','anoche',
'adelante','ahora','allá','anoche','antaño','anteanoche','antenoche','antes','aquí','aún','ayer','constantemente','cuando','despacio',
'después','durante','enantes','encima','endenantes','enseguida','hasta','hogaño','horita','hoy','luego','mañana','mientras','mucho',
'nunca','primero','pronto','recientemente','recién','siempre','tarde','temprano','todavía','ya','parte','procedieron','están','Ver'),
);
$texto = $text;
$text = html_entity_decode($text);
//$text = limpiar_cadena("$text");
///$text = str_replace(array('\r\n', '\n', '<br>', '<BR>'),'', $text);
$text = str_replace(array('?','¿','¡','!','&nbsp;','"'," ",">","El"), ' ', $text);
//$text = str_replace(array('(',')',':','.','?','!','-','*','-','"','¿','¡',':',';','“','”','','','“',"'","+","/>"), ' ', $text);//reemplazar el carácterno es válido
//$regex_nombres_compuestos = array('(\s[A-Z][\w-áéíóú]*(\s+[A-Z][\w-áéíóú]+)+)');
$no_validos = array('(',')',':','.','?','!','-','*','-','"','¿','¡',':',';','“','”','','','“',"'","+","/>",">");
//$regex_nombres_compuestos = '(.[A-Z][\w-áéíóú]*(\s+[A-Z][\w-áéíóú]+)+)';
//$regex_nombres_compuestos = '(.[A-ZÁÉÍÓÚ][\w-áéíóúñ]*(\s+[A-ZÁÉÍÓÚ][\w-áéíóúñ]+)+)';
//$regex_nombres_compuestos = '(.[A-ZÁÉÍÓÚ][\w-áéíóúñ]*(\s((de)(( la))?)?\s?[A-ZÁÉÍÓÚ][\w-áéíóúñ]+)+)';
$regex_nombres_compuestos = '(.[A-ZÁÉÍÓÚ]+[\wáéíóúñ]*(\s((de)(( la ))?)?\s?[A-ZÁÉÍÓÚ]+[\wáéíóúñ]+)+)';
//$regex_nombres_compuestos = '(.[A-ZÁÉÍÓÚ][\w-áéíóúñ]*(.((de)(( la)?))?.?[A-ZÁÉÍÓÚ][\w-áéíóúñ]+)+)';
///$text = preg_replace($mayuscula_inicial,"$0_compuesto_$1_$2", $text);
preg_match_all("$regex_nombres_compuestos", $text, $array_nombres_compuestos);
//$array_nombres_compuestos[0] = str_replace($no_validos, '',$array_nombres_compuestos[0]);//reemplazar el carácterno es válido
$array_nombres_compuestos_unicos[0]=array_unique($array_nombres_compuestos[0]);
foreach($array_nombres_compuestos[0] as $clave => $v){
$tags = str_replace(array(' '), '_', $v);
$compuestos .="$v<br> ";
//$array_compuestos[] = str_replace(array('(',')',':','.','?','!','-','*','-','"','¿','¡',':',';','“','”','','','“',"'","+","/>"), ' ', strip_tags($tags));;
$array_compuestos[] = strip_tags($tags);
}
$text = strip_tags($text);
$text = str_replace(array('?','¿','¡','!','&nbsp;','\r\n', '\n','<27>'), ' ', $text);
$text = str_replace(array('(',')',':','.','?','!','-','*','-','"','¿','¡',':',';','“','”','','','“',"'","+","/>"), ' ', $text);//reemplazar el carácterno es válido
$text = str_replace(array(' ','.'), ',', $text);//sustituir por comas
$array=explode(",",$text);//Crear un array con las palabras
$array = array_merge($array_compuestos,$array);
//// debug
$array = array_diff($array, $extras['p'], $extras['a'], $extras['o']);
foreach ($array as $clave => $value) {
$title="";
$tag_adicional="";
$value=trim($value);//bye spaces
if ( strlen($value)>3) {//no smaller than X and not in banned
//$value = stemm_es::stemm($value);
//I can count how many time we ad and update the record in an array
if (@array_key_exists($value,$wordCounter)){//if the key exists we ad 1 more
$wordCounter[$value]=$wordCounter[$value]+1;
}
else $wordCounter[$value]=1;//creating the key
}
}
unset($arrText);
//$lema=stemm_es::stemm($wordCounter);
uasort($wordCounter,"cmp");//short from bigger to smaller
$keywords="";
$count = 0;
foreach ($wordCounter as $key => $value){
if($value >1){
if($count < $cantidad){
//$keywords[] =$key;
$keywords[] ="$key";
}else{break;} $count++;
}
}
$tags=$keywords;
$resultado = $title;
if($tags !=''){
$nube ="";
foreach($tags as $c=>$valor){
//foreach($wordCounter as $c=>$valor){
//$valor = $tags[0];
//$valor ="$valor ";
$p = stripos($resultado, $valor);
if($p !==false ){
$s1 = substr($resultado, 0, $p);
$s2 = substr($resultado, $p, strlen($valor));
$s3 = substr($resultado, ($p + strlen($valor)));
$resultado = $s1."#$s2".$s3;
//$r= $s1;
}else{
$c = str_replace(array('_'), ' ', $valor);
$camel[] = str_replace(array(' '), '', $c);
$palabras[]=explode(" ",$c);//Crear un array con las palabras
foreach($palabras as $valor){
$listado_palabras[] = $valor;
}
$ht = str_replace(array(' '), '', $c);
$limpios[] = $c;
$cant = $wordCounter[$c];
$size = ($cant/4);
$tag_adicional .= "<SPAN title='$cant' CLASS='badge label-warning' draggable='true' id='#$ht ' ondragstart=\"evdragstart(event,this)\">$c </span> " ;
$nube .= "<a href='#' title='$c $cant' style='font-size: $size"."vh' id='#$ht ' >$c</a> " ;
}
}
}
$resultado = " $compuestos $tag_adicional ";
if($tipo=="tags") {
return $tag_adicional;
}elseif($tipo=="personajes") {
//return $compuestos;
return $array_nombres_compuestos[0];
}elseif($tipo=="nube") {
//return $compuestos;
return $nube;
}elseif($tipo=="limpio") {
//return $compuestos;
return $limpios;
}elseif($tipo=="camel") {
//return $compuestos;
return $listado_palabras[0];
}else {
return $resultado;
}
///return $array;
///debug
}
function array_tabla($contenido,$campo){
//return $contenido[0];
foreach ($contenido as $id_campo => $valor) {
$linea .= "<div class='div_$campo' >$id_campo $valor esto</div>";
}
return $linea ;
}
function formulario_corpus($id_form,$id_campo,$group,$tipo){
$consulta = "SELECT count(control) as cantidad , id_campo ,contenido , campo_nombre FROM `form_datos`, `form_campos` WHERE `form_datos`.id_campo = `form_campos`.id AND `id_campo` = '$id_campo' AND `form_id` = '$id_form' GROUP BY $group order by cantidad";
$link=Conectarse();
mysqli_set_charset($link, "utf8");
$sql=mysqli_query($link,$consulta);
if (mysqli_num_rows($sql)!='0'){
$array = array();
while( $row = mysqli_fetch_array( $sql ) ) {
$etiquetas .="".html_entity_decode($row['contenido'])." ";
$array[] = html_entity_decode($row['contenido']);
$colores .= "'#".substr(md5(rand()), 0, 6)."',";
}
$etiqueta = "".substr (preg_replace("[\n|\r|\n\r|\t]",'', $etiquetas), 0, -1)."";
}else { $grafica= $consulta;
}
$etiqueta = limpiar_cadena($etiqueta);
$etiqueta= cadena_array("$etiqueta","nube","50");
///$etiqueta = array_tabla($etiqueta,"tags");
//$etiqueta = json_encode($etiqueta);
return $etiqueta;
}
function formulario_autores($form,$id_usuario) { function formulario_autores($form,$id_usuario) {
$link=Conectarse(); $link=Conectarse();
mysqli_set_charset($link, "utf8"); mysqli_set_charset($link, "utf8");
$consulta ="SELECT COUNT(id_usuario) AS cantidad,id_usuario FROM `form_datos` WHERE `form_id` = '$form' GROUP BY `id_usuario` ORDER BY cantidad DESC "; //$consulta ="SELECT COUNT(control) AS cantidad,id_usuario FROM `form_datos` WHERE `form_id` = '$form' GROUP BY `id_usuario` ORDER BY cantidad DESC ";
$consulta ="SELECT *,count(distinct control) as cantidad FROM form_datos WHERE form_id = '$form' GROUP BY id_usuario order by cantidad DESC ";
/* /*
if($autor=="") { if($autor=="") {
@ -34,10 +268,10 @@ $consulta ="SELECT COUNT(id_usuario) AS cantidad,id_usuario FROM `form_datos` WH
$autor .= "<li ><a title='$row[id_usuario]' href='#'>$Autor <span class='badge'>$row[cantidad]</span></a></li> "; $autor .= "<li ><a title='$row[id_usuario]' href='#'>$Autor <span class='badge'>$row[cantidad]</span></a></li> ";
}else { $otros .= "<li ><a title='$row[id_usuario]' href='#'>Otro <span class='badge'>$row[cantidad]</span></a></li>";} }else { $otros .= "<li ><a title='$row[id_usuario]' href='#'>Otro <span class='badge'>$row[cantidad]</span></a></li>";}
} }
$resultado = "$cantidad <ul>$autor $otros</ul>"; $resultado = "$cantidad <ul>$autor $otros</ul> ";
}else {$resultado =0;} }else {$resultado =0;}
return $resultado ; return $resultado ;
} }
@ -64,24 +298,35 @@ return $resultado;
} }
function notas_estadisticas($form,$div,$tipo) { function notas_estadisticas($form,$div,$tipo) {
$cantidad_notas= formulario_contar_registros("$form","","",""); $cantidad_notas= formulario_contar("$form");
$cantidad_autores= formulario_autores("$form",""); $cantidad_autores= formulario_autores("$form","");
$total_gusta= contar_interacciones("","Gusta","","$form"); $total_gusta= contar_interacciones("","Gusta","","$form");
$total_compromisos= contar_interacciones("","Comprometo","","$form"); $total_compromisos= contar_interacciones("","Comprometo","","$form");
$total_comentarios= contar_interacciones("","Comentar","","$form"); $total_comentarios= contar_interacciones("","Comentar","","$form");
$id_campo = campo_titulo($form) ;
$corpus = formulario_corpus("$form","$id_campo","contenido","barras");
$contenido =" $contenido ="
<hr> <hr>
<div class='col-md-5'> <div class='col-md-5'>
<ul class='list-group'> <ul class='list-group'>
<li class ='list-group-item active'>Estadísticas</li>
<li class='list-group-item' >Total notas: <strong>$cantidad_notas</strong> </li> <li class='list-group-item' >Total notas: <strong>$cantidad_notas</strong> </li>
<li class='list-group-item'>Autores: <strong>$cantidad_autores</strong></li> <li class='list-group-item'>Autores: <strong>$cantidad_autores</strong></li>
<li class='list-group-item'>Me gusta: <strong>$total_gusta</strong> <li class='list-group-item'>Me gusta: <strong>$total_gusta</strong>
Compromisos: <strong>$total_compromisos</strong> Compromisos: <strong>$total_compromisos</strong>
Comentarios: <strong>$total_comentarios</strong></li> Comentarios: <strong>$total_comentarios</strong></li>
</ul> </ul>
</div> </div>
<div class='col-md-5'>
<div class='container-fluid'>
<ul class='list-group'>
<li class ='list-group-item active'>Palabras mas usadas</li>
<li class='list-group-item'>$corpus</li>
<ul>
</div>
</div>
"; ";
@ -1118,6 +1363,8 @@ $resultado="
return $resultado; return $resultado;
} }
function json_tabla($contenido,$campo,$control){ function json_tabla($contenido,$campo,$control){
@ -16854,6 +17101,12 @@ $respuesta->addAssign("$div","innerHTML","$resultado");
} }
$xajax->registerFunction("XXX"); $xajax->registerFunction("XXX");
function cmp($a, $b) {//Ordenar los numeros descendientemente
if ($a == $b) return 0;
return ($a < $b) ? 1 : -1;
}
function holamundo() { function holamundo() {
$respuesta = new xajaxResponse('utf-8'); $respuesta = new xajaxResponse('utf-8');