【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

使用 NoSQL 技术进行博客观点分析

  • 2012-01-22
  • 本文字数:2426 字

    阅读完需:约 8 分钟

公司越来越愿意使用社交化媒体来了解客户对产品和公司的看法。这表现为一种挑战,即需要一种针对非结构化内容的分析技术,它会取词并与一定的数值度量关联,从而解释内容中的观点。

EMC 公司的 Subramanian Kartik 和 Greenplum 团队正在从事一项与分析博客相关的研究项目,其中会使用 MapReduce 和 Python 的自然语言工具集(Natural Language Toolkit),与EMC Greenplum 数据库中的SQL 分析师一起,使用稀疏向量(sparse vectors)以及k-means 簇集算法。

Subramanian 在今年的 NoSQL Now 2011 大会上发表了关于此项研究的演讲。InfoQ 对其进行了采访,以了解这个项目和他们开发的解决方案背后的架构。

InfoQ: 请您介绍一下关于博客观点分析的 Greenplum 研究项目,以及支持它的架构。

Kartik:观点分析指的是自然语言处理应用程序、计算语言学以及文本分析,从而从源内容中提取个人信息,在我们的项目中,是从一系列博客中提取的。这种分析在社交化媒体数据和传统领域(像包括 e-Discovery 在内的客户)的分析领域变得越来越流行。最终目标是要在大量文档中发现主要概念(dominant concepts)的模式,并把这些文档的子集与概念关联起来。我们在此描述的就是其中的一种情况,即发现博主们关于公司产品和服务内容的主题。

架构中一方面涉及到自然语言处理(在非结构化数据领域),用来对其进行量化,另一方面使用了机器学习算法来进行模式识别(一般针对结构化数据)。这个架构中有趣的部分在于,我们如何使用“NOSQL”方法来解决问题,其中我们利用了 Map/Reduce(通常用 Hadoop )以及传统关系型数据库中基于 SQL 的分析方法。

InfoQ: 在解决方案中使用了哪些技术、编程技术和算法?

Kartik:我们使用了 EMC Greenplum 数据库技术在博客素材中寻找这样的模式。尽管 Greenplum 根本上还是一种 MPP 的关系型数据库,但是它非常适合这种分析,因为它可以用像 Perl 和 Python 等高级语言编写的用户代码来处理结构化和非结构化数据。代码是在数据库中执行的,这要么使用的是 Map/Reduce 针对 Greenplum 的接口,要么是通过可调用的 SQL 用户自定义函数。数据处理的管道首先会获取并解析博客文件(都是 HTML 文件),定义定量的文本度量,以使用数值型向量来标识每篇博文,然后再使用机器学习算法来把博文按照主要主题归类。输出是一组以关键主题,或者说表现在博文集中的“观点”为中心的簇集。

我们在 Greenplum 中使用了对 Python 的支持来支撑 Python 自然语言工具集(NLTK),用于解析 HTML、标记化(tokenization)、阻止并停止从原始文本中删除词,然后把得到的术语列表载入到关系型表中。这样做的好处在于我们可以利用开源 NLTK 代码库,而不需要做出任何更改,就可以直接使用 Map/Reduce 接口在 Greenplum 中直接调用它。一旦我们在数据库表中拥有了术语列表,那么就可以对其进行精选,形成定义良好的术语字典,并使用业界标准的计算语言度量,术语频率 × 反文档频率(tf-idf),从而创建唯一描述博客文档的向量。这给了我们向量空间,在其上可以定义“距离”,并使用众所周知的簇集算法在无人值守学习,k-means clustering 等,从而获得最终的结果。这些操作还都是在数据库中完成的,也就是说,我们不需要从 RDBMS 中提取数据,并对其进行处理。对于有兴趣的读者,可以在其他地方找到 tf-idf 和 NLTK 以及 k-means clustering 的描述(例如,维基百科)。

InfoQ: 在解析和分析博客数据方面,和针对传统关系型数据的分析相比,有哪些主要的挑战?

Kartik:它是人类语言! 语言本身对于机器容易产生歧义。但是包括英语在内,每个领域都拥有术语和缩写的本体论(ontology)。移动电话博客看起来和卫生保健博客在特定的用词,以及词的特定意义上都有很大不同。更不用说需要解释说明的大量在社交媒体中的缩写词了。在这里使用的特定度量,以及 tf-idf,是一种用来描绘文档特征的方式,并已经为人们接受用来描述整篇博文的特征。在现实中,博文的各个部分可能会针对不同的主题,或者解释不同的观点。更复杂的机器学习算法,像主题模型(Topic Models,Latent Dirichlet Allocation)可能需要完成更细粒度的分析。有些从业者把句子上的观点与句子的基础联系起来,从而说明表现在博文中的变化。这是广大而且正在成长的研究领域。这里所做的工作只是描述了复杂研究领域的表面内容。相反,关系型数据库通常是数值型的,并且我们已经在基于 SQL 的分析方面有 30 多年的经验,在机器学习的工具和技术方面都已经成熟,因此对其会有更好的理解,并且更易于实现。

InfoQ: 从该项目的工作中,Greenplum 获得了哪些 NoSQL 数据模式或者最佳实践呢?

Kartik:最重要的一点是,我们意识到,一个人必须对我们应该用来解决问题的技术保持思想上的开放。我们当然可以在 Hadoop 中完成所有工作,但是使用 Map/Reduce 和 SQL 来解决问题非常优雅,而且能够突出这两种方式的优势。当数据量增大时,我们发现出现的主要数据模式是需要立即处理数据,并使用 Greenplum 底层的 MPP 架构的计算能力,同时在数据库中进行计算。随着数据列的增多,我们需要让计算与数据更紧密,这样,选择能够支持这种操作的技术就非常重要了。能够使用开源工具的能力也非常重要,这让我们可以更好地利用知识资本,而不需要重复发明轮子。另外,底层平台架构和能够在数据库中运行用户代码的能力对于支持这种操作也非常重要。

InfoQ: 这个项目将来的路线图是怎样的?

Kartik:它描述了功能的情况,可以由我们的客户以及自己针对各种不同的用例来扩展。我期望可以使用这些技术在主要的业界事件发生时——像 EMC 世界大会或 VMWorld 会议等——来分析 Twitter 的实时数据,并把一些虚拟化技术与之关联。理论上,主题模型(像 LDA)更有兴趣研究这种情况,将其作为 k-means clustering 的替代方案——Greenplum 可以在数据库中完成这两项工作。扩展也总是大家的兴趣所在,最终多语言的分析可能需要更多地创新。

查看英文原文: Blog Sentiment Analysis Using NoSQL Techniques

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2012-01-22 19:442427
用户头像

发布了 340 篇内容, 共 126.2 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

图系列算法在转转推荐算法召回及粗排的实践

转转技术团队

深度学习 推荐系统 图算法 graph embedding

数据结构与算法 之线性表

喜羊羊

9月月更

OKR之剑·理念篇01: OKR带给我们的改变

vivo互联网技术

OKR 目标管理 研发管理

C++学习---cstdbool和cstddef源码学习分析

桑榆

c++ 源码阅读 9月月更

2022-09-14:以下go语言代码输出什么?A:0 0;B:0 1;C:1 1;D:1 0。 package main func main() { println(f(1)) } func

福大大架构师每日一题

golang 福大大 选择题

Elasticsearch聚合学习之三:范围限定

程序员欣宸

elasticsearch 9月月更

敏捷Scrum实施落地中的3大典型问题及解法

PingCode

前端高频面试题汇总(一)

loveX001

JavaScript 前端

面试突击83:什么情况会导致@Transactional事务失效?

王磊

Java 面试题

从0到1开发微信小程序(2)——开发第一个小程序

微信小程序专栏

Java知识点锦集2

喜羊羊

9月月更

Java进阶(二十二)使用FileOutputStream写入文件

No Silver Bullet

9月月更 FileOutputStream 写文件

数据库的视图该怎么用?

阿柠xn

MySQL 数据库 视图 9月月更

关于运维监控系统实践中的一些tips

穿过生命散发芬芳

监控系统 9月月更

渡过“寒冬”,看云原生数据库如何助力企业降本增效与持续创新

亚马逊云科技 (Amazon Web Services)

数据库 云原生

前端二面必会面试题(附答案)

beifeng1996

JavaScript 前端

【精通内核】Linux内核写锁实现原理与源码解析

小明Java问道之路

读写锁 锁降级 Linux内核 9月月更 锁唤醒

MFC框架下,加密图片加载并显示功能

中国好公民st

c++ 加密 9月月更

[Go WebSocket] 多房间的聊天室(六)为什么要加锁?不加锁行不行啊?

HullQin

Go golang 后端 websocket 9月月更

数据库的schema与数据类型优化

阿柠xn

数据库 sql 高性能 优化技巧 9月月更

为什么Vue中的v-if和v-for不建议一起用

达摩

Vue

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布

JackJiang

Netty 即时通讯 im开发 开源im

从0到1开发微信小程序(3)—小程序框架配置

微信小程序专栏

推荐:实现 SVG 动画的 5 个 JavaScript 库~

掘金安东尼

前端 9月月更

腾讯前端一面常考面试题合集

loveX001

JavaScript 前端

不惧繁杂背景,视频编辑服务一键实现人像抠图

HMS Core

关于数据仓库的特点及组成的概述

阿泽🧸

数据仓库 9月月更

C/C++生态工具链——gcc/g++编译器使用指南

独立开发者_CoderZZ

c++ C语言 GCC g++ gcc 编译器

【C语言深度剖析】深入理解const的用法(趣味小故事解析)

Albert Edison

指针 C语言 const 9月月更

从0到一开发微信小程序(1)——申请账号并安装开发环境

微信小程序专栏

Java知识点锦集1

喜羊羊

9月月更

使用NoSQL技术进行博客观点分析_Python_Srini Penchikala_InfoQ精选文章