Mạng ngữ nghĩa WordNet
Các mối quan hệ trên ý nghĩa của từ
Một hình thái của từ (word form) hay gọi ngắn gọn là từ có thể có nhiều hơn một ý nghĩa biểu đạt đồng thời một nghĩa có thể được thể hiện bằng nhiều từ. Giữa các từ với nhau cũng có mối quan hệ về ngữ nghĩa, vd: “chó” là một loài “động vật”, “rễ” là một bộ phận của “cây”, …. Tổng hợp lại, ta có các dạng quan hệ sau: đồng nghĩa, trái nghĩa, đồng âm, đa nghĩa, hạ danh, thượng danh, bộ phận, bao hàm, kéo theo, cách thức.
Đồng Nghĩa (Synonymy): Các từ có hình thức biểu đạt khác nhau nhưng cùng chỉ một khái niệm. Ví dụ trong tiếng Việt, từ “lợn” và từ “heo” là các từ đồng nghĩa, trong tiếng Anh, từ “chance” và từ “opportunity” là các từ đồng nghĩa.
Trái Nghĩa (Antonym): Các từ chỉ các khái niệm trái ngược nhau. Từ “White” trái nghĩa với “Black”, “Xấu” trái nghĩa với “Đẹp”, “Sống” trái nghĩa với “Chết”.
Đồng Âm (Homonym): Những từ có cùng cách viết (đọc) nhưng có nghĩa hoàn toàn khác nhau. Từ “bank” có nghĩa là ngân hàng nhưng cũng có nghĩa là bờ sông. Nói đúng hơn là ta có 2 từ “bank”, một từ chỉ ngân hàng và một từ chỉ bờ sông và hai từ này có cách viết giống nhau. Tương tự trong tiếng Việt ta có “đông” có thể chỉ sự đông đúc, nhiều người hoặc chỉ hướng đông, hoặc chỉ mùa đông.
Đa Nghĩa (Polysemy): Các từ giống nhau về cách viết (đọc) và nghĩa có mối liên hệ với nhau. Ví dụ trong cây “I work in a company” thì “company” chỉ công ty còn trong câu “The company sends me an email” thì “company” ám chỉ ban điều hành công ty (trong câu này không thể là công ty và vật vô tri không thể gửi email). Ta thấy có sự gần gũi giữa nghĩa công ty và ban điều hành công ty.
Hạ Danh (Hyponymy): Từ X là hạ danh của từ Y nếu X là một tập con của Y. Ví dụ: tất cả các con mèo đều là động vật, hay “mèo” là tập con của tập “động vật” nên “mèo” là hạ danh của “động vật”.
Thượng Danh (Hypernym): nếu X là hạ danh của Y thì Y chính là thượng danh của X. “động vật” là thượng danh của “mèo”, “thực vật” là thượng danh của “cây xoài”, ….
Bộ Phận (Meronymy): X là bộ phận của Y có nghĩa là Y bao gồm cả X. Ví dụ: “cây” gồm rễ, thân, lá thì “rễ”, “thân”, “lá” chính là bộ phận của “cây”; “bánh xe” là bộ phận của “chiếc xe”.
Bao Hàm (Holonym) X là bộ phận của Y thì Y chính là bao hàm của X. “cây” bao hàm “rễ”, “thân”, “lá”; “chiếc xe” bao hàm “bánh xe”.
Kéo Theo (Entailment): Hành động X xảy ra nghĩa là hành động Y xảy ra, hay để xảy ra X thì phải xảy ra Y. Ví dụ: “ngáy” là một kéo theo của “ngủ”.
Cách Thức (Troponym): Hành động X là một cách thức xảy ra của Y. Ví dụ “nói nhỏ”, “thì thầm” là một phương thức của “nói” hay “đi khập khiễng” là một phương thức của “đi”.
Mạng ngữ nghĩa WordNet
Nếu ta biểu diễn các ngữ nghĩa của từ thành một nút và các quan hệ giữa chúng là các cung thì ta sẽ có một mạng ngữ nghĩa với các từ có quan hệ tương đương thì sẽ nằm trong một lớp và các lớp này nối với nhau thành từng tầng dựa theo quan hệ thứ tự. Đó chính là mạng ngữ nghĩa WordNet.
Mạng ngữ nghĩa WordNet là một bộ dữ liệu ngữ nghĩa ở mức từ vựng, thể hiện quan hệ về nghĩa giữa các từ với nhau. WordNet bao gồm 3 bộ dữ liệu riêng biệt, một bộ của danh từ, một bộ của động từ, một bộ của tính từ và trạng từ. Tính đến phiên bản 3.0, bộ dữ liệu WordNet dành cho tiếng anh đã có khoảng 117000 danh từ, 11400 động từ, 22000 tính từ và 4600 trạng từ.
Mạng WordNet được tổ chức theo mô hình cây như mô tả ở trên, mỗi node chứa một từ nguyên mẫu (lemma) cùng với tập các từ đồng nghĩa với nó (synset). Mạng WordNet chỉ thể hiện quan hệ về ngữ nghĩa chứ không thể hiện quan hệ về ngữ âm hay hình thái. Trong các ngôn ngữ biến cách như tiếng Anh, một từ có nhiều biến thể theo thì (tense), số lượng (plural) như “eats”, “mice”, “teeth”, …. Xét về mặt ngữ nghĩa thì các từ này và các từ nguyên mẫu tương ứng của chúng nói đến cùng một khái niệm nên trong bộ dữ liệu WordNet thì các từ biến cách được gộp chung vào từ nguyên mẫu của chúng và cùng nằm trong một node.
Hiện tại WordNet không chỉ có bộ dữ liệu dành cho tiếng Anh mà còn có bộ dữ liệu dành cho các thứ tiếng khác như tiếng Pháp, tiếng Trung Quốc,… và có cả bộ dữ liệu WordNet của tiếng Việt.
Một số ứng dụng của bộ dữ liệu WordNet
Đo khoảng cách về nghĩa của các từ
Việc xây dựng độ đo như vậy có ý nghĩa quan trọng trong bài toán tìm từ thay thế trong văn bản. Ví dụ cho câu “I have a cat” và cần thay từ “cat” thành từ khác sao cho nghĩa ít biến đổi nhất. Theo độ đo của WordNet thì ta thấy việc thay “cat” thành “animal” sẽ phù hợp hơn “dog” vì độ đo giữa “cat” và “animal” ngắn hơn. Thực tế đã kiểm nghiệm điều đó, rõ ràng là câu “I have an animal” gần nghĩa với câu “I have a cat” hơn là câu “I have a dog”.
Kiểm tra ràng buộc về nghĩa trong câu
Truy cập WordNet bằng thư viện nltk trong Python
>>> from nltk.corpus import wordnet as wn
Truy cập synset
WordNet cung cấp phương thức truy cập synset của một từ cho trước:
>>> wn.synsets('cat')
out: [Synset('cat.n.01'), Synset('guy.n.01'), Synset('cat.n.03'), Synset('kat.n.01'), Synset('cat-o'-nine-tails.n.01'), Synset('caterpillar.n.02'), Synset('big_cat.n.01'), Synset('computerized_tomography.n.01'), Synset('cat.v.01'), Synset('vomit.v.01')]
Tìm kiếm thượng danh
Để kiểm tra thượng danh của một từ, ta có thể làm như sau:
>>> wn.synset('cat.n.01').hypernyms()
out: [Synset('feline.n.01')]
Kết quả này thể hiện thượng danh trực tiếp của “cat” là “feline”. Ta cũng có thể duyệt cây thượng danh như sau:
>>> wn.synset('cat.n.01').hypernym_paths()
out: [[Synset('entity.n.01'), Synset('physical_entity.n.01'), Synset('object.n.01'), Synset('whole.n.02'), Synset('living_thing.n.01'), Synset('organism.n.01'), Synset('animal.n.01'), Synset('chordate.n.01'), Synset('vertebrate.n.01'), Synset('mammal.n.01'), Synset('placental.n.01'), Synset('carnivore.n.01'), Synset('feline.n.01'), Synset('cat.n.01')]]
Danh sách kết quả chính là các thượng danh của “cat” được xếp theo thứ tự với node bắt đầu là “entity” (thực thể). Node này chính là một trong những node gốc trong mạng wordnet, hầu hết mọi thứ đều bắt nguồn từ node này vì “thực thể” là từ ám chỉ chung cho các khái niệm vật chất. Ta cũng thấy trong chuỗi các thượng danh của “cat” có thể tìm thấy “animal” và như trong đã đề cập trong bài toán kiểm tra ràng buộc ngữ nghĩa thì ta có thể dùng cách này để xác định “cat” có thể thực hiện hành động “eat” hay không.
Một số quan hệ khác trong WordNet
Quan hệ bộ phận, bao hàm cũng được thể hiện trong WordNet:
>>> wn.synset('tree.n.01').part_meronyms()
out: [Synset('burl.n.02'), Synset('crown.n.07'), Synset('limb.n.02'), Synset('stump.n.01'), Synset('trunk.n.01')]
>>> wn.synset('animal.n.01').part_meronyms()
out: [Synset('face.n.07'), Synset('head.n.01')]
Độ đo bằng WordNet
>>> wn.synset('dog.n.01').path_similarity(wn.synset('cat.n.01'))
out: 0.2
>>> wn.synset('cat.n.01').path_similarity(wn.synset('feline.n.01'))
out: 0.5
Kết quả trên thể hiện “cat” và “feline” gần nghĩa hơn so với “cat” và “dog”.
http://www.nltk.org/howto/wordnet.html
Chương 2, cuốn sách Natural Language Processing with Python
cuốn sách Speech and Language Processing An Introduction to Natural Language Processing Computational Linguistics and Speech Recognition
Hits: 0