当前位置: 首页 > 面试题库 >

使用sqlite在列中查找最常见的单词?

柴飞星
2023-03-14
问题内容

我有看起来像这样的数据:

            movie_id    comment
            1           tom cruise is great
            1           great action movie
            2           got teary eyed
            2           great cast
            1           tom cruise is hott

我想要一个函数,该函数根据我选择的movie_id返回注释中最常用的词。因此,如果我查询movie_id = 1,则会得到:

            tom, 2
            cruise, 2
            is, 2
            great, 2
            hott, 1
            action, 1
            movie, 1

如果我查询movie_id = 2,则会得到:

            got, 1
            teary, 1
            eyed, 1
            great, 1
            cast, 1

我看到了一些使用tsql的解决方案,但我以前从未使用过,也不了解代码。寻找一种在sqlite3中做到这一点的方法


问题答案:

您可以使用一个非常丑陋的查询来执行此操作。

select word, count(*) from (
select (case when instr(substr(m.comments, nums.n+1), ' ') then substr(m.comments, nums.n+1)
             else substr(m.comments, nums.n+1, instr(substr(m.comments, nums.n+1), ' ') - 1)
        end) as word
from (select ' '||comments as comments
      from m
     )m cross join
     (select 1 as n union all select 2 union all select 3
     ) nums
where substr(m.comments, nums.n, 1) = ' ' and substr(m.comments, nums.n, 1) <> ' '
) w
group by word
order by count(*) desc

这是未经测试的。内部查询需要一个数字列表(此处限制为3;您可以了解如何添加更多数字)。然后检查单词是否在位置n +
1处开始。空格后是一个单词,所以我在注释的开头加了一个空格。

然后,出于聚合目的将其删除。



 类似资料:
  • 问题内容: 假设我有一个具有属性X的表A,如何找到出现次数最多的X?(可以有多个出现次数最高的事件) 即表A 我想回来 我不能在Sqlite中使用关键字ALL,所以我很茫然。 我想到了获取每个X的计数,然后对其进行排序,然后以某种方式使用ORDER BY DESC,以使最大数位于顶部,然后与LIMIT进行比较,以检查第一个元组以下的值是否相等(这意味着它们只是一样),但我不确定LIMIT语法以及是

  • 问题内容: 在Python列表中查找最常见元素的有效方法是什么? 我的列表项可能无法散列,因此无法使用字典。同样在绘制的情况下,应返回索引最低的项目。例: 问题答案: 提出了这么多解决方案,令我惊讶的是没有人提出我认为显而易见的解决方案(对于不可哈希但可比较的元素)-。 提供快速,可重用的功能,并允许你将一些棘手的逻辑委托给经过良好测试的标准库组件。考虑例如: 当然,这可以写得更简洁一些,但我的目

  • 假设你得到了一个巨大的文件,比如1GB。该文件每行包含一个单词(总共n个单词),您希望在该文件中找到k个最常见的术语。 现在,假设您有足够的内存来存储这些单词,那么在减少内存使用量和Big-O复杂性中的恒定开销方面,什么是更好的解决问题的方法?我相信有两种基本算法可以使用: 使用一个哈希表和一个最小堆来存储出现的次数和前K个单词。这是O(n nlogk)~O(n) 使用trie存储单词和出现的次数

  • 本文向大家介绍在Python的2D列表中查找最常见的元素,包括了在Python的2D列表中查找最常见的元素的使用技巧和注意事项,需要的朋友参考一下 2D列表具有列表作为其元素。换句话说,它是一个列表列表。在本文中,我们需要找到列表中所有列表中最常见的元素。 随着最大和计数 我们设计一个条件为in的跟随项,以检查给定子列表中元素的存在。然后,我们将max函数与count函数一起使用以获取具有最大频率

  • 问题内容: 在Python列表中查找最常见元素的有效方法是什么? 我的列表项可能无法散列,因此无法使用字典。同样在绘制时,应返回索引最低的项目。例: 问题答案: 提出了这么多解决方案,令我惊讶的是没有人提出我认为很明显的解决方案(对于不可哈希但可比较的元素)-[ ] [1]。 提供快速,可重用的功能,并允许您将一些棘手的逻辑委托给经过良好测试的标准库组件。考虑例如: 当然,这可以写得更简洁一些,但

  • 我有两个类的结构如下: 基本上,Company类有一个Person对象列表,每个Person对象都可以获得一个标记值。 如果我得到Person对象的列表,有没有一种方法可以使用Java8中的Stream来查找所有Person对象中最常见的一个标记值(如果是并列的,可能只是最常见的一个随机标记)?