Spacy - juan975/Practicum-1.2 GitHub Wiki

Proporciona funcionalidades avanzadas para el procesamiento de texto, incluyendo el manejo de corpus. Puede cargar y procesar grandes cantidades de texto de manera eficiente, lo que lo hace útil para trabajar con corpus extensos. Además, SpaCy ofrece modelos pre-entrenados en diversos idiomas que pueden ser útiles para analizar corpus en diferentes lenguajes.

Anotaciones Lingüísticas

spaCy proporciona una variedad de anotaciones lingüísticas para brindarle información sobre la estructura gramatical de un texto . Esto incluye los tipos de palabras, como las partes del discurso, y cómo se relacionan las palabras entre sí. Por ejemplo, si estás analizando texto, hace una gran diferencia si un sustantivo es el sujeto de una oración o el objeto, o si "google" se usa como verbo o se refiere al sitio web o a la empresa de una manera específica. contexto.

Una vez que haya descargado e instalado una canalización entrenada, puede cargarla a través de spacy.load. Esto devolverá un Languageobjeto que contiene todos los componentes y datos necesarios para procesar el texto. Generalmente lo llamamos nlp. Llamar al nlpobjeto en una cadena de texto devolverá un procesado Doc:

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for token in doc:
    print(token.text, token.pos_, token.dep_)

Tokenización

Durante el procesamiento, spaCy primero tokeniza el texto, es decir, lo segmenta en palabras, puntuación, etc. Esto se hace aplicando reglas específicas de cada idioma.

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for token in doc:
    print(token.text)

Etiquetas y dependencias de parte del discruso

Después de la tokenización, spaCy puede analizar y etiquetar un archivo Doc. Aquí es donde entran en juego la canalización entrenada y sus modelos estadísticos, que permiten a spaCy hacer predicciones sobre qué etiqueta o etiqueta es más probable que se aplique en este contexto. Un componente entrenado incluye datos binarios que se producen mostrando a un sistema suficientes ejemplos para que pueda hacer predicciones que se generalicen en todo el idioma; por ejemplo, una palabra que sigue a "the" en inglés probablemente sea un sustantivo.

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")

for token in doc:
    print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
            token.shape_, token.is_alpha, token.is_stop)

Entidades nombradas

Una entidad con nombre es un “objeto del mundo real” al que se le asigna un nombre (por ejemplo, una persona, un país, un producto o el título de un libro). spaCy puede reconocer varios tipos de entidades nombradas en un documento, solicitando al modelo una predicción . Debido a que los modelos son estadísticos y dependen en gran medida de los ejemplos en los que fueron entrenados, esto no siempre funciona perfectamente y es posible que necesite algunos ajustes más adelante, según su caso de uso.

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")

for ent in doc.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)

Comparación de dos textos

spaCy es capaz de comparar dos objetos y hacer una predicción de qué tan similares son . Predecir la similitud es útil para crear sistemas de recomendación o marcar duplicados. Por ejemplo, puede sugerir un contenido de usuario que sea similar al que está viendo actualmente o etiquetar un ticket de soporte como duplicado si es muy similar a uno ya existente.

Cada "Doc", "Span", "Token" y "Lexeme" viene con un "similarity" método que le permite compararlo con otro objeto y determinar la similitud. Por supuesto, la similitud siempre es subjetiva: si dos palabras, espacios o documentos son similares realmente depende de cómo se mire. La implementación de similitud de spaCy generalmente asume una definición de similitud de propósito bastante general.

import spacy

nlp = spacy.load("en_core_web_md")  # asegurarse de usar el corpus largo
doc1 = nlp("I like salty fries and hamburgers.")
doc2 = nlp("Fast food tastes very good.")

# Similitud entre dos documentos
print(doc1, "<->", doc2, doc1.similarity(doc2))
# Similitud entre tokens y spans
french_fries = doc1[2:4]
burgers = doc1[5]
print(french_fries, "<->", burgers, french_fries.similarity(burgers))