首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf-idf出错

tf-idf出错
EN

Stack Overflow用户
提问于 2012-12-12 05:08:36
回答 1查看 364关注 0票数 1

嗨,我有一个关于tf-idf的问题。代码显示:"0“

代码如下:

代码语言:javascript
复制
$terms = array_count_values( explode( ' ', $frase ) );
$total_term = asort( $terms );
$total_array = count($total_term);

for ($i=1; $i<=$total_array; $i++){
$SQL = mysql_query("SELECT webTitulo, webDescripcion, webkeywords, weburl FROM webs WHERE MATCH (webTitulo, webDescripcion, webkeywords, weburl) AGAINST ('$total_term[$i]')", $server_link) or die(mysql_error());
$frec_term = mysql_num_rows($SQL);
}
$sssql = mysql_query("SELECT uDR.webTitulo, uDR.webDescripcion, uDR.webkeywords, uDR.weburl, SUM(uDR.priority) as SPriority
FROM (

(SELECT s1.webTitulo, s1.webDescripcion, s1.weburl, s1.webkeywords, 3 as priority FROM webs s1 WHERE MATCH (webTitulo) AGAINST ('$frase'))

UNION

(SELECT s2.webTitulo, s2.webDescripcion, s2.weburl, s2.webkeywords, 1 as priority FROM webs s2 WHERE MATCH (webkeywords) AGAINST ('$frase'))

UNION

(SELECT s3.webTitulo, s3.webDescripcion, s3.weburl, s3.webkeywords, 2 as priority FROM webs s3 WHERE MATCH (webDescripcion) AGAINST ('$frase'))) uDR

GROUP BY uDR.webTitulo, uDR.weburl, uDR.webDescripcion, uDR.webkeywords

ORDER BY SPriority DESC ", $server_link) 
                         or die(mysql_error()); 
$totalRows = mysql_num_rows($sssql);
$tf_idf = $frec_term * log10($totalRows/70);
echo $tf_idf;

70是一个用来替换不存在的变量的数字。

问候

EN

回答 1

Stack Overflow用户

发布于 2012-12-12 05:22:41

您的逻辑是错误的:如果您将$frase替换为一个句子,您将以$total_term作为true而不是数组结束,请参见this example

由于array_count_values,即使$total是一个数组,关键字也将是字符串而不是数字。

即使它们是数字键,它们也可能是从零开始的,这意味着您的最后一个$frec_term = mysql_num_rows($SQL);将计算为0

因此,$tf_idf将成为0有很多原因,它们都来自于$frec_term是NULL /未定义/ 0这一事实。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13828530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档