《基于社交网络的数据挖掘》一书的随手札记

社交网络由时尚变为主流,有人建议用巨型全球图(Giant Global Graph,GGG)来代替万维网(www),进一步地说,语义网(www.foaf-project.org)是未来网络的趋势。

 

自然语言工具包(NLTK)提供了大量用于文本分析的工具,包括常见度量的计算、信息提取和NLP。回答“人们正在讨论什么的问题”的最简单的方法是进行基本词频分析。Grahviz是可视化社区的主要工具,DOT语言是Graphviz使用的一种基于文本的简单格式。Canviz(http://code.google.com/p/canviz)可以在web浏览器元素上绘制Grahviz图。

 

微格式(http://www.microformats.org)提供了一种有效的机制,可以将“更智能的数据”嵌入到网页中,并易于内容创作者实现。微格式只是简单地约定,以一种完全增值的方式明确地将结构化数据包含在网页中,典型的微格式有XFN(http://gmpg.orf/xfn),geo(http://microformats.org/wiki/geo),hRecipe(http://microformats.org/wiki/hrecipe)和hReview(http://microformats.org/wiki/hreview).其中geo尤其值得关注,KML(http://code.google.com/apis/kml/documentation)输出可能是最简单的可视化geo数据的方法。

 

BeautifulSoup 包可以实现简单的web抓取,检查抓取算法的两个标准是性能和质量。SocialGraph Node Mapper(http://code.google.com/google-sgnodemapper)开源项目标准化了一些url,www的存在。

 

可以将抓取的数据导入CouchDB(http://couchdb.aphache.org),它是一个面向文档的数据库,提供了map/reduce功能,可用于在数据上建立索引,同时提供了一个完全基于REST的接口(http://en.wikipedia.org/wiki/Resentational_State_Transfer),允许其他人分析并复制你的数据库,能够集成到任何Web的架构中,方便使用其复制功能。CouchOne提供了二进制下载,cloudant提供了在线托管。

 

Lucene(http://lucene.apache.org/java/docs/index.html)是一个基于Java的高性能全文索引搜索引擎库,将关键字搜索功能合并到应用程序中。CouchDb-lucene(http://github.com/rnewon/couchdb-lucence)项目是围绕Lucene最核心的功能的web服务封装,能够索引couchdb文档。

 

SIMILE Timeline(http://simile-widgets.org/wiki/Timeline)是一种易于使用的强大工具,可以可视化以事件为中心的数据,尤其适用于研究邮件数据。Getmail,poplib和imaplib都是很好的面向邮件的python包,Graph Your Inbox Chrome扩展(http://graphyourinbox.com)可以通过授权访问邮件数据。

 

OAuth 2.0(http://tools.ietf.org/html/draft-ietf-oauth-v2-10)是一种新兴的授权方案,能促进更好的用户体验(http://hueniverse.com/2010/05/introducing-oauth-2-0),对客户端应用程序授权来访问受保护的资源而不是用户名密码。

 

Redis(http://code.google.com/p/redis) 是一个数据结构服务器,快速易装,用于强大文档的python客户端。“Redis: under thehood”(http://pauladamsmith.com/articles/redis_under_the_hood.html)是一篇不错的文章。Redis提供了处理常见集合的本地操作。

 

Infochimps(http://infochimps.org)是一个提供大型数据目录的组织,提供twitter度量和分析的强链接api。Ubigraph(http://ubigraphlab.net/ubigraph)是3D交互式图的一个可视化工具,绑定了python。

 

人类智力的一个基本层面是将事情分类并推导出分层结构,分类法本质上是将元素分类为父/子关系的分层结构。公众分类法用于作为描述协作标签领域和出现在各种web生态系统中的社交索引成就的手段,本质上是一种描述作为集体智慧机制出现的标签分散领域的新奇方法。寻找共性的方法参见http://radar.oreilly.com/2010/07/data-science-democratized.

 

标签云是对社交数据中提取的实体的可视化最显然的选择。开源旋转标签云WP-Culumns(http://code.google.com/p/world-culumns-goog-vis/wiki/Userguide)是一个很好的选择。KevinHoffman的论文:“In Search of the Perfect Tag Cloud”(http://files.blog-city.com/files/J05/88284/b/insearchofperfecttagcloud)提供了构建标签云各种设计策略的良好概述。

 

Linkedin坚信个人的职业网络数据是私有的,访问http://developer.linked.com可以获得授权证书,可以使用LinkedinAPI来挖掘可用数据的整体丰富性,但同样提供了速率流限制。

 

智能聚类可以带来令人瞩目的用户体验,聚类常见的相似性度量的常见指标:

1)  编辑距离 http://en.wikipedia.org/wiki/Vladimir_Levenshtein

2)  N元语法相似度:计算两个字符串标记中所有的可能n元语法,统计其共有语法来计算相似度

3)  雅克比距离:表示两个集合的相似度,是两个集合中的不同项除以两个集合之间的共同项得到的结果

4)  MASI距离:http://www.cs.columbia.edu/~becky/pubs/lrec06masi.pdf

聚类的贪心算法主要是基于MASI的度量,分层聚类可以计算所有项之间距离的全矩阵,然后遍历满足最小距离阈值的矩阵群集项,k均值聚类是预先分配n个点的多维空间,然后划分的k个聚类中。

 

根据地理信息的聚类一般可用k均值聚类方法,google earth 提供了地理编码器。(http://code.google.com/p/geopy/wiki/GettingStarted)Protovis中的DorlingCartogram实质上是地理聚类的泡泡图。开源项目geodict是研究geo数据的好尝试(http://petewarden.typepad.com/searchbrowser/2010/10/geodict-an-open-source-tool-for-extracting-locations-from-text.html).

 

Google Buzz 介于twitter和博客之间,提供了REST风格的API(http://code.google.com/apis/buzz/vl/using-rest.html). 自然语言经验定律“齐普夫定律”断言:语料库中的词频与它在词频表中的排序成反比。(en.wikipedia.org/wiki/zipf’s_law)Brown 语料库(http://en.wikipedia.org/wiki/Brown_Corpus)是一个合理的起点。

 

TF-IDF (termFrequency-Inverse Document Frequency)表示词语的逆向文档频率,可通过计算文档中词语相对重要性的归一化得分来查询语料库,表示为词频与逆向文档频率的乘积:tf-idf=tf*idf,tf表示一个词语在某个具体文档中的重要性,idf表示一个词语在整个语料库中的重要性。

 

TF-IDF模型将文档模型化为单词的无序集,模型化文档的另一种方法是向量空间模型:在多维空间中的每个文档都包含一个向量,两个向量之间的距离表示对应文档的相似性。要计算两个文档之间的相似性,只需要生成每个文档的一个词向量,计算这些文档的单位向量的点积,所以用余弦相似性很容易比较文档。

 

访问Gmail邮箱的Xoauth工具(http://code.google.com/p/google-mail-xoauth-tools/wiki/XoauthDotPyRunThrough),使用xoauth.py工具可以生成匿名用户的OAuth令牌和密钥。Dumbo是允许在python中编写和运行Hadoop程序的项目。Scrapy(http://scrapy.org)是一种易用和成熟的网络抓取和爬行框架。

 

使用NLTK的典型NLP管线:

1)  句末检测(End ofSentence,EOS)

2)  分词

3)  词性标记(Part ofSpeech, POS)

4)  分块

5)  提取

使用正则表达式可以解析句子,详见“Unsupervised Multilingual Sentence Boundary Detection”(http://www.linguistics.ruhr-uni-bochum.de/~strunk/ks2005FINAL.pdf).Luhn摘要算法的前提:文档中的重点句是包含经常出现的单词的句子。Luhn并没有从更深的语义层次上理解数据。以句子中实体为中心的分析方法,可以参考宾州树库标签http://bulba.sdsu.edu/jeanette/thesis/PennTags.html) NLTK中的wordstemming可以分析语义三元组,WordNet(http://wordnet.princeton.edu)可以找出三元组中项的额外含义。

 

Facebook应用程序需要托管在自己的服务器环境中,开发流程http://facebook.com/developers.Facebook的开放图谱协议(http://opengraphprotocol.org)交互式可视化可以使用JavaScriptInfoVis ToolKit(Http://thejit.org). Sunburst 可将树这类层次结构的一种空间填充可视化。

 

Web3.0 似乎就是语义网,Fuxi是语义网中强大的逻辑推理系统,它使用一个叫做正向链接(http://en.wikipedia.org/wiki/Forward_chaining)的技术从现有信息中推断出新信息。

 

不要因为期望你没有的就破坏你拥有的;但要记住,你现在拥有的曾经是你期望的东西。

你可能感兴趣的:(数据挖掘与分析,SNS)