这里首先我从数据库中获取所有标签。 (标签是字符串,如市场营销,工作等)。
$POS
是POS(词性词汇)的数组。对于这个数组中的每个单词,对于给定的标签,我使用writtten方程计算概率。
当它出现时,有两个嵌套循环。为了做出决定,我需要数组$prob
中的最高值和属于该值的标记。
在这段代码中,我将得到数组$prob
中的所有值,并且从中我可以获得最高值,但是我如何才能持久保存标记值? PHP中是否有任何其他数据结构来管理这种情况?
$selectTag = mysqli_query($con,"SELECT tag from koove_tag");
$prob = array();
$i=0;
while ($row1 = @mysqli_fetch_array($selectTag))
{
foreach($POS as $p)
{
//Calculate total pos for given tag
$selectPOS = mysqli_query($con,"SELECT * from koove_post where tag = '".$row1[tag]."'");
while ($row2 = @mysqli_fetch_array($selectTag))
{
$totalPOSs.=$row2[pos].",";
}
$totalPOS_count = str_word_count($totalPOSs);
//calculate how many times particular 'pos' appears for given tag
$selectPOS = mysqli_query($con,"SELECT * from koove_post where tag = '".$row1[tag]."'");
while ($row3 = @mysqli_fetch_array($selectTag))
{
$POSs.=$row3[pos].",";
}
$pos_Count = echo substr_count($string, $p);
//calculate distinct POS in all POSs for all tags
$selectPOS = mysqli_query($con,"SELECT pos from koove_post");
while ($row4 = @mysqli_fetch_array($selectTag))
{
$POSs.=$row4[pos].",";
}
$distinct_pos_Count = echo substr_count($string, $p);
$prob[$i] = ($pos_Count + 1)/ ($totalPOS_count + $distinct_pos_Count);
$i++;
}
}
有大量(数千)帖子,如果有更好的方法来加快处理速度,也欢迎。
答案 0 :(得分:0)
当然可以。使用stdClass()对象来保存所需的值。然后编写方法对它们进行排序。例如:
$prbo[$i] = new stdClass();
$prob[$i]->value = ($pos_Count + 1)/ ($totalPOS_count + $distinct_pos_Count);
$prob[$i]->tag = $row1[tag];
构建该数组后,再编写自定义排序函数。
答案 1 :(得分:0)
1.您可以使用连接查询来消除其中一个循环。
2.您可以使用结束(数组)或自定义排序功能获得最高价值。