PNL | Singularización de sustantivos en plural e intercambio de frases infinitas

Entendamos esto con un ejemplo:

  1. ¿Nuestro hijo está entrenando lo suficiente?
  2. ¿Nuestro hijo está entrenando lo suficiente?

El verbo ‘es’ solo se puede usar con sustantivos singulares. Para los sustantivos en plural, usamos ‘are’. Este problema es muy común en el mundo real y podemos corregir este error creando asignaciones de corrección de verbos que se usan dependiendo de si hay un sustantivo en plural o singular en el fragmento.

Código #1: clase singularize_plural_noun()

def singularize_plural_noun(chunk):
      
    nnsidx = first_chunk_index(chunk, tag_equals('NNS'))
      
    if nnsidx is not None and 
    nnsidx + 1 < len(chunk) and 
    chunk[nnsidx + 1][1][:2] == 'NN':
          
        noun, nnstag = chunk[nnsidx]
        chunk[nnsidx] = (noun.rstrip('s'), nnstag.rstrip('S'))
          
    return chunk

 
Código #2: Singularización de Plurales

singularize_plural_noun([('recipes', 'NNS'), ('book', 'NN')])

Producción :

[('recipe', 'NN'), ('book', 'NN')]

El código anterior busca la etiqueta NNS para buscar Sustantivo plural. Después de encontrarlo, si la siguiente palabra es un sustantivo (determinado al asegurarnos de que la etiqueta comience con NN), entonces eliminamos el plural del sustantivo eliminando la ‘s’ del lado derecho tanto de la etiqueta como de la palabra.

Intercambio de frases infinitas
Una frase en infinitivo tiene la forma A de B , como ‘world of movies’. On puede transformar esto en ‘movies world’ y aún tiene el mismo significado.

Código #3: Comprendamos la clase swap_infinitive_phrase()

def swap_infinitive_phrase(chunk):
    def inpred(wt):
        word, tag = wt
        return tag == 'IN' and word != 'like'
    
    inidx = first_chunk_index(chunk, inpred)
      
    if inidx is None:
        return chunk
      
    nnidx = first_chunk_index(chunk, 
                              tag_startswith('NN'), 
                              start = inidx, step =-1) or 0
                                
    return chunk[:nnidx] + chunk[inidx + 1:] + chunk[nnidx:inidx]

 
Código #4: Evaluemos swap_infinitive_phrase

from transforms import swap_infinitive_phrase
  
swap_infinitive_phrase([('book', 'NN'), 
                        ('of', 'IN'), ('recipes', 'NNS')])

Producción :

[('recipes', 'NNS'), ('book', 'NN')]

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

Deja una respuesta

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