应用自然语言处理(NLP)解码电影

时间:2022-04-25
本文章向大家介绍应用自然语言处理(NLP)解码电影,主要内容包括Applying Natural Language Processing to Decode a Movie、单词向量表示(Word Vector Representation)的适用性、用于分析的方法、技术环境、参数、单词向量快照、短语之间的关系、结论、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

Applying Natural Language Processing to Decode a Movie

原文作者:Ritesh Sinha

原文地址:https://dzone.com/articles/applying-nlp-to-decode-an-indian-classical-movie-s

译者微博:@从流域到海域

译者博客:blog.csdn.net/solo95

这篇文章的目标是运用自然语言处理来理解印度经典电影“ 肖莱”中的各种人物之间的关系 。使用的文本取自Sholay的维基页面,只采用前三个段落用于更好地理解文章内容。本文的重点是方法而不是准确性,所以使用了较小的数据集。对NLP领域中各种方法的准确性感兴趣的读者可以看看这篇文章

(Word embedding全部译为单词嵌入, 这篇文章多处出现words,有时指单词,有时指文字,请读者注意,译者注。)

背景

近年来,在向量空间中表示单词的各种方法已经出现,已被证明在捕捉句法(语法结构)和语义(含义)细节方面是极其有效的。单词嵌入是辅助NLP相关任务的技术之一。

在构成输入表示时,单词和短语嵌入已经被证明可以显著提高NLP的性能。

根据Wikipedia的这篇文章

单词嵌入 是自然语言处理(NLP)中的一组语言建模和特征学习技术的总称,它把来自单词表的词或词组被映射到实数的向量上。

发现单词向量在解释关系方面表现相当好。从以下图像可以清楚看出。

这是一个有用的单词向量功能,他们能够解释如下关系:

vector(King) - vector(Queen) = vector(Man) - vector(Woman)

其中一个著名的方法是Mikolov等人的Word2Vec,它已经取得了很好的成功。这是由Google的研究人员完成的。

另外还有一个叫做GloVe (全局向量)的著名方法 ,由Jeffrey Pennington,Richard Socher和Christopher D. Manning在斯坦福大学开发,在某些情况下表现更好。

上述两种模式都遵循这个方法:一个词被保存它的公司(company)所知晓。

:还有其他的方法,这些方法已经被广泛的使用,并且对NLP的发展做出了贡献,这里不进行讨论。

单词向量表示(Word Vector Representation)的适用性

单词向量表示法是非常有用的,有助于一些机器学习任务。我把其中一些列在下面。

  • 主题建模:从文档集合中提取抽象主题的技术。(参见这里
  • 文档相似性:可以从单词向量表示中检索关于文档相似性的信息。
  • 矢量化:ML pipelines(Spark中的一个包,译者注)和文本挖掘中的一个重要步骤。

用于分析的方法

在这种情况下,GloVe方法被用于分析从维基百科页面(其前三个段落)中获取的文本。然后,将对由GloVe算法形成的向量进行主成分分析,然后在带有Wiki文本中的各种短语的二维图上显示。

技术环境

所用的代码是在Rtudio环境中由R语言编写。

单词嵌入是通过使用text2vecand的 tm 包来完成的 。可视化使用 ggplot2 完成, 将会在一个二维空间中表示。

参数

对文本进行修剪以删除数量少于三个的单词。这是为了保持可视化看起来整洁。

文字窗口保持在5。

矢量的大小保持在20。

该模型通过调用 glove = GlobalVectors$new 进行训练,它在text2vec包中可用。

单词向量快照

以下是通过上述技术学习到的(针对出现在语料库中的一些单词)的各种向量的例子。

注意:由于空间不足,所有矢量都不显示。

短语之间的关系

学习过矢量之后,应用主成分分析,并在具有两个主成分的二维图上绘制出各个单词,因为难于以两维以上的方式进行可视化。由此产生的关系由下图描述。

一些有趣的观察发现:

  1. Jai和Veeru一起出现。
  2. 他们远离电影肖雷的名字。这可能是由于数据集不足。
  3. Basanti,Sholay和Ramgarh会一起出现。
  4. Veeru / Basanti和Jai / Radha之间的距离是可比的。

结论

我们看到,在一个小的数据集上,全局向量在理解一些关系方面表现得相当好。在矢量表示的帮助下,单词可以表示为数值矢量,并且可以用作一些更复杂的机器学习任务的构建块。

上面的分析的源代码和解释可以在这里找到