Hướng dẫn NLP Phần I từ Cơ bản đến Nâng cao

Nút nguồn: 1581227

Tôi đã quyết định viết một loạt bài giải thích tất cả các khái niệm cơ bản đến nâng cao về NLP bằng python. Vì vậy, nếu bạn muốn học NLP bằng cách đọc nó và viết mã, đây sẽ là một loạt bài viết hoàn hảo dành cho bạn.

Bất kỳ ai mới hoặc chưa có kinh nghiệm về NLP đều có thể bắt đầu với chúng tôi và theo dõi loạt bài viết này.

Thư viện đã sử dụng: Keras, Tensorflow, Scikit learn, NLTK, Găng tay, v.v.

Tất cả các chủ đề sẽ được giải thích bằng cách sử dụng mã Python cũng như các khung học máy và học sâu phổ biến, chẳng hạn như sci-kit learn, Keras và TensorFlow.

NLP là gì?

Xử lý ngôn ngữ tự nhiên là một phần của khoa học máy tính cho phép máy tính hiểu ngôn ngữ một cách tự nhiên, giống như con người. Điều này có nghĩa là máy tính xách tay sẽ hiểu được cảm xúc, lời nói, trả lời câu hỏi, tóm tắt văn bản, v.v. Chúng ta sẽ không nói nhiều về lịch sử và sự phát triển của nó. Nếu bạn quan tâm, thích điều này liên kết.

Bước 1 Làm sạch dữ liệu

Dữ liệu văn bản thô xuất hiện ngay sau khi các nguồn khác nhau không được làm sạch. Chúng tôi áp dụng nhiều bước để làm cho dữ liệu sạch sẽ. Dữ liệu văn bản chưa được làm sạch chứa thông tin vô dụng làm sai lệch kết quả, vì vậy đây luôn là bước đầu tiên để làm sạch dữ liệu. Một số kỹ thuật tiền xử lý tiêu chuẩn nên được áp dụng để làm cho dữ liệu sạch hơn. Dữ liệu được làm sạch cũng ngăn chặn việc mô hình bị trang bị quá mức.

Trong bài viết này, chúng ta sẽ xem các chủ đề sau trong phần xử lý văn bản và phân tích dữ liệu khám phá.

Tôi đang chuyển đổi dữ liệu văn bản thô thành khung dữ liệu gấu trúc và thực hiện các kỹ thuật làm sạch dữ liệu khác nhau.

import pandas as pd text = ['Đây là BÀI VIẾT NHIỆM VỤ NLP được viết bởi ABhishek Jaiswal** ','Trong bài viết này, tôi sẽ giải thích các kỹ thuật LÀM SẠCH DỮ LIỆU khác nhau', 'Vì vậy, hãy chú ý theo dõi thêm &&','Nah Tôi không nghĩ anh ấy sẽ đến Hoa Kỳ, anh ấy sống xung quanh'] df = pd.DataFrame({'text':text})

Đầu ra:

Làm sạch dữ liệu | Hướng dẫn NLP
                                                                                  Nguồn: Địa phương

Viết thường

Phương pháp này lower()chuyển đổi tất cả các ký tự viết hoa thành chữ thường và trả về.

Nộp đơn lower() phương pháp sử dụng hàm lambda

df['low'] = df['text'].apply(lambda x: " ".join(x.low() for x in x.split()))
Viết thường | Hướng dẫn NLP
                                                                                           Nguồn: Địa phương

Xóa dấu câu 

Xóa dấu chấm câu (*,&,%#@#()) là một bước quan trọng vì dấu câu không thêm bất kỳ thông tin hoặc giá trị bổ sung nào vào dữ liệu của chúng tôi. Do đó, việc loại bỏ dấu câu sẽ làm giảm kích thước dữ liệu; do đó, nó cải thiện hiệu quả tính toán.

Bước này có thể được thực hiện bằng phương pháp Regex hoặc Thay thế.

Xóa dấu câu
                                                                                                 Nguồn: Địa phương

string.punctuation trả về một chuỗi chứa tất cả các dấu câu.

Dấu câu | Hướng dẫn NLP
                                                                                               Nguồn: Địa phương

Xóa dấu câu bằng cách sử dụng biểu thức chính quy:

Xóa dấu câu
                                                                                                 Nguồn: Địa phương

Dừng xóa từ

Những từ thường xuyên xuất hiện trong câu và không có ý nghĩa gì đáng kể trong câu. Những điều này không quan trọng đối với việc dự đoán, vì vậy chúng tôi xóa các từ dừng để giảm kích thước dữ liệu và ngăn chặn việc trang bị quá mức. Lưu ý: Trước khi lọc mật khẩu, hãy đảm bảo bạn viết thường dữ liệu vì mật khẩu của chúng tôi là chữ thường.

Bằng cách sử dụng thư viện NLTK, chúng tôi có thể lọc Mật khẩu của mình khỏi tập dữ liệu.

# !pip install nltk import nltk nltk.download('stopwords') from nltk.corpus import stopwords allstopwords = stopwords.words('english') df.low.apply(lambda x: " ".join(i for i in x .split() nếu tôi không có trong allstopwords))
Loại bỏ từ dừng
                                                                                          Nguồn: Địa phương

Sửa lỗi chính tả

Hầu hết dữ liệu văn bản được trích xuất trong các bài đánh giá, blog hoặc tweet của khách hàng đều có một số lỗi chính tả.

Sửa lỗi chính tả giúp cải thiện độ chính xác của mô hình.

Có nhiều thư viện khác nhau để sửa lỗi chính tả, nhưng phương pháp thuận tiện nhất là sử dụng blob văn bản.

Phương pháp này correct() hoạt động trên các đối tượng văn bản blob và sửa lỗi chính tả.

#Cài đặt thư viện textblob !pip cài đặt textblob từ nhập textblob TextBlob
Sửa lỗi chính tả
                                                                        Nguồn: Địa phương

Mã thông báo

Tokenization có nghĩa là chia văn bản thành các từ đơn vị có ý nghĩa. Có mã thông báo câu cũng như mã thông báo từ.

Trình mã hóa câu sẽ chia một đoạn văn thành các câu có ý nghĩa, trong khi mã thông báo từ sẽ chia một câu thành các từ có ý nghĩa đơn vị. Nhiều thư viện có thể thực hiện mã thông báo như SpaCy, NLTK và TextBlob.

Việc tách một câu trên không gian để lấy các từ đơn vị riêng lẻ có thể được hiểu là token hóa.

import nltk mystring = "Con vật yêu thích của tôi là mèo" nltk.word_tokenize(mystring)
mystring.split("")

đầu ra:

['của tôi', 'yêu thích', 'động vật', 'là', 'mèo']

Xuất phát

Xuất phát là chuyển đổi các từ thành từ gốc bằng cách sử dụng một số bộ quy tắc bất kể ý nghĩa. I E,

  • “cá”, “cá” và “câu cá” đều có nguồn gốc từ “cá”.
  • “chơi”, “chơi”, “chơi” đều bắt nguồn từ “chơi”.
  • Stemming giúp giảm vốn từ vựng do đó cải thiện độ chính xác.

Cách đơn giản nhất để thực hiện bắt nguồn là sử dụng NLTK hoặc thư viện TextBlob.

NLTK cung cấp nhiều kỹ thuật bắt nguồn khác nhau, ví dụ Snowball, PorterStemmer; kỹ thuật khác nhau tuân theo các bộ quy tắc khác nhau để chuyển đổi từ thành từ gốc của chúng.

nhập nltk từ nltk.stem import PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(word) cho từ trong x.split()]))
Xuất phát
Nguồn: địa phương

“bài viết” bắt nguồn từ “articl","lives“ — -> “live".

Bổ sung

Lemmatization là chuyển đổi các từ thành từ gốc bằng cách sử dụng ánh xạ từ vựng. Việc bổ ngữ được thực hiện với sự trợ giúp của một phần lời nói và ý nghĩa của nó; do đó nó không tạo ra các từ gốc vô nghĩa. Nhưng từ vựng hóa chậm hơn so với từ gốc.

  • "tốt, ""hơn," hoặc là "tốt” được bổ nghĩa thành “tốt".
  • Lemmatization sẽ chuyển đổi tất cả các từ đồng nghĩa thành một từ gốc duy nhất. I E "xe hơi","xe hơi"," xe tải"," xe” được lemmatized thành “ô tô”.
  • Lemmatization thường nhận được kết quả tốt hơn.

I E. leafs Bắt nguồn từ. lá bắt nguồn từ leav trong khi leafs , leaves từ vựng thành leaf

Việc bổ sung có thể được thực hiện bằng cách sử dụng thư viện NLTK, TextBlob.

Lemmatization
                                                                                                 Nguồn: địa phương

Lemmatize toàn bộ tập dữ liệu.

Lemmatization 2 | Hướng dẫn NLP
                                                                                                   Nguồn: địa phương

Bước 2 Phân tích dữ liệu thăm dò

Cho đến nay, chúng ta đã thấy các kỹ thuật tiền xử lý văn bản khác nhau phải được thực hiện sau khi lấy dữ liệu thô. Sau khi làm sạch dữ liệu, giờ đây chúng tôi có thể thực hiện phân tích dữ liệu khám phá cũng như khám phá và hiểu dữ liệu văn bản.

Tần số từ trong dữ liệu

Việc đếm các từ duy nhất trong dữ liệu của chúng tôi sẽ đưa ra ý tưởng về các thuật ngữ thường xuyên nhất, ít thường xuyên nhất trong dữ liệu của chúng tôi. Chúng tôi thường bỏ đi những nhận xét ít thường xuyên nhất để làm cho việc đào tạo mô hình của chúng tôi trở nên khái quát hơn.

nltk cung cấp Freq_dist class để tính toán tần số từ và phải mất một túi từ làm đầu vào.

all_words = [] cho câu trong df['processed']: all_words.extend(sentence.split())

all_words Chứa tất cả các từ có sẵn trong tập dữ liệu của chúng tôi. Chúng ta thường gọi nó là từ vựng.

nhập nltk nltk.Freq_dist(all_words)
Tần số từ trong dữ liệu
                                                                                                 Nguồn: Địa phương

Điều này hiển thị từ là khóa và số lần xuất hiện trong dữ liệu của chúng tôi là giá trị.

Đám mây từ

Wordcloud là sự thể hiện bằng hình ảnh về tần suất từ ​​của tập dữ liệu. WordCloud dễ hiểu hơn và đưa ra ý tưởng tốt hơn về dữ liệu văn bản của chúng tôi.

Sản phẩm thư viện wordcloud Chúng ta hãy tạo một đám mây từ trong một vài dòng mã.

nhập thư viện:

từ wordcloud nhập WordCloud từ wordcloud nhập STOPWORDS nhập matplotlib.pyplot dưới dạng plt

Chúng ta có thể vẽ một đám mây từ bằng cách sử dụng văn bản chứa tất cả các từ trong dữ liệu của chúng ta.

từ = [] cho tin nhắn trong df['processed']: Words.extend([từ cho từ trong tin nhắn.split() nếu từ không có trong STOPWORDS]) wordcloud = WordCloud(width = 1000, Height = 500).generate( " ".join(words)) plt.imshow(wordcloud, interpolation='biographic') plt.axis("off") plt.show()
Đám mây từ | Hướng dẫn NLP
                                                             Nguồn: Địa phương
  • background_color = 'white' sử dụng tham số này, chúng ta có thể thay đổi màu nền của đám mây từ.
  • collocations = False Giữ nó là Sai sẽ bỏ qua các từ sắp xếp thứ tự. Collocations là những từ được hình thành bởi những từ xuất hiện cùng nhau. Tức là chú ý, làm bài tập về nhà, v.v.
  • Chúng ta có thể điều chỉnh chiều cao và chiều rộng bằng cách sử dụng các tham số.

Chú thích : Trước khi tạo đám mây từ hãy luôn loại bỏ các mật khẩu.

Ghi chú cuối

Trong bài viết này, chúng ta đã thấy nhiều kỹ thuật cần thiết khác nhau để xử lý trước dữ liệu văn bản. Sau khi làm sạch dữ liệu, chúng tôi thực hiện phân tích dữ liệu khám phá bằng cách sử dụng đám mây từ và tạo tần suất từ.

Trong bài viết thứ hai của loạt bài này, chúng ta sẽ tìm hiểu các chủ đề sau:

Nguồn: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/

Dấu thời gian:

Thêm từ Phân tích Vidhya