Eliminar palabras vacías de cadenas en Python

E

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’t', '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', '’m', 'even', 'around', 'twenty', 'mostly', 'did', 'at', 'an', 'seems', 'serious', 'against', "n't", 'except', 'has', 'five', 'he', 'last', '‘ve', 'because', 'we', 'himself', 'yet', 'something', 'somehow', '‘m', 'towards', 'his', 'six', 'anywhere', 'us', '‘d', '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', '’re', 'otherwise', 'several', 'also', 'whatever', 'am', 'becoming', 'beside', '’s', 'nothing', 'some', 'since', 'thence', 'anyway', 'out', 'up', 'well', 'it', 'various', 'four', 'top', '‘s', 'than', 'under', 'might', 'could', 'by', 'too', 'and', 'whom', '‘ll', 'say', 'therefore', "'s", 'other', 'throughout', 'became', 'your', 'put', 'per', "'ll", 'fifteen', 'must', 'before', 'whenever', 'anyone', 'without', 'does', 'was', 'where', 'thereafter', "'d", 'another', 'yourselves', 'n‘t', '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', '’ll', 'much', 'none', 'further', 'me', 'who', 'nevertheless', 'about', 'everywhere', 'name', 'enough', '’d', 'next', 'meanwhile', 'though', 'through', 'on', 'first', 'been', 'hereby', 'if', 'move', 'so', 'either', 'amongst', 'for', 'twelve', 'nor', 'she', 'always', 'these', 'as', '’ve', 'amount', '‘re', '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.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad