手把手教你解决90%的NLP问题( 四 )


Word2Vec句子的嵌入
使用之前的技术可视化的我们的新嵌入:

手把手教你解决90%的NLP问题

文章插图
Word2Vec嵌入可视化
这两组颜色在这里看起来更加分离 , 我们的新嵌入应该有助于我们的分类器找到这两个类之间的分离 。经过第三次对同一模型的训练(Logistic回归) , 我们得到的准确率为77.7% , 是我们目前最好的结果!是时候检查我们的模型了 。
复杂性和可解释性的权衡
由于我们的嵌入不像之前的模型中那样以每个单词一维的向量来表示 , 所以很难看出哪些单词与我们的分类最相关 。虽然我们仍然可以访问逻辑回归的系数 , 但它们与嵌入的300个维度有关 , 而不是与单词的索引有关 。
对于如此低的精确度 , 失去所有的可解释性似乎是一个艰难的权衡 。但是 , 对于更复杂的模型 , 我们可以利用黑匣子解释器 , 比如LIME , 以便深入了解分类器的工作原理 。
LIME
LIME可在Github上获得通过一个开源包 。黑盒解释器允许用户通过扰动输入(在我们的例子中是从句子中删除单词)并查看预测如何变化来解释任何分类器对一个特定示例的决策 。
让我们从我们的数据集中看一些句子的解释 。
手把手教你解决90%的NLP问题

文章插图
 
选择正确的灾难词汇来分类为“相关” 。
手把手教你解决90%的NLP问题

文章插图
 
在这里 , 单词对分类的贡献似乎不那么明显 。
然而 , 我们没有时间研究数据集中的数千个示例 。相反 , 我们要做的是对一个具有代表性的测试用例样本运行LIME , 并查看哪些单词会不断出现 , 成为强大的贡献者 。使用这种方法 , 我们可以得到单词重要性评分 , 就像我们之前的模型一样 , 并验证我们的模型的预测 。
手把手教你解决90%的NLP问题

文章插图
Word2Vec: 单词重要性
看起来这个模型选择了高度相关的词汇 , 这意味着它似乎做出了可以理解的决定 。在所有之前的模型中 , 这些似乎是最相关的词汇 , 因此我们更愿意将它们部署到生产环境中 。
第8步:利用语义 , 使用端到端的方法
我们已经介绍了生成密集的语句嵌入的快速而有效的方法 。然而 , 通过忽略单词的顺序 , 我们丢弃了我们句子的所有语法信息 。如果这些方法不能提供足够的结果 , 你可以使用更复杂的模型 , 它将整个句子作为输入并预测标签 , 而不需要构建中间表示 。一种常见的方法是使用Word2Vec或更近期的方法如GloVe或CoVe将一个句子视为单个单词向量的序列 。这就是我们下面要做的 。
手把手教你解决90%的NLP问题

文章插图
高效的端到端的结构
Convolutional Neural Networks for Sentence Classification训练非常快 , 是一种入门级的深度学习架构 。而卷积神经网络(CNN)主要是图像数据性能著称 , 他们在文本相关的任务上也能提供优秀的结果 。和通常最复杂的NLP训练方法(如[LSTMs]和编码器/解码器架构更快 。这个模型保存单词的顺序 , 并学习有价值的信息 , 以及哪些单词序列可以预测我们的目标类 。与之前的模型相反 , 它可以区分“Alex eats plants”和“Plants eat Alex” 。
与以前的方法相比 , 训练这个模型并不需要更多的工作 , 并为我们提供了一个比以前的方法更好的模型 , 获得79.5%的准确率!与上面的模型一样 , 下一步应该是使用我们描述的方法探索和解释预测 , 以验证它确实是部署到用户的最佳模型 。到目前为止 , 你应该已经习惯了自己处理这个问题 。
要点总结
下面是我们成功使用的方法的快速回顾:
  • 从一个快速简单的模型开始
  • 解释其预测
  • 了解它正在犯的错误
  • 使用这些知识来指导下一步 , 无论是处理数据还是更复杂的模型 。
英文原文:https://blog.insightdatascience.com/how-to-solve-90-of-nlp-problems-a-step-by-step-guide-fda605278e4e




推荐阅读