Tập lệnh Python đơn giản mà không cần sử dụng các thư viện xử lý văn bản nặng để trích xuất các từ phổ biến nhất từ kho văn bản
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
3 Định nghĩa các chức năng cần thiết
Tất cả các chức năng được tóm tắt ở đây. Tôi sẽ chỉ lại nơi chúng được sử dụng trong bài đăng này nếu chúng mới và chưa được giải thích
def token_and_unique_word_count_func[text]:
'''
Outputs the number of words and unique words
Step 1: Use word_tokenize[] to get tokens from string
Step 2: Uses the FreqDist function to count unique words
Args:
text [str]: String to which the functions are to be applied, string
Prints:
Number of existing tokens and number of unique words
'''
words = word_tokenize[text]
fdist = FreqDist[words]
print['Number of tokens: ' + str[len[words]]]
print['Number of unique words: ' + str[len[fdist]]]
def most_common_word_func[text, n_words=25]:
'''
Returns a DataFrame with the most commonly used words from a text with their frequencies
Step 1: Use word_tokenize[] to get tokens from string
Step 2: Uses the FreqDist function to determine the word frequency
Args:
text [str]: String to which the functions are to be applied, string
Returns:
A DataFrame with the most commonly occurring words [by default = 25] with their frequencies
'''
words = word_tokenize[text]
fdist = FreqDist[words]
n_words = n_words
df_fdist = pd.DataFrame[{'Word': fdist.keys[],
'Frequency': fdist.values[]}]
df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].head[n_words]
return df_fdist
def least_common_word_func[text, n_words=25]:
'''
Returns a DataFrame with the least commonly used words from a text with their frequencies
Step 1: Use word_tokenize[] to get tokens from string
Step 2: Uses the FreqDist function to determine the word frequency
Args:
text [str]: String to which the functions are to be applied, string
Returns:
A DataFrame with the least commonly occurring words [by default = 25] with their frequencies
'''
words = word_tokenize[text]
fdist = FreqDist[words]
n_words = n_words
df_fdist = pd.DataFrame[{'Word': fdist.keys[],
'Frequency': fdist.values[]}]
df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].tail[n_words]
return df_fdist
4 Tiền xử lý văn bản
4. 1 [Làm sạch văn bản]
Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Làm sạch văn bản
4. 2 [Token hóa]
Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản II-Tokenization
4. 3 [Dừng từ]
Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản II-Dừng từ
4. 4 [lạc đề. POS và NER]
Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản III-POS và NER
4. 5 [Chuẩn hóa]
Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản III-Chuẩn hóa
4. 6 [Xóa các ký tự đơn]
Tôi đã mô tả phần này trong bài viết trước. Xem tại đây. Tiền xử lý văn bản IV-Xóa các ký tự đơn
4. 7 Khám phá văn bản
4. 7. 1 Thống kê mô tả
Để dễ đọc hơn, tôi đã thêm dấu câu vào câu ví dụ sau. Tại thời điểm này trong quá trình tiền xử lý văn bản, những từ này sẽ không còn xuất hiện nữa, cũng như sẽ dừng các từ hoặc các từ khác có ít hoặc không có nội dung thông tin
Nhưng điều đó không quan trọng. Bạn có thể sử dụng phân tích này ở những nơi khác nhau, bạn chỉ cần ghi nhớ văn bản của mình rõ ràng như thế nào và liệu các dấu chấm câu hoặc tương tự có được tính hay không
text_for_exploration = \
"To begin to toboggan first buy a toboggan, but do not buy too big a toboggan. \
Too big a toboggan is too big a toboggan to buy to begin to toboggan."
text_for_exploration
def token_and_unique_word_count_func[text]:
'''
Outputs the number of words and unique words
Step 1: Use word_tokenize[] to get tokens from string
Step 2: Uses the FreqDist function to count unique words
Args:
text [str]: String to which the functions are to be applied, string
Prints:
Number of existing tokens and number of unique words
'''
words = word_tokenize[text]
fdist = FreqDist[words]
print['Number of tokens: ' + str[len[words]]]
print['Number of unique words: ' + str[len[fdist]]]
pd.set_option['display.max_colwidth', 30]
04. 7. 1. 1 Những từ phổ biến nhất
def most_common_word_func[text, n_words=25]:
'''
Returns a DataFrame with the most commonly used words from a text with their frequencies
Step 1: Use word_tokenize[] to get tokens from string
Step 2: Uses the FreqDist function to determine the word frequency
Args:
text [str]: String to which the functions are to be applied, string
Returns:
A DataFrame with the most commonly occurring words [by default = 25] with their frequencies
'''
words = word_tokenize[text]
fdist = FreqDist[words]
n_words = n_words
df_fdist = pd.DataFrame[{'Word': fdist.keys[],
'Frequency': fdist.values[]}]
df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].head[n_words]
return df_fdist
pd.set_option['display.max_colwidth', 30]
2pd.set_option['display.max_colwidth', 30]
34. 7. 1. 2 từ ít phổ biến nhất
def least_common_word_func[text, n_words=25]:
'''
Returns a DataFrame with the least commonly used words from a text with their frequencies
Step 1: Use word_tokenize[] to get tokens from string
Step 2: Uses the FreqDist function to determine the word frequency
Args:
text [str]: String to which the functions are to be applied, string
Returns:
A DataFrame with the least commonly occurring words [by default = 25] with their frequencies
'''
words = word_tokenize[text]
fdist = FreqDist[words]
n_words = n_words
df_fdist = pd.DataFrame[{'Word': fdist.keys[],
'Frequency': fdist.values[]}]
df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].tail[n_words]
return df_fdist
pd.set_option['display.max_colwidth', 30]
54. 7. 2 Trực quan hóa văn bản
Ghi chú. Tôi chỉ áp dụng hình dung một lần cho những từ phổ biến nhất hiện tại
4. 7. 2. 1 qua Biểu đồ thanh
pd.set_option['display.max_colwidth', 30]
64. 7. 2. 2 qua Word Clouds
Với chức năng WordCloud, bạn cũng có thể hiển thị các từ xuất hiện thường xuyên nhất một cách trực quan. Ưu điểm là theo mặc định, tất cả các từ dừng hoặc các ký tự không liên quan đều bị xóa khỏi màn hình. Các thông số vẫn có thể được thiết lập có thể được đọc ở đây
pd.set_option['display.max_colwidth', 30]
74. 7. 3 Ứng dụng cho chuỗi ví dụ
pd.set_option['display.max_colwidth', 30]
8pd.set_option['display.max_colwidth', 30]
94. 7. 3. 1 Những từ phổ biến nhất
df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
0df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
14. 7. 3. 2 từ ít phổ biến nhất
df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
2df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
34. 7. 4 Ứng dụng cho DataFrame
4. 7. 4. 1 cho toàn bộ DF
Như đã đề cập ở cuối chương trước [Xóa các ký tự đơn], tôi sẽ tiếp tục làm việc với cột ‘Reviews_cleaned_wo_single_char’. Ở đây chúng tôi chỉ xóa các ký tự có độ dài 1 khỏi văn bản
Để tôi có thể áp dụng các chức năng được viết cho chương này, trước tiên tôi cần tạo một kho văn bản gồm tất cả các hàng từ cột ‘Reviews_cleaned_wo_single_char’
df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
4df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
54. 7. 4. 1. 1 Những từ phổ biến nhất
df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
6df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
7Như chúng ta có thể thấy, từ 'điện thoại' cho đến nay là từ phổ biến nhất
Tuy nhiên, cách tiếp cận này rất phiến diện nếu người ta cho rằng các nhận xét đề cập đến các xếp hạng khác nhau. Vì vậy, hãy xem xét kỹ hơn về chúng trong bước tiếp theo
4. 7. 4. 1. 2 từ ít phổ biến nhất
df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
8df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
94. 7. 4. 2 chia cho Đánh giá
Như chúng ta có thể thấy từ đầu ra bên dưới, người dùng được cung cấp tùy chọn đưa ra 5 xếp hạng khác nhau. 1 là viết tắt của đánh giá kém và 5 cho đánh giá rất tốt
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
0Để phân tích sâu hơn, tôi sẽ gán các nhãn tương ứng cho các xếp hạng khác nhau
- Xếp hạng 1-2. phủ định
- Xếp hạng 3. Trung tính
- Xếp hạng 4-5. tích cực
Tôi có thể làm điều này bằng chức năng sau
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
1Cá nhân tôi thích có các cột 'Xếp hạng' và 'Nhãn' cùng nhau. Cho đến nay, cột 'Nhãn' nằm ở cuối bản ghi vì nó mới được tạo. Tuy nhiên, thứ tự có thể được thay đổi bằng lệnh sau
Chỉ thực hiện sắp xếp lại cột này một lần, nếu không, ngày càng nhiều cột sẽ được đặt ở vị trí đầu tiên
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
2Như bạn có thể thấy từ đầu ra một phần được hiển thị bên dưới, các nhãn đã được gán chính xác
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
3Bây giờ tôi chia tập dữ liệu theo nhãn của chúng ['tích cực', 'trung lập' và 'tiêu cực']
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
4Theo cách phân chia, tôi tạo một ngữ liệu văn bản riêng cho từng
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
5Sau đó, tôi có thể sử dụng lại hàm most_common_word và lưu kết quả vào một tập dữ liệu riêng
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
6Bây giờ tôi có thể sử dụng vòng lặp for để hiển thị trực quan 25 từ xuất hiện thường xuyên nhất trong mỗi bộ dữ liệu một phần
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
7Ghi chú. Tôi bỏ qua cách thực hiện tương tự cho các từ ít phổ biến nhất vào thời điểm này. Nó sẽ tuân theo nguyên tắc giống như tôi đã chỉ ra trước đây
5. Kết luận
Trong bài đăng này, tôi đã chỉ cho bạn cách khám phá và trực quan hóa các khối văn bản một cách dễ dàng và nhanh chóng. Dựa trên những hiểu biết này, các bước tiếp theo của chúng tôi sẽ xuất hiện, mà tôi sẽ trình bày trong bài viết sau
Ở đây chúng tôi chỉ cần lưu DataFrame, vì chúng tôi đã thực hiện các thay đổi. Đây không phải là trường hợp với Chuỗi ví dụ
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
8Hơn nữa, chúng tôi đã tạo một số bảng tần số mà chúng tôi sẽ cần lại trong bài viết sau. Vì vậy, họ cũng sẽ được cứu