自然语言处理 | WordNet 中单词的同义词集
WordNet是词汇数据库,即英语词典,专为自然语言处理而设计。
Synset是一种特殊的简单接口,存在于 NLTK 中,用于在 WordNet 中查找单词。同义词实例是表达相同概念的同义词的分组。有些词只有一个同义词集,有些词有几个。
代码 #1:了解 Synset
from nltk.corpus import wordnet
syn = wordnet.synsets('hello')[0]
print ("Synset name : ", syn.name())
# Defining the word
print ("\nSynset meaning : ", syn.definition())
# list of phrases that use the word in context
print ("\nSynset example : ", syn.examples())
输出:
Synset name : hello.n.01
Synset meaning : an expression of greeting
Synset example : ['every morning they exchanged polite hellos']
wordnet.synsets(word)
可用于获取 Synsets 列表。这个列表可以是空的(如果没有找到这样的词)或者可以有很少的元素。上位词和下位词 –
上位词:更抽象的术语
下位词:更具体的术语。
两者都可以理解为 Synset 的组织结构类似于继承树的结构。这棵树可以一直追溯到根上位词。上位词提供了一种基于单词彼此相似性对单词进行分类和分组的方法。
代码 #2:理解 Hypernerms 和 Hyponyms
from nltk.corpus import wordnet
syn = wordnet.synsets('hello')[0]
print ("Synset name : ", syn.name())
print ("\nSynset abstract term : ", syn.hypernyms())
print ("\nSynset specific term : ",
syn.hypernyms()[0].hyponyms())
syn.root_hypernyms()
print ("\nSynset root hypernerm : ", syn.root_hypernyms())
输出:
Synset name : hello.n.01
Synset abstract term : [Synset('greeting.n.01')]
Synset specific term : [Synset('calling_card.n.02'), Synset('good_afternoon.n.01'),
Synset('good_morning.n.01'), Synset('hail.n.03'), Synset('hello.n.01'),
Synset('pax.n.01'), Synset('reception.n.01'), Synset('regard.n.03'),
Synset('salute.n.02'), Synset('salute.n.03'), Synset('welcome.n.02'),
Synset('well-wishing.n.01')]
Synset root hypernerm : [Synset('entity.n.01')]
代码 #3:Synset 中的词性 (POS)。
syn = wordnet.synsets('hello')[0]
print ("Syn tag : ", syn.pos())
syn = wordnet.synsets('doing')[0]
print ("Syn tag : ", syn.pos())
syn = wordnet.synsets('beautiful')[0]
print ("Syn tag : ", syn.pos())
syn = wordnet.synsets('quickly')[0]
print ("Syn tag : ", syn.pos())
输出:
Syn tag : n
Syn tag : v
Syn tag : a
Syn tag : r