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
Contenido
- 1 Eliminar palabras vac铆as con Python
- 1.0.1 Usando la biblioteca NLTK de Python
- 1.0.2 Agregar o eliminar palabras vac铆as en la lista predeterminada de palabras vac铆as de NLTK
- 1.0.3 Usando la biblioteca Gensim de Python
- 1.0.4 Adici贸n y eliminaci贸n de palabras vac铆as en la lista predeterminada de palabras vac铆as de Gensim
- 1.0.5 Uso de la biblioteca SpaCy
- 1.0.6 Adici贸n y eliminaci贸n de palabras vac铆as en la lista de palabras vac铆as predeterminada de SpaCy
- 1.0.7 Uso de un script personalizado para eliminar palabras vac铆as
- 1.0.8 Conclusi贸n
- 1.1 Te puede interesar:
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
, not
y 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.