这是一个文本挖掘项目。这个项目的目的是看看每个单词在不同的文档中的权重是多少。
现在我有两个表,一个表有TF信息(WORD | WordFrequency_in_EachFile),另一个表有IDF(WORD | HowManyFile_have_EachWord)。我不确定这个计算使用什么查询。
我想在这里做的数学是:
WordFrequency_in_EachFile*(log(N/HowManyFile_have_EachWord)+1)
N是文档的总数。
以下是我的代码:
create table TF_IDF (WORD, TF*IDF) as
select A.frequency*((log(10,132366/B.totalcount)+1))
from term_frequency A, document_frequency B
where A.WORD=B.WORD;
这里1323266是我的文件总数,而totalcount是一个单词显示的文件数。
由于我是SQL新手,我很感激您对代码的一些解释。非常感谢!
答案 0 :(得分:0)
计算看起来不错,但语法有些无效。
正确的变体可能如下所示:
create table TF_IDF as
select
A.Word as Word,
A.frequency*( log(10, 132366/B.totalcount) + 1) as TFIDF
from
term_frequency A,
document_frequency B
where
A.WORD=B.WORD
;
在CREATE ... AS SELECT ...
声明中,您不需要列规范。从字段别名派生的列名称和类型。
此外,您必须在新表中提供Word
列的值。
还有一点:表达中有一对多余的括号。