特色文章

欢迎关注AINLP:一个有趣有AI的NLP公众号

我们的公众号AINLP,致力于做一个有趣有AI的NLP公众号,作者是我爱自然语言处理博客博主,NLPJob、课程图谱网站"保姆",曾在腾讯从事文本挖掘相关工作。AINLP 关注自然语言处理、机器学习、深度学习相关技术,关注人工智能、文本挖掘相关算法研发职位,关注MOOC相关课程和公开课。公众号直接对话双语聊天机器人、调戏夸夸机器人、尝试自动对联、作诗机,使用中英机器翻译,查询相似词,计算相似度,玩词语加减游戏,测试NLP相关工具包,欢迎来聊,欢迎关注。

AINLP聊天机器人除了日常搭讪外,还负责回复用户的日常查询,所以为一些关注度比较高的文章和NLP资源做了关键字和索引,分散在以前的一些文章介绍里,这里再统一贴出来:

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

9、回复"HMM" 获取:HMM学习最佳范例全文PDF
HMM学习最佳范例全文PDF文档及相关文章索引

10、回复"Hinton" 获取:面向机器学习的神经网络公开课视频及课件
Geoffrey Hinton 大神面向机器学习的神经网络公开课及相关视频资料

11、回复"NLTK" 获取: NLTK相关资料
Python自然语言处理工具NLTK学习导引及相关资料

12、回复"youhua"获取:优化相关资料
凸优化及无约束最优化相关资料

13、回复"xiandai"获取:线性代数相关资料
那些值得推荐和收藏的线性代数学习资源

14、回复"cs224n"获取:深度学习自然语言处理课程最新视频:
2019斯坦福CS224n深度学习自然语言处理课程视频和相关资料分享
斯坦福大学深度学习自然语言处理课程CS224N 2019 全20个视频分享

15、回复"kuakua"获取:夸夸语料库(500条)
为了夸夸聊天机器人,爬了一份夸夸语料库

16、回复"fenci"获取:中文分词相关资源
中文分词文章索引和分词数据资源分享

17、回复”tongjixuexi”获取:李航老师统计学习方法第一版PPT(清华大学深圳研究生院袁春老师精心制作)
李航老师《统计学习方法(第二版)》出版及统计学习方法第一版PPT课件下载

18、回复"nmt"获取:Philipp Koehn大神的神经网络机器翻译学习资料:NMT Book

另外我们建立了几个微信群,围绕招聘、求职、技术、竞赛交流相关主题,感兴趣的同学可以添加微信AINLP2或者扫描以下二维码,注明关键字,拉你入群:

第三届“达观杯”文本智能信息抽取挑战赛强势来袭,奖金 Offer你想要的都在这里!

“达观杯”是由达观数据主办的全国前沿人工智能和大数据技术竞赛,面向全国数百所高等院校本科及以上学生、大型科技企业和初创科技企业研发人员及各行业数据工作者、爱好者展开,意在发现更多技术人才,共同在NLP应用系统的开发实现突破,促进人工智能产业发展。

自 2017 年“达观杯”算法挑战赛开始以来,两年的时间在NLP 的技术圈吸引了近万名技术爱好者,选手们在比赛拿奖后申请到了TOP海外高校,收获了心仪的 Offer,也结下了深厚的革命友谊。

第三届“达观杯”文本智能信息抽取挑战赛在biendata平台上线本届“达观杯”以信息抽取为主题,希望选手动用自己的智慧,结合当下最先进的自然语言处理和人工智能技术,深入挖掘文本文字中词语和句子之间的特征,构建语言模型,实现精准抽取。

赛事交流群

扫码加入“达观杯”算法竞赛官方交流QQ群,获取四次免费技术公开课安排和更多大赛信息

竞赛群QQ群号:807070500

达观数据热招职位
深度学习算法工程师(上海)

NLP算法工程师(上海)

推荐系统研发工程师(上海)

Web前端工程师(成都/上海)

RPA开发工程师(上海)

大数据开发工程师(上海/成都)

高级python后端工程师(上海/深圳/成都/北京)

测试工程师 (上海/成都)

*简历投递请发maxinyi@datagrand.com

*点我查看赛事信息

AINLP公众号新增SnowNLP情感分析模块

上周给AINLP公众号对话增加了百度中文情感分析接口:百度深度学习中文情感分析工具Senta试用及在线测试,很多同学通过公众号对话进行测试,玩得很嗨,不过感觉中文情感分析的成熟工具还是不多。这个周末调研了一下之前用于测试中文分词和词性标注的工具,发现SnowNLP和HanLP提供情感分析的接口,不过后者貌似没有提供Python接口,而SnowNLP作为原生的Python中文自然语言处理工具包,用起来还是比较方便的,唯一的问题是它的训练语料覆盖领域,官方文档是这样说的:

SnowNLP: https://github.com/isnowfy/snownlp

情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)

使用起来也很简单,注意SnowNLP的情感分析只有正向概率,以下测试例子也有bad case:

In [1]: from snownlp import SnowNLP                                            
 
In [2]: s = SnowNLP('我爱自然语言处理')                                        
 
In [3]: s.sentiments                                                           
Out[3]: 0.9243733698974206
 
In [4]: s = SnowNLP('我不爱自然语言处理')                                      
 
In [5]: s.sentiments                                                           
Out[5]: 0.8043511626271524
 
In [6]: s = SnowNLP('太难吃了')                                                
 
In [7]: s.sentiments                                                           
Out[7]: 0.27333037073511146

感兴趣的同学可以直接关注AINLP公众号,直接测试这两个中文情感分析模块:BaiduSenta和SnowNLP


继续阅读

百度深度学习中文情感分析工具Senta试用及在线测试

情感分析是自然语言处理里面一个热门话题,去年参加AI Challenger时关注了一下细粒度情感分析赛道,当时模仿baseline写了一个fasttext版本:AI Challenger 2018 细粒度用户评论情感分析 fastText Baseline ,至今不断有同学在star这个项目:fastText-for-AI-Challenger-Sentiment-Analysis

周末通过PaddleHub试用了一下百度的深度学习中文情感分析工具Senta,还是很方便,于是,将这个作为中文情感分析的一个技能点加入到了AINLP公众号的对话中,感兴趣的同学可以先测试:

至于安装和使用,还是简单说一下,以下是在Ubuntu16.04, Python3.x virtualenv环境下安装和测试。

安装直接通过pip install即可:

pip install paddlepaddle(这里用的是CPU版本)
pip install paddlehub

关于如何使用百度这个中文情感分析工具,最直接的方法还是follow官方demo脚本:

PaddleHub/demo/senta/senta_demo.py

在iPython中大致如下调用:

Python 3.5.2 (default, Nov 12 2018, 13:43:14) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
 
In [1]: import paddlehub as hub                                                                 
 
In [2]: senta = hub.Module(name="senta_bilstm")                                                 
2019-07-06 22:33:01,181-INFO: Installing senta_bilstm module
2019-07-06 22:33:01,182-INFO: Module senta_bilstm already installed in /home/textminer/.paddlehub/modules/senta_bilstm
 
In [3]: test_text = ["这家餐厅很好吃", "这部电影真的很差劲","我爱自然语言处理"]                
 
In [4]: input_dict = {"text": test_text}                                                        
 
In [5]: results = senta.sentiment_classify(data=input_dict)                                     
2019-07-06 22:33:53,835-INFO: 13 pretrained paramaters loaded by PaddleHub
2019-07-06 22:33:53,839-INFO: 20 pretrained paramaters loaded by PaddleHub
 
In [6]: for result in results: 
   ...:     print(result) 
   ...:                                                                                         
{'positive_probs': 0.9363, 'text': '这家餐厅很好吃', 'sentiment_key': 'positive', 'negative_probs': 0.0637, 'sentiment_label': 2}
{'positive_probs': 0.0213, 'text': '这部电影真的很差劲', 'sentiment_key': 'negative', 'negative_probs': 0.9787, 'sentiment_label': 0}
{'positive_probs': 0.9501, 'text': '我爱自然语言处理', 'sentiment_key': 'positive', 'negative_probs': 0.0499, 'sentiment_label': 2}

继续阅读

AINLP公众号"自动作诗机"上线

最近对自然语言生成或者文本自动生成技术比较感兴趣,做了一些调研,作为自然语言处理领域的难题之一,个人一直觉得自然语言生成(NLG)是最难的,虽然这一两年动辄会看机器模仿莎士比亚写剧本,模仿金庸写小说,这些不过是媒体用来吸引眼球的,总之这些字凑到一起看起来像模像样,但是读了之后不知所云。不过对于特定格式的文本,类似诗歌这种,如果不细究,从直观的角度来看确实还有点像那么回事,例如清华大学自然语言处理与社会人文计算实验室开发的九歌计算机诗词创作系统,还是很强大的:

所以我首先将目光瞄准了诗歌自动生成相关的资料上,在google了一圈后,锁定了ioiogoo同学的这篇文章和两个开源版本实现:

1)介绍文章:用Keras实现RNN+LSTM的模型自动编写古诗
2)ioiogoo同学原始版本代码:https://github.com/ioiogoo/poetry_generator_Keras
3)youyuge34同学的更新版本:https://github.com/youyuge34/Poems_generator_Keras

特别是最后这个版本,作者直接提供了训练好的模型数据:poetry_model.h5,如果不想训练,直接下载这个模型把玩即可。我尝试了一下训练流程,训练几百步的时候会报错,具体原因还没有细究。不过在继续训练自己的模型之前,可以基于作者提供的模型将这个自动作诗模块包装到AINLP公众号对话接口中去,所以花了一点时间,在AINLP公众号上上线了这个自动作诗机模块,算是玩具级别的自动作诗机吧,目前支持两个功能:藏头诗(提供四个字)和首字诗(提供一个字):

请注意这两个功能目前只提供'五言绝句'的生成,因为上述代码在训练模型的时候已经过滤了其他诗词,另外这套代码也用了一些trick,生成的结果也是随机的,每次都不一样。最后,感兴趣的同学欢迎关注AINLP公众号,直接在公众号对话里测试即可:

关于文本自动生成或者自然语言生成,如果有好的idea或者素材或者想法,欢迎留言讨论,这里也会继续关注这个话题。

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

本文链接地址:AINLP公众号"自动作诗机"上线 http://www.52nlp.cn/?p=11995

百度深度学习中文词法分析工具LAC试用之旅

之前在调研中文分词词性标注相关工具的时候就发现了百度的深度学习中文词法分析工具:baidu/lac(https://github.com/baidu/lac),但是通过这个项目github上的文档描述以及实际动手尝试源码编译安装发现非常繁琐,缺乏通常中文分词工具的易用性,所以第一次接触完百度lac之后就放弃了:

LAC是一个联合的词法分析模型,整体性地完成中文分词、词性标注、专名识别任务。LAC既可以认为是Lexical Analysis of Chinese的首字母缩写,也可以认为是LAC Analyzes Chinese的递归缩写。

LAC基于一个堆叠的双向GRU结构,在长文本上准确复刻了百度AI开放平台上的词法分析算法。效果方面,分词、词性、专名识别的整体准确率95.5%;单独评估专名识别任务,F值87.1%(准确90.3,召回85.4%),总体略优于开放平台版本。在效果优化的基础上,LAC的模型简洁高效,内存开销不到100M,而速度则比百度AI开放平台提高了57%。

本项目依赖Paddle v0.14.0版本。如果您的Paddle安装版本低于此要求,请按照安装文档中的说明更新Paddle安装版本。如果您使用的Paddle是v1.1以后的版本,请使用该项目的分支for_paddle_v1.1。注意,LAC模块中的conf目录下的很多文件是采用git-lfs存储,使用git clone时,需要先安装git-lfs。

为了达到和机器运行环境的最佳匹配,我们建议基于源码编译安装Paddle,后文也将展开讨论一些编译安装的细节。当然,如果您发现符合机器环境的预编译版本在官网发布,也可以尝试直接选用。

最近发现百度将自己的一些自然语言处理工具整合在PaddleNLP下,文档写得相对清楚多了:

PaddleNLP是百度开源的工业级NLP工具与预训练模型集,能够适应全面丰富的NLP任务,方便开发者灵活插拔尝试多种网络结构,并且让应用最快速达到工业级效果。

PaddleNLP完全基于PaddlePaddle Fluid开发,并提供依托于百度百亿级大数据的预训练模型,能够极大地方便NLP研究者和工程师快速应用。使用者可以用PaddleNLP快速实现文本分类、文本匹配、序列标注、阅读理解、智能对话等NLP任务的组网、建模和部署,而且可以直接使用百度开源工业级预训练模型进行快速应用。用户在极大地减少研究和开发成本的同时,也可以获得更好的基于工业实践的应用效果。

继续阅读

词向量游戏:一些有意思的例子

自从把腾讯词向量对接到AINLP公众号后台后,发现相似词相关的查询需求是逐渐增大的,已经不止一次有非CS专业的同学通过后台查询相似词或者相似度来做课程设计,这让我觉得这个事情有一些意义,当然,通过微信(公众号)后台快速查询相似词(同义词、近义词、反义词)这个需求应该是更普遍的,欢迎推荐给有需求的朋友。关于词向量、相似词、相似度、词语加减,这里写了一些文章:

相似词查询:玩转腾讯 AI Lab 中文词向量
玩转腾讯词向量:词语相似度计算和在线查询
腾讯词向量实战:通过Annoy进行索引和快速查询
玩转腾讯词向量:Game of Words(词语的加减游戏)

特别是最后一篇文章,在这篇文章发布后,很多同学通过AINLP的公众号后台对话玩得很嗨,并且在微博、微信平台留言,这里基于大家的群体智慧,提供一些有意思的词(类比)加减例子,这些例子可以直接在AINLP公众号后台测试:

=======不错的词类比(Word Analogy)例子======

机场-飞机+火车=高铁站

Windows-microsoft+google=android

老婆-老公+丈夫=妻子

北京-中国+法国=巴黎

天安门-北京+巴黎=艾菲尔铁塔

渣男-男朋友+女朋友=小三

渣男-男+女=渣女

很快-快+慢=缓慢

马云-互联网+房地产=恒大许家印

北京-中国+美国=华盛顿特区

范冰冰-李晨+刘恺威=大幂幂

射雕英雄传-郭靖+杨过=神雕侠侣

姜文-中国+美国=史泰龙

上海-中国+美国=旧金山

小龙女-杨过+郭靖=黄蓉

梅西-阿根廷+葡萄牙=C罗

梅西-阿根廷+意大利=皮耶罗

飞机场-飞机+火车=火车路

汽车-轮胎+翅膀=飞翔
继续阅读

自然语言理解太难了之中文分词八级测试

前几天在微博看到了一个例子:无线电法国别研究

赶紧用AINLP公众号后台的中文分词和词性标注测试功能试了一下八款中文分词词性标注)工具或者模块:

结果如预期一样,大部分中文分词工具翻车了,不过这个例子别说对于中文分词工具,即使人工分词也需要反应一下。这也让我想起了之前转载的杨洋同学整理,刘群老师在微博上发起的#自然语言理解太难了#话题:NLP is hard! 自然语言处理太难了系列

这里基于这个系列以及记录的一些有意思的测试case做个整理,感兴趣的同学可以试试:

来到杨过曾经生活过的地方,小龙女动情地说:“我也想过过过儿过过的生活。”

来到儿子等校车的地方,邓超对孙俪说:“我也想等等等等等过的那辆车。”

赵敏说:我也想控忌忌己不想无忌。

你也想犯范范范玮琪犯过的错吗

对叙打击是一次性行为?

《绿林俊杰》--林俊杰做错了什么?为什么要绿他

一位友好的哥谭市民

校长说衣服上除了校徽别别别的

过几天天天天气不好

看见西门吹雪点上了灯,叶孤城冷笑着说:“我也想吹吹吹雪吹过的灯”,然后就吹灭了灯。

今天多得谢逊出手相救,在这里我想真心感谢“谢谢谢逊大侠出手”

灭霸把美队按在地上一边摩擦一边给他洗脑,被打残的钢铁侠说:灭霸爸爸叭叭叭叭儿的在那叭叭啥呢

姑姑你估估我鼓鼓的口袋里有多少谷和菇!!

“你看到王刚了吗”“王刚刚刚刚走”

张杰陪俩女儿跳格子:俏俏我们不要跳跳跳跳过的格子啦

骑车出门差点摔跤,还好我一把把把把住了

我朋友问父亲:我大大大(大大爷)和我姑姑谁年龄大?朋友爸爸说:你大大大大!

我背有点驼,麻麻说“你的背得背背背背佳
继续阅读

Python 和 Elasticsearch 构建简易搜索

1 ES基本介绍

概念介绍

Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,它可以快速地储存、搜索和分析海量数据。Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch至少需要Java 8。Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

继续阅读

Docker 部署Python项目

Docker 部署Python项目

导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装。只有它们都正确,软件才能运行。如果从一种操作系统里面运行另一种操作系统,通常我们采取的策略就是引入虚拟机,比如在 Windows 系统里面运行 Linux 系统。这种方式有个很大的缺点就是资源占用多、冗余步骤多、启动慢。目前最流行的 Linux 容器解决方案之一就是Docker,它最大优点就是轻量、资源占用少、启动快。本文从什么是Docker?Docker解决什么问题?有哪些好处?如何去部署实现去全面介绍。

0 引言

设想这样一个真实案例,假如我们要部署一个Python应用程序,要做哪些工作?

  • 首先需要python运行环境,比如部署的是python3,而机器上是python2。先装个python3,还要装各种依赖包,机器一些可能的冲突。

  • 装完python之后,发现还要装mysql或者redis。继续下载安装配置。

  • 啥?服务器不用了,需要换一台服务器?那重新来一遍吧。

  • 啥?基础应用做的太好要进行推广,需要指导其他厂商部署?这怎么办?

可以看出,在 Docker 之前软件行业的运维存在着以下这些痛点:

  • 软件的发布和部署低效又繁琐,而且总是需要人工介入

  • 环境的一致性难移保证

  • 在不同环境之间迁移的成本较高

在完成Docker部署安装之前,我们还是先认识下Docker的优点:

  • 软件构建容易,分发简单

  • 应用得到隔离,依赖被解除

  • 可以完美地用于 CI/CD

  • 快速部署,测试完以后销毁也方便

继续阅读