ESPACIO: Procesamiento de tuberías

registro de aprendizaje espacial



Prefacio

Por ejemplo: utilicé la biblioteca spaCy en mis estudios hoy. A menudo encontré esta biblioteca antes, pero no había ningún sistema para registrar el problema. Usaré esta serie de artículos como nota en el futuro. Si encuentro el mismo problema en el futuro, lo comprobaré de nuevo.

1. ¿Qué es spaCy?

Ejemplo: spaCy es un conjunto de herramientas de procesamiento de lenguaje natural de grado industrial. Para obtener más detalles, consulte el enlace aquí. Aquí, escribirá la primera parte del texto procesado y luego lo verá más adelante.

二 、 Procesando texto

1. Introducción al concepto

Al llamar a nlp en el texto, spaCy primero tokeniza el texto para generar un objeto Doc. Este Doc procesa el documento a través de varios pasos diferentes, esto también se denomina canalización de procesamiento. La canalización utilizada por el modelo predeterminado consta de un etiquetador, analizador y reconocedor de entidades (etiquetador, analizador, reconocedor de entidades). Cada componente de canalización devuelve el documento procesado, que luego se pasa al siguiente componente.
Inserte la descripción de la imagen aquí
La canalización de procesamiento siempre depende del modelo estadístico y sus funciones. Por ejemplo, si un modelo de canalización solo contiene datos para la predicción mediante etiquetas de entidad, la canalización solo puede contener componentes de reconocimiento de entidad. Es por eso que cada modelo especificará la canalización a usar en sus metadatos.

Este es un ejemplo con una lista simple de componentes:

"pipeline": ["tagger", "parser", "ner"]

Nota: Los anteriores son independientes entre sí. Si algunos componentes escritos por usted mismo no tienen dependencias, no necesita importar todos los componentes

El tokenizador es un componente especial, no es parte de la canalización regular, no aparecerá cuando se use nlp.pipe_name. Es solo un tokenizador y todos los documentos lo devolverán. También puede personalizar el tokenizador generado, nlp.tokenizer se puede escribir

2.Procesamiento de texto

Cuando se llama a nlp en el texto, spaCy lo tokenizará y luego llamará a cada componente del documento por turno. Luego, regrese al documento procesado que se puede usar.
El código es el siguiente (ejemplo):

doc = nlp("This is a text")

En este momento, documento significa "Este es un texto" que se ha procesado.

Cuando se procesan grandes cantidades de texto, si los modelos estadísticos pueden procesar lotes de texto, suelen ser más eficientes. El método nlp.pipe de spaCy toma texto iterable y genera objetos Doc procesados. El procesamiento por lotes se realiza internamente.

Los siguientes son dos métodos de procesamiento, el segundo es más eficiente

texts = ["This is a text", "These are lots of texts", "..."]
- docs = [nlp(text) for text in texts]
+ docs = list(nlp.pipe(texts))

A continuación se muestra un ejemplo de reconocimiento de entidad con nombre, que explica

import spacy
texts = [
    "Net income was $9.4 million compared to the prior year of $2.7 million.",
    "Revenue exceeded twelve billion dollars, with a loss of $1b.",
]
nlp = spacy.load("en_core_web_sm")
for doc in nlp.pipe(texts, disable=["tagger", "parser"]):
    # Do something with the doc here
    print([(ent.text, ent.label_) for ent in doc.ents])
    
-----------------------------------------------------------------------------------
[('$9.4 million', 'MONEY'), ('the prior year', 'DATE'), ('$2.7 million', 'MONEY')]
[('twelve billion dollars', 'MONEY'), ('1b', 'MONEY')]

3.Cómo funcionan las tuberías

El uso de spaCy no solo puede crear fácilmente tuberías reutilizables; esto incluye el etiquetador, analizador y reconocedor de entidades predeterminados de spaCy, sino que también incluye sus propias funciones de procesamiento personalizadas. Especifique cuándo se inicializa la clase de idioma, el componente de canalización puede agregarse a un objeto nlp existente o definirse en el paquete del modelo .

Cuando carga un modelo, spaCy primero consulta el meta.json del modelo . Los metadatos generalmente incluyen detalles del modelo, ID de clase de idioma y una lista de componentes de canalización opcional. Luego, spaCy hace lo siguiente:

  1. Cargue la clase de idioma y los datos del ID dado a través de get_lang_class e inicialícelo . La clase de idioma incluye vocabulario compartido (vocabulario), reglas de tokenización (tokenización) y esquema de anotación específico del idioma (el esquema de anotación específico del idioma).
  2. Repita todos los nombres de canalizaciones y use create_pipe para crear cada componente. Create_pipe los buscará en Language.factories .
  3. Agregue cada componente de la tubería a la tubería en orden, use add_pipe
  4. Al llamar a from_disk con la ruta del directorio de datos del modelo , los datos del modelo ** (datos del modelo) ** están disponibles para la clase de idioma.

Por lo tanto, cuando usa

nlp = spacy.load("en_core_web_sm")

… El meta.json de este modelo le dirá a spaCy que use el lenguaje "en" y la canalización ["tagger", "parser", "ner"]. spaCy inicializará spacy.lang.en.English . Y cree cada componente de la canalización y agréguelo al canal de procesamiento. Luego, cargará los datos del modelo desde su directorio de datos y devolverá la clase Language modificada para que la use como un objeto nlp .

META.JSON (EXCERPT)
{
    
    
  "lang": "en",
  "name": "core_web_sm",
  "description": "Example model for spaCy",
  "pipeline": ["tagger", "parser", "ner"]
}

continuará…

para resumir

Hoy usé la biblioteca spaCy una vez. La resumiré por primera vez. Tendré tiempo para traducir algunas otras guías. La dirección que leí hoy está aquí https://spacy.io/usage/processing-pipelines#plugins

Supongo que te gusta

Origin blog.csdn.net/qq_42388742/article/details/112095021
Recomendado
Clasificación