
- 自然語言工具包教程
- 自然語言工具包 - 首頁
- 自然語言工具包 - 簡介
- 自然語言工具包 - 入門
- 自然語言工具包 - 文字標記
- 訓練標記器和過濾停用詞
- 在WordNet中查詢單詞
- 詞幹提取和詞形還原
- 自然語言工具包 - 單詞替換
- 同義詞和反義詞替換
- 語料庫讀取器和自定義語料庫
- 詞性標註基礎
- 自然語言工具包 - 單詞標註器
- 自然語言工具包 - 組合標註器
- 自然語言工具包 - 更多NLTK標註器
- 自然語言工具包 - 解析
- 分塊和資訊提取
- 自然語言工具包 - 轉換分塊
- 自然語言工具包 - 轉換樹
- 自然語言工具包 - 文字分類
- 自然語言工具包資源
- 自然語言工具包 - 快速指南
- 自然語言工具包 - 有用資源
- 自然語言工具包 - 討論
在WordNet中查詢單詞
什麼是WordNet?
WordNet是一個大型的英語詞彙資料庫,由普林斯頓大學建立。它是NLTK語料庫的一部分。名詞、動詞、形容詞和副詞都被分組到同義詞集(synsets)中,即認知同義詞。每個同義詞集表達一個不同的含義。以下是WordNet的一些用例:
- 它可以用來查詢單詞的定義
- 我們可以找到一個單詞的同義詞和反義詞
- 可以使用WordNet探索單詞關係和相似性
- 對於具有多種用法和定義的單詞進行詞義消歧
如何匯入WordNet?
可以使用以下命令匯入WordNet:
from nltk.corpus import wordnet
對於更簡潔的命令,請使用以下命令:
from nltk.corpus import wordnet as wn
Synset例項
Synset是表達相同概念的同義詞的組合。當您使用WordNet查詢單詞時,您將獲得一個Synset例項列表。
wordnet.synsets(word)
為了獲得Synsets列表,我們可以使用wordnet.synsets(word)在WordNet中查詢任何單詞。例如,在接下來的Python示例中,我們將查詢“dog”的Synset,以及Synset的一些屬性和方法:
示例
首先,匯入wordnet如下:
from nltk.corpus import wordnet as wn
現在,提供您想要查詢其Synset的單詞:
syn = wn.synsets('dog')[0]
在這裡,我們使用name()方法獲取synset的唯一名稱,該名稱可用於直接獲取Synset:
syn.name() Output: 'dog.n.01'
接下來,我們使用definition()方法,它將給我們單詞的定義:
syn.definition() Output: 'a member of the genus Canis (probably descended from the common wolf) that has been domesticated by man since prehistoric times; occurs in many breeds'
另一個方法是examples(),它將給我們與單詞相關的示例:
syn.examples() Output: ['the dog barked all night']
完整的實現示例
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] syn.name() syn.definition() syn.examples()
獲取上位詞(Hypernyms)
Synsets在一個繼承樹狀結構中組織,其中上位詞(Hypernyms)代表更抽象的術語,而下位詞(Hyponyms)代表更具體的術語。重要的一點是,這個樹可以一直追溯到根上位詞。讓我們透過以下示例來理解這個概念:
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] syn.hypernyms()
輸出
[Synset('canine.n.02'), Synset('domestic_animal.n.01')]
在這裡,我們可以看到canine和domestic_animal是“dog”的上位詞。
現在,我們可以找到“dog”的下位詞,如下所示:
syn.hypernyms()[0].hyponyms()
輸出
[ Synset('bitch.n.04'), Synset('dog.n.01'), Synset('fox.n.01'), Synset('hyena.n.01'), Synset('jackal.n.01'), Synset('wild_dog.n.01'), Synset('wolf.n.01') ]
從上面的輸出中,我們可以看到“dog”只是“domestic_animals”的眾多下位詞之一。
為了找到所有這些的根,我們可以使用以下命令:
syn.root_hypernyms()
輸出
[Synset('entity.n.01')]
從上面的輸出中,我們可以看到它只有一個根。
完整的實現示例
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] syn.hypernyms() syn.hypernyms()[0].hyponyms() syn.root_hypernyms()
輸出
[Synset('entity.n.01')]
WordNet中的詞元(Lemmas)
在語言學中,單詞的規範形式或形態形式稱為詞元。為了找到單詞的同義詞和反義詞,我們也可以在WordNet中查詢詞元。讓我們看看怎麼做。
查詢同義詞
透過使用lemma()方法,我們可以找到Synset的同義詞數量。讓我們將此方法應用於“dog” synset:
示例
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] lemmas = syn.lemmas() len(lemmas)
輸出
3
上面的輸出顯示“dog”有三個詞元。
獲取第一個詞元的名稱,如下所示:
lemmas[0].name() Output: 'dog'
獲取第二個詞元的名稱,如下所示:
lemmas[1].name() Output: 'domestic_dog'
獲取第三個詞元的名稱,如下所示:
lemmas[2].name() Output: 'Canis_familiaris'
實際上,一個Synset代表一組具有相似含義的詞元,而一個詞元代表一個不同的詞形。
查詢反義詞
在WordNet中,一些詞元也具有反義詞。例如,“good”這個詞共有27個synsets,其中5個具有帶有反義詞的詞元。讓我們找到反義詞(當“good”用作名詞時,以及當“good”用作形容詞時)。
示例1
from nltk.corpus import wordnet as wn syn1 = wn.synset('good.n.02') antonym1 = syn1.lemmas()[0].antonyms()[0] antonym1.name()
輸出
'evil'
antonym1.synset().definition()
輸出
'the quality of being morally wrong in principle or practice'
上面的示例顯示,當“good”用作名詞時,第一個反義詞是“evil”。
示例2
from nltk.corpus import wordnet as wn syn2 = wn.synset('good.a.01') antonym2 = syn2.lemmas()[0].antonyms()[0] antonym2.name()
輸出
'bad'
antonym2.synset().definition()
輸出
'having undesirable or negative qualities’
上面的示例顯示,當“good”用作形容詞時,第一個反義詞是“bad”。