Python là một ngôn ngữ lập trình với cách viết code rất ngắn gọn, bộ thư viện phong phú và có thể thực thi trên nhiều nền tảng khác nhau. Từ tháng 07/2018 đến 07/2019, theo đánh giá của TIOBE thì Python là ngôn ngữ lập trình phổ biến nhất ở mức tăng trưởng hàng năm. Với tính năng xử lý cấu trúc dữ liệu rất mạnh và là mã nguồn mở, vì vậy Python được coi là “ngôn ngữ nền tảng” cho việc nghiên cứu và mô phỏng và giải quyết các vấn đề khoa học, bao gồm các bài toán về xử lý ngôn ngữ tự nhiên. Bài viết này liệt kê các thư viện Python phổ biến nhất được các nhà nghiên cứu, học giả, giáo sư, tiến sĩ, nghiên cứu sinh, sinh viên, học sinh,… sử dụng trong lĩnh vực xử lý ngôn ngữ tự nhiên (XLNNTN).
Natural Language Toolkit (NLTK)
Thư viện Natural Language Toolkit (tạm dịch là Bộ công cụ Ngôn ngữ Tự nhiên, viết tắt NLTK) là một nền tảng dẫn đầu để xây dựng các chương trình Python làm việc với dữ liệu ngôn ngữ của con người. Thư viện cung cấp giao diện dễ sử dụng với hơn 50 tài nguyên từ vựng và ngữ liệu (corpora), điển hình là WordNet cùng với các thư viện thích hợp để xử lý bài toán phân loại, token hóa (tokenization), tìm từ gốc (stemming),… Thư viện NLTK còn là công cụ tuyệt vời để giảng dạy và giải quyết các bài toàn về tính toán ngôn ngữ sử dụng Python. Ở các khóa học đào tạo Thạc sĩ và Tiến sĩ chuyên ngành, NLTK là một thư viện bắt buộc các học viên phải nắm vững và sử dụng thường xuyên.
Bạn có thể tìm hiểu thêm về NLTK ở địa chỉ: http://www.nltk.org/.
Gensim
Gensim là một thư viện dùng để mô hình hóa, lập chỉ mục tài liệu và rút trích tính tương tự với ngữ liệu (corpora) lớn. Đối tượng sử dụng Gensim chủ yếu là cộng đồng XLNNTN và rút trích thông tin.
Gensim bao gồm các thực thi song song các thuật toán như fastText, word2vec và doc2vec, cũng như các phân tích ngữ nghĩa (LSA, LSI, SVD), phân rã trận không âm (NMF), phân bổ Dirichlet tiềm ẩn (LDA), các phép chiếu ngẫu nhiên và tf-idf.
Để tìm hiểu và sử dụng Gensim, bạn có thể xem ở https://radimrehurek.com/gensim/
polyglot
Polyglot là thư viện hỗ trợ các ứng dụng đa ngôn ngữ quy mô lớn với các tính năng bao gồm token hóa, dò ngôn ngữ, nhận dạng tên thực thể (NER), gắn thẻ POS, phân tích cảm xúc (sentiment analysis), word embedding,… Polyglot phụ thuộc vào một số thư viện khác như Numpy và libicu-dev, vì vậy bạn nên cài đặt các thư viện này trước khi sử dụng polyglot. Nếu gặp các bài toán liên quan đến đa ngữ, phân tích dữ liệu đa ngôn ngữ hay dịch thuật, bạn nên sử dụng thư viện này.
Để tìm hiểu và bắt đầu sử dụng polygot, hãy truy cập địa chỉ: https://polyglot.readthedocs.io/en/latest/.
spaCy
Là một thư viện tiên tiến trong lĩnh vực XLNNTN bằng ngôn ngữ Python và Cython, spaCy cũng có hàng tá các tính năng rất thú vụ. spaCy chứa các mô hình thống kê được huấn luyện trước và vector từ vựng (word vector), và cũng hỗ trợ việc token hóa cho hơn 49 ngôn ngữ.
Tính năng đáng chú ý của spaCy là tốc độ xử lý nhanh trong các mô hình mạng thần kinh tích chập dùng để gắn thẻ, phân tích cú pháp và nhận dạng thực thể được đặt tên và dễ dàng tích hợp học sâu (deep learning).
Bạn có thể tìm hiểu về spaCy ở địa chỉ: https://spacy.io/.
TextBlob
TextBlob là thư viện nổi bật để xử lý dữ liệu văn bản, cung cấp một API đơn giản để thực thi các tác vụ xử lý NNTN như đánh dấu POS, rút trích cụm danh từ, phân tích cảm xúc, phân loại (Naive Bayes, Decision Tree), diễn dịch, tích hợp WordNet, parsing,…
Bạn có thể tìm hiểu thêm về TextBlob ở địa chỉ: https://textblob.readthedocs.io/en/dev/.
CoreNLP
CoreNLP hay chính xác là Stanford CoreNLP là một thư viện được phát triển bởi nhóm XLNNTN ở trường đại học Stanford, bao gồm các giáo sư, giảng viên, nghiên cứu sinh, sinh học,… ưa thích về lĩnh vực xử lý và hiểu biết về ngôn ngữ con người. CoreNLP cung cấp một tập hợp các công cụ kỹ thuật ngôn ngữ con người. Mục tiêu của CoreNLP là dễ dàng áp dụng các công cụ phân tích ngôn ngữ tới các đoạn văn bản. CoreNLP cũng được tích hợp các bài toàn về POS, nhận dạng tên thực thể (NER), parsing, phân tích cảm xúc, rút trích thông tin,… được áp dụng cho vấn đề học máy thống kê và học sâu.
Bạn có thể tìm hiểu thêm thư viên này ở địa chỉ: https://stanfordnlp.github.io/CoreNLP/.
Pattern
Pattern là một module khai thác dữ liệu Web (Web mining) bằng ngôn ngữ Python, gồm các công cụ để khai thác dữ liệu (Google, Twitter, Wikipedia API, trình thu thập dữ liệu Web, trình phân tích cú pháp HTML DOM), XLNNTN (POS, tìm kiếm n-gram, phân tích cảm xúc, WordNet), học máy (mô hình không gian vector, gom cụm, SVM), phân tích mạng bằng biểu đồ trung tâm và trực quan hóa.
Bạn có thể tìm hiểu và học thêm về Pattern ở địa chỉ: https://github.com/clips/pattern.
Vocabulary
Vocabulary là một thư viện Python dùng để XLNNTN với một từ điển ở dạng module Python. Bạn có thể dùng thư viện này để tìm từ đồng nghĩa, trái nghĩa, POS, dịch thuật và nhiều tác vụ khác liên quan. Đây là một thư viện nhỏ gọn và có thể thay thế WordNet.
Để tìm hiểu hơn về Vocabulary, bạn có thể xem ở địa chỉ: https://pypi.org/project/Vocabulary/.
PyNLPl
PyNLPl (phát âm tương tự như từ ‘pineapple’) là một thư viện chứa nhiều module hữu ích để thực thi các vấn đề phổ biến hoặc ít phổ biến trong XLNNTN. Bạn có thể dùng PyNLPl để thực thi các tác vụ cơ bản như rút trích n-gram, danh sách tần số từ vựng, xây dựng các mô hình ngôn ngữ đơn giản. Điểm đáng chú ý nhất là PyNLPl có chứa thư viện mở rộng để làm việc với FoLiA XML (Định dạng cho Chú thích Ngôn ngữ).
Ngoài ra, còn các hàng trăm thư viện Python khác để giải quyết vấn đề về XLNNTN, nhưng ít phổ biến hơn và có thể áp dụng cho từng trường hợp cụ thể. Khi làm khoa học hay giải quyết vấn đề về XLNNTN, DAMMIO.COM khuyên bạn nên tìm hiểu và chọn một vài thư viện Python phổ biến để nắm vững, từ đó có cơ sở để nâng cao kiến thức và mở rộng, và nâng cao chất lượng xử lý cho các bài toán XLNNTN.
- APA:
Dammio. (2019). Các thư viện Python tốt nhất dùng để xử lý ngôn ngữ tự nhiên. https://www.dammio.com/2019/09/08/cac-thu-vien-python-tot-nhat-dung-de-xu-ly-ngon-ngu-tu-nhien.
- BibTeX:
@misc{dammio,
author = {Dammio},
title = {Các thư viện Python tốt nhất dùng để xử lý ngôn ngữ tự nhiên},
year = {2019},
url = {https://www.dammio.com/2019/09/08/cac-thu-vien-python-tot-nhat-dung-de-xu-ly-ngon-ngu-tu-nhien},
urldate = {2024-10-09}
}