Xử lý ngôn ngữ tự nhiên ngày nay có nhiều ứng dụng. Một ứng dụng quan trọng của Xử lý ngôn ngữ tự nhiên là phân loại văn bản và phân tích văn bản. Với mục đích này, chúng ta cần tạo một bộ phân loại. Nhưng, vấn đề nằm ở việc xử lý dữ liệu văn bản là máy tính không thể hiểu trực tiếp ngôn ngữ tự nhiên. Máy tính không thể chỉ nhập văn bản và hiểu ngữ cảnh của văn bản
Hình ảnh 1
Vì vậy, chúng tôi sử dụng vector hóa văn bản cho những trường hợp này. Phân tích tần suất nghịch đảo thuật ngữ Tần suất tài liệu [TFIDF] là một trong những phương pháp đơn giản và mạnh mẽ để hiểu ngữ cảnh của văn bản. Tần suất Thuật ngữ và Tần suất Tài liệu Nghịch đảo được sử dụng để tìm nội dung liên quan cũng như các từ và cụm từ quan trọng trong một văn bản lớn hơn. Triển khai phân tích TF-IDF rất dễ dàng bằng Python. Máy tính không thể hiểu ý nghĩa của một văn bản, nhưng chúng có thể hiểu các con số. Các từ có thể được chuyển đổi thành số để có thể hiểu được mối quan hệ giữa chúng
Kỳ hạn tần suất
Thuật ngữ là thước đo tần số của một từ w trong một tài liệu [văn bản] d. Nó bằng số lượng từ w trong tài liệu d chia cho tổng số từ trong tài liệu d. Tần suất thuật ngữ đóng vai trò là số liệu để xác định sự xuất hiện của một từ trong tài liệu so với tổng số từ trong tài liệu. Mẫu số luôn giống nhau
Tần số tài liệu nghịch đảo [IDF]
Tham số này đưa ra một giá trị số về tầm quan trọng của một từ. Nghịch đảo Tần suất tài liệu của từ w được định nghĩa là tổng số tài liệu [N] trong kho văn bản D, chia cho số tài liệu chứa w
Tần suất kỳ hạn Tần suất tài liệu nghịch đảo [TF-IDF]
Tích của TF và IDF là TF-IDF. TF-IDF thường là một trong những thước đo tốt nhất để xác định xem một thuật ngữ có quan trọng đối với văn bản hay không. Nó thể hiện tầm quan trọng của một từ trong một tài liệu cụ thể
Vấn đề với các phương pháp như vậy là họ không thể hiểu được từ đồng nghĩa, ngữ nghĩa và các khía cạnh cảm xúc khác của ngôn ngữ. Ví dụ, lớn và lớn đồng nghĩa với nhau, nhưng các phương pháp như vậy không thể xác định được điều đó
Chúng ta hãy xem cách triển khai TF-IDF
text=["kolkata big city india trade","mumbai financial capital india","delhi capital india","kolkata capital colonial times", "bangalore tech hub india software","mumbai hub trade commerce stock exchange","kolkata victoria memorial","delhi india gate", "mumbai gate way india trade business","delhi red fort india","kolkata metro oldest india", "delhi metro largest metro network india"]
Hãy để chúng tôi lấy một số văn bản ngẫu nhiên. Một điểm cần lưu ý là văn bản không được tìm thấy như thế này thường. Rất nhiều tiền xử lý đã được thực hiện để làm cho văn bản như thế này. Tiếp theo, chúng tôi nhập các thư viện cần thiết
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer
Do đó, các thư viện quan trọng được nhập
Bây giờ, chúng tôi áp dụng công cụ đếm véc tơ cho văn bản
Mã Python
Hãy để chúng tôi có một cái nhìn vào hình dạng của nó
word_count.shape
Bây giờ chúng ta hãy chuyển đổi nó thành một mảng và xem xét
print[word_count.toarray[]]
Chúng tôi đã lấy 12 câu và có 29 từ duy nhất, vì vậy hình dạng là 12/29
Bây giờ, chúng tôi sử dụng máy biến áp IDF
tfidf_transformer=TfidfTransformer[smooth_idf=True,use_idf=True] tfidf_transformer.fit[word_count] df_idf = pd.DataFrame[tfidf_transformer.idf_, index=count.get_feature_names[],columns=["idf_weights"]]
#inverse document frequency df_idf.sort_values[by=['idf_weights']]
Đầu ra dài, trông giống như thế này. Tôi sẽ để lại một liên kết đến sổ ghi chép, xin vui lòng xem ở đó
Tiếp tục chuyển đổi TF-IDF
#tfidf tf_idf_vector=tfidf_transformer.transform[word_count] feature_names = count.get_feature_names[]
first_document_vector=tf_idf_vector[1] df_tfifd= pd.DataFrame[first_document_vector.T.todense[], index=feature_names, columns=["tfidf"]]
df_tfifd.sort_values[by=["tfidf"],ascending=False]
Như vậy, chúng ta có thể thấy việc triển khai Tần suất thuật ngữ- Tần suất tài liệu nghịch đảo rất đơn giản và dễ dàng trong Python
liên kết mã. https. //www. kaggle. com/prateekmaj21/tf-idf-in-python
Tạo Trình phân loại đánh giá phim bằng TF-IDF
Bây giờ, chúng ta hãy tạo một bộ phân loại để phân loại các văn bản đánh giá là tích cực hoặc tiêu cực
Các thư viện cần thiết được nhập
#importing libraries import numpy as np import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn import metrics import nltk import re import string from nltk.stem import WordNetLemmatizer
Bây giờ, đọc dữ liệu
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer0
Sau khi đọc dữ liệu, chúng tôi tiến hành các phương pháp tiền xử lý văn bản khác nhau
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer1
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer2
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer3
Chúng ta có thể thấy cách dữ liệu bao gồm văn bản, theo sau là nhãn “1” hoặc “0”. 1 biểu thị đánh giá tích cực, trong khi 0 biểu thị đánh giá tiêu cực. Nói về dữ liệu, dữ liệu văn bản rất phức tạp để làm việc với. Có dấu câu, số và các ký tự đặc biệt khác. Sau đó, các từ của các trường hợp khác nhau được cảm nhận khác nhau. Các từ khóa cũng phải được loại bỏ. Các từ phải được bổ sung
Từ dừng là những từ phổ biến nhất trong một ngôn ngữ, thường là giới từ và mạo từ. Chúng được sử dụng rất nhiều, nhưng thay vì truyền đạt bất kỳ tình cảm hay ý nghĩa nào, chúng được sử dụng cho ngữ pháp. Các từ dừng thường được loại bỏ để có quy trình NLP hiệu quả
Tương tự, từ vựng được sử dụng để chuyển đổi các dạng khác nhau của từ sang định dạng gốc. Cả hai đều là những bước rất quan trọng trong toàn bộ quy trình NLP
Bây giờ, chúng tôi chia dữ liệu thành các phần đào tạo và kiểm tra
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer4
Sau đây, chúng ta sẽ thực hiện phần quan trọng là làm sạch văn bản
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer5_______1_______6
Vì vậy, tất cả các xử lý văn bản được thực hiện đúng
Bây giờ chúng ta hãy xem dữ liệu văn bản trông như thế nào
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer7
Chúng ta có thể thấy rằng các dấu câu bị xóa và tất cả các từ dừng cũng bị xóa. Bây giờ văn bản này có thể được sử dụng để đào tạo một trình phân loại
Bây giờ, chúng tôi sử dụng TF-IDF Vectorizer
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer8
Hãy để chúng tôi kiểm tra kích thước của dữ liệu bây giờ
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer9
đầu ra
Vì vậy, chúng ta có thể thấy rằng, có 25.000 điểm dữ liệu và 65498 tính năng
Bây giờ, chúng tôi chuyển đổi dữ liệu thử nghiệm sang định dạng ma trận TF-IDF
word_count.shape0
word_count.shape1
đầu ra
Vì vậy, chúng ta có thể thấy rằng số lượng các tính năng là như nhau. Bây giờ chúng ta có thể tiến hành tạo bộ phân loại
Bộ phân loại Naive Bayes
Chúng ta sẽ tạo ra một mô hình Naive Bayes đa thức. Thuật toán này dựa trên Định lý Bayes. Đa thức Naive Bayes có nhiều ứng dụng công nghiệp và thương mại trong lĩnh vực Xử lý ngôn ngữ tự nhiên
word_count.shape2
word_count.shape3
Dự đoán đã hoàn thành. Bây giờ, chúng tôi in báo cáo phân loại
word_count.shape4
Bây giờ, chúng ta hãy kiểm tra ma trận nhầm lẫn
word_count.shape5
Vì vậy, chúng ta có thể nói rằng trình phân loại đang hoạt động khá tốt
Bây giờ, chúng ta hãy thử một dự đoán kiểm tra mẫu
Thực hiện dự đoán thử nghiệm trên Trình phân loại đánh giá bằng TF-IDF
Tôi đã lấy một mẫu đánh giá tích cực về bộ phim “Avatar”
word_count.shape6
Tiếp theo là tiền xử lý văn bản
word_count.shape7
Chúng ta hãy xem văn bản đã xử lý
word_count.shape8
đầu ra
word_count.shape9
print[word_count.toarray[]]0
đầu ra
Nó cũng có 65498 tính năng
print[word_count.toarray[]]1
đầu ra
Vì vậy, chúng ta có thể thấy rằng đó là một đánh giá tích cực
Chúng tôi đã tạo thành công một bộ phân loại
Có một cái nhìn vào mã ở đây. Github
Xử lý ngôn ngữ tự nhiên có nhiều ứng dụng phổ biến và phân tích văn bản và phân loại văn bản là một trong số đó. Hy vọng bài viết này đã giải thích cách tạo bộ phân loại bằng Python
Về tôi
Majumder Prateek
phân tích. Sáng tạo nội dung
Kết nối với tôi trên Linkedin
Các bài viết khác của tôi về Analytics Vidhya. liên kết
Cảm ơn
Người giới thiệu
Hình ảnh1 – https. //www. pexels. com/photo/blue-sáng-đèn-373543/
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 của Tác giả