标签归档:中文分词

百度深度学习中文词法分析工具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公众号后台的中文分词和词性标注测试功能试了一下八款中文分词词性标注)工具或者模块:

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

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

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

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

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

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

对叙打击是一次性行为?

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

一位友好的哥谭市民

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

过几天天天天气不好

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

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

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

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

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

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

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

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

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

八款中文词性标注工具使用及在线测试

结束了中文分词工具的安装、使用及在线测试,开启中文词性标注在线测试之旅,一般来说,中文分词工具大多数都附带词性标注功能的,这里测试了之前在AINLP公众号上线的8款中文分词模块或者工具,发现它们都是支持中文词性标注的,这里面唯一的区别,就是各自用的词性标注集可能有不同:

以下逐一介绍这八个工具的中文词性标注功能的使用方法,至于安装,这里简要介绍,或者可以参考之前这篇文章:Python中文分词工具大合集:安装、使用和测试,以下是在Ubuntu16.04 & Python3.x的环境下安装及测试。
继续阅读

Python中文分词工具大合集:安装、使用和测试

这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考。

首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AINLP公众号后台在线测试,严格的说,它们不完全是纯粹的中文分词工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然语言处理工具。安装这些模块其实很简单,只要按官方文档的方法安装即可,以下做个简单介绍,在Python3.x的环境下测试,Ubuntu16.04 或 MacOS 测试成功。

再附加介绍12款其他的中文分词工具或者中文分词模块,最后的两款fnlp和ansj是比较棒的java中文分词工具,貌似还没有python接口,记录一下。这些中文分词工具我没有测试,感兴趣的同学可以动手试试。
继续阅读

中文分词工具在线PK新增:FoolNLTK、HITLTP、StanfordCoreNLP

继续中文分词在线PK之旅,上文《五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP》我们选择了5个中文分词开源工具,这次再追加3个,分别是FoolNLTK、哈工大LTP(pyltp, ltp的python封装)、斯坦福大学的CoreNLP(stanfordcorenlp is a Python wrapper for Stanford CoreNLP),现在可以在AINLP公众号测试一下:中文分词 我爱自然语言处理

以下是在Python3.x & Ubuntu16.04 的环境下测试及安装这些中文分词器:
继续阅读

五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP

最近玩公众号会话停不下来:玩转腾讯词向量:Game of Words(词语的加减游戏),准备把NLP相关的模块搬到线上,准确的说,搬到AINLP公众号后台对话,所以,趁着劳动节假期,给AINLP公众号后台聊天机器人添加了一项新技能:中文分词线上PK,例如在AINLP公众号后台对话输入:中文分词 我爱自然语言处理,就可以得到五款分词工具的分词结果:

现在的开源中文分词工具或者模块已经很丰富了,并且很多都有一些在封闭测试集上的效果对比数据,不过这仅仅只能展现这些分词工具在这个封闭测试集上的效果,并不能全面说明问题,个人觉得,选择一个适合自己业务的分词器可能更重要,有的时候,还需要加一些私人定制的词库。

这次首先选了5款中文分词工具,严格的来说,它们不完全是纯粹的中文分词工具,例如SnowNLP, Thulac, HanLP都是很全面的中文自然语言处理工具,这次,先试水它们的中文分词模块。安装这些模块其实很简单,只要按官方文档的方法安装即可,以下做个简单介绍,在Python3.x的环境下测试,Ubuntu16.04 或 MacOS 测试成功。
继续阅读

中文分词文章索引和分词数据资源分享

昨天在AINLP公众号上分享了乐雨泉同学的投稿文章:《分词那些事儿》,有同学留言表示"不过瘾",我想了想,其实我爱自然语言处理博客上已经积攒了不少中文分词的文章,除了基于深度学习的分词方法还没有探讨外,“古典”机器学习时代的中文分词方法都有涉及,从基于词典的中文分词(最大匹配法),到基于统计的分词方法(HMM、最大熵模型、条件随机场模型CRF),再到Mecab、NLTK中文分词,都有所涉及。回头看,这些文章最早的大概有10年了,现在看有些稚嫩,可能不适宜再放到公众号上推了,但是这里做个索引,感兴趣的同学可以在博客上阅读,基本上都是有代码可以参考的。

中文分词入门系列

rickjin老大的两篇日文翻译文档,很有帮助

其他同学在52nlp博客上分享的中文分词相关文章,感谢大家

最后关于中文分词的数据资源,多说两句,中文分词的研究时间比较长,方法比较多,从实际经验看,好的词库资源可能更重要一些,最后提供一份中文分词的相关资源,包括中文分词字标注法全文pdf文档,以及web上其他同学分享的词库资源,感兴趣的同学可以关注AINLP,回复“fenci"获取:

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

本文链接地址:中文分词文章索引和分词数据资源分享 http://www.52nlp.cn/?p=11408

Python自然语言处理工具NLTK学习导引及相关资料

NLTK 大概是最知名的Python自然语言处理工具了,全称"Natural Language Toolkit", 诞生于宾夕法尼亚大学,以研究和教学为目的而生,因此也特别适合入门学习。NLTK虽然主要面向英文,但是它的很多NLP模型或者模块是语言无关的,因此如果某种语言有了初步的Tokenization或者分词,NLTK的很多工具包是可以复用的。

关于NLTK,网上已经有了很多介绍资料,当然首推的NLTK学习资料依然是官方出的在线书籍 NLTK Book:Natural Language Processing with Python – Analyzing Text with the Natural Language Toolkit ,目前基于Python 3 和 NLTK 3 ,可以在线免费阅读和学习。早期的时候还有一个基于Python 2 的老版本:http://www.nltk.org/book_1ed/ ,被 O'Reilly 正式出版过,2012年的时候,国内的陈涛同学无偿翻译过一个中文版,我还在这里推荐过:推荐《用Python进行自然语言处理》中文翻译-NLTK配套书 ,后来才有了基于此版本的更正式的中文翻译版:《Python自然语言处理》。不过如果英文ok的话,优先推荐看目前官方的最新版本:http://www.nltk.org/book/

几年前我尝试写英文博客,觉得可以从NLTK的入门介绍开始,所以写了一个英文系列:Dive into NLTK,基于Python 2,感兴趣的同学可以关注:

Part I: Getting Started with NLTK
Part II: Sentence Tokenize and Word Tokenize
Part III: Part-Of-Speech Tagging and POS Tagger
Part IV: Stemming and Lemmatization
Part V: Using Stanford Text Analysis Tools in Python
Part VI: Add Stanford Word Segmenter Interface for Python NLTK
Part VII: A Preliminary Study on Text Classification
Part VIII: Using External Maximum Entropy Modeling Libraries for Text Classification
Part IX: From Text Classification to Sentiment Analysis
Part X: Play With Word2Vec Models based on NLTK Corpus
Part XI: From Word2Vec to WordNet

这个过程中使用了NLTK中嵌入的斯坦福大学文本分析工具包,发现少了斯坦福中文分词器,所以当时动手加了一个:Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器

斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger),命名实体识别工具(Named Entity Recognizer),句法分析器(Parser)等,可喜的事,他们还为这些工具训练了相应的中文模型,支持中文文本处理。在使用NLTK的过程中,发现当前版本的NLTK已经提供了相应的斯坦福文本处理工具接口,包括词性标注,命名实体识别和句法分析器的接口,不过可惜的是,没有提供分词器的接口。在google无果和阅读了相应的代码后,我决定照猫画虎为NLTK写一个斯坦福中文分词器接口,这样可以方便的在Python中调用斯坦福文本处理工具。

后来,这个版本在 NLTK 3.2 官方版本中被正式引入:stanford_segmenter.py ,我也可以小自豪一下为NLTK做过一点微小的贡献:

使用NLTK来处理中文是很多同学想干的事情,这方面,在NLTK中调用斯坦福大学的中文工具包刚好是一个切入点,关于NLTK中如何使用斯坦福大学工具包进行中文信息处理,推荐两篇文章:

在 NLTK 中使用 Stanford NLP 工具包http://www.zmonster.me/2016/06/08/use-stanford-nlp-package-in-nltk.html

以及白宁超同学的系列文章:

干货!详述Python NLTK下如何使用stanford NLP工具包http://www.cnblogs.com/baiboy/p/nltk1.html

关于NLTK的书籍,其实还有一本很不错:Python Text Processing with NLTK 2.0 Cookbook ,我之前看过这本,不过现在已经更新到Python 3了:Python 3 Text Processing with NLTK 3 Cookbook 。最后提供一个NLTK相关资料的打包下载,包括早期的中文翻译版和这个Cookbook,仅供个人学习使用,感兴趣的同学可以关注我们的公众号: AINLP, 回复'NLTK'获取相关下载链接:

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

本文链接地址:Python自然语言处理工具NLTK学习导引及相关资料 http://www.52nlp.cn/?p=11190

HMM学习最佳范例全文PDF文档及相关文章索引

HMM学习最佳范例系列大概翻译于10年前,是52nlp上早期访问量较高的一批文章,这里提供一个全文PDF下载,关注AINLP公众号,回复'HMM'获取网盘链接:

另外将博客上的隐马尔可夫模型相关文章做个索引,仅供参考:

HMM学习最佳范例

HMM相关文章

HMM应用

AI Challenger 2018 简记

这两天在北京参加了 AI Challenger 2018 总决赛,这次又有点小幸运拿到了英中机器翻译决赛第5名,不过整个过程和去年的《AI Challenger 2017 奇遇记》有所不同。去年参加比赛的定位是“学”,学习NMT的相关知识和调研相关工具;今年参加比赛的定位是“用”,用熟悉的NMT工具。

与去年相比,今年的 AI Challenger 机器翻译赛道做了“优化”,首先没有了同传赛道,这个赛道去年因为有了“同传”二字吓走了一批人,其次最高奖金也降了,降到了20万,所以感觉相比于其他两个文本挖掘赛道,英中文本机器翻译赛道要冷清一些,另外一个原因可能是机器翻译的千万中英双语句对语料对机器资源的要求要高一些。

另外今年 AI Challenger 英中文本机器翻译大赛虽然语料还是口语领域的,但是额外增加了Document上下文语料,也是本次比赛新的命题点和关注点:
继续阅读