Ví dụ về trăn TF-IDF

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 TfidfVectorizer
0

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 TfidfVectorizer
1
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
2
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
3

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 TfidfVectorizer
4

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 TfidfVectorizer
5_______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 TfidfVectorizer
7

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 TfidfVectorizer
8

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 TfidfVectorizer
9

đầ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.shape
0
word_count.shape
1

đầ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.shape
2
word_count.shape
3

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.shape
4

Bây giờ, chúng ta hãy kiểm tra ma trận nhầm lẫn

word_count.shape
5

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.shape
6

Tiếp theo là tiền xử lý văn bản

word_count.shape
7

Chúng ta hãy xem văn bản đã xử lý

word_count.shape
8

đầu ra

word_count.shape
9
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ả

Làm thế nào để sử dụng TF

TF-IDF = TF[t, d] x IDF[t] , trong đó, TF[t, d] = Số lần thuật ngữ "t" xuất hiện trong tài liệu . IDF[t] = Tần suất tài liệu nghịch đảo của thuật ngữ t. TfidfVectorizer chuyển đổi một tập hợp các tài liệu thô thành một ma trận các tính năng TF-IDF.

TF là gì

Ví dụ: Công cụ tìm kiếm sử dụng TF-IDF để xếp hạng mức độ liên quan của tài liệu cho một truy vấn . TF-IDF cũng được sử dụng trong phân loại văn bản, tóm tắt văn bản và mô hình hóa chủ đề. Lưu ý rằng có một số cách tiếp cận khác nhau để tính điểm IDF. Logarit cơ số 10 thường được sử dụng trong tính toán.

TF thế nào?

Bây giờ, giả sử chúng ta có 10 triệu tài liệu và từ mèo xuất hiện trong một nghìn trong số này. Sau đó, tần số tài liệu nghịch đảo [i. e. , idf] được tính là log[10.000.000 / 1.000] = 4 . Do đó, trọng số Tf-idf là tích của các đại lượng này. 0. 03 * 4 = 0. 12.

TF thế nào?

Công thức được sử dụng để tính toán tf-idf cho thuật ngữ t của tài liệu d trong bộ tài liệu là tf-idf[t, d] = tf[t . , and the idf is computed as idf[t] = log [ n / df[t] ] + 1 [if smooth_idf=False ], where n is the total number of documents in the document set and df[t] is the document frequency of t; the ...

Chủ Đề