【问题标题】:Count distinct co-occurrences计算不同的共现
【发布时间】:2010-10-23 22:43:56
【问题描述】:

我有一个包含文档列表和其中单词的数据库。每行代表一个术语。我要做的是计算一个单词出现在多少个文档中。

所以,给定以下内容:

+  doc  +  word  +
+-------+--------+
+   a   +  foo   +
+-------+--------+
+   a   +  foo   +
+-------+--------+
+   a   +  bar   +
+-------+--------+
+   b   +  bar   +
+-------+--------+

我会得到一个结果

+  word  +  count  +
+--------+---------+
+  foo   +    1    +
+--------+---------+
+  bar   +    2    +
+--------+---------+

因为 foo 只出现在一个文档中(即使它在该文档中出现两次)而 bar 出现在两个文档中。

基本上,我应该做的是(认为)以下查询吐出的单词的 COUNT 个,

SELECT DISTINCT word, doc FROM table

..但我无法完全弄清楚。有什么提示吗?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您实际上可以在count 中使用distinct,例如:

    select  word
    ,       count(distinct doc)
    from    YourTable
    group by
            word
    

    【讨论】:

      【解决方案2】:

      这可能是一个旁白,但我猜这不是最好的方法。为什么要跟踪每个文档中的每个单词?看看甲骨文中间体。它是为这类事情(特别是文本搜索)而构建的。

      【讨论】:

      • 我正在练习文本挖掘,实际上我正在使用另一个 Oracle 产品 - Data Miner。我在这里所做的是修剪不感兴趣的词(出现在超过 98% 的文档中且不到 1% 的词)以使数据集更小。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2017-05-30
      • 2021-08-16
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多