¿Por qué necesitamos entrenar un tokenizador de oraciones?
En NLTK, el tokenizador de oraciones predeterminado funciona para fines generales y funciona muy bien. Pero hay posibilidades de que no funcione mejor para algún tipo de texto, ya que ese texto puede usar una puntuación no estándar o tal vez tenga un formato único. Entonces, para manejar tales casos, el tokenizador de oraciones de entrenamiento puede resultar en una tokenización de oraciones mucho más precisa.
Consideremos el siguiente texto para la comprensión del concepto. Este tipo de texto es muy común en el caso de cualquier corpus de texto web.
Example of TEXT: A guy: So, what are your plans for the party? B girl: well! I am not going! A guy: Oh, but u should enjoy.
Para descargar el archivo de texto, haga clic aquí .
Código #1: Tokenizador de Entrenamiento
# Loading Libraries from nltk.tokenize import PunktSentenceTokenizer from nltk.corpus import webtext text = webtext.raw('C:\\Geeksforgeeks\\data_for_training_tokenizer.txt') sent_tokenizer = PunktSentenceTokenizer(text) sents_1 = sent_tokenizer.tokenize(text) print(sents_1[0]) print("\n"sents_1[678])
Producción:
'White guy: So, do you have any plans for this evening?' 'Hobo: Got any spare change?'
Código n.º 2: Tokenizador de oraciones predeterminado
from nltk.tokenize import sent_tokenize sents_2 = sent_tokenize(text) print(sents_2[0]) print("\n"sents_2[678])
Producción:
'White guy: So, do you have any plans for this evening?' 'Girl: But you already have a Big Mac...\r\nHobo: Oh, this is all theatrical.'
Esta diferencia en el segundo resultado es una buena demostración de por qué puede ser útil entrenar su propio tokenizador de oraciones, especialmente cuando su texto no tiene la estructura típica de párrafo-oración.
¿Cómo funciona el entrenamiento?
El PunktSentenceTokenizer class
sigue un algoritmo de aprendizaje no supervisado para aprender lo que constituye un salto de oración. No está supervisado porque no es necesario proporcionar ningún dato de entrenamiento etiquetado, solo texto sin procesar.
Filtrado de palabras vacías en una oración tokenizada
Las palabras vacías son palabras comunes que están presentes en el texto pero que generalmente no contribuyen al significado de una oración. Casi no tienen importancia a los efectos de la recuperación de información y el procesamiento del lenguaje natural. Por ejemplo, ‘el’ y ‘a’. La mayoría de los motores de búsqueda filtrarán las palabras vacías de las consultas y documentos de búsqueda.
La biblioteca NLTK viene con un corpus de palabras vacías, nltk_data/corpora/stopwords/
que contiene listas de palabras para muchos idiomas.
Código #3: palabras vacías con Python
# Loading Library from nltk.corpus import stopwords # Using stopwords from English Languages english_stops = set(stopwords.words('english')) # Printing stopword list present in English words = ["Let's", 'see', 'how', "it's", 'working'] print ("Before stopwords removal: ", words) print ("\nAfter stopwords removal : ", [word for word in words if word not in english_stops])
Producción:
Before stopwords removal: ["Let's", 'see', 'how', "it's", 'working'] After stopwords removal : ["Let's", 'see', 'working'] ?
Código n.º 4: lista completa de idiomas utilizados en las palabras vacías de NLTK.
stopwords.fileids()
Producción:
['danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'portuguese', 'russian', 'spanish', 'swedish', 'turkish']
Publicación traducida automáticamente
Artículo escrito por Mohit Gupta_OMG 🙂 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA