Xóa các từ khỏi khung dữ liệu Python

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên

Trình chỉnh sửa mã Python

Có một cách khác để giải quyết giải pháp này?

Trước. Viết chương trình Python để kiểm tra số thập phân với độ chính xác là 2.
Tiếp theo. Viết chương trình Python để xóa vùng ngoặc đơn trong một chuỗi.

Mức độ khó của bài tập này là gì?

Dễ dàng trung bình khó

Kiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource



con trăn. Lời khuyên trong ngày

giải nén

Bạn có thể giải nén các bộ sưu tập với ký hiệu 1 sao. *

Bạn có thể giải nén các bộ sưu tập đã đặt tên bằng ký hiệu 2 sao. **

Vì vậy, nếu một hàm lấy iterables làm đối số thì bạn có thể chuyển iterables với ký hiệu dấu sao cho các hàm đó

Đối với ấn phẩm này, tập dữ liệu đã xử lý Amazon Unlocked Mobile từ nền tảng thống kê “Kaggle” đã được sử dụng. Hơn nữa, tôi sẽ sử dụng trạng thái cuối cùng của chuỗi ví dụ và các bảng tần số đã lưu mà tôi đã tạo trong bài viết trước của mình. Bạn có thể tải xuống tất cả các tệp từ “Kho lưu trữ GitHub” của tôi

2 Nhập thư viện và dữ liệu

import pandas as pd
import numpy as np

import pickle as pk

import warnings
warnings.filterwarnings["ignore"]


from bs4 import BeautifulSoup
import unicodedata
import re

from nltk.tokenize import word_tokenize
from nltk.tokenize import sent_tokenize

from nltk.corpus import stopwords


from nltk.corpus import wordnet
from nltk import pos_tag
from nltk import ne_chunk

from nltk.stem.porter import PorterStemmer
from nltk.stem.wordnet import WordNetLemmatizer

from nltk.probability import FreqDist
import matplotlib.pyplot as plt
from wordcloud import WordCloud
pd.set_option['display.max_colwidth', 30]
df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T

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

Ngoài Khung dữ liệu và Chuỗi mẫu, chúng tôi tải các bảng tần suất đã lưu trước đó từ bài đăng NLP - Tiền xử lý văn bản V [Khám phá văn bản] tại thời điểm này

df_most_common_words = pd.read_csv['df_most_common_words.csv']
df_least_common_words = pd.read_csv['df_least_common_words.csv']
df_most_common_words_text_corpus = pd.read_csv['df_most_common_words_text_corpus.csv']
df_least_common_words_text_corpus = pd.read_csv['df_least_common_words_text_corpus.csv']

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 word_count_func[text]:
    '''
    Counts words within a string
    
    Args:
        text [str]: String to which the function is to be applied, string
    
    Returns:
        Number of words within a string, integer
    ''' 
    return len[text.split[]]
def single_word_remove_func[text, word_2_remove]:
    '''
    Removes a specific word from string, if present
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Removes the defined word from the created tokens
    
    Args:
        text [str]: String to which the functions are to be applied, string
        word_2_remove [str]: Word to be removed from the text, string
    
    Returns:
        String with removed words
    '''    
    word_to_remove = word_2_remove
    
    words = word_tokenize[text]
    text = ' '.join[[word for word in words if word != word_to_remove]]
    return text
def multiple_word_remove_func[text, words_2_remove_list]:
    '''
    Removes certain words from string, if present
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Removes the defined words from the created tokens
    
    Args:
        text [str]: String to which the functions are to be applied, string
        words_2_remove_list [list]: Words to be removed from the text, list of strings
    
    Returns:
        String with removed words
    '''     
    words_to_remove_list = words_2_remove_list
    
    words = word_tokenize[text]
    text = ' '.join[[word for word in words if word not in words_to_remove_list]]
    return text
def most_freq_word_func[text, n_words=5]:
    '''
    Returns the most frequently used words from a text
    
    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:
        List of the most frequently occurring words [by default = 5]
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    df_fdist = pd.DataFrame[{'Word': fdist.keys[],
                             'Frequency': fdist.values[]}]
    df_fdist = df_fdist.sort_values[by='Frequency', ascending=False]
    
    n_words = n_words
    most_freq_words_list = list[df_fdist['Word'][0:n_words]]
    
    return most_freq_words_list
pd.set_option['display.max_colwidth', 30]
0

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.

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.

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.

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.

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.

4. 6 [Xóa các ký tự đơn]

Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây.

4. 7 [Khám phá văn bản]

Tôi đã mô tả phần này trong bài viết trước. Xem tại đây.

4. 8 Xóa các từ cụ thể

Đôi khi việc loại bỏ cụ thể một số từ nhất định là hữu ích hoặc thậm chí cần thiết

Trong chương này và hai chương tiếp theo, tôi sẽ đề cập đến các bảng tần số từ chương Khám phá văn bản và sẽ luôn nhớ lại chúng để người đọc hiểu rõ tôi đang đề cập đến giai đoạn xử lý nào của mỗi văn bản. Tất cả các hoạt động từ chương này và hai chương sau sẽ được thực hiện trên chuỗi ví dụ ‘clean_text_wo_single_char’ và cột ‘Reviews_cleaned_wo_single_char’. Hơn nữa, một lần nữa tôi sẽ đưa ra một cái nhìn tổng quan về những hoạt động nào tôi đã áp dụng cho cột nguồn nào và những gì đã xảy ra trong quá trình đó, để người đọc không bị nhầm lẫn

Nhưng bây giờ chúng ta hãy xem câu nói líu lưỡi này làm ví dụ

pd.set_option['display.max_colwidth', 30]
1

4. 8. Xóa 1 từ đơn

Việc loại bỏ các từ riêng lẻ có thể được thực hiện với sự trợ giúp của chức năng này

def single_word_remove_func[text, word_2_remove]:
    '''
    Removes a specific word from string, if present
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Removes the defined word from the created tokens
    
    Args:
        text [str]: String to which the functions are to be applied, string
        word_2_remove [str]: Word to be removed from the text, string
    
    Returns:
        String with removed words
    '''    
    word_to_remove = word_2_remove
    
    words = word_tokenize[text]
    text = ' '.join[[word for word in words if word != word_to_remove]]
    return text
pd.set_option['display.max_colwidth', 30]
3

4. 8. 2 Loại bỏ nhiều từ

Nhưng bạn thường gặp vấn đề khi phải xóa một số từ. Để sử dụng chức năng hiển thị ở trên mỗi lần sẽ rất tẻ nhạt. Do đó, đây là một chức năng có thể loại bỏ nhiều từ khỏi một câu

________số 8

Việc áp dụng chức năng này có thể được thực hiện theo nhiều cách. Dưới đây là ba ví dụ về cách thực hiện việc này

pd.set_option['display.max_colwidth', 30]
5

pd.set_option['display.max_colwidth', 30]
6

pd.set_option['display.max_colwidth', 30]
7

4. 8. 3 Ứng dụng cho chuỗi ví dụ

Đối với điều này, hãy xem trạng thái cuối cùng của chúng ta với ví dụ Chuỗi

pd.set_option['display.max_colwidth', 30]
8

Với mục đích này, chúng tôi cũng xem xét phân bố tần suất của các từ

pd.set_option['display.max_colwidth', 30]
9

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
0

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
1

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
2

4. 8. 3. 1 với Loại bỏ một từ

Sau đây tôi muốn bỏ từ ‘đặc biệt’, vì nó xuất hiện quá thường xuyên trong chuỗi ví dụ

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
3

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
4

làm việc tuyệt vời. Vì từ 'đặc biệt' xuất hiện 4 lần, sự khác biệt này cũng có thể được nhìn thấy trong câu lệnh in được hiển thị ở trên

4. 8. 3. 2 với Loại bỏ nhiều từ

Ngoài ra, bây giờ, tôi muốn xóa thêm các từ mà tôi cho là không có lợi

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
5

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
6

Hoạt động này cũng hoạt động theo cách chúng tôi muốn. Ba từ chúng tôi đã xóa mỗi từ chỉ xuất hiện một lần trong văn bản. Do đó sự khác biệt của 3

4. 8. 4 Ứng dụng cho DataFrame

Ở đây một lần nữa, chúng ta hãy xem phân bố tần suất của các từ trong cột 'Reviews_cleaned_wo_single_char'. Đây là cột tôi quyết định làm việc trong chương

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
7

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
8

Trong chương trước, tôi lại chia cột này theo loại đánh giá ['tích cực', 'trung lập' và 'tiêu cực'] và tạo các hình ảnh trực quan riêng biệt về tần suất từ ​​cho từng loại. Kết quả là từ 'phone' xuất hiện thường xuyên không tương xứng trong cả ba tập hợp con so với các từ khác. Do đó, tôi có thể giả định rằng từ này không mang lại lợi nhuận đặc biệt cho việc phân loại sau này và do đó tôi muốn loại bỏ nó

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
9

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
0

4. 8. 4. 1 với Loại bỏ một từ

Trong phần tiếp theo, bây giờ tôi sẽ xóa từ 'điện thoại' khỏi tất cả các hàng trong cột 'Reviews_cleaned_wo_single_char'

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
1

Tính toán số từ trên mỗi dòng và lưu nó vào một cột riêng biệt như tôi đã làm trong các chương trước, theo tôi, không hữu ích vào thời điểm này

Để kiểm tra xem từ 'phone' đã bị xóa khỏi tất cả các dòng hay chưa, bạn nên tạo một kho văn bản mới và so sánh số lượng từ. Tôi đã tạo kho văn bản đầu tiên trong chương trước, nhưng để hoàn chỉnh, tôi sẽ làm lại ở đây

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
2

Hoạt động cũng hoạt động tốt trên tập dữ liệu. Nếu bạn so sánh sự khác biệt được tính toán với bảng tần suất từ ​​ở trên [df_most_common_words_text_corpus], bạn có thể thấy rằng từ 'phone' đã bị xóa hoàn toàn khỏi tất cả các dòng

4. 8. 4. 2 với Loại bỏ nhiều từ

Cũng tại thời điểm này, bây giờ tôi sẽ xóa các từ khác khỏi cột ‘Reviews_cleaned_wo_specific_word’ mới được tạo mà tôi cảm thấy không mang lại lợi nhuận. Để làm điều này, tôi sẽ lấy 3 từ ở cuối bảng tần suất [df_least_common_words_text_corpus]

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
3

Bây giờ chúng ta so sánh các kho văn bản với nhau một lần nữa

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
4

Kết quả này cũng cho thấy việc triển khai tích cực các hoạt động. Nếu chúng ta cộng các giá trị tần suất của ba từ cuối cùng trong bảng tần suất [df_least_common_words_text_corpus] ở trên, chúng ta sẽ nhận được tổng là 3, tương ứng với sự khác biệt được hiển thị ở trên

4. 9 Xóa các từ thông dụng

Trong chương trước, tôi đã trình bày cách xóa một số từ nhất định khỏi kho văn bản hoặc khỏi tất cả các hàng trong một cột. Tuy nhiên, thường xảy ra trường hợp bạn có quá nhiều từ nên tôi muốn đặt tên riêng cho chúng trong hàm single_word_remove hoặc hàm multiple_word_remove

Vì lý do này, tôi đã viết các chức năng cho chương này và chương sau, các chức năng này cung cấp cho tôi danh sách các từ thông dụng hoặc hiếm gặp, sau đó tôi có thể xóa các từ này khỏi văn bản của mình

Nhưng hãy cẩn thận khi loại bỏ những từ như vậy. Tuy nhiên, chúng có thể [ngay cả khi ban đầu người ta không nghi ngờ điều đó] mang lại lợi nhuận cho thuật toán sau này. Do đó, tôi khuyên bạn nên luôn lưu các mô-đun văn bản mới trong một cột hoặc đối tượng riêng biệt và để kiểm tra sau với sự trợ giúp của việc xác thực thuật toán xem liệu hoạt động có hữu ích hay không

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
5

def most_freq_word_func[text, n_words=5]:
    '''
    Returns the most frequently used words from a text
    
    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:
        List of the most frequently occurring words [by default = 5]
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    df_fdist = pd.DataFrame[{'Word': fdist.keys[],
                             'Frequency': fdist.values[]}]
    df_fdist = df_fdist.sort_values[by='Frequency', ascending=False]
    
    n_words = n_words
    most_freq_words_list = list[df_fdist['Word'][0:n_words]]
    
    return most_freq_words_list
df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
7

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
8

4. 9. 1 Ứng dụng cho chuỗi ví dụ

[. ] Điều quan trọng cần lưu ý ở đây. Tôi sử dụng lại trạng thái của chuỗi ví dụ như ở đầu chương mà tôi chưa loại bỏ các từ cụ thể

pd.set_option['display.max_colwidth', 30]
8

Ở đây một lần nữa phân phối tần số trong phiên bản trực quan và dạng bảng

pd.set_option['display.max_colwidth', 30]
9

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
0

clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
2

clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
3

4. 9. 2 Ứng dụng cho DataFrame

[. ] Điều quan trọng cần lưu ý ở đây. Tôi sử dụng cột ‘Reviews_cleaned_wo_single_char’ như trong chương vì tại thời điểm này tôi không muốn các từ cụ thể đã bị xóa khỏi văn bản

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
7

clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
5

clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
6

clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
7
clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
8

4. 10 Loại bỏ từ hiếm

Chúng tôi có thể sẽ sử dụng chức năng này thường xuyên hơn, chức năng này cho phép chúng tôi xác định các từ hiếm khi xuất hiện trong văn bản và sau đó loại bỏ chúng

clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char
9

pd.set_option['display.max_colwidth', 30]
0
df_most_common_words = pd.read_csv['df_most_common_words.csv']
df_least_common_words = pd.read_csv['df_least_common_words.csv']
df_most_common_words_text_corpus = pd.read_csv['df_most_common_words_text_corpus.csv']
df_least_common_words_text_corpus = pd.read_csv['df_least_common_words_text_corpus.csv']
1

df_most_common_words = pd.read_csv['df_most_common_words.csv']
df_least_common_words = pd.read_csv['df_least_common_words.csv']
df_most_common_words_text_corpus = pd.read_csv['df_most_common_words_text_corpus.csv']
df_least_common_words_text_corpus = pd.read_csv['df_least_common_words_text_corpus.csv']
2

4. 10. 1 Ứng dụng cho chuỗi ví dụ

[. ] Điều quan trọng cần lưu ý ở đây. Tôi sử dụng lại trạng thái của chuỗi ví dụ như ở đầu chương mà tôi chưa loại bỏ các từ cụ thể

pd.set_option['display.max_colwidth', 30]
8

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
1

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
2

df_most_common_words = pd.read_csv['df_most_common_words.csv']
df_least_common_words = pd.read_csv['df_least_common_words.csv']
df_most_common_words_text_corpus = pd.read_csv['df_most_common_words_text_corpus.csv']
df_least_common_words_text_corpus = pd.read_csv['df_least_common_words_text_corpus.csv']
6

df_most_common_words = pd.read_csv['df_most_common_words.csv']
df_least_common_words = pd.read_csv['df_least_common_words.csv']
df_most_common_words_text_corpus = pd.read_csv['df_most_common_words_text_corpus.csv']
df_least_common_words_text_corpus = pd.read_csv['df_least_common_words_text_corpus.csv']
7

4. 10. 2 Ứng dụng cho DataFrame

[. ] Điều quan trọng cần lưu ý ở đây. Tôi sử dụng cột ‘Reviews_cleaned_wo_single_char’ như trong chương vì tại thời điểm này tôi không muốn các từ cụ thể đã bị xóa khỏi văn bản

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_V.csv']
df.head[3].T
9

df_most_common_words = pd.read_csv['df_most_common_words.csv']
df_least_common_words = pd.read_csv['df_least_common_words.csv']
df_most_common_words_text_corpus = pd.read_csv['df_most_common_words_text_corpus.csv']
df_least_common_words_text_corpus = pd.read_csv['df_least_common_words_text_corpus.csv']
9

def word_count_func[text]:
    '''
    Counts words within a string
    
    Args:
        text [str]: String to which the function is to be applied, string
    
    Returns:
        Number of words within a string, integer
    ''' 
    return len[text.split[]]
0

def word_count_func[text]:
    '''
    Counts words within a string
    
    Args:
        text [str]: String to which the function is to be applied, string
    
    Returns:
        Number of words within a string, integer
    ''' 
    return len[text.split[]]
1
def word_count_func[text]:
    '''
    Counts words within a string
    
    Args:
        text [str]: String to which the function is to be applied, string
    
    Returns:
        Number of words within a string, integer
    ''' 
    return len[text.split[]]
2

5 Lời Cuối Cùng

Khi xóa một số từ, tôi đã áp dụng thao tác cho cột đã tạo trước đó. Mặt khác, tôi luôn sử dụng cột gốc ‘Reviews_cleaned_wo_single_char’ làm cơ sở cho các chức năng

Những gì tôi đã không làm trong bài đăng này là tạo một cột riêng biệt nơi tôi đã xóa cả những từ thường dùng và những từ hiếm khi xuất hiện. Mẹo của tôi tại thời điểm này là tạo các cột khác nhau nơi bạn đã loại bỏ các loại khác nhau và số lượng từ khác nhau, sau đó xem cơ sở dữ liệu nào mà thuật toán hoạt động tốt nhất trên đó

6 Kết luận

Điều này gần như đưa tôi đến phần cuối của loạt bài viết về tiền xử lý văn bản. Trong phần này, tôi đã chỉ ra cách loại bỏ một số từ nhất định, rất thường xuyên hoặc hiếm gặp khỏi các mô-đun văn bản

Làm cách nào để xóa chuỗi khỏi gấu trúc?

Thay thế chuỗi con bằng phương thức replace[] . phương thức thay thế []. Phương pháp này theo mặc định sẽ tìm kết quả khớp chính xác và thay thế nó bằng giá trị đã chỉ định. Sử dụng regex=True để thay thế chuỗi con.

Làm cách nào để xóa các ký tự đặc biệt khỏi chuỗi trong Python DataFrame?

Thêm df = df. astype[float] sau khi thay thế và bạn đã có nó. Tôi sẽ bỏ qua inplace và chỉ làm df = df. replace['\*', '', regex=True] .

Làm cách nào để xóa chuỗi khỏi số trong gấu trúc?

Đã liên kết .
Xóa số khỏi chuỗi trong khung dữ liệu gấu trúc
gấu trúc. cách trích xuất các chữ cái [alpha] từ giá trị ô chuỗi
Pandas - chuỗi con mỗi hàng có độ dài khác nhau
Trích xuất một chuỗi con từ một cột và thay thế khung dữ liệu cột
Đổi tên tên cột dựa trên giá trị của nó Pandas

Chủ Đề