Saltar al contenido

¿Cómo usar spacy en un gran conjunto de datos con oraciones cortas de manera eficiente?

Te doy la bienvenida a nuestra comunidad, ahora encontrarás la resolución a lo que estás buscando.

Solución:

Puede usar subprocesos múltiples en spacy para crear una canalización rápida de tokenización e ingesta de datos.

Reescribiendo su bloque de código y funcionalidad usando el nlp.pipe método sería algo como esto:

import spacy
nlp = spacy.load('en')

docs = df['text'].tolist()

def token_filter(token):
    return not (token.is_punct | token.is_space | token.is_stop | len(token.text) <= 4)

filtered_tokens = []
for doc in nlp.pipe(docs):
    tokens = [token.lemma_ for token in doc if token_filter(token)]
    filtered_tokens.append(tokens)

De esta manera pone todo su filtrado en el token_filter función, que toma un token espacial y devuelve True solo si no es puntuación, un espacio, una palabra vacía y 4 o menos caracteres. Luego, usa esta función a medida que pasa por cada token en cada documento, donde devolverá el lema solo si cumple con todas esas condiciones. Después, filtered_tokens es una lista de sus documentos tokenizados.

Algunas referencias útiles para personalizar esta canalización serían:

  • Simbólico attributes
  • Idioma.pipe

Debes filtrar tokens después analizando De esta manera, el modelo entrenado proporcionará un mejor etiquetado (a menos que haya sido entrenado en texto filtrado de manera similar, lo cual es poco probable). Además, el filtrado posterior permite utilizar nlp.pipe, al que se le dice que sea rápido. Ver el nlp.pipe ejemplo en http://spacy.io/usage/spacy-101#lightning-tour-multi-threaded.

Te invitamos a añadir valor a nuestra información contribuyendo tu veteranía en las anotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *