Php 计数数据取决于句子id和数据频率
我有一张桌子:Php 计数数据取决于句子id和数据频率,php,mysql,sql,Php,Mysql,Sql,我有一张桌子: ========================================================================= | id | stem_before | stem_after | stem_freq | sentence_id | document_id | ========================================================================= | 1 | a
=========================================================================
| id | stem_before | stem_after | stem_freq | sentence_id | document_id |
=========================================================================
| 1 | a | b | 1 | 0 | 1 |
| 2 | c | d | 1 | 0 | 1 |
| 3 | e | f | 1 | 1 | 1 |
| 4 | g | h | 1 | 2 | 1 |
| 5 | i | j | 2 | 0 | 2 |
| 6 | k | l | 1 | 0 | 2 |
=========================================================================
我想分两步数数:
第一步是用每个句子id
和文档id
中的stem\u freq
的值之和除以1。第二步是将第一步的结果与stem\u freq
例如:
对于文档id
=1和语句id
=0的数据,第一步:1/(1+1)
=0.5,id
=1的第二步是1*0.5
=0.5。对于id
=2是1*0.5
=0.5
对于文档id
=2和语句id
=0的数据,第一步:1/(2+1)
=0.3333,id
=5的第二步是2*0.3333
=0.6666,id
=6是1*0.3333
=0.3333
这是我的密码:
$query = mysql_query ("SELECT sentence_id, document_id, stem_after,
stem_freq,SUM(stem_freq) as freq
FROM tb_stemming
WHERE document_id ='$doc_id'
GROUP BY(sentence_id)");
while ($row = mysql_fetch_array($query)) {
$a = $row['freq'];
$freq = $row['stem_freq'];
$tf = $freq/$a;
}
但它只给出每个不同句子中第一个数据的结果:你能帮我吗。谢谢:)试试这个:
SELECT
a.*,
a.stem_freq * b.value
FROM
tb_stemming as a
JOIN
(
SELECT
document_id,
sentence_id,
1 / sum(stem_freq) 'value'
FROM
tb_stemming
GROUP BY document_id, sentence_id
) as b
ON a.document_id = b.document_id AND a.sentence_id = b.sentence_id
只是一个简短的评论;您不应该在
选择时删除不在分组依据中的列。这是一种不好的做法。你能解释一下这句话吗:我想在每个句子中计算tf
:1/stem\u freq
,然后在之后用stem\u相乘stem\u在
之后是表中的一个字符。是否将其相乘?什么是tf
?计数的公式是什么?@MD.SahibBinMahboob如果我能很好地解释的话,很抱歉tf
和count
只是一个表示我需要的计算的词。请看我上面的计算示例。@igo在您的第一个示例中,count=1/2,这个2
是从哪里来的?tf=1*count,1
@MD.SahibBinMahboob 2的来源是来自stem\u freq
之和,其中句子id
为0,文档id
为1。1
的来源是来自stem\u freq