Как рассчитать тф-идф?
У меня проблема, я не могу рассчитать TF-IDF с моим реальным кодом.
Это пример tf-idf:
$tfidf = $term_frequency * // tf
log( $total_document_count / $documents_with_term, 2); // idf
У меня есть все документы, но мне нужны $ documents_with_term и $ term_frequency.
Это мой фактический код:
$frase = htmlspecialchars($_GET['frase'], ENT_NOQUOTES);
$sssql = $server_link->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, $a as priority FROM webs s1 WHERE MATCH (webTitulo) AGAINST ('$frase'))
UNION
(SELECT s2.webTitulo, s2.webDescripcion, s2.weburl, s2.webkeywords, $b as priority FROM webs s2 WHERE MATCH (webkeywords) AGAINST ('$frase*' IN BOOLEAN MODE))
UNION
(SELECT s3.webTitulo, s3.webDescripcion, s3.weburl, s3.webkeywords, $c 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 ");
$totalRows = $sssql->num_rows; //This is the $total_document_count
У меня есть $ total_document_count, но я не знаю, как извлечь TF и $ documents_with_term.
Как я могу извлечь их?
1 ответ
- В вашем примере $totalRows будет документами с термином.
- Общее количество документов будет SELECT COUNT(*) total_documents FROM webs
- Частоту терминов немного сложнее определить с помощью SQL. см.: Подсчитать количество вхождений строки в поле VARCHAR?