Tra cứu từ trong Wordnet
Wordnet là gì?
Wordnet là một cơ sở dữ liệu từ vựng lớn về tiếng Anh, được tạo ra bởi Princeton. Nó là một phần của kho ngữ liệu NLTK. Tất cả danh từ, động từ, tính từ và trạng từ đều được nhóm lại thành tập hợp các synsets, tức là các từ đồng nghĩa nhận thức. Ở đây mỗi tập hợp mã biểu thị một ý nghĩa riêng biệt. Sau đây là một số trường hợp sử dụng của Wordnet -
- Nó có thể được sử dụng để tra cứu định nghĩa của một từ
- Chúng ta có thể tìm thấy các từ đồng nghĩa và trái nghĩa của một từ
- Các quan hệ từ và các điểm tương đồng có thể được khám phá bằng Wordnet
- Phân biệt nghĩa từ cho những từ có nhiều cách sử dụng và định nghĩa
Làm cách nào để nhập Wordnet?
Wordnet có thể được nhập với sự trợ giúp của lệnh sau:
from nltk.corpus import wordnet
Để có lệnh nhỏ gọn hơn, hãy sử dụng lệnh sau:
from nltk.corpus import wordnet as wn
Phiên bản Synset
Synset là nhóm các từ đồng nghĩa thể hiện cùng một khái niệm. Khi bạn sử dụng Wordnet để tra từ, bạn sẽ nhận được danh sách các phiên bản Synset.
wordnet.synsets (word)
Để có danh sách Synsets, chúng ta có thể tra cứu bất kỳ từ nào trong Wordnet bằng cách sử dụng wordnet.synsets(word). Ví dụ, trong công thức Python tiếp theo, chúng ta sẽ tìm kiếm Synset cho 'dog' cùng với một số thuộc tính và phương thức của Synset -
Thí dụ
Đầu tiên, nhập wordnet như sau:
from nltk.corpus import wordnet as wn
Bây giờ, hãy cung cấp từ bạn muốn tra cứu Synset -
syn = wn.synsets('dog')[0]
Ở đây, chúng tôi đang sử dụng phương thức name () để lấy tên duy nhất cho synset có thể được sử dụng để lấy Synset trực tiếp -
syn.name()
Output:
'dog.n.01'
Tiếp theo, chúng tôi đang sử dụng phương thức Definition () sẽ cung cấp cho chúng tôi định nghĩa của từ -
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'
Một phương thức khác là example () sẽ cung cấp cho chúng ta các ví dụ liên quan đến từ -
syn.examples()
Output:
['the dog barked all night']
Hoàn thành ví dụ triển khai
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.name()
syn.definition()
syn.examples()
Nhận từ siêu nghĩa
Synsets được tổ chức trong một cây kế thừa giống như cấu trúc trong đó Hypernyms đại diện cho các thuật ngữ trừu tượng hơn trong khi Hyponymsđại diện cho các điều khoản cụ thể hơn. Một trong những điều quan trọng là cây này có thể được truy tìm đến tận gốc một ẩn danh. Hãy để chúng tôi hiểu khái niệm này với sự trợ giúp của ví dụ sau:
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()
Đầu ra
[Synset('canine.n.02'), Synset('domestic_animal.n.01')]
Ở đây, chúng ta có thể thấy rằng canine và domestic_animal là những từ viết tắt của 'dog'.
Bây giờ, chúng ta có thể tìm thấy những từ viết tắt của 'dog' như sau:
syn.hypernyms()[0].hyponyms()
Đầu ra
[
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')
]
Từ kết quả ở trên, chúng ta có thể thấy rằng 'dog' chỉ là một trong số rất nhiều từ trái nghĩa của 'domestic_animals'.
Để tìm gốc của tất cả những thứ này, chúng ta có thể sử dụng lệnh sau:
syn.root_hypernyms()
Đầu ra
[Synset('entity.n.01')]
Từ đầu ra ở trên, chúng ta có thể thấy nó chỉ có một gốc.
Hoàn thành ví dụ triển khai
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()
syn.hypernyms()[0].hyponyms()
syn.root_hypernyms()
Đầu ra
[Synset('entity.n.01')]
Bổ đề trong Wordnet
Trong ngôn ngữ học, hình thức chính tắc hoặc hình thái của một từ được gọi là bổ đề. Để tìm từ đồng nghĩa cũng như trái nghĩa của một từ, chúng ta cũng có thể tra cứu bổ đề trong Mạng từ. Hãy để chúng tôi xem làm thế nào.
Tìm từ đồng nghĩa
Bằng cách sử dụng phương thức bổ đề (), chúng ta có thể tìm thấy số lượng từ đồng nghĩa của một Synset. Hãy để chúng tôi áp dụng phương pháp này trên synset 'dog' -
Thí dụ
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
lemmas = syn.lemmas()
len(lemmas)
Đầu ra
3
Kết quả trên cho thấy 'dog' có ba bổ đề.
Lấy tên của bổ đề đầu tiên như sau:
lemmas[0].name()
Output:
'dog'
Lấy tên của bổ đề thứ hai như sau:
lemmas[1].name()
Output:
'domestic_dog'
Lấy tên của bổ đề thứ ba như sau:
lemmas[2].name()
Output:
'Canis_familiaris'
Trên thực tế, một Synset đại diện cho một nhóm các bổ đề có ý nghĩa tương tự trong khi một bổ đề biểu thị một dạng từ riêng biệt.
Tìm từ trái nghĩa
Trong Mạng từ, một số bổ đề cũng có từ trái nghĩa. Ví dụ, từ 'good' có tổng cộng 27 synets, trong số đó, 5 synets có bổ đề với từ trái nghĩa. Chúng ta hãy tìm các từ trái nghĩa (khi từ 'tốt' được sử dụng như danh từ và khi từ 'tốt' được sử dụng như tính từ).
ví dụ 1
from nltk.corpus import wordnet as wn
syn1 = wn.synset('good.n.02')
antonym1 = syn1.lemmas()[0].antonyms()[0]
antonym1.name()
Đầu ra
'evil'
antonym1.synset().definition()
Đầu ra
'the quality of being morally wrong in principle or practice'
Ví dụ trên cho thấy từ 'tốt', khi được sử dụng như danh từ, có từ trái nghĩa đầu tiên là 'ác'.
Ví dụ 2
from nltk.corpus import wordnet as wn
syn2 = wn.synset('good.a.01')
antonym2 = syn2.lemmas()[0].antonyms()[0]
antonym2.name()
Đầu ra
'bad'
antonym2.synset().definition()
Đầu ra
'having undesirable or negative qualities’
Ví dụ trên cho thấy từ 'tốt', khi được sử dụng như tính từ, có từ trái nghĩa đầu tiên là 'xấu'.