Hướng dẫn này là đóng góp quý giá từ cộng đồng và đã được DataCamp biên tập để đảm bảo rõ ràng và chính xác.
Bạn muốn chia sẻ chuyên môn của mình? Chúng tôi rất mong nhận được! Hãy gửi bài viết hoặc ý tưởng qua Biểu mẫu Đóng góp Cộng đồng.
Với vai trò là người làm dữ liệu, bạn hẳn hiểu tầm quan trọng của việc xây dựng một quy trình làm sạch và chuẩn bị dữ liệu vững chắc trong bất kỳ dự án học máy nào. Tuy nhiên, khi làm việc với dữ liệu văn bản, tầm quan trọng này càng lớn do các thách thức riêng của dạng dữ liệu này. Những vấn đề như dữ liệu nhiễu, lỗi chính tả, viết tắt, tiếng lóng và lỗi ngữ pháp đều có thể ảnh hưởng tiêu cực đến hiệu suất của mô hình học máy.
Để đảm bảo dữ liệu văn bản dùng cho mô hình học máy là chính xác, nhất quán và không có lỗi, một quy trình làm sạch và chuẩn bị dữ liệu được thiết kế tốt là điều then chốt. Thông thường, quy trình này bao gồm một loạt tác vụ như chuẩn hóa văn bản, tách từ (tokenization), loại bỏ từ dừng, stemming, lemmatization và che mặt dữ liệu.
Mặc dù các thư viện phổ biến như NLTK, gensim và spaCy cung cấp nhiều công cụ xử lý và làm sạch văn bản, việc xử lý dữ liệu văn bản vẫn có những thách thức riêng có thể tác động đáng kể đến hiệu suất mô hình. Các thách thức này có thể trải dài từ chuẩn hóa ký tự đến che mặt dữ liệu và nhiều hơn nữa. Dù có thể giải quyết bằng các thư viện trên, chúng thường đòi hỏi nhiều thời gian và công sức.
Đó là lúc Textacy phát huy tác dụng. Textacy là một thư viện Python cung cấp cách đơn giản, dễ dùng để xử lý nhiều vấn đề thường gặp khi làm việc với dữ liệu văn bản. Dù các thư viện khác có chức năng tương tự, điểm khác biệt của Textacy trong bối cảnh này là tập trung vào việc giải các vấn đề cụ thể như chuẩn hóa ký tự và che mặt dữ liệu.
Chuẩn hóa Ký tự với Textacy
Chuẩn hóa ký tự là quá trình chuyển đổi dữ liệu văn bản về một định dạng chuẩn, điều này đặc biệt quan trọng khi xử lý văn bản đa ngôn ngữ.
Text = ‘ the cafe “Saint-Raphaël” is loca-/nted on Cote d’Azur.’
Ký tự có dấu là một vấn đề phổ biến trong chuẩn hóa văn bản và có thể ảnh hưởng đáng kể đến độ chính xác của mô hình học máy.
Vấn đề nảy sinh vì người dùng không nhất quán trong việc dùng ký tự có dấu, dẫn đến thiếu nhất quán trong dữ liệu.
Ví dụ, các token "Saint-Raphaël" và "Saint-Raphael" có thể chỉ cùng một thực thể, nhưng nếu không chuẩn hóa, chúng sẽ không được nhận diện là giống hệt nhau. Ngoài ra, văn bản thường chứa các từ bị ngắt bằng dấu gạch nối, và các dấu nháy đơn như trong ví dụ trên có thể gây khó khăn cho việc tách từ. Với tất cả các vấn đề này, việc chuẩn hóa văn bản và thay thế các dấu và ký tự kiểu cách bằng tương đương ASCII là hợp lý.
Chúng ta sẽ dùng Textacy cho mục đích đó vì thư viện này có sẵn một tập hợp hàm tiền xử lý được định nghĩa trước, giúp giải quyết vấn đề một cách dễ dàng và hiệu quả. Bảng sau cho thấy một số hàm tiền xử lý của Textacy có thể hoạt động độc lập với các thư viện khác.
|
Hàm |
Mô tả |
|---|---|
|
normalize _hyphentated_words |
Ghép lại những từ bị tách bởi ngắt dòng |
|
normalize_quotation_marks |
Thay tất cả kiểu dấu ngoặc kép kiểu cách bằng tương đương ASCII |
|
normalize_unicode |
Thống nhất các mã khác nhau của ký tự có dấu trong Unicode |
|
remove_accents |
Thay ký tự có dấu bằng ASCII |
|
replace_emails |
Thay email bằng __EMAIL__ |
|
replace_urls |
Thay URL bằng __URL__ |
text = "The café "Saint-Raphaël" is loca-\nted on Cote dʼAzur."
import textacy
import textacy.preprocessing as tprep
def normalize(text):
text = tprep.normalize_hyphenated_words(text)
text = tprep.normalize_quotation_marks(text)
text = tprep.normalize_unicode(text)
text = tprep.remove_accents(text)
return text
Sử dụng hàm normalize ở trên, vốn dựa trên các hàm tiền xử lý dựng sẵn của Textacy, sẽ giúp chúng ta xử lý vấn đề chuẩn hóa với nỗ lực tối thiểu.
print(normalize(text)
Kết quả:
The cafe Saint-Raphael is located in Cote d' Azure
Che mặt Dữ liệu với Textacy
Dữ liệu văn bản thường không chỉ chứa từ ngữ thông thường mà còn có nhiều loại định danh như URL, địa chỉ email hoặc số điện thoại. Đôi khi chúng ta quan tâm đặc biệt đến những mục này. Tuy nhiên, trong nhiều trường hợp, việc loại bỏ hoặc che mặt thông tin này có thể tốt hơn, hoặc vì không liên quan, hoặc do lo ngại về quyền riêng tư.
Textacy có một số hàm thay thế tiện lợi để che mặt dữ liệu, như minh họa trong bảng trên. Các hàm thay thế này được định nghĩa sẵn, giúp dễ dàng che thông tin nhạy cảm hoặc không liên quan mà không cần tự viết biểu thức chính quy.
text = "Check out https://spacy.io/usage/spacy-101"print(replace_urls(text))
Kết quả:
Check out __URL__
Tóm tắt
Trong bài viết này, chúng tôi đã cho thấy cách sử dụng Textacy để đơn giản hóa quá trình tiền xử lý dữ liệu văn bản. Với dải hàm dựng sẵn, Textacy giúp xử lý dễ dàng các thách thức tiền xử lý phổ biến như chuẩn hóa ký tự và che mặt dữ liệu.
Bằng cách tinh gọn quy trình tiền xử lý, Textacy mở đường để tập trung vào các khía cạnh phức tạp và thách thức hơn của xử lý ngôn ngữ tự nhiên. Dù bạn đang làm phân tích cảm xúc, mô hình chủ đề hay bất kỳ tác vụ NLP nào khác, Textacy có thể giúp bạn chuẩn bị dữ liệu sẵn sàng cho phân tích một cách nhanh chóng và hiệu quả.
Vì vậy, lần tới khi bạn gặp thách thức tiền xử lý, hãy cân nhắc dùng Textacy để đơn giản hóa quy trình làm việc và tiết kiệm thời gian cũng như công sức quý báu.
Nếu bạn thấy hướng dẫn về Textacy này hữu ích và muốn đào sâu hiểu biết về tiền xử lý dữ liệu văn bản và xử lý ngôn ngữ tự nhiên, hãy cân nhắc đăng ký khóa học Natural Language Processing Fundamentals in Python của DataCamp.