《TensorFlow自然语言处理》—3.2 学习单词表示的经典方法
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中看到它们。
图3.2 一个synset的不同关联
NLTK库是一个Python自然语言处理库,我们可以用它理解WordNet及其机制。完整示例可在ch3文件夹中的ch3_wordnet.ipynb文件中找到。
安装NLTK库
可以用以下python pip命令安装NLTK库:
或者,可以使用IDE(例如PyCharm)通过图形用户界面(GUI)安装库。可以在http://www.nltk.org/install.html找到更详细的说明。
要将NLTK导入Python并下载WordNet语料库,请首先导入nltk库:
然后可以运行以下命令下载WorldNet语料:
安装并导入nltk库后,我们需要使用以下命令导入WordNet语料库:
然后我们按照以下方式查询WordNet:
在运行这个示例之后,结果如下:
我们还可以通过以下方式获得两个同义词之间的相似性。在NLTK中实现了几种不同的相似性度量,你可以在官方网站(www.nltk.org/howto/wordnet.html)上看到它们的实际应用。在这里,我们使用Wu-Palmer相似性,它根据两个synset在同义词的层次结构中的深度来测量它们之间的相似性:
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),但它们尚未完成。
接下来,我们将讨论几种不依赖外部资源的单词表示技术。
- 点赞
- 收藏
- 关注作者
评论(0)