Bạn đã quá quen với các thư viện mã nguồn mở như: NLTK hỗ trợ việc phân tích, xử lý, và hiểu văn bản tự nhiên hay dễ dàng tạo ra các pipeline xử lý văn bản với spaCy, hoặc Underthesea – một thư viện vô cùng hữu ích cho các tác vụ xử lý ngôn ngữ tự nhiên dành riêng cho tiếng Việt?
Vậy đối với những bài toán như tăng cường dữ liệu văn bản, tạo dạng đầy đủ của từ viết tắt, khôi phục dấu chấm câu, hay phát hiện từ vô nghĩa thì sao?
Thực tế, có những thư viện Python có thể giải quyết các bài toán trên, nhưng lại không nhiều người biết đến. Trong bài viết này, chúng tôi sẽ gợi ý giúp bạn 5 thư viện như thế, cùng với đó là hướng dẫn cụ thể cách cài đặt, trường hợp sử dụng, ví dụ và kết quả minh họa. Hãy nhanh chóng lưu lại ngay và chia sẻ với bạn bè để cùng trải nghiệm trong những dự án NLP sắp tới nhé!
5 thư viện Python hỗ trợ đắc lực cho dự án Xử lý ngôn ngữ tự nhiên (NLP)
Contractions
Tham khảo tại: https://github.com/kootenpv/contractions
Chắc chắn, bạn có thể viết một danh sách dài các biểu thức chính quy để tạo dạng đầy đủ của một từ viết tắt trong dữ liệu văn bản (ví dụ: don’t → do not; can’t → cannot; haven’t → have not). Nhưng tại sao bạn phải “phát minh lại chiếc bánh xe” khi ngoài kia đã có một thư viện python làm thay bạn việc đó?
Contractions là một thư viện dễ sử dụng, giúp tạo dạng thức đầy đủ của các từ viết tắt thông dụng (contraction) và từ lóng trong tiếng Anh. Đây là một thư viện nhanh, hiệu quả và xử lý được hầu hết các trường hợp lắt léo mà bạn có thể nghĩ ra.
Cách cài đặt:
pip install contractions
Ví dụ:
import contractions
s = "ive gotta go! i'll see yall later."
text = contractions.fix(s, slang=True)
print(text)
Kết quả:
ORIGINAL: ive gotta go! i'll see yall later.
OUTPUT: I have got to go! I will see you all later.
Ứng dụng:
Một phần quan trọng của quá trình tiền xử lý văn bản là tạo ra tính đồng nhất và loại bỏ danh sách các từ “lạ”, gây nhiễu mà không làm mất đi quá nhiều ý nghĩa của văn bản. Chẳng hạn, các mô hình bag-of-words và TF-IDF tạo ra các ma trận thưa lớn (large sparse matrices), khiến cho việc huấn luyện mô hình trở nên khó khăn hơn. Việc thay thế các từ viết tắt bằng cách viết chính quy có thể làm giảm kích thước và chuẩn hóa tập từ vựng, tạo tiền đề cho việc tăng hiệu năng và độ chính xác của mô hình.
Distilbert-Punctuator
Tham khảo tại: https://pypi.org/project/distilbert-punctuator/
Khôi phục dấu câu bị thiếu trong văn bản tiếng Anh… nghe có vẻ dễ dàng phải không? Tuy nhiên, đây lại là một việc phức tạp đối với máy tính.
Distilbert-Punctuator là một trong số những thư viện Python hiếm hoi có thể thực hiện tác vụ này, đặc biệt, với độ chính xác cao. Bởi lẽ, nó sử dụng một biến thể rút gọn của BERT, mô hình ngôn ngữ được đào tạo trước tiên tiến nhất của Google. Distilbert-Punctuator đã được tinh chỉnh (fine-tune) thêm với hơn 20.000 bài báo và 4.000 bản ghi TED Talk giúp tăng khả năng phát hiện ranh giới câu của mô hình. Khi chèn dấu câu, chẳng hạn như dấu chấm, mô hình cũng sẽ viết hoa chữ cái bắt đầu tiếp một cách thích hợp.
Cách cài đặt:
pip install distilbert-punctuator
Ví dụ:
Kết quả:
Ứng dụng:
Đôi khi, bạn muốn dữ liệu văn bản của mình đúng ngữ pháp và quy cách trình bày hơn nhưng lại không đủ thời gian để căng mắt lên rà soát từng dấu chấm, dấu phẩy. Cho dù nhiệm vụ là sửa các bài đăng ”cẩu thả” trên Twitter hay tin nhắn chatbot, thư viện này đều có thể hỗ trợ.
Textstat
Tham khảo tại: https://pypi.org/project/textstat/
Textstat là một thư viện nhẹ, dễ sử dụng, cung cấp nhiều thống kê khác nhau về dữ liệu văn bản, chẳng hạn như cấp độ đọc, thời gian đọc và số lượng từ.
Cài đặt:
pip install textstat
Ví dụ:
Kết quả:
Ứng dụng:
Các chỉ số này bổ sung thêm các thông tin hữu hiệu một cách tự động trong việc phân tích văn bản. Ví dụ: nếu bạn đang xem tập dữ liệu gồm các bài báo về người nổi tiếng từ một tạp chí, việc sử dụng textstat có thể giúp bạn tìm thấy các bài viết đọc nhanh/dễ hơn, có xu hướng phổ biến hơn và có tỷ lệ giữ chân người đọc lâu hơn.
Gibberish-Detector
Tham khảo tại: https://pypi.org/project/gibberish-detector/
Mục đích chính của thư viện low-code này là phát hiện những từ vô nghĩa (hoặc những từ khó hiểu). Thư viện này sử dụng mô hình được huấn luyện trên một lượng lớn các từ tiếng Anh.
Cài đặt và đào tạo:
pip install gibberish-detector
Tiếp theo, bạn cũng sẽ cần huấn luyện mô hình, nhưng việc này rất đơn giản và chỉ mất một phút. Chỉ cần làm theo các bước sau:
- Tải xuống tập dữ liệu đào tạo có tên big.txt từ đây
- Mở CLI và cd của bạn vào thư mục chứa big.txt
- Chạy phần sau: gibberish-detector train .\big.txt > gibberish-detector.model
Một tệp có tên gibberish-detector.model sẽ được tạo trong thư mục hiện tại của bạn.
Ví dụ:
Kết quả:
Ứng dụng:
Bạn có thể sử dụng gibberish-detector để loại bỏ nhiễu (từ vô nghĩa, sai chính tả) khỏi bộ dữ liệu. Ngoài ra, thư viện này giúp xử lý lỗi từ đầu vào của người dùng. Chẳng hạn, hệ thống có thể trả về một thông báo lỗi nếu người dùng nhập văn bản vô nghĩa trên ứng dụng web.
NLPAug
Tham khảo tại: https://github.com/makcedward/nlpaug
Cuối cùng là NLPAug – thư viện được đánh giá là giá trị nhất trong danh sách.
Để có thể hiểu và ứng dụng được NLPAug, trước hết, cần nắm được khái niệm tăng cường dữ liệu. Đây là kỹ thuật mở rộng kích thước của tập huấn luyện bằng cách thêm các bản sao được sửa đổi một chút của dữ liệu hiện có. Tăng cường dữ liệu thường được sử dụng khi dữ liệu hiện có bị hạn chế về tính đa dạng hoặc mất cân bằng giữa các nhãn (trong bài toán phân loại). Đối với các bài toán về thị giác máy tính, tăng cường dữ liệu được sử dụng để tạo các mẫu mới bằng cách cắt, xoay và thay đổi độ sáng của hình ảnh.
Nhưng nếu chúng ta làm việc với dữ liệu văn bản thì sao?
Đây là lúc NLPAug phát huy tác dụng. Thư viện có thể tăng cường dữ liệu bằng cách thay thế hoặc chèn các từ có liên quan về mặt ngữ nghĩa. Nó thực hiện điều này bằng cách sử dụng các mô hình ngôn ngữ được đào tạo trước như BERT, đây là một cách tiếp cận hiệu quả nhờ vào khả năng nắm bắt ngữ cảnh văn bản. Dựa trên các tham số cài đặt, n từ có độ tương đồng cao nhất sẽ được sử dụng để sửa đổi văn bản. Các mô hình biểu diễn word embedding được huấn luyện trước, chẳng hạn như Word2Vec và GloVe, cũng có thể được sử dụng để thay thế các từ bằng từ đồng nghĩa.
Cài đặt:
pip install nlpaug
Ví dụ:
Kết quả:
Ứng dụng:
Giả sử bạn đang đào tạo mô hình phân loại có giám sát trên tập dữ liệu 15 nghìn bài đánh giá tích cực và chỉ 4 nghìn bài đánh giá tiêu cực. Một bộ dữ liệu mất cân bằng nghiêm trọng như thế sẽ tạo ra sự thiên lệch của mô hình đối với lớp chiếm đa số (đánh giá tích cực) trong quá trình huấn luyện.
Việc lặp lại các mẫu của lớp thiểu số (đánh giá tiêu cực) sẽ không tăng thêm bất kỳ tri thức mới nào cho mô hình. Thay vào đó, hãy sử dụng các kỹ thuật tăng cường văn bản của NLPAug để tăng lớp thiểu số một cách đa dạng. Kỹ thuật này đã được chứng minh là cải thiện AUC và F1-Score.
Tổng kết
Trên đây là những thông tin bạn đọc cần biết về 5 thư viện Python hỗ trợ đắc lực cho dự án Xử lý ngôn ngữ tự nhiên, hi vọng rằng sẽ hỗ trợ bạn trong việc tìm hiểu và nâng cao kiến thức NLP. Đừng quên theo dõi những bài viết mới nhất của chúng tôi trong thời gian sắp tới nhé.