Word2Vec原理之层次Softmax算法

在这个人工智能半边天,主流话题一天一变的现代世界里,不乏进步,也不乏泡沫,但Word2Vec依然是很富极客精神的典型代表,作者思路很巧妙,工程层面又很实用主义。

词嵌入的假设,是通过一个词所在的上下文可以获得词的语义甚至语法结构,有相似上下文的词在向量空间中是邻近的点。

1 背景概念

Word2Vec要解决的根本问题,说到底是自然语言处理的问题。一般认为自然语言处理模型氛围两大派系,分别是形式文法和统计语言模型。

1.1 统计语言模型

统计语言模型在分词、词性标注、语义理解等NLP基本任务,以及语音识别、机器翻译等领域有广泛应用。关于统计语言模型,文献资料非常多,这篇博客也讲的很详细。简单地说,可以用统一地形式化表示:

\[p(S)=p(w_1,w_2,…,w_n)=\prod_{i=1}^{n} p(w_i|w_1,w_2,…,w_{i-1})\]

上述表示可以看做是用来计算词构成一个句子的概率模型,这就是统计语言模型的本质。但是概率的计算是个大问题,数据稀疏、参数过多,很难实际运用。前辈们研究了各种模型。例如n-gram、n-pos、决策树模型、最大熵模型等。

阅读全文

Genymotion Virtual Device文件下载大法

大名鼎鼎的Genymotion很多人都说好,一直没自己用过,直到今天因为某些原因需要在电脑给客户演示app,终于想到要使用一下。不过Virtual Device的下载过程很蛋疼,科学上网工具稍有不稳定就会timeout,或文件损坏。

原本计划跟一下network记录寻找ova真实路径,Stackoverflow了一下发现暴多老外也在讨论这问题的,纳闷,一直以为只有在天朝才会困惑。

言归正传,Genymotion依靠VirtualBox来跑虚机,所以可以利用log来查看虚机ova文件的绝对下载路径,使用靠谱的工具下载,再拷贝到它本该在的本地目录。

Genymotion安装后在本地的数据文件夹在用户目录下,例如我的:

genymotion.log文件中有这样的记录:

那个.ova就是你的目标,然后就简单了,比如迅雷😄?然后拷贝到:

问题是,在我的电脑上拷贝完并重启Genymotion后,并不能直接找到虚机。无奈之下用VirtualBox打开ova文件并导入虚机后重启Genymotion,它却在那里了。

ChinaVis2016见闻与所思

前言

每年都争取出去参加一次跨界的知识学习,去年是CCL,今年是ChinaVis。ChinaVis2016(7月21日-23日,湖南长沙)是国内可视化与可视化分析领域的专业会议,今年是第三届。去年的时候开始关注,没能去参加,今年终于排上了日程并说走就走。站在可视化领域的外围看这个世界,一直都不是很清晰,所以有机会能够以一个外行的身份过来感受一下这个圈子的氛围,是件令人兴奋的事情。下面整理的内容无法面面俱到,有些内容甚至都是大会以外的,但是希望把我的几个关注点上学习到的内容作一个简单的总结,如有不正确之处,希望得到指正。

理解可视化与交互

可视化的概念不用说了,但“可视化分析”一词,我是至今才有一个稍微清晰一点的认识,很是惭愧。所谓分析,一般可以拆解为不通的步骤,从数据的获取开始,可以往后写一堆。作为一个GIS人,在我以前的理解里,可视化呈现的是一种结果,所以一直对“可视化分析”这个词的科学性持质疑态度。

实际上,不同领域里,对此可以有不同的解释。例如,清华大学的朱军在谈到交互式机器学习与可视化的话题时,交互式机器学习在如下环节中都需要可视化的协助:

  1. 数据预处理时可以用到可视化
  2. 学习过程里可以可视化,因为机器学习本身黑箱
  3. 对机器学习评价也需要可视化交互式界面

阅读全文

如何让github停止track某些文件

经常有这样的场景,一不小心push了无用的文件/文件夹到github库,例如IDE自动生成的xml文件,从此每次打开IDE或编译软件后,git status里都有一堆东西嚷嚷着说我被修改了。另外就是一不小心把不该公开的内容push出去了,关于这点,github官方有一个指南,如何删除敏感信息。然而一般的情况下,只是想在未来的版本中停止track某些文件,直接如下简化操作即可。

1、从cache中删除文件夹file,或删除目录dir

2、修改.gitignore文件,添加

3、提交commit

4、push到github

中文维基百科文本数据分析之一(数据获取与预处理)

照例,先讲下环境,Mac OSX 10.11.2 ,Python 3.4.3。

下载数据

方法1:使用官方dump的xml数据

最新打包的中文文档下载地址是:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 。

方法2:也是官方,结构化数据(json)

下载地址是:https://dumps.wikimedia.org/wikidatawiki/entities/ 。目前尚未测试使用此数据,不多作介绍。但数据模型和已有的工具都可以在wikidata的站点上找到。

阅读全文

Ubuntu下ArcGIS Server 10.4与PostgreSQL 9.4的完美CP

稍微说几句,为什么要折腾这个:(1)不希望再用Windows Server,理由都懂;(2)对SQL Server在应用中的各种保守表现不太满意,希望在GIS上有更激进些的工作,例如对空间数据的处理能力;(3)有些应用要有更灵活的架构,而PG在一定程度上迎合了这种需求,例如支持JSON和JSONB,成为关系和非关系混合的一种选择(据说MySQL5.7开始也支持了JSON);(4)ArcGIS Server在linux下的表现,希望用实践来验证;(5)搞技术的人面对互联网的热闹,实在无法完全抵御尝试和改变的欲望。

阅读全文

PostgreSQL两三事

不要用Graphic Installer

至少在Ubuntu下,觉得原生的apt-get管理方式更合适,PG的文件资源会被分配到应该的地方,Linux的系统文件结构也是种非常稳健的架构。例如在/etc/postgresql下可以找到conf文件是一件清晰到爽的事情。正常通过apt安装的方式参见这篇博文

之前有一台VM就是没有忍住一时之快,用了Graphic Installer,所有的东西被塞到/opt/PostgreSQL/x.x中,当然,conf、bin等文件都在其中。在没有手动配置的情况下,start/stop/restart/reload之类的事情,不得不交给pg_ctl做,而与postgres账户之间的来回切换,也会浪费宝贵的时间。例如重启PG需要

而出现冲突的时候还会需要忍不住 -m fast 一下。而如果使用系统服务,至少可以这样:

阅读全文

做更少的事情,并做到更好

2016年以前,在工作时总是做越来越多的事情。并非不知道事多分散精力,而是隐隐地希望有更多的成果来刷团队的价值和存在感。另一方面,认真做事的人都会觉得,这个可以做好,那个也可以做好;如果这件事情让我们来做,显然可以做的更好;回头想想,其实事情也没有那么复杂,不就是……等等。这些思维常常萦绕脑边,但其实做一件看起来非常不错的事情,总在各个意向不到的环节会遇到困难,我想即便是世界一流的团队,也会如此。而是否实质地迈过了这一点,常常成为优秀与一般的差异所在。

于是1月起,将手头的事情作了总结和回顾,很遗憾,大量的事情并行推进,导致每件事情的质量和价值都在不同程度上打了折扣。庆幸其实自己可以主宰,让事情变得更好。于是开始果断地Say No。这并不意味着推卸工作或责任,而是努力把事情做的更合理。对于需要更多成员参与的事情,不要一味走英雄主义路线,而选择更为脚踏实地的方式。对于事情的并行逐渐有了更合理的评估,更重要的是预判,以便争取足够的资源来解决问题。

做更少的事情,并做到更好。应当是2016年废话般的目标吧,但却很真实。

android查看sqlite数据

由于没有root的真机环境,无法直接利用adb操作device中的db,因此很多调试工作不得不在模拟器环境下做,这样可以随时拷贝文件到电脑上查看表结构和数据情况。

一般情况下device的目录:data/data/<package-name>/databases/<db-name>.db。至于看数据的工具,强烈推荐Navicat。

当然,模拟器环境下ls等常用linux命令都是照常使用。

顺便,litepal的version value升级数据表的方式的确很方便,但是如果在代码里修改了某个字段名,那么同步数据库的时候若不做特殊处理,原有字段的数据将丢失。想也是,相当于删除原来的字段,又新建了一个字段。所以修改字段名这件事情,能不做还是不要轻易做,即便要做得搞定升级数据库时的版本问题。