教程帖:如何解决90%的NLP问题(上)

2018 年 2 月 12 日 论智 Bing
来源:Medium
编译:Bing

编者按:本文作者Emmanuel Ameisen是人工智能团队Insight的项目总监。本文总结了他们在处理各公司关于自然语言处理的问题时所遇到的问题,以及解决方法,最终汇成了这篇博文。本文为连载,今天给大家带来上半部分,主要讲述了数据的前期准备。以下是论智的编译。


处处都有文本数据

不论你是一家已经成立的公司,还是正在准备发布新产品,你总能利用现成的文本数据改善、扩大产品的功能。有关自然语言处理(NLP)的技术问题也在日渐升温。NLP技术的产生丰富了我们日常的生活,然而,通过跟上百家公司的合作,我们Insight团队在服务过程中发现了一些经常出现的问题:

  • 对不同用户进行定位(例如预测客户流失、顾客终身价值、产品偏好等)

  • 精准检测,对不同的类别提取不同的反馈(积极与消极的评论、意见,对特殊特征的意见,例如衣服尺寸、是否合适)

  • 根据不同的目的进行文本分类(例如寻求帮助、紧急求救等)

尽管网上已经有许多有关NLP的论文和教程,但我们发现,却仍然缺乏一份能有效解决NLP基本问题的指南。

这份文章能帮你什么

通过一年时间对全美上百家公司的帮助,我们专门写了这篇针对自然语言处理的机器学习教程。我们将从最简单的方法入手,然后介绍更复杂的解决方法,例如特征工程、词向量以及深度学习。

读完这篇文章,你能收获到:

  • 如何收集、准备、监测数据

  • 建立简单的初始模型,甚至深度学习所必须的过度模型

  • 解读并理解你的模型,保证能了解到文本的信息,并且没有噪音

虽然这是一篇教程帖,但也是一篇全面的总结帖。

第一步:收集你的数据

数据来源采样

每个机器学习问题都从数据开始,比如大量的电子邮件、推特等。常见的文本信息来源包括:

  • 产品评论(亚马逊、Yelp等手机软件)

  • 用户产生的内容(在推特、Facebook上发表的评论,在Stack Overflow上的提问)

  • 分析解决问题(用户需求、对话框等等)

“社交网络灾难”数据集

本文中,我们将选用CrowdFlower提供的名为“社交网络上的灾难”的数据集,其中志愿者搜索了10000多条含有“燃烧”、“隔离”、“混乱”等词语的推特,然后在表示灾难事件的推文上做标记(排除开玩笑以及非灾难性文字)。

我们的任务是判断哪些推特是关于灾难事件的,哪些是与灾难无关的话题(例如电影)。为什么?将要设计的应用要向专业的执法人员通报紧急情况,同时要忽略电影评论。其中的挑战在于,这个任务中的推文搜索词是相同的,所以我们要找出其中细微的差别。

本文的后半部分,我们将把关于灾难的推文称为“disaster”,无关的话题称为“irrelevant”。

标签

由于对数据进行了标记,所以我们能知道这条推文属于哪种类别。正如下Richard Socher所说,找到足够的数据并进行标记,要比对一种复杂、无监督的方法进行优化更快、更简单、更便宜。

第二步:数据清理

我们遵循的一条原则是:“你的模型将配得上你的数据。”

数据可削减的关键技能之一就是了解下一步是否应该在模型或数据上工作。一个好的原则是先查看数据,然后进行清理。经过清洗后的数据集能使模型学习有意义的特征,而不是与无关的噪音过度拟合。

以下是用于清理数据的清单(请参阅代码以获取详细信息):

  1. 删除所有不相关的字符,例如任何非字母、数字的字符;

  2. 将您的文本分成单独的文字进行标记;

  3. 删除不相关的字词,例如“@”或者url;

  4. 将所有字母转换成小写字母;

  5. 将拼写错误的单词改为正确单词;

  6. 将“am”、“are”、“is”转换成普通的“be”

进行完这些步骤并检查其他错误后,就可以使用干净的标记数据来训练模型啦!

(未完待续……)

登录查看更多
3

相关内容

NLP:自然语言处理
零样本文本分类,Zero-Shot Learning for Text Classification
专知会员服务
95+阅读 · 2020年5月31日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
209+阅读 · 2020年4月26日
【教程】自然语言处理中的迁移学习原理,41 页PPT
专知会员服务
93+阅读 · 2020年2月8日
强化学习最新教程,17页pdf
专知会员服务
167+阅读 · 2019年10月11日
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
手把手教你搞定90%的NLP问题
AI前线
3+阅读 · 2018年3月18日
如何解决自然语言处理中 90% 的问题
AI研习社
4+阅读 · 2018年2月15日
八大步骤,用机器学习解决90%的NLP问题
机器学习研究会
5+阅读 · 2018年1月26日
Python NLP 入门教程
开源中国
14+阅读 · 2017年10月1日
Arxiv
34+阅读 · 2020年1月2日
Object Detection in 20 Years: A Survey
Arxiv
48+阅读 · 2019年5月13日
Arxiv
8+阅读 · 2019年3月28日
Deep Anomaly Detection with Outlier Exposure
Arxiv
17+阅读 · 2018年12月21日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Arxiv
21+阅读 · 2018年8月30日
Arxiv
10+阅读 · 2018年3月22日
VIP会员
相关VIP内容
相关资讯
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
手把手教你搞定90%的NLP问题
AI前线
3+阅读 · 2018年3月18日
如何解决自然语言处理中 90% 的问题
AI研习社
4+阅读 · 2018年2月15日
八大步骤,用机器学习解决90%的NLP问题
机器学习研究会
5+阅读 · 2018年1月26日
Python NLP 入门教程
开源中国
14+阅读 · 2017年10月1日
相关论文
Arxiv
34+阅读 · 2020年1月2日
Object Detection in 20 Years: A Survey
Arxiv
48+阅读 · 2019年5月13日
Arxiv
8+阅读 · 2019年3月28日
Deep Anomaly Detection with Outlier Exposure
Arxiv
17+阅读 · 2018年12月21日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Arxiv
21+阅读 · 2018年8月30日
Arxiv
10+阅读 · 2018年3月22日
Top
微信扫码咨询专知VIP会员