Mạng từ NLTK: Tìm từ đồng nghĩa từ Mạng từ NLTK trong Python
⚡ Tóm tắt thông minh
WordNet là một cơ sở dữ liệu từ vựng và trình đọc ngữ liệu NLTK dành cho tiếng Anh, nhóm các danh từ, động từ, tính từ và trạng từ thành các tập từ đồng nghĩa, cho phép Python Các chương trình này tra cứu từ đồng nghĩa, từ trái nghĩa, từ loại cao hơn và nghĩa của từ để xử lý ngôn ngữ tự nhiên.
Mạng từ là gì?
Mạng từ WordNet là một trình đọc ngữ liệu NLTK, một cơ sở dữ liệu từ vựng cho tiếng Anh. Nó có thể được sử dụng để tìm nghĩa của từ, từ đồng nghĩa hoặc từ trái nghĩa. Có thể định nghĩa nó như một từ điển tiếng Anh theo ngữ nghĩa. WordNet được nhập bằng lệnh sau:
from nltk.corpus import wordnet as guru
Vì WordNet được cung cấp dưới dạng một kho ngữ liệu hoàn chỉnh, bạn chỉ cần tải nó một lần và ngay lập tức bắt đầu truy vấn mối quan hệ giữa các từ mà không cần tự xây dựng bất kỳ từ điển nào.
Tìm từ đồng nghĩa từ NLTK WordNet trong Python
Số liệu thống kê cho thấy có 155287 từ và 117659 từ đồng nghĩa Các bộ từ vựng được bao gồm trong WordNet tiếng Anh. Bạn có thể tìm thấy các phương pháp khác nhau có sẵn với WordNet bằng cách gõping dir(guru), liệt kê mọi thuộc tính trình tải và phương thức hỗ trợ được trình đọc ngữ liệu cung cấp.
Synset: Nó còn được gọi là tập hợp từ đồng nghĩa hoặc bộ sưu tập các từ đồng nghĩa. Chúng ta hãy xem một ví dụ.
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Đầu ra:
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
Mối quan hệ từ vựng: Đây là các mối quan hệ ngữ nghĩa có tính chất tương hỗ. Nếu có mối quan hệ giữa {x1,x2,…xn} và {y1,y2,…yn}, thì cũng có mối quan hệ giữa {y1,y2,…yn} và {x1,x2,…xn}. Ví dụ, từ đồng nghĩa là trái nghĩa với từ trái nghĩa, trong khi từ siêu loại và từ hạ loại là một loại khái niệm từ vựng.
Chúng ta hãy viết một chương trình sử dụng Python Tìm từ đồng nghĩa và trái nghĩa của từ “active” bằng WordNet.
from nltk.corpus import wordnet synonyms = [] antonyms = [] for syn in wordnet.synsets("active"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) print(set(antonyms))
Đầu ra của mã:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Giải thích mã:
- WordNet là một kho ngữ liệu, vì vậy nó được nhập từ gói nltk.corpus.
- Hai danh sách từ đồng nghĩa và từ trái nghĩa được coi là trống, và chúng sẽ được sử dụng để thêm vào.
- Các từ đồng nghĩa của từ “active” được tìm kiếm trong phương pháp synsets và được thêm vào danh sách từ đồng nghĩa. Quá trình tương tự cũng được sử dụng để thu thập các từ trái nghĩa.
- Kết quả được in ra như sau: Python Cài đặt sao cho các mục trùng lặp được tự động xóa.
Ngoài các từ đồng nghĩa và trái nghĩa, WordNet còn hiển thị cả các từ siêu loại (các thuật ngữ rộng hơn), từ hạ loại (các thuật ngữ cụ thể hơn), từ toàn thể và từ bộ phận, do đó một truy vấn duy nhất có thể đặt một từ vào toàn bộ hệ thống phân cấp "là một". Những mối quan hệ này làm cho WordNet trở thành một từ điển đồng nghĩa thực tiễn cho các công cụ kiểm tra chính tả, dịch thuật, phát hiện thư rác và các nhiệm vụ phân tích văn bản khác trong trí tuệ nhân tạo.

