Logo Zephyrnet

Phân tích cảm xúc của Đánh giá IMDB với NLP

Ngày:

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.
Đánh giá IMDB với NLP
                                                                                 Nguồn - Insofe

Giới thiệu

Một trường con của Xử lý ngôn ngữ tự nhiên và AI hội thoại, Phân tích cảm xúc tập trung vào việc trích xuất tình cảm có ý nghĩa của người dùng và ấn định điểm số cho họ thông qua các kỹ thuật Xử lý ngôn ngữ tự nhiên. Nó giúp hiểu được cảm xúc và ý kiến ​​của người dùng đối với một dịch vụ và sản phẩm cụ thể. Do đó, nó ảnh hưởng nặng nề đến việc cải thiện logic kinh doanh và lợi nhuận tổng thể của một tổ chức bằng cách mang lại những gì khách hàng của họ thích. Trong bài viết này, chúng ta sẽ xem xét phân tích tình cảm của Đánh giá IMDB với NLP và Học chuyển giao.

Phân tích cảm xúc có thể được thực hiện bằng cách xử lý trước văn bản sử dụng các quy trình NLP tiêu chuẩn và áp dụng Thuật toán hiểu ngôn ngữ để dự đoán cảm xúc của người dùng.

Tổng quan Hướng dẫn & Điều kiện tiên quyết

Hướng dẫn này sẽ giúp bạn thực hành Phân tích cảm xúc với các phương pháp Xử lý ngôn ngữ tự nhiên và Học chuyển đổi để phân tích tình cảm của các bài đánh giá phim IMDB.

Tập dữ liệu được sử dụng -

Tập dữ liệu đánh giá phim IMDB [Large]

Điều kiện tiên quyết -

Thư viện - Văn bản ngọn đuốc PyTorch, FastAI

Phần 1 Tiền xử lý văn bản

Trước khi thực hiện bất kỳ câu lệnh vấn đề hướng dữ liệu nào trong Xử lý ngôn ngữ tự nhiên, xử lý dữ liệu là công việc quan trọng và tẻ nhạt nhất. Trong khi phân tích Đánh giá IMDB bằng NLP, chúng ta sẽ xem qua một bộ dữ liệu khổng lồ. Thư viện Torchtext của PyTorch cung cấp sức mạnh tiền xử lý văn bản cho các tập dữ liệu lớn với rất ít dòng mã!

Hãy làm điều đó trước-

Bước 1: Mã hóa văn bản với SpaCy

Chúng tôi đang chuyển đổi toàn bộ vocab ở đây sang chữ thường để tránh hiểu nhầm và sai sót bởi mô hình.

textdata = data.Field (low = True, tokenize = spacy_tok)

 

Bước 2: Chuẩn bị dữ liệu được cung cấp cho Mô hình hóa và Hiểu ngôn ngữ

Sau phần tiền xử lý văn bản trong Đánh giá IMDB với NLP, chúng tôi sẽ tập trung vào việc chuẩn bị dữ liệu phải được cung cấp cho Mô hình hóa ngôn ngữ. Hãy chuẩn bị dữ liệu của chúng tôi!

modeldata = LanguageModelData (PATH, textdata, ** FILES, bs = 64, bptt = 70, min_freq = 10)

Hãy cho chúng tôi hiểu một vài thông số ở đây-

Thứ nhất, FastAI là một thư viện được thiết kế xác thực để tinh chỉnh các mô hình được đào tạo trước trong các dòng mã rất tối thiểu. Nó tập trung vào việc phát triển các mô hình ngôn ngữ với các trọng số được đào tạo trước có thể được tinh chỉnh cho phù hợp với tập dữ liệu cụ thể cho nhiệm vụ của chúng tôi.

Bây giờ, hãy xem các tham số này trong dòng mã trên sử dụng những đối số nào-

  • PATH - thực hiện theo cách mà tập dữ liệu của chúng tôi được lưu
  • dữ liệu văn bản - dữ liệu văn bản mà chúng tôi vừa xử lý trước ở bước 1
  • * FILES - chuyển đổi tập dữ liệu của chúng tôi thành dạng cặp khóa-giá trị hoặc kiểu dữ liệu từ điển.
  • bs - bs là quy mô lô được tính đến
  • bptt - viết tắt của Backpropagation Through Time. Nó là một thuật toán huấn luyện được sử dụng để cập nhật trọng số trong các mạng thần kinh tái phát như LSTM.
  • min_freq là giá trị tần suất từ ​​thấp nhất có thể, dưới đây các từ sẽ không được phân loại bên dưới.

 

Bước 3: Vectơ hóa các từ để hiểu mô hình

Là một người thực hành khoa học dữ liệu và học máy, bạn phải làm quen tốt với các mô hình học máy không thể giải nghĩa từ hoặc từ vựng tiếng Anh. Vocab duy nhất của máy được đánh số, chúng ta gọi là vectơ!

Torchtext của PyTorch thực hiện một công việc tuyệt vời cho chúng tôi bằng cách tự động hóa tác vụ này bằng đối tượng vocab của nó.

dữ liệu văn bản.vocab

Bây giờ dữ liệu của chúng tôi đã sẵn sàng để được cung cấp cho mô hình, hãy chuyển sang phần tiếp theo!

Phần 2 Mô hình đào tạo trước

Các mô hình được đào tạo trước được đào tạo trên một lượng lớn kho ngữ liệu văn bản và rất chắc chắn và mạnh mẽ. Chúng tôi gọi Học tập Chuyển giao để sử dụng các mô hình được đào tạo trước đó và tinh chỉnh chúng cho nhiệm vụ cụ thể của chúng tôi. Tóm lại, chúng tôi đang chuyển giao kiến ​​thức thu được từ một mô hình để tinh chỉnh và đạt được nhiệm vụ của một trường hợp sử dụng nhỏ.

Chúng tôi sẽ sử dụng một mô hình được đào tạo trước ở đây cho nhiệm vụ phân tích cảm xúc của mình, vì nó sẽ cho kết quả tốt hơn các mô hình Scikit-learning truyền thống và sẽ mạnh mẽ hơn và ít lỗi hơn.

Bước 1: Thiết lập đối tượng người học

Bây giờ, hãy tạo một đối tượng người học FastAI và đưa một hàm phù hợp vào nó. Nó phù hợp hoặc cung cấp dữ liệu của chúng tôi với các thông số mô hình. Người học lưu trữ một trình tối ưu hóa, một mô hình và dữ liệu để đào tạo nó.

người học = modeldata.get_model (opt_fn, em_sz, nh, nl, dropouti = 0.05, bỏ học = 0.05, wdrop = 0.1, bỏ học = 0.02, bỏ học = 0.05)

Hãy xem các đối số mà các tham số được cung cấp cho hàm get_model ánh xạ đến-

  • opt_fn - Như đã đề cập trước đó, chức năng trình tối ưu hóa tối ưu hóa hiệu suất mô hình bằng cách sử dụng kết hợp giữa bỏ qua và chính quy. Học sinh bỏ học là kỹ thuật quy định hóa để ngăn chặn việc trang bị quá mức mô hình bằng cách pha loãng mô hình, hay nói cách đơn giản, học sinh bỏ học chọn một số tế bào thần kinh ở cuối mạng thần kinh và trừng phạt hoặc hạn chế chúng học để làm cho mạng trở nên tổng quát hơn và ngăn nó học chính xác hơn rất nhiều. rằng một dữ liệu hơi không chính xác có thể khiến nó hoạt động kém. Ở đây, opt_fn sử dụng mô hình ngôn ngữ AWD LSTM, có chức năng SGD trung bình mạnh mẽ, lấy trung bình một vài trọng số cuối cùng để giảm tình trạng quá tải.

     Lưu ý - Nếu bạn là người học về lý thuyết như tôi, hãy đọc thêm về AWD LSTM Ở đây.

  • em_sz - Kích thước nhúng thường xác định kích thước của các vectơ đầu ra từ lớp này cho mỗi từ.
  • nh - Nước sốt bí mật đối với bất kỳ mạng nơ-ron nào, nh là số lớp ẩn. Các lớp ẩn nằm giữa đầu vào (lớp nhúng) và đầu ra (lớp dày đặc), chịu trách nhiệm mô hình hóa dữ liệu và tìm kiếm các mẫu. Không có khoa học tên lửa! Nó thực hiện các phép biến đổi vectơ phi tuyến thành dữ liệu được cung cấp cho lớp đầu vào để lớp đầu ra áp dụng các hàm kích hoạt để dự đoán kết quả đầu ra!
  • nl - Không có gì đặc biệt về cái này. Chỉ số lớp bạn muốn trong Mạng thần kinh tùy chỉnh của mình.
  • bỏ học - Giá trị bỏ học, theo mặc định là 0.05 đến 0.1
  • dropouti, wdrop, dropoute, dropouth - Các tham số thời gian có thể bị bỏ qua.

Bước 2: Phù hợp với đối tượng người học

Bây giờ đối tượng người học của chúng tôi đã sẵn sàng, chúng tôi có thể đưa nó vào dữ liệu của mình.

learningner.fit (3e-3, 4, wds = 1e-6, cycle_len = 1, cycle_mult = 2)

Hãy xem các đối số mà các tham số được cung cấp cho hàm get_model ánh xạ đến-

  • 3e-3 - Đây là giá trị được đặt cho tốc độ học của mạng.
  • wds - Đây là tham số chính quy l2 với giá trị mặc định 1e-6. Sự điều hòa L2 làm giảm khả năng bị overfitting bằng cách giữ các giá trị trọng số và độ lệch thấp.
  • cycle_len - Tham số này được liên kết với Stochastic Gradient Descent Restart. Không phải lo sợ, nó chỉ đơn giản là chi phối kỷ nguyên SGD nào mà tỷ lệ học tập sẽ bắt đầu giảm và sao lưu nó trở lại. Vì vậy, giá trị của 1 quyết định rằng tốc độ học tập sẽ giảm xuống trong suốt một kỷ nguyên hoặc chu kỳ.
  • cycle_mult - Tham số này nhân độ dài của một kỷ nguyên hoặc chu kỳ với một số nguyên (ở đây, 2) ngay sau khi kết thúc kỷ nguyên trước đó.

Phần 3 Tinh chỉnh mô hình

Giờ đây, mô hình được đào tạo trước của chúng tôi đã được cung cấp dữ liệu và phù hợp với các thông số mong muốn, đã đến lúc chúng tôi tinh chỉnh nó cho nhiệm vụ phân tích cảm xúc của mình và xem hiệu suất!

model = text_classifier_learner (textdata, AWD_LSTM, drop_mult = 0.5) model.freeze_to (-3) model.fit (lr, 1, metrics = [precision]) model.unfreeze () model.fit (lr, 1, metrics = [precision ], cycle_len = 1)

Model.freeze_to (-3) đóng băng mô hình lên đến lớp thứ 3 dưới cùng và vừa với nó, mở ra và lặp lại quá trình tương tự cho đến khi toàn bộ quá trình huấn luyện hoàn tất!

Phần 4 Đánh giá Hiệu suất Mô hình

Bước cuối cùng là đánh giá hiệu suất của dữ liệu này là phân tích Đánh giá IMDB với NLP. Bây giờ chúng tôi đã tinh chỉnh và đào tạo mô hình của mình và phần học chuyển giao đã kết thúc, chúng ta hãy cùng xem mô hình hoạt động như thế nào!

model.load ('first') model.p Dự đoán ("Đây là bộ phim kinh dị khoa học viễn tưởng hay nhất. Rất thích!")

Hãy chạy cái này và xem kết quả-

(Danh mục pos, tensor (1), tensor ([7.5679e-04, 9.9456e-01]))

Tuyệt quá! Nó cho điểm tình cảm chính xác cùng với việc phân loại văn bản là tích cực, với độ chính xác là 99%!

Tuy nhiên, độ chính xác tổng thể của mô hình là 0.943960, xấp xỉ 94.39%!

Kết luận

Tôi hy vọng bạn cảm thấy vui vẻ khi biết bạn có thể thực hiện phân tích tình cảm đối với các đánh giá của người dùng về một bộ phim trong IMDB nhanh như thế nào! Tôi khuyến khích bạn làm việc với điều này và điều chỉnh các thông số khác nhau bằng cách giải quyết các nhiệm vụ phân tích và dự đoán cảm xúc khác như Đánh giá sản phẩm Amazon, Phân tích tình cảm trên Tweets, v.v.!

Vui lòng liên hệ với tôi trên LinkedInGitHub và đọc những câu chuyện khác của tôi trên Trung bình nếu bạn là một người đam mê ML!

Chúc bạn học vui!

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?