Eliminar palabras vacías de cadenas en Python

En este artículo, verá cómo eliminar palabras vacías utilizando las bibliotecas NLTK, Gensim y SpaCy de Python junto con un script personalizado para eliminar palabras vacías.

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", "un", "el", etc. Los motores de búsqueda y otras plataformas de indexación empresarial a menudo filtran las palabras vacías mientras obtener resultados de la base de datos contra las consultas de los usuarios.

Las palabras vacías a menudo se eliminan del texto antes de entrenar los modelos de aprendizaje profundo y de aprendizaje automático, ya que las palabras vacías aparecen en abundancia, por lo que proporcionan poca o ninguna información única que pueda usarse para clasificar o agrupar.

Eliminación de palabras vacías con Python

Con el lenguaje de programación Python, tiene una miríada de opciones para usar para 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 propia secuencia de comandos personalizada.

En este artículo, verá varios enfoques diferentes, según la biblioteca de PNL que esté utilizando.

Uso de la biblioteca NLTK de Python

La biblioteca NLTK es una de las bibliotecas de Python más antiguas y más 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 módulo corpus. Para eliminar palabras vacías de una oración, puede dividir el texto en palabras y luego eliminar la palabra si existe en la lista de palabras vacías proporcionada por NLTK.

Veamos un ejemplo sencillo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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 la colección stopwords del módulo nltk.corpus. A continuación, importamos el método word_tokenize() de la clase nltk.tokenize. Luego creamos una variable ’texto’, que contiene una oración simple. La oración en la variable texto se tokeniza (divide en palabras) usando el método word_tokenize(). A continuación, iteramos a través de todas las palabras en la lista text_tokens y verificamos 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 a la lista tokens_without_sw. A continuación, se imprime la lista tokens_without_sw.

Así es como se ve la oración sin las palabras vacías:

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

Puedes ver que las palabras to, he, is, not y too han sido eliminadas de la oración.

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

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

Aquí está la salida:

1
Nick likes play football , however fond tennis .

Adición o eliminación de 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:

1
print(stopwords.words('english'))

Producción:

1
['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 de palabras vacías NLTK predeterminada

Para agregar una palabra a la colección de palabras vacías de NLTK, primero cree un objeto de la lista stopwords.words('english'). Luego, use el método append() en la lista para agregar cualquier palabra a la lista.

La siguiente secuencia de comandos agrega la palabra “reproducir” a la colección de palabras vacías de NLTK. Nuevamente, eliminamos todas las palabras de nuestra variable text para ver si la palabra play se elimina o no.

1
2
3
4
5
6
7
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)

Producción:

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

El resultado muestra que se ha eliminado la palabra play.

También puede agregar una lista de palabras a la lista stopwords.words usando el método append, como se muestra a continuación:

1
2
3
4
5
6
7
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 script anterior agrega dos palabras me gusta y play a la lista stopwords.word. En la salida, no verá estas dos palabras como se muestra a continuación:

Producción:

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

Dado 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 mediante el método remove(). Esto es útil cuando su aplicación necesita una palabra vacía para no ser eliminada. Por ejemplo, es posible que deba mantener la palabra “no” en una oración para saber cuándo se niega una declaración.

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

1
2
3
4
5
6
7
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)

Producción:

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

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

Uso de 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 método remove_stopwords() desde el módulo gensim.parsing.preprocessing. A continuación, debe pasar la oración de la que desea eliminar las palabras vacías al método remove_stopwords() 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 Gensim.

1
2
3
4
5
6
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)

Producción:

1
Nick likes play football, fond tennis.

Es importante mencionar que el resultado después de eliminar las palabras vacías con las bibliotecas NLTK y Gensim es diferente. Por ejemplo, la biblioteca Gensim consideró que la palabra “sin embargo” era una palabra vacía, mientras que NLTK no lo hizo y, por lo tanto, no la eliminó. Esto demuestra que no existe una regla estricta y rápida sobre qué es una palabra vacía 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:

1
2
3
import gensim
all_stopwords = gensim.parsing.preprocessing.STOPWORDS
print(all_stopwords)

Producción:

1
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 del paquete gensim.parsing.preprocessong. Un conjunto congelado en Python es un tipo de conjunto que es inmutable. No puede agregar o eliminar elementos en un conjunto congelado. Por lo tanto, para agregar un elemento, debe aplicar la función ‘unión’ en el conjunto congelado y pasarle el conjunto de nuevas palabras vacías. El método union devolverá un nuevo conjunto que contiene las palabras vacías recién agregadas, como se muestra a continuación.

El siguiente script agrega “me gusta” y “reproducir” a la lista de palabras vacías en Gensim:

1
2
3
4
5
6
7
8
9
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)

Producción:

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

En el resultado anterior, puede ver que las palabras “me gusta” y “jugar” se han tratado como palabras vacías y, en consecuencia, se han eliminado de la oración de entrada.

Eliminación de palabras vacías de la lista predeterminada de palabras vacías de Gensim

Para eliminar las palabras vacías de la lista de palabras vacías de Gensim, debe llamar al método difference() en el objeto del 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 método difference(). El método difference() devuelve un conjunto que contiene todas las palabras vacías excepto las que se pasan al método difference().

El siguiente script elimina la palabra not del conjunto de palabras vacías en Gensim:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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)

Producción:

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

Dado que la palabra not ahora se eliminó del conjunto de palabras vacías, puede ver que no se eliminó de la oración de entrada después de eliminar la palabra vacía.

Uso de la biblioteca SpaCy

La SpaCy-library 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 comando:

1
$ pip install -U spacy

Una vez descargada la biblioteca, también debe descargar el modelo de lenguaje. Existen varios modelos en SpaCy para diferentes idiomas. Instalaremos el modelo de idioma inglés. Ejecuta el siguiente comando en tu terminal:

1
$ python -m spacy download en

Una vez que se descarga el modelo de lenguaje, puede eliminar las palabras vacías del texto usando SpaCy. Mira el siguiente guión:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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 la variable sp. 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á la salida:

Producción:

1
['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 NLP, 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.

1
2
print(len(all_stopwords))
print(all_stopwords)

Producción:

1
2
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 de SpaCy.

Adición de palabras vacías a la lista predeterminada de palabras vacías SpaCy

La lista de palabras vacías de SpaCy es básicamente un conjunto de cadenas. Puede agregar una palabra nueva al conjunto como si agregara cualquier elemento nuevo a un conjunto.

Mire el siguiente script en el que agregamos la palabra tenis a la lista existente de palabras vacías en Spacy:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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)

Producción:

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

El resultado muestra que la palabra “tenis” 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 “me gusta” y “tenis” a la lista de palabras vacías en SpaCy:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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)

Producción:

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

La salida muestra que las palabras “me gusta” y “tenis” se han eliminado de la oración de entrada.

Eliminación de palabras vacías de la lista predeterminada de palabras vacías de SpaCy

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

El siguiente script elimina la palabra not del conjunto de palabras vacías en SpaCy:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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)

Producción:

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

En el resultado, puede ver que la palabra “no” no se ha eliminado de la oración de entrada.

Uso de secuencias de comandos personalizadas 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 tratar como palabras vacías. Vamos a crear una lista de algunas de las palabras vacías más utilizadas:

1
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:

1
2
3
4
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:

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

Producción:

1
Nick likes play , however fond tennis .

Puede ver que las palabras vacías que existen en la lista my_stopwords se han eliminado de la oración de entrada.

Dado que la lista my_stopwords es una lista simple de cadenas, puede agregar o eliminar palabras en ella. Por ejemplo, agreguemos una palabra fútbol en la lista de my_stopwords y nuevamente eliminemos las palabras vacías de la oración de entrada:

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

Producción:

1
Nick likes play , however fond tennis .

El resultado ahora muestra que la palabra “fútbol” también se eliminó de la oración de entrada cuando agregamos la palabra en la lista de nuestras palabras vacías personalizadas.

Eliminemos ahora la palabra fútbol de la lista de palabras vacías y apliquemos de nuevo la eliminación de palabras vacías a nuestra oración de entrada:

1
2
3
4
5
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)

Producción:

1
Nick likes play football , however fond tennis .

La palabra fútbol no se ha eliminado ahora desde que la eliminamos de la 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 listas de palabras vacías predeterminadas proporcionadas por varias bibliotecas. Al final, mostramos cómo se puede hacer esto si tiene un script personalizado para eliminar palabras vacías.