Eliminar palabras vac铆as de cadenas en Python

    En este art铆culo, ver谩 diferentes t茅cnicas para eliminar palabras vac铆as de cadenas en Python. Las palabras vac铆as son aquellas palabras en lenguaje natural que tienen muy poco significado, como “es”, “una”, “el”, etc. Los motores de b煤squeda y otras plataformas de indexaci贸n empresarial a menudo filtran las palabras vac铆as mientras obtienen resultados de la base de datos contra consultas del usuario.

    Las palabras vac铆as a menudo se eliminan del texto antes de entrenar los modelos de aprendizaje profundo y de Machine Learning, ya que las palabras vac铆as ocurren en abundancia, por lo que brindan poca o ninguna informaci贸n 煤nica que se pueda usar para la clasificaci贸n o agrupaci贸n.

    Eliminar palabras vac铆as con Python

    Con el lenguaje de programaci贸n Python, tiene una gran cantidad de opciones para usar con el fin de eliminar las palabras vac铆as de las cadenas. Puede usar una de las varias bibliotecas de procesamiento de lenguaje natural como NLTK, SpaCy, Gensim, TextBlob, etc., o si necesita un control total sobre las palabras vac铆as que desea eliminar, puede escribir su propio script personalizado.

    En este art铆culo, ver谩 varios enfoques diferentes, seg煤n la biblioteca de PNL que est茅 utilizando.

    • Stop Words con NLTK
    • Stop Words con Gensim
    • Stop Words con SpaCy

    Usando la biblioteca NLTK de Python

    los NLTK library es una de las bibliotecas de Python m谩s antiguas y utilizadas para el procesamiento del lenguaje natural. NLTK admite la eliminaci贸n de palabras vac铆as y puede encontrar la lista de palabras vac铆as en el corpus m贸dulo. Para eliminar las palabras vac铆as de una oraci贸n, puede dividir el texto en palabras y luego eliminar la palabra si aparece en la lista de palabras vac铆as proporcionada por NLTK.

    Veamos un ejemplo sencillo:

    from nltk.corpus import stopwords
    nltk.download('stopwords')
    from nltk.tokenize import word_tokenize
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    
    tokens_without_sw = [word for word in text_tokens if not word in stopwords.words()]
    
    print(tokens_without_sw)
    

    En el script anterior, primero importamos el stopwords colecci贸n de la nltk.corpus m贸dulo. A continuaci贸n, importamos el word_tokenize() m茅todo del nltk.tokenize clase. Luego creamos una variable text, que contiene una oraci贸n simple. La oraci贸n en el text La variable se tokeniza (se divide en palabras) usando el word_tokenize() m茅todo. A continuaci贸n, iteramos a trav茅s de todas las palabras en el text_tokens list y comprueba si la palabra existe en la colecci贸n de palabras vac铆as o no. Si la palabra no existe en la colecci贸n de palabras vac铆as, se devuelve y se agrega al tokens_without_sw lista. los tokens_without_sw luego se imprime la lista.

    As铆 es como se ve la oraci贸n sin las palabras vac铆as:

    ['Nick', 'likes', 'play', 'football', ',', 'however', 'fond', 'tennis', '.']
    

    Puedes ver que las palabras to, he, is, noty too han sido eliminados de la sentencia.

    Puede unirse a la lista de palabras anteriores para crear una oraci贸n sin palabras vac铆as, como se muestra a continuaci贸n:

    filtered_sentence = (" ").join(tokens_without_sw)
    print(filtered_sentence)
    

    Aqu铆 est谩 el resultado:

    Nick likes play football , however fond tennis .
    

    Agregar o eliminar palabras vac铆as en la lista predeterminada de palabras vac铆as de NLTK

    Puede agregar o eliminar palabras vac铆as seg煤n su elecci贸n a la colecci贸n existente de palabras vac铆as en NLTK. Antes de eliminar o agregar palabras vac铆as en NLTK, veamos la lista de todas las palabras vac铆as en ingl茅s admitidas por NLTK:

    print(stopwords.words('english'))
    

    Salida:

    ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't"]
    
    Adici贸n de palabras vac铆as a la lista predeterminada de palabras vac铆as NLTK

    Para agregar una palabra a la colecci贸n de palabras vac铆as NLTK, primero cree un objeto desde el stopwords.words('english') lista. A continuaci贸n, use el append() en la lista para agregar cualquier palabra a la lista.

    La siguiente secuencia de comandos agrega la palabra play a la colecci贸n de palabras vac铆as NLTK. Nuevamente, eliminamos todas las palabras de nuestro text variable para ver si la palabra play se elimina o no.

    all_stopwords = stopwords.words('english')
    all_stopwords.append('play')
    
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'likes', 'football', ',', 'however', 'fond', 'tennis', '.']
    

    La salida muestra que la palabra play ha sido removido.

    Tambi茅n puede agregar una lista de palabras al stopwords.words lista usando el append m茅todo, como se muestra a continuaci贸n:

    sw_list = ['likes','play']
    all_stopwords.extend(sw_list)
    
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    El gui贸n de arriba agrega dos palabras likes y play al stopwords.word lista. En la salida, no ver谩 estas dos palabras como se muestra a continuaci贸n:

    Salida:

    ['Nick', 'football', ',', 'however', 'fond', 'tennis', '.']
    
    Eliminaci贸n de palabras vac铆as de la lista predeterminada de palabras vac铆as NLTK

    Ya que stopwords.word('english') es simplemente una lista de elementos, puede eliminar elementos de esta lista como cualquier otra lista. La forma m谩s sencilla de hacerlo es a trav茅s del remove() m茅todo. Esto es 煤til cuando su aplicaci贸n necesita una palabra de parada para no ser eliminada. Por ejemplo, es posible que deba mantener la palabra not en una oraci贸n para saber cu谩ndo se niega una declaraci贸n.

    El siguiente script elimina la palabra de parada not de la lista predeterminada de palabras vac铆as en NLTK:

    all_stopwords = stopwords.words('english')
    all_stopwords.remove('not')
    
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'likes', 'play', 'football', ',', 'however', 'not', 'fond', 'tennis', '.']
    

    En la salida, puede ver que la palabra not no se ha eliminado de la oraci贸n de entrada.

    Usando la biblioteca Gensim de Python

    La biblioteca Gensim es otra biblioteca extremadamente 煤til para eliminar palabras vac铆as de una cadena en Python. Todo lo que tiene que hacer es importar el remove_stopwords() m茅todo del gensim.parsing.preprocessing m贸dulo. A continuaci贸n, debe pasar la oraci贸n de la que desea eliminar las palabras vac铆as, al remove_stopwords() m茅todo que devuelve una cadena de texto sin las palabras vac铆as.

    Echemos un vistazo a un ejemplo simple de c贸mo eliminar palabras vac铆as a trav茅s de la biblioteca de Gensim.

    from gensim.parsing.preprocessing import remove_stopwords
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    filtered_sentence = remove_stopwords(text)
    
    print(filtered_sentence)
    

    Salida:

    Nick likes play football, fond tennis.
    

    Es importante mencionar que el resultado despu茅s de eliminar las palabras vac铆as usando las bibliotecas NLTK y Gensim es diferente. Por ejemplo, la biblioteca Gensim consider贸 la palabra however para ser una palabra de parada, mientras que NLTK no lo hizo y, por lo tanto, no la elimin贸. Esto muestra que no existe una regla estricta sobre qu茅 es una palabra de parada y qu茅 no lo es. Todo depende de la tarea que vayas a realizar.

    En una secci贸n posterior, ver谩 c贸mo agregar o eliminar palabras vac铆as a una colecci贸n existente de palabras vac铆as en Gensim.

    Adici贸n y eliminaci贸n de palabras vac铆as en la lista predeterminada de palabras vac铆as de Gensim

    Primero echemos un vistazo a las palabras vac铆as en la biblioteca Gensim de Python:

    import gensim
    all_stopwords = gensim.parsing.preprocessing.STOPWORDS
    print(all_stopwords)
    

    Salida:

    frozenset({'her', 'during', 'among', 'thereafter', 'only', 'hers', 'in', 'none', 'with', 'un', 'put', 'hence', 'each', 'would', 'have', 'to', 'itself', 'that', 'seeming', 'hereupon', 'someone', 'eight', 'she', 'forty', 'much', 'throughout', 'less', 'was', 'interest', 'elsewhere', 'already', 'whatever', 'or', 'seem', 'fire', 'however', 'keep', 'detail', 'both', 'yourselves', 'indeed', 'enough', 'too', 'us', 'wherein', 'himself', 'behind', 'everything', 'part', 'made', 'thereupon', 'for', 'nor', 'before', 'front', 'sincere', 'really', 'than', 'alone', 'doing', 'amongst', 'across', 'him', 'another', 'some', 'whoever', 'four', 'other', 'latterly', 'off', 'sometime', 'above', 'often', 'herein', 'am', 'whereby', 'although', 'who', 'should', 'amount', 'anyway', 'else', 'upon', 'this', 'when', 'we', 'few', 'anywhere', 'will', 'though', 'being', 'fill', 'used', 'full', 'thru', 'call', 'whereafter', 'various', 'has', 'same', 'former', 'whereas', 'what', 'had', 'mostly', 'onto', 'go', 'could', 'yourself', 'meanwhile', 'beyond', 'beside', 'ours', 'side', 'our', 'five', 'nobody', 'herself', 'is', 'ever', 'they', 'here', 'eleven', 'fifty', 'therefore', 'nothing', 'not', 'mill', 'without', 'whence', 'get', 'whither', 'then', 'no', 'own', 'many', 'anything', 'etc', 'make', 'from', 'against', 'ltd', 'next', 'afterwards', 'unless', 'while', 'thin', 'beforehand', 'by', 'amoungst', 'you', 'third', 'as', 'those', 'done', 'becoming', 'say', 'either', 'doesn', 'twenty', 'his', 'yet', 'latter', 'somehow', 'are', 'these', 'mine', 'under', 'take', 'whose', 'others', 'over', 'perhaps', 'thence', 'does', 'where', 'two', 'always', 'your', 'wherever', 'became', 'which', 'about', 'but', 'towards', 'still', 'rather', 'quite', 'whether', 'somewhere', 'might', 'do', 'bottom', 'until', 'km', 'yours', 'serious', 'find', 'please', 'hasnt', 'otherwise', 'six', 'toward', 'sometimes', 'of', 'fifteen', 'eg', 'just', 'a', 'me', 'describe', 'why', 'an', 'and', 'may', 'within', 'kg', 'con', 're', 'nevertheless', 'through', 'very', 'anyhow', 'down', 'nowhere', 'now', 'it', 'cant', 'de', 'move', 'hereby', 'how', 'found', 'whom', 'were', 'together', 'again', 'moreover', 'first', 'never', 'below', 'between', 'computer', 'ten', 'into', 'see', 'everywhere', 'there', 'neither', 'every', 'couldnt', 'up', 'several', 'the', 'i', 'becomes', 'don', 'ie', 'been', 'whereupon', 'seemed', 'most', 'noone', 'whole', 'must', 'cannot', 'per', 'my', 'thereby', 'so', 'he', 'name', 'co', 'its', 'everyone', 'if', 'become', 'thick', 'thus', 'regarding', 'didn', 'give', 'all', 'show', 'any', 'using', 'on', 'further', 'around', 'back', 'least', 'since', 'anyone', 'once', 'can', 'bill', 'hereafter', 'be', 'seems', 'their', 'myself', 'nine', 'also', 'system', 'at', 'more', 'out', 'twelve', 'therein', 'almost', 'except', 'last', 'did', 'something', 'besides', 'via', 'whenever', 'formerly', 'cry', 'one', 'hundred', 'sixty', 'after', 'well', 'them', 'namely', 'empty', 'three', 'even', 'along', 'because', 'ourselves', 'such', 'top', 'due', 'inc', 'themselves'})
    

    Puede ver que la colecci贸n predeterminada de palabras vac铆as de Gensim es mucho m谩s detallada, en comparaci贸n con NLTK. Adem谩s, Gensim almacena palabras vac铆as predeterminadas en un objeto de conjunto congelado.

    Adici贸n de palabras vac铆as a la lista predeterminada de palabras vac铆as de Gensim

    Para acceder a la lista de palabras vac铆as de Gensim, debe importar el conjunto congelado STOPWORDS desde el gensim.parsing.preprocessong paquete. Un conjunto congelado en Python es un tipo de conjunto que es inmutable. No puede agregar ni eliminar elementos en un conjunto congelado. Por lo tanto, para agregar un elemento, debe aplicar el union funci贸n en el conjunto congelado y pasarle el conjunto de nuevas palabras de parada. los union devolver谩 un nuevo conjunto que contiene las palabras vac铆as reci茅n agregadas, como se muestra a continuaci贸n.

    El siguiente script agrega likes y play a la lista de palabras vac铆as en Gensim:

    from gensim.parsing.preprocessing import STOPWORDS
    
    all_stopwords_gensim = STOPWORDS.union(set(['likes', 'play']))
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords_gensim]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'football', ',', 'fond', 'tennis', '.']
    

    En el resultado anterior, puede ver que las palabras like y play se han tratado como palabras vac铆as y, en consecuencia, se han eliminado de la oraci贸n de entrada.

    Eliminaci贸n de palabras irrelevantes de la lista predeterminada de palabras irrelevantes de Gensim

    Para eliminar las palabras vac铆as de la lista de palabras vac铆as de Gensim, debe llamar al difference() en el objeto de conjunto congelado, que contiene la lista de palabras vac铆as. Debe pasar un conjunto de palabras vac铆as que desea eliminar del conjunto congelado al difference() m茅todo. los difference() El m茅todo devuelve un conjunto que contiene todas las palabras vac铆as excepto las que se pasan al difference() m茅todo.

    La siguiente secuencia de comandos elimina la palabra not del conjunto de palabras vac铆as en Gensim:

    from gensim.parsing.preprocessing import STOPWORDS
    
    all_stopwords_gensim = STOPWORDS
    sw_list = {"not"}
    all_stopwords_gensim = STOPWORDS.difference(sw_list)
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords_gensim]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'likes', 'play', 'football', ',', 'not', 'fond', 'tennis', '.']
    

    Desde la palabra not ahora se ha eliminado del conjunto de palabras vac铆as, puede ver que no se ha eliminado de la oraci贸n de entrada despu茅s de la eliminaci贸n de palabras vac铆as.

    Uso de la biblioteca SpaCy

    La biblioteca SpaCy en Python es otro lenguaje extremadamente 煤til para el procesamiento del lenguaje natural en Python.

    Para instalar SpaCy, debe ejecutar el siguiente script en su terminal de comandos:

    $ pip install -U spacy
    

    Una vez que se descarga la biblioteca, tambi茅n debe descargar el modelo de idioma. Existen varios modelos en SpaCy para diferentes idiomas. Instalaremos el modelo en ingl茅s. Ejecute el siguiente comando en su terminal:

    $ python -m spacy download en
    

    Una vez descargado el modelo de idioma, puede eliminar las palabras vac铆as del texto con SpaCy. Mira el siguiente gui贸n:

    import spacy
    sp = spacy.load('en_core_web_sm')
    
    all_stopwords = sp.Defaults.stop_words
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    tokens_without_sw= [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    En el script anterior, primero cargamos el modelo de lenguaje y lo almacenamos en el sp variable. los sp.Default.stop_words es un conjunto de palabras vac铆as predeterminadas para el modelo de idioma ingl茅s en SpaCy. A continuaci贸n, simplemente iteramos a trav茅s de cada palabra en el texto de entrada y si la palabra existe en el conjunto de palabras vac铆as del modelo de lenguaje SpaCy, la palabra se elimina.

    Aqu铆 est谩 el resultado:

    Salida:

    ['Nick', 'likes', 'play', 'football', ',', 'fond', 'tennis', '.']
    

    Adici贸n y eliminaci贸n de palabras vac铆as en la lista de palabras vac铆as predeterminada de SpaCy

    Al igual que las otras bibliotecas de PNL, tambi茅n puede agregar o eliminar palabras vac铆as de la lista predeterminada de palabras vac铆as en Spacy. Pero antes de eso, veremos una lista de todas las palabras vac铆as existentes en SpaCy.

    print(len(all_stopwords))
    print(all_stopwords)
    

    Salida:

    326
    {'whence', 'here', 'show', 'were', 'why', 'n鈥檛', 'the', 'whereupon', 'not', 'more', 'how', 'eight', 'indeed', 'i', 'only', 'via', 'nine', 're', 'themselves', 'almost', 'to', 'already', 'front', 'least', 'becomes', 'thereby', 'doing', 'her', 'together', 'be', 'often', 'then', 'quite', 'less', 'many', 'they', 'ourselves', 'take', 'its', 'yours', 'each', 'would', 'may', 'namely', 'do', 'whose', 'whether', 'side', 'both', 'what', 'between', 'toward', 'our', 'whereby', "'m", 'formerly', 'myself', 'had', 'really', 'call', 'keep', "'re", 'hereupon', 'can', 'their', 'eleven', '鈥檓', 'even', 'around', 'twenty', 'mostly', 'did', 'at', 'an', 'seems', 'serious', 'against', "n't", 'except', 'has', 'five', 'he', 'last', '鈥榲e', 'because', 'we', 'himself', 'yet', 'something', 'somehow', '鈥榤', 'towards', 'his', 'six', 'anywhere', 'us', '鈥榙', 'thru', 'thus', 'which', 'everything', 'become', 'herein', 'one', 'in', 'although', 'sometime', 'give', 'cannot', 'besides', 'across', 'noone', 'ever', 'that', 'over', 'among', 'during', 'however', 'when', 'sometimes', 'still', 'seemed', 'get', "'ve", 'him', 'with', 'part', 'beyond', 'everyone', 'same', 'this', 'latterly', 'no', 'regarding', 'elsewhere', 'others', 'moreover', 'else', 'back', 'alone', 'somewhere', 'are', 'will', 'beforehand', 'ten', 'very', 'most', 'three', 'former', '鈥檙e', 'otherwise', 'several', 'also', 'whatever', 'am', 'becoming', 'beside', '鈥檚', 'nothing', 'some', 'since', 'thence', 'anyway', 'out', 'up', 'well', 'it', 'various', 'four', 'top', '鈥榮', 'than', 'under', 'might', 'could', 'by', 'too', 'and', 'whom', '鈥榣l', 'say', 'therefore', "'s", 'other', 'throughout', 'became', 'your', 'put', 'per', "'ll", 'fifteen', 'must', 'before', 'whenever', 'anyone', 'without', 'does', 'was', 'where', 'thereafter', "'d", 'another', 'yourselves', 'n鈥榯', 'see', 'go', 'wherever', 'just', 'seeming', 'hence', 'full', 'whereafter', 'bottom', 'whole', 'own', 'empty', 'due', 'behind', 'while', 'onto', 'wherein', 'off', 'again', 'a', 'two', 'above', 'therein', 'sixty', 'those', 'whereas', 'using', 'latter', 'used', 'my', 'herself', 'hers', 'or', 'neither', 'forty', 'thereupon', 'now', 'after', 'yourself', 'whither', 'rather', 'once', 'from', 'until', 'anything', 'few', 'into', 'such', 'being', 'make', 'mine', 'please', 'along', 'hundred', 'should', 'below', 'third', 'unless', 'upon', 'perhaps', 'ours', 'but', 'never', 'whoever', 'fifty', 'any', 'all', 'nobody', 'there', 'have', 'anyhow', 'of', 'seem', 'down', 'is', 'every', '鈥檒l', 'much', 'none', 'further', 'me', 'who', 'nevertheless', 'about', 'everywhere', 'name', 'enough', '鈥檇', 'next', 'meanwhile', 'though', 'through', 'on', 'first', 'been', 'hereby', 'if', 'move', 'so', 'either', 'amongst', 'for', 'twelve', 'nor', 'she', 'always', 'these', 'as', '鈥檝e', 'amount', '鈥榬e', 'someone', 'afterwards', 'you', 'nowhere', 'itself', 'done', 'hereafter', 'within', 'made', 'ca', 'them'}
    

    El resultado muestra que hay 326 palabras vac铆as en la lista predeterminada de palabras vac铆as en la biblioteca SpaCy.

    Adici贸n de palabras vac铆as a la lista predeterminada de palabras vac铆as SpaCy

    La lista de palabras de detenci贸n de SpaCy es b谩sicamente un conjunto de cadenas. Puede agregar una nueva palabra al conjunto como agregar铆a cualquier elemento nuevo a un conjunto.

    Mira el siguiente script en el que agregamos la palabra tennis a la lista existente de palabras vac铆as en Spacy:

    import spacy
    sp = spacy.load('en_core_web_sm')
    
    all_stopwords = sp.Defaults.stop_words
    all_stopwords.add("tennis")
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'likes', 'play', 'football', ',', 'fond', '.']
    

    La salida muestra que la palabra tennis se ha eliminado de la oraci贸n de entrada.

    Tambi茅n puede agregar varias palabras a la lista de palabras vac铆as en SpaCy como se muestra a continuaci贸n. El siguiente script agrega likes y tennis a la lista de palabras vac铆as en SpaCy:

    import spacy
    sp = spacy.load('en_core_web_sm')
    
    all_stopwords = sp.Defaults.stop_words
    all_stopwords |= {"likes","tennis",}
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'play', 'football', ',', 'fond', '.']
    

    La salida muestra las palabras likes y tennis ambos se han eliminado de la oraci贸n de entrada.

    Eliminaci贸n de palabras vac铆as de la lista predeterminada de palabras vac铆as SpaCy

    Para eliminar una palabra del conjunto de palabras vac铆as en SpaCy, puede pasar la palabra para eliminar al remove m茅todo del conjunto.

    La siguiente secuencia de comandos elimina la palabra not del conjunto de palabras vac铆as en SpaCy:

    import spacy
    sp = spacy.load('en_core_web_sm')
    
    all_stopwords = sp.Defaults.stop_words
    all_stopwords.remove('not')
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    text_tokens = word_tokenize(text)
    tokens_without_sw = [word for word in text_tokens if not word in all_stopwords]
    
    print(tokens_without_sw)
    

    Salida:

    ['Nick', 'play', 'football', ',', 'not', 'fond', '.']
    

    En la salida, puede ver que la palabra not no se ha eliminado de la oraci贸n de entrada.

    Uso de un script personalizado para eliminar palabras vac铆as

    En la secci贸n anterior, vio c贸mo podemos usar varias bibliotecas para eliminar palabras vac铆as de una cadena en Python. Si desea un control total sobre la eliminaci贸n de palabras vac铆as, puede escribir su propio script para eliminar las palabras vac铆as de su cadena.

    El primer paso en este sentido es definir una lista de palabras que desea que se traten como palabras vac铆as. Creemos una lista de algunas de las palabras vac铆as m谩s utilizadas:

    my_stopwords = ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't"]
    

    A continuaci贸n, definiremos una funci贸n que aceptar谩 una cadena como par谩metro y devolver谩 la oraci贸n sin las palabras vac铆as:

    def remove_mystopwords(sentence):
        tokens = sentence.split(" ")
        tokens_filtered= [word for word in text_tokens if not word in my_stopwords]
        return (" ").join(tokens_filtered)
    

    Intentemos ahora eliminar las palabras vac铆as de una oraci贸n de muestra:

    text = "Nick likes to play football, however he is not too fond of tennis."
    filtered_text = remove_mystopwords(text)
    print(filtered_text)
    

    Salida:

    Nick likes play , however fond tennis .
    

    Puedes ver que las palabras vac铆as que existen en el my_stopwords La lista se ha eliminado de la oraci贸n de entrada.

    Ya que my_stopwords list es una lista simple de cadenas, puede agregar o quitar palabras en ella. Por ejemplo, agreguemos una palabra football en la lista de my_stopwords y nuevamente elimine las palabras vac铆as de la oraci贸n de entrada:

    text = "Nick likes to play football, however he is not too fond of tennis."
    filtered_text = remove_mystopwords(text)
    print(filtered_text)
    

    Salida:

    Nick likes play , however fond tennis .
    

    La salida ahora muestra que la palabra football tambi茅n se elimina de la oraci贸n de entrada cuando agregamos la palabra en la lista de nuestras palabras vac铆as personalizadas.

    Quitemos ahora la palabra football de la lista de palabras vac铆as y nuevamente aplique la eliminaci贸n de palabras vac铆as a nuestra oraci贸n de entrada:

    my_stopwords.remove("football")
    
    text = "Nick likes to play football, however he is not too fond of tennis."
    filtered_text = remove_mystopwords(text)
    print(filtered_text)
    

    Salida:

    Nick likes play football , however fond tennis .
    

    La palabra football no se ha eliminado ahora desde que lo eliminamos de la lista de nuestra lista de palabras vac铆as.

    Conclusi贸n

    En este art铆culo, vio diferentes bibliotecas que se pueden usar para eliminar palabras vac铆as de una cadena en Python. Tambi茅n vio c贸mo agregar o eliminar palabras vac铆as de las listas de palabras vac铆as predeterminadas proporcionadas por varias bibliotecas. Al final, mostramos c贸mo se puede hacer esto si tiene un script personalizado utilizado para eliminar palabras vac铆as.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *