标签归档:AINLP

腾讯词向量实战:通过Annoy进行索引和快速查询

上周《玩转腾讯词向量:词语相似度计算和在线查询》推出后,有同学提到了annoy,我其实并没有用annoy,不过对annoy很感兴趣,所以决定用annoy试一下腾讯 AI Lab 词向量

学习一个东西最直接的方法就是从官方文档走起:https://github.com/spotify/annoy , Annoy是Spotify开源的一个用于近似最近邻查询的C++/Python工具,对内存使用进行了优化,索引可以在硬盘保存或者加载:Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk。

Annoy (Approximate Nearest Neighbors Oh Yeah) is a C++ library with Python bindings to search for points in space that are close to a given query point. It also creates large read-only file-based data structures that are mmapped into memory so that many processes may share the same data.

照着官方文档,我在自己的机器上进行了简单的测试(Ubuntu16.04, 48G内存, Python2.7, gensim 3.6.0, annoy, 1.15.2),以下是Annoy初探。

安装annoy很简单,在virtuenv虚拟环境中直接:pip install annoy,然后大概可以按着官方文档体验一下最简单的case了:

In [1]: import random
 
In [2]: from annoy import AnnoyIndex
 
# f是向量维度
In [3]: f = 20
 
In [4]: t = AnnoyIndex(f)
 
In [5]: for i in xrange(100):
   ...:     v = [random.gauss(0, 1) for z in xrange(f)]
   ...:     t.add_item(i, v)
   ...:     
 
In [6]: t.build(10)
Out[6]: True
 
In [7]: t.save('test.ann.index')
Out[7]: True
 
In [8]: print(t.get_nns_by_item(0, 10))
[0, 45, 16, 17, 61, 24, 48, 20, 29, 84]
 
# 此处测试从硬盘盘索引加载
In [10]: u = AnnoyIndex(f)
 
In [11]: u.load('test.ann.index')
Out[11]: True
 
In [12]: print(u.get_nns_by_item(0, 10))
[0, 45, 16, 17, 61, 24, 48, 20, 29, 84]

看起来还是比较方便的,那么Annoy有用吗? 非常有用,特别是做线上服务的时候,现在有很多Object2Vector, 无论这个Object是Word, Document, User, Item, Anything, 当这些对象被映射到向量空间后,能够快速实时的查找它的最近邻就非常有意义了,Annoy诞生于Spotify的Hack Week,之后被用于Sptify的音乐推荐系统,这是它的诞生背景:
继续阅读

Start your future on Coursera today.

玩转腾讯词向量:词语相似度计算和在线查询

先讲一个故事,自从《相似词查询:玩转腾讯 AI Lab 中文词向量》发布后,AINLP公众号后台查询相似词的信息还是蛮多的。前段时间的一天,发现一个女生id频繁的查询相似词,近乎每分钟都在操作(这里要说明一下,腾讯公众号后台是可以看到用户最近二十条消息记录的,信息会保留5天)。然后第二天这个id依然很规律的在查询相似词,作为偶尔玩玩爬虫、也弄弄网站的程序员,第一反应会不会是程序模拟操作,但是观察下来虽然很规律, 查询频率不像是机器所为,另外貌似到了晚上10点之后这个id就停止查询了。然后到了第3天,依然发现这个id在查询,所以我没有忍住,回复了一句:请确认是否是人工查询?如果这个id没有反馈,依然我行我素的查询,我可能就准备拉黑这个id了。但是她很快回复了一句:是人工查询;我有点好奇的追问了一句:为什么不通过程序直接加载和查询腾讯词向量呢?岂不更方便。她回复:不懂程序,不会,然后大概追加了一句:我在做一个课程设计,需要积攒一批相似词,所以通过AINLP公众号这个功能手动查询了一批词,抱歉带来困扰,感谢背后的程序员。

这个回复让我突然有一种释然,也很开心,觉得做了一件有意义的事情,在52nlp微博的简介里,有两句话:Make something people want; A blog for fools written by fools。第一句话“Make something people want”, 大概就是做用户想用或者有用的东西,这句话我忘了什么时候看到的,因为它触动了我,所以记录在微博简介里了,不过google后发现是硅谷孵化器YC的“口头禅”。

关于word2vec词语相似度,这里早期写过几篇相关的文章:《中英文维基百科语料上的Word2Vec实验》、《维基百科语料中的词语相似度探索》,《相似词查询:玩转腾讯 AI Lab 中文词向量》对于熟悉word2vec,熟悉gensim的同学来说,使用这份腾讯AI Lab的词向量其实很简单,只要有个内存大一些的机器(实际加载后貌似用了12G左右的内存),大概就可以通过几行python代码进行查询了:

from gensim.models.word2vec import KeyedVectors
wv_from_text = KeyedVectors.load_word2vec_format(file, binary=False)

但是这个世界大家并不都是程序员,即使是程序员也有很多同学不了解word2vec, 不知道gensim,所以这个word2vec相似词在线查询功能突然变得有点意思,有那么一点用了。其实,当时给AINLP后台聊天机器人加这个技能点的时候,还想过是否有用或者有必要,不过,经历了开头这件事,并且发现后台有越来越多不同领域查询词的时候,我能感知这件事还是很有意义的,特别对于那些不懂程序的同学来说。不过关于这份腾讯词向量相似词在线查询接口,虽然借助了gensim,但是在线服务的时候并不是基于gensim,用了一些trick,对于高并发也没有太多压力,所以对于开头这个小姑娘的持续查询操作,并不介意,还很欢迎,我介意的是机器恶意查询。

当然,还是有很多同学熟悉词向量,熟悉word2vec,也熟悉gensim的接口,所以发现有部分同学很自然的加了查询操作:相似度 词1 词2,期待AINLP后台相似词查询功能能给出两个值词语相似度,这个需求还是很自然的,所以昨晚,我花了一点时间,把这个接口也加上了,感兴趣的同学可以关注AINLP公众号:

然后后台对话操作,例如这样,选择计算AI和人工智能的相似度,AI和NLP的相似度:


继续阅读

Start your future on Coursera today.

FlyAI算法竞赛平台初体验

前几天在AINLP公众号上分享了国内一个新兴AI算法竞赛平台FlyAIFlyAI算法竞赛:百万现金奖励实时瓜分FlyAI算法竞赛平台比较有意思的一点是可以实时分享相关赛道的奖金池,另外完全使用FlyAI官方的GPU资源在线训练模型和提交结果,这一点,对于没有GPU条件的同学来说也是很有吸引力的。

关于文本挖掘或者计算机视觉相关的AI数据竞赛,我觉得如果没有很好的实习机会,参加一些这样的比赛是可以积攒一定的实战经验的,赛事官方一般会为每个任务准备一套baseline流程来熟悉平台和任务,这也是一个很好的学习机会。我之前通过AIChallenger的中英机器翻译比赛熟悉了NMT的整套流程和相关工具和算法,感兴趣的同学可以参考:《AI Challenger 2017 奇遇记》 和 《AI Challenger 2018 简记》。

关于FlyAI算法竞赛平台,官方是这样介绍的:

FlyAI 是隶属于北京智能工场科技有限公司旗下,为AI开发者 (深度学习)提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,样例所使用开发框架涉及TensorFlow、Keras、PyTorch. 支持算法能力变现以及快速的迭代算法模型。挑战者,都在FlyAI!

四大特点:

1. 高质量的数据集、多领域的开源项目案例

1.1 项目涉及领域:自然语言处理、图像识别、语音识别等

1.2 每周更新高质量项目专属代码样例,免费下载查看

1.3 支持多平台运行,一键配置学习环境

2 多卡GPU资源 一键使用

2.1 提供强大算力,快速迭代模型质量

2.2 一键提交离线训练服务,及时通知模型训练进度

3 能力变现、竞赛式项目实力打榜

3.1 挑战项目刷新排行榜,赢得高额悬赏

3.2 使用不同深度学习框架验证,提升自己的算法能力

4 全行业的数据化及AI需求发布平台

4.1 通过算法众包,建立精准的预测模型,为产品数据增长赋能

4.2 探索数据人才与企业需求的生态构建

FlyAI上目前的自然语言处理相关竞赛不是太多,不过官方表态会不断上新,感兴趣的同学可以密切关注。目前FlyAI上NLP相关的竞赛包括:搜狗新闻文本分类预测、美国点评网站Yelp评价预测赛、测测星座文本分类、根据商品评分推荐商品算法练习赛、人工智能和你对对联。前三个有实际的奖金、后两个是练习赛,奖励FAI积分,这个可用于平台上GPU训练资源消耗,不过目前如果你通过这里AINLP的专属链接(https://www.flyai.com/?s=u9Fn9rW4f)注册并且加入到FlyAI竞赛-AINLP官方群,是可以直接找FlyAI小姐姐要积分的,目前该群接近300人,里面有官方技术人员答疑,已无法通过直接扫码加入,加群前请通过AINLP专属链接注册,然后添加AINLP君(id: AINLP2)拉你入群,请务必注明FlyAI:

https://www.flyai.com/?s=u9Fn9rW4f
继续阅读

Start your future on Coursera today.

夸夸聊天机器人升级:从随机到准个性化

来,你们要的夸夸聊天机器人升级了,针对问题内容进行“准个性化”回答,目前可以凑合用,但是聊胜于无,欢迎来撩,使用方法,关注公众号AINLP,后台对话即可:

自从《一行Python代码实现夸夸聊天机器人》发布后,有不少同学期待着夸夸聊天机器人的升级。但是巧妇难为无米之炊,所以我准备了夸夸语料库:《为了夸夸聊天机器人,爬了一份夸夸语料库》。有了夸夸问答语料之后,针对聊天机器人或者智能问答就有很多方法可以操作,最直接的一个想法就是计算问题与夸夸语料库中的标题(以及内容)的语义相似度,然后取最匹配问题的答案作为结果返回。

我大概就是是这样操作的,首先对语料库进行了简单的清洗和重组,清洗掉没有答案的,以及作者自己回答的答案,然后将每个问题的答案组合为list作为随机答案。不过更直接一些,只计算问题和标题的相似度,按一定的阈值进行过滤,所以这个版本,还存在很多问题,大家先凑合着用,后续还有升级计划。

这方面比较关键的一个问题就是相似问题匹配或者句子语义相似度计算。关于文本相似度,词语或者短语级别的语义相似度在词向量范畴下解决的很漂亮,感兴趣的同学可以体验:《相似词查询:玩转腾讯 AI Lab 中文词向量》,但是到了句子级别或者文档级别,目前貌似还没有很漂亮的解决方案,或者我调研的不够,有线索的同学欢迎留言探讨。

最后关于如何使用这个夸夸聊天机器人,首先关注我们的公众号AINLP,然后后台和聊天机器人对话即可,不过需要一些关键字触发夸夸模式,譬如“。。。求夸。。”, “。。。求赞。。”, “。。。,求鼓励”, “。。。, 求表扬”, 或者 “。。夸我。。。。”, “。。。鼓励我。。。”等等,否则进入闲聊模式。关于聊天机器人,目前希望大家不要抱太高的期望,把它当傻子即可:

聊天过程中如果问题没有匹配上或者过于简单,会回退到随机模式:

当然,这里选的case一定是准备过的,还有一些bad case没有给你们看,欢迎测试,欢迎建议,特别是如何匹配问题域的建议,非常欢迎。
继续阅读

Start your future on Coursera today.

你是如何了解或者进入NLP这个领域的?

每个NLPer都有自己的故事,每个故事都很精彩!

前两天在AINLP公众号上做了一期赠书活动:8本NLP书籍任你选,发起了一个话题留言活动:你是如何了解或者进入NLP这个领域的?没想到,活动发布后,大家参与的热情极高,收到了200多条留言,但是限于微信公众号留言只能精选100条放出,所以有些遗憾,很多后来的同学的留言虽然写得很好,但是没有办法放出来了。今天是周末,我又认真的从前到后读了一遍,感慨每个人都有自己的NLP故事,这里做一次汇总,尽量把留言都放出来,就不一一回复了,感谢大家的支持与参与。

从留言来看,很多同学是读书或者在实验室的时候“偶然”入了NLP这行,和很多同学一样,我也是读书时误打误撞进入了这个领域,我本身读得是数学系,研究生读得是自动化系模式识别与智能系统专业,实验室有好几个方向,刚好一个方向是统计机器翻译,老师觉得数学系的背景适合这个,就安排我做这个方向了,所以很感谢老师当年的安排,让我和NLP结缘。最后再留一个话题,感兴趣的同学可以参与:你做的第一个NLP任务或者课题是什么?

另外这次赠书活动原计划从留言中选择4名同学赠书,但是大家参与活动的积极性太高,让人感动的留言不少,所以综合大家的留言内容、关注的时间、互动的频率等各个因素,我额外再赠送6本书给参与活动的同学,但是依然僧多肉少,请没有获奖的同学见谅,以后还有机会,大家先混个脸熟。请以下10名的同学直接添加微信AINLP2选择书籍和留收件信息:

C.S. , 意犹未尽, 迷糊s啦, 锐, 少女情怀总是诗, 璐璐, 黄金金, Mr.NLP, 瓜子, 川上月

其中瓜子同学作为20考研党代表和求赞第一名,这里送个祝福;川上月同学是博客、微博以及公众号的老读者,也投过稿,这里作为老读者代表,送个感谢。另外赠书活动昨晚已经抽奖完毕,大家可查看中奖结果,请以下4名同学也请一并添加微信AINLP2,留相关信息:

Emotion. , 发局, Null, cf

另外我们还在微博举行了同样的抽奖活动,感兴趣的同学依然可以移步参与,活动到下周四结束。

https://weibo.com/2104931705/HlW4Q2XNK

以下选自各位NLPer的留言,再次感谢大家。
继续阅读

Start your future on Coursera today.

为了夸夸聊天机器人,爬了一份夸夸语料库

上周为了娱乐,写了一篇《一行Python代码实现夸夸聊天机器人》,虽然只有几十条人工整理的通用夸夸语料,但是貌似也能应付一些简单需求。不过这篇文章在微博、AINLP微信公众号、知乎专栏推送后,还是有很多同学强烈建议丰富语料库。这个建议其实是很不错的,所以周末认真调研了一番,决定从豆瓣上的夸夸小组入手,这里面有很多现成的语料,至于混进微信、QQ夸夸群,收集语料,我觉得不太现实。

豆瓣上有很多夸夸小组,貌似最大的莫过于“相互表扬小组”,最近因为这股夸夸风,据说这个小组已经开始限制加入新人了,我针对这个小组写了一个小爬虫,爬了一份夸夸语料,总计2万6千多个帖子,采集了标题、内容和回复的相关信息,保存为json格式,1个帖子1条,大概是这样的:

{"title": "因为没有男朋友,求夸", "url": "https://www.douban.com/group/topic/135844056/", "author": "71277500", "last_reply_time": "03-17 16:40", "content": "笨人原本一个人好好的,都单了两三年了,一直觉得挺开心的。最近不知道抽了什么风,突然特别想找个男朋友。但是但是,偏偏找不到靠谱的男朋友!现在一个人睡不着,没想明白这事,求夸。\n", "replies_num": "14", "replies": [{"content": "你这么可爱肯定会有一个很好很好的人在等你!", "post_id": "135844056", "comment_id": "1834208628", "user_id": "189783421", "pub_time": "2019-03-16 01:08:38"}, {"content": "最好的肯定要晚点出现哦", "post_id": "135844056", "comment_id": "1834208775", "user_id": "189783421", "pub_time": "2019-03-16 01:08:52"}, {"content": "“笨人”,刚看到开头就笑了", "post_id": "135844056", "comment_id": "1834282396", "user_id": "192799520", "pub_time": "2019-03-16 07:50:50"}, {"content": "一个好可耐的宝宝", "post_id": "135844056", "comment_id": "1834282931", "user_id": "192799520", "pub_time": "2019-03-16 07:52:24"}, {"content": "也许明天就出现了", "post_id": "135844056", "comment_id": "1834290527", "user_id": "185989534", "pub_time": "2019-03-16 08:11:38"}, {"content": "你知道有一个适合你的那个在等你吧", "post_id": "135844056", "comment_id": "1834308924", "user_id": "192597621", "pub_time": "2019-03-16 08:46:23"}, {"content": "如果没有男朋友,肯定是你太优秀", "post_id": "135844056", "comment_id": "1834313229", "user_id": "171520899", "pub_time": "2019-03-16 08:53:19"}, {"content": "没有男朋友多好,省钱", "post_id": "135844056", "comment_id": "1834320533", "user_id": "130379006", "pub_time": "2019-03-16 09:03:42"}, {"content": "哈哈,谢谢好可爱的你呀!", "post_id": "135844056", "comment_id": "1835717925", "user_id": "71277500", "pub_time": "2019-03-17 16:16:58"}, {"content": "有道理", "post_id": "135844056", "comment_id": "1835718260", "user_id": "71277500", "pub_time": "2019-03-17 16:17:22"}, {"content": "也许吧,哈哈哈", "post_id": "135844056", "comment_id": "1835718395", "user_id": "71277500", "pub_time": "2019-03-17 16:17:32"}, {"content": "原本想写本人,一不小心错别字,看样子还是很符合的", "post_id": "135844056", "comment_id": "1835719069", "user_id": "71277500", "pub_time": "2019-03-17 16:18:17"}, {"content": "没有,只是单纯地觉得很可爱,很符合你写一段话的文风😄ཽ……退一步讲,古人讲究谦辞,称呼自己要自谦,本人要说鄙人,你用“笨人”活泼可爱,也能称得上是一种自谦,还是你自创的,有趣", "post_id": "135844056", "comment_id": "1835734308", "user_id": "192799520", "pub_time": "2019-03-17 16:35:21"}, {"content": "哈哈,有道理,我懂了", "post_id": "135844056", "comment_id": "1835738373", "user_id": "71277500", "pub_time": "2019-03-17 16:40:00"}]}

写到这里,估计还是会有同学准备留言索要数据了,因为即使上次区区几十条语料,随便google一下就可以得到的“夸夸语料”都有同学留言索取,所以这里准备多说几句,关于夸夸聊天机器人,关于夸夸语料库。

上个周,在看到清华刘知远老师的评论后,我是用娱乐的心态写了上周的那篇文章:《一行Python代码实现夸夸聊天机器人》,没想到,反响还不错,甚至有一些同学提了很好的建议。所以当周末认真思考这件事的可行性时,突然觉得,夸夸聊天机器人是一个绝好的机器学习实践项目:仅从一个idea出发,怎样做一个不错的夸夸聊天机器人?

作为自然语言处理四大难题之一的自动问答,个人觉得目前还远远不够“智能”,虽然市面上有很多聊天机器人,但是观察来看,以娱乐的心态来对话是可以的,或者完成一些简单的任务是没有问题的,例如询问天气,但是如果抱着很高的期望,很多轮对话下来,基本可以认为这个聊天机器人“不靠谱”, “答非所问”,甚至是个“智障”。虽然通用领域的智能问答或者聊天机器人还有很长的路要走,但是如果把这个问题限定在垂直领域或者很小的需求范围,那么问题可能就有解了,例如夸夸聊天机器人,需求就很简单:做啥都夸。简单的就是随便夸,复杂一点或者个性化的就是夸某个点、某件事、某个人,前者吗,就是上次《一行Python代码实现夸夸聊天机器人》做得事情,准备一些通用夸奖的语料,然后随机夸;后者,需要准备一些夸夸规则和夸夸语料库。

开个玩笑,二十一世纪什么最贵?当然是数据了,确切的说,是面向特定任务的特定数据。现在不缺机器学习框架,不缺算法,不缺机器,甚至不缺“人”,缺什么,就缺数据。这段时间,因为夸夸群的兴起,很多人看到了商机,说不定哪一天你的老板把你找来,直接给扔给你一个任务:做一个夸夸聊天机器人?怎么办,当然要调研啦。花了大半天时间,你了解了聊天机器人的前世今生,发现了人工智能标记语言AIML,知道了Chatbot的种种玩法,基于规则的、基于机器学习模型的、基于知识图谱的等等等等,甚至还有很多智能问答开源框架可以直接套用,最后,当你兴高采烈的准备动手实践的时候,你突然发现,还没有数据,你需要数据,需要夸夸语料库。
继续阅读

Start your future on Coursera today.

相似词查询:玩转腾讯 AI Lab 中文词向量

周末闲来无事,给AINLP公众号聊天机器人加了一个技能点:中文相似词查询功能,基于腾讯 AI Lab 之前公布的一个大规模的中文词向量,例如在公众号对话窗口输入"相似词 自然语言处理",会得到:自然语言理解、计算机视觉、自然语言处理技术、深度学习、机器学习、图像识别、语义理解、语音识别、自然语言识别、语义分析;输入"相似词 文本挖掘",会得到:数据挖掘、文本分析、文本数据、自然语言分析、语义分析、文本分类、信息抽取、数据挖掘算法、语义搜索、文本挖掘技术。如下图所示:

关于这份腾讯中文词向量 Tencent_AILab_ChineseEmbedding.txt ,解压后大概16G,可参考去年10月份腾讯官方的描述:腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

从公开描述来看,这份词向量的质量看起来很不错:

腾讯AI Lab此次公开的中文词向量数据包含800多万中文词汇,其中每个词对应一个200维的向量。相比现有的中文词向量数据,腾讯AI Lab的中文词向量着重提升了以下3个方面,相比已有各类中文词向量大大改善了其质量和可用性:

⒈ 覆盖率(Coverage):

该词向量数据包含很多现有公开的词向量数据所欠缺的短语,比如“不念僧面念佛面”、“冰火两重天”、“煮酒论英雄”、“皇帝菜”、“喀拉喀什河”等。以“喀拉喀什河”为例,利用腾讯AI Lab词向量计算出的语义相似词如下:

墨玉河、和田河、玉龙喀什河、白玉河、喀什河、叶尔羌河、克里雅河、玛纳斯河

⒉ 新鲜度(Freshness):

该数据包含一些最近一两年出现的新词,如“恋与制作人”、“三生三世十里桃花”、“打call”、“十动然拒”、“供给侧改革”、“因吹斯汀”等。以“因吹斯汀”为例,利用腾讯AI Lab词向量计算出的语义相似词如下:

一颗赛艇、因吹斯听、城会玩、厉害了word哥、emmmmm、扎心了老铁、神吐槽、可以说是非常爆笑了

⒊ 准确性(Accuracy):

由于采用了更大规模的训练数据和更好的训练算法,所生成的词向量能够更好地表达词之间的语义关系,如下列相似词检索结果所示:

得益于覆盖率、新鲜度、准确性的提升,在内部评测中,腾讯AI Lab提供的中文词向量数据相比于现有的公开数据,在相似度和相关度指标上均达到了更高的分值。在腾讯公司内部的对话回复质量预测和医疗实体识别等业务场景中,腾讯AI Lab提供的中文词向量数据都带来了显著的性能提升。

当然官方的说法归官方,我还是遇到了一些bad case,例如输入官方例子 "相似词 兴高采烈" 和输入"相似词 腾讯",我们会发现一些"bad case":

另外这里用到的这份腾讯词向量数据的词条数总计8824330,最长的一个词条是:关于推进传统基础设施领域政府和社会资本合作(ppp)项目资产证券化相关工,查询的结果是:

很像一些文章标题,可能预处理的时候没有对词长做一些限制,感兴趣的同学可以详细统计一下这份词向量的词长分布。当然,少量的 bad case 不会降低这份难得的中文词向量的质量,也不会降低我们玩转这份词向量的兴趣,继续测试一些词或者短语。例如输入"相似词 马化腾"、"相似词 马云",会得到:

输入"相似词 深度学习"、"相似词 人工智能"会得到:

输入"相似词 AI"、"相似词 NLP"会得到:

当然,要是输入的"词条"没有在这份词库中,AINLP的聊天机器人无名也无能为力了,例如输入"词向量","AINLP",那是没有的:

需要说明的是,这里的查询功能间接借助了gensim word2vec 的相关接口,在腾讯这份词向量说明文档的主页上也有相关的用法提示:Tencent AI Lab Embedding Corpus for Chinese Words and Phrases,可能一些同学早就试验过了。不过对于那些机器资源条件有限的同学,或者不了解词向量、word2vec的同学,这个微信接口还是可以供你们随时查询相近词的,甚至可以给一些查询同义词、近义词或者反义词的同学提供一些线索,当然,从统计学意义上来看这份词向量的查询结果无法做到语言学意义上的准确,但是很有意思,需要自己去甄别。

最后感兴趣的同学可以关注我们的微信公众号AINLP,随时把玩腾讯 AI Lab 的这份词向量:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:相似词查询:玩转腾讯 AI Lab 中文词向量 http://www.52nlp.cn/?p=11234

Start your future on Coursera today.

风云三尺剑,花鸟一床书---对联数据集和自动对联机器人

很多年前看到过微软的自动对联工具,写了一篇《机器翻译与微软对联》博文,赞了MSRA用统计机器翻译(SMT)的思路做自动对联系统,当时开玩笑的说:

微软研究院的这个“对联语料库”的规模是67万对,所采用的技术是他们自己的web语料库自动获取技术。开玩笑的说,如果周明老师能给我这个语料库,我也能几天之内构建一个简单的“52nlp自动对联系统”。

前段时间看到了一份对联语料:couplet-dataset

https://github.com/wb14123/couplet-dataset

这份数据包含70万条对联数据,按字切分,作者很用心的给大家准备了训练集、测试集还有词汇表;同时还开源了一个基于Tensorflow的深度学习工具来训练自动对联模型: seq2seq-couplet

https://github.com/wb14123/seq2seq-couplet

感兴趣的同学可以直接上手操作,作者甚至还提供了Demo供大家把玩,不过目前貌似需要科学上网才能访问:

https://ai.binwang.me/couplet/

对我来说,看到这份数据的第一想法就是用神经网络机器翻译(NMT)的思路来尝试自动对联系统,这里NMT开源工具可选择的范围很广,我还是选择了Marian,跑了一个简单的对联“翻译”模型,现在接入AINLP公众号聊天机器人,感兴趣的朋友可以一试。具体方法请关注AINLP公众号,然后后台和AINLP聊天机器人互动:

回复“上联 输入上联内容” ,AINLP机器人将自动回复“下联 自动对联内容”,例如:

例子1:
上联 风云三尺剑
自动回复:
下联 花鸟一床书

注意上图来自微软亚洲研究院电脑对联页面:https://duilian.msra.cn/

其他例子可参考:

关于AINLP公众号相关信息,可参考:AINLP公众号索引、关键字和其他相关资源

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:风云三尺剑,花鸟一床书---对联数据集和自动对联机器人 http://www.52nlp.cn/?p=11145

Start your future on Coursera today.

AINLP公众号索引、关键字和其他相关资源

前段时间,我在公众号发了一篇文章叫做《改个名,抽个奖》,正式宣告此前以 NLPJob 为主体的公众号改名为 AINLP ,同时承载 我爱自然语言处理, NLPJob课程图谱 三个网站的主题:

关注AI、NLP相关技术,关注人工智能、文本挖掘相关算法研发职位,关注MOOC和相关的公开课、在线课程;回复"文章"获取历史文章汇总;中英双语聊天机器人"无名",普通聊天请直接输入中英文,使用中英翻译机器人,请输入:#需要翻译的内容

很早之前就基于 WeRobot 和 Flask框架为这个微信后台混搭了一个“聊天机器人”,除了日常搭讪外,还负责回复用户的日常查询,所以为一些关注度比较高的文章做了关键字和索引,分散在以前的一些文章介绍里,这里再统一贴出来:

1、关注AINLP公众号,后台回复 “文章、历史消息、历史、history、存档” 任一关键字获取历史文章存档消息。

2、回复“正态分布,rickjin, 正态分布前世今生, 正态分布文章, 正太分布, 正太, 正态”任一关键字获取Rickjin正态分布前世今生系列:

正态分布系列文章索引

3、回复“nlp, 自然语言处理,学习自然语言处理,学习nlp, 如何学习nlp,如何学习自然语言处理” 任一关键字获取文章:如何学习自然语言处理

4、回复"slp" 获取:斯坦福NLP书籍和课程网盘链接和密码

5、回复"slp3" 获取:自然语言处理综论英文版第三版及斯坦福NLP课程链接和密码

6、回复"ng" 获取:Andrew Ng老师课程相关资料链接和密码

7、回复"aic" 获取:AI Challenger 2018 文本挖掘类竞赛相关代码及解决方案汇总
博客版本持续更新,欢迎提供线索:http://www.52nlp.cn/?p=10998

8、回复"bert" 获取:BERT相关论文、文章和代码资源汇总
博客版本持续更新:http://www.52nlp.cn/?p=10870

Start your future on Coursera today.

深度学习实践:从零开始做电影评论文本情感分析

最近读了《Python深度学习》, 是一本好书,很棒,隆重推荐。

本书由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。书中包含30多个代码示例,步骤讲解详细透彻。由于本书立足于人工智能的可达性和大众化,读者无须具备机器学习相关背景知识即可展开阅读。在学习完本书后,读者将具备搭建自己的深度学习环境、建立图像识别模型、生成图像和文字等能力。

各方面都很好,但是总感觉哪里有点欠缺,后来想想,可能是作者做得太好了,把数据预处理都做得好好的,所以你才能“20行搞定情感分析”,这可能也是学习其他深度学习工具过程中要面临的一个问题,很多工具都提供了预处理好的数据,导致学习过程中只需要调用相关接口即可。不过在实际工作中,数据的预处理是非常重要的,从数据获取,到数据清洗,再到基本的数据处理,例如中文需要分词,英文需要Tokenize, Truecase或者Lowercase等,还有去停用词等等,在将数据“喂”给工具之前,有很多事情要做。这个部分,貌似是当前一些教程有所欠缺的地方,所以才有了这个“从零开始做”的想法和系列,准备弥补一下这个缺失,第一个例子就拿《Python深度学习》这本书第一个文本挖掘例子练手:电影评论文本分类-二分类问题,这也可以归结为一个情感分析任务。

首先介绍一下这个原始的电影评论数据集aclIMDB: Large Movie Review Dataset, 这个数据集由斯坦福大学人工智能实验室于2011年推出,包含25000条训练数据和25000条测试数据,另外包含约50000条没有标签的辅助数据。训练集和测试集又分别包含12500条正例(正向评价pos)和12500负例(负向评价neg)。关于数据,更详细的介绍可参考该数据集的官网:http://ai.stanford.edu/~amaas/data/sentiment/, paper: Learning Word Vectors for Sentiment Analysis, 和数据集里的readme。

然后下载和处理这份数据:Large Movie Review Dataset v1.0,下载链接;

http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz

下载之后进行解压:tar -zxvf aclImdb.tar.gz,可以用tree命令看一下aclImdb的目录结构:

tree aclImdb -L 2

继续进入训练集正例的目录看一下: cd aclImdb/train/pos/:

这个里面包含了12500篇英文评论,我们随机打开一个看一下里面的文本内容:

vim 1234_10.txt

I grew up watching this movie ,and I still love it just as much today as when i was a kid. Don't listen to the critic reviews. They are not accurate on this film.Eddie Murphy really shines in his roll.You can sit down with your whole family and everybody will enjoy it.I recommend this movie to everybody to see. It is a comedy with a touch of fantasy.With demons ,dragons,and a little bald kid with God like powers.This movie takes you from L.A. to Tibet , of into the amazing view of the wondrous temples of the mountains in Tibet.Just a beautiful view! So go do your self a favor and snatch this one up! You wont regret it!

继续阅读

Start your future on Coursera today.