《TensorFlow自然语言处理》—3.2 学习单词表示的经典方法

举报
华章计算机 发表于 2019/07/21 19:14:52 2019/07/21
【摘要】 本节书摘来自华章计算机《TensorFlow自然语言处理》一书中的第3章,第3.2.1节,[澳] 图珊·加内格达拉(Thushan Ganegedara) 著 马恩驰 陆 健 译。

3.2 学习单词表示的经典方法

在本节中,我们将讨论用数字表示单词的一些经典方法。这些方法主要可以分为两类:使用外部资源表示单词的方法和不使用外部资源的方法。首先,我们将讨论WordNet:一种基于外部资源表示单词的最流行的方法。然后,我们会讨论更多的本地化方法(即不依赖外部资源的方法),例如,单热编码和词频率-逆文档频率(TF-IDF)。

3.2.1 WordNet—使用外部词汇知识库来学习单词表示

WordNet是处理单词表示的最流行的经典方法或统计NLP方法之一。它依赖于外部词汇知识库,该知识库对给定单词的定义、同义词、祖先、派生词等信息进行编码。WordNet允许用户推断给定单词的各种信息,比如前一句中讨论的单词的各种信息和两个单词之间的相似性。

3.2.1.1 回顾WordNet

如前所述,WordNet是一个词汇数据库,用于对单词之间的词性标签关系(包括名词、动词、形容词和副词)进行编码。WordNet由美国普林斯顿大学心理学系首创,目前由普林斯顿大学计算机科学系负责。WordNet考虑单词之间的同义性来评估单词之间的关系。用于英语的WordNet目前拥有超过150?000个单词和超过100?000个同义词组(即synsets)。此外,WordNet不仅限于英语。自成立以来,已经建立了许多不同的WordNet,在http://globalwordnet.org/wordnets-in-the-world/上可以查看。

为了理解如何用WordNet,需要对WordNet中使用的术语有坚实的基础。首先,WordNet使用术语synset来表示一群或一组同义词。接下来,每个synset都有一个def?inition,用于解释synset表示的内容。synset中包含的同义词称为lemmas。

在WordNet中,单词表示是分层建模的,它在给定的synset与另一个synset之间进行关联形成一个复杂的图。有两种不同类别的关联方式:is-a关系或is-made-of关系。首先,我们将讨论is-a关系。

对于给定的synset,存在两类关系:上位词和下位词。synset的上位词是所考虑的synset的一般(更高一层)含义的同义词。例如,vehicle是同义词car的上位词。接下来,下位词是比相应的同义词组更具体的同义词。例如,Toyota car是同义词car的下位词。

现在让我们讨论一个synset的is-made-of关系。一个synset的整体词是可以表示所考虑的这个synset的全部实体的synset。例如,tires的整体词是cars。部分词是is-made-of类别的关系,是整体词的反义词,部分词是组成相应synset的一部分或子部分,我们可以在图3.2中看到它们。

 image.png

图3.2 一个synset的不同关联

NLTK库是一个Python自然语言处理库,我们可以用它理解WordNet及其机制。完整示例可在ch3文件夹中的ch3_wordnet.ipynb文件中找到。

安装NLTK库

可以用以下python pip命令安装NLTK库:

 image.png

或者,可以使用IDE(例如PyCharm)通过图形用户界面(GUI)安装库。可以在http://www.nltk.org/install.html找到更详细的说明。

要将NLTK导入Python并下载WordNet语料库,请首先导入nltk库:

 image.png

然后可以运行以下命令下载WorldNet语料:

 image.png

安装并导入nltk库后,我们需要使用以下命令导入WordNet语料库:

 image.png

然后我们按照以下方式查询WordNet:

 image.png

 image.png

在运行这个示例之后,结果如下:

 image.png

 

我们还可以通过以下方式获得两个同义词之间的相似性。在NLTK中实现了几种不同的相似性度量,你可以在官方网站(www.nltk.org/howto/wordnet.html)上看到它们的实际应用。在这里,我们使用Wu-Palmer相似性,它根据两个synset在同义词的层次结构中的深度来测量它们之间的相似性:

 image.png

3.2.1.2 WordNet的问题

虽然WordNet是一个令人惊叹的资源,任何人都可以在NLP任务中用它学习单词的含义,但使用WordNet有很多不足之处。

如下所示:

  • 缺少细微差别是WordNet中的一个关键问题。WordNet在理论上和实际应用中都有不可行的原因。从理论的角度来看,对两个实体之间微妙差异的定义进行建模并不恰当或直接。实际上,定义细微差别是主观的。例如,单词want和need具有相似的含义,但其中一个(need)更具有主张性,这被认为是一种细微差别。

  • 接下来,WordNet本身就是主观的,因为WordNet是由一个相对较小的社区设计的。因此,取决于你要解决的问题,WordNet可能是合适的,或者你可以通过更宽松的单词定义来提高性能。

  • 维护WordNet也存在问题,这是非常需要人力的。维护和添加新的synsets、def?ini-tions、lemmas等可能非常昂贵。这会对WordNet的可扩展性产生负面影响,因为人力对更新WordNet至关重要。

  • 为其他语言开发WordNet成本可能很高。有一些人努力为其他语言构建WordNet并将其与英语WordNet链接为MultiWordNet(MWN),但它们尚未完成。

接下来,我们将讨论几种不依赖外部资源的单词表示技术。



【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。