作者:Emmanuel Ameisen导读
编译:ronghuaiyang
利用机器学习方法来理解和利用文本 , 从最简单的到state-of-the-art , 由浅入深 , 循序渐进 。
文章插图
文本数据到处都是
无论是一家已成立的公司 , 还是正在开发一项新服务 , 都可以利用文本数据来验证、改进和扩展产品的功能 。从文本数据中提取语义和学习的科学是一个被称为自然语言处理(NLP)的活跃研究课题 。
NLP每天都有新的重要的进展 , 这是一个非常大的领域 。然而 , 在与数百家公司合作之后 , Insight团队发现一些关键的实际应用比其他应用出现得更频繁:
- 确定不同的用户/客户群体(例如预测客户流失、终身价值、产品偏好)
- 准确检测和提取不同类别的反馈(正面和负面的评论/意见 , 属性 , 如衣服尺寸/合身度…)
- 按意图将文本分类(例如:请求基本帮助、紧急问题)
这篇文章有什么用?
在一年领导了数百个项目 , 并从美国各地的顶级团队获得建议之后 , 我们写了这篇文章来解释如何构建机器学习解决方案来解决上述问题 。我们将从最简单可行的方法开始 , 然后转向更细微的解决方案 , 如特征工程、词向量和深度学习 。
读完这篇文章 , 你会知道:
- 收集、准备和检查数据
- 建立简单的模型开始 , 并过渡到深入学习 , 如果必要的话
- 解释和理解你的模型 , 以确保你实际捕获的是信息而不是噪音
第一步: 收集数据
数据源的样例
每一个机器学习问题都是从数据开始的 , 比如电子邮件、帖子或tweet列表 。常见的文本信息来源包括:
- 产品评论(亚马逊 , Yelp , 各种应用商店)
- 用户生成内容(tweet、Facebook帖子、StackOverflow问题)
- 故障排除(客户请求、支持票、聊天日志)
“社交媒体灾难”数据集
对于本文 , 我们将使用图8提供的数据集 , 名为“社交媒体上的灾难” , 其中:
贡献者们查看了1万多条推文 , 这些推文都经过了各种各样的搜索 , 比如“着火”、“隔离”和“混乱” , 然后指出这条推文是否指的是灾难事件(而不是带有这个词的笑话、电影评论或其他非灾难性的东西) 。我们的任务是检测哪些tweet是关于灾难性事件的 , 而不是与之相关的主题 , 比如电影 。为什么?一种潜在的应用可能是 , 在不理会对Adam Sandler最新电影的评论的情况下 , 只向执法官员通报紧急情况 。这项任务的一个特殊挑战是 , 这两个类都包含用于查找tweet的相同搜索词 , 因此我们将不得不使用更细微的差异来区分它们 。
在本文的其余部分 , 我们将把关于灾难的tweet称为“灾难” , 而关于其他任何事情的tweet称为“无关” 。
标签
我们已经标记了数据 , 所以我们知道哪些tweet属于哪些类别 。正如Richard Socher在下面所概述的 , 找到和标记足够的数据来训练模型通常更快、更简单、更便宜 , 而不是试图优化一个复杂的无监督方法 。
文章插图
第二步: 数据清洗
我们遵循的第一条规则是:“你的模型永远只会和你的数据一样好 。”数据科学家的关键技能之一是知道下一步应该是处理模型还是数据 。一个好的经验法则是先查看数据 , 然后整理它 。一个干净的数据集将允许模型学习有意义的特征 , 而不会在不相关的噪声上过拟合 。
这里有一个清单 , 可以用来清理你的数据: