【问题标题】:Analyze MySQL Text Data分析 MySQL 文本数据
【发布时间】:2015-09-20 03:17:21
【问题描述】:

这很奇怪,但我发现 Stackoverflow 社区非常有帮助。我有 mySQL 表,其中有一列充满已解析的文本数据。我想分析数据并查看出现了多少行单词。

ID     columnName
1      Car
2      Dog
3      CAR CAR car CAR

从上面的示例中,我想要返回的是单词 CAR 出现在两行中,单词 Dog Appears 在 1 行中。我真的不在乎字数有多少,就像这个词出现在多少行一样。问题是我不知道要搜索哪些词。是否有一个工具,或者我可以在 python 中构建的东西,它可以向我展示最流行的单词以及这些单词出现在多少行中。 我不知道从哪里开始,如果有人可以帮助我,那就太好了。

【问题讨论】:

  • group by columnname 很简单,但如果你在某个字段中有dog car,这将无济于事......
  • 您正在大海捞针。如果干草堆减去针的大小与干草堆的初始大小不同,则针存在。
  • 哈哈哈,是的,我知道。绝对是大海捞针。我是否有可能首先获得一列中所有单词的字数,然后手动消除我不需要的单词。在这种情况下,例如它会返回 car = 5 和 dog = 1。之后,我可以搜索 car 并查看它出现在多少行中,而 dog 并查看出现了多少行。这一次,我希望结果是 car = 2 和 dog = 1
  • 这似乎与您问题的第一部分相似:stackoverflow.com/questions/17942508/…
  • 肯定会调查 SUBSTRING。例如,如果您只需要在每列中使用第一个单词,那么您可以先抓取仅包含第一个单词的列并按这些单词分组?

标签: mysql python-2.7 data-analysis


【解决方案1】:

我会使用 python:

1) 设置 python 以使用 mysql(在线教程负载)

2) 定义:

from collections import defaultdict
tokenDict = defaultdict(lambda: 0)

前者是一个简单的字典,如果给定键没有值则返回 0(即 tokenDict['i_have_never_used_this_key_before'] 将返回 0)

3) 从表中读取每一行,对其进行标记并增加标记计数

tokens = row.split(' ') //tokenize
tokens = [lower(t) for t in tokens] //lowercase
tokens = set(tokens) //remove duplicates
for token in tokens:
    tokenDict[token] = tokenDict[token] + 1

【讨论】:

  • 谢谢马丁。欣赏它
猜你喜欢
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2020-08-18
相关资源
最近更新 更多