WordNet là một phần của Natural Language Toolkit (NLTK) của Python. Nó là cơ sở dữ liệu từ lớn của Danh từ, Tính từ, Trạng từ và Động từ tiếng Anh. Chúng được nhóm thành một số tập hợp từ đồng nghĩa nhận thức, được gọi là synsets.
Để sử dụng WordNet, trước hết chúng ta phải cài đặt module NLTK, sau đó tải gói WordNet.
$ sudo pip3 install nltk
$ python3
>>> import nltk
>>> nltk.download('wordnet')
Trong wordnet, có một số nhóm từ, có nghĩa giống nhau.
Trong ví dụ đầu tiên, chúng ta sẽ xem wordnet trả về nghĩa và các chi tiết khác của một từ như thế nào. Đôi khi, nếu có một số ví dụ, nó cũng có thể cung cấp điều đó.
Mã ví dụ
from nltk.corpus import wordnet # Import wordnet từ NLTK
synset = wordnet.synsets("Travel")
print('Word and Type: ' + synset[0].name())
print('Synonym of Travel is: ' + synset[0].lemmas()[0].name())
print('The meaning of the word: ' + synset[0].definition())
print('Example of Travel: ' + str(synset[0].examples()))
Đầu ra
$ python3 322a.word_info.py Word and Type: travel.n.01 Synonym of Travel is: travel The meaning of the word: the act of going from one place to another Example of Travel: ['he enjoyed selling but he hated the travel'] $
Trong ví dụ trước, chúng ta đang lấy thông tin chi tiết về một số từ. Ở đây chúng ta sẽ xem wordnet có thể gửi từ đồng nghĩa và nghịch nghĩa của một từ cho trước như thế nào.
Mã ví dụ
import nltk
from nltk.corpus import wordnet # Import wordnet từ NLTK
syn = list()
ant = list()
for synset in wordnet.synsets("Worse"):
for lemma in synset.lemmas():
syn.append(lemma.name()) # thêm từ đồng nghĩa
if lemma.antonyms(): # Khi từ nghịch nghĩa có sẵn, thêm chúng vào danh sách
ant.append(lemma.antonyms()[0].name())
print('Synonyms: ' + str(syn))
print('Antonyms: ' + str(ant))
Đầu ra
$ python3 322b.syn_ant.py Synonyms: ['worse', 'worse', 'worse', 'worsened', 'bad', 'bad', 'big', 'bad', 'tough', 'bad', 'spoiled', 'spoilt', 'regretful', 'sorry', 'bad', 'bad', 'uncollectible', 'bad', 'bad', 'bad', 'risky', 'high-risk', 'speculative', 'bad', 'unfit', 'unsound', 'bad', 'bad', 'bad', 'forged', 'bad', 'defective', 'worse'] Antonyms: ['better', 'better', 'good', 'unregretful']
NLTK wordnet có một tính năng tuyệt vời khác, bằng cách sử dụng nó chúng ta có thể kiểm tra xem hai từ có gần như bằng nhau hay không. Nó sẽ trả về tỷ lệ tương đồng từ một cặp từ.
Mã ví dụ
import nltk
from nltk.corpus import wordnet # Import wordnet từ NLTK
first_word = wordnet.synset("Travel.v.01")
second_word = wordnet.synset("Walk.v.01")
print('Similarity: ' + str(first_word.wup_similarity(second_word)))
first_word = wordnet.synset("Good.n.01")
second_word = wordnet.synset("zebra.n.01")
print('Similarity: ' + str(first_word.wup_similarity(second_word)))
Đầu ra
$ python3 322c.compare.py Similarity: 0.6666666666666666 Similarity: 0.09090909090909091