Entendamos esto con un ejemplo:
- ¿Nuestro hijo está entrenando lo suficiente?
- ¿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: Definición de las asignaciones de corrección de verbos
# singular to plural mapping plural_verb_forms = { ('is', 'VBZ'): ('are', 'VBP'), ('was', 'VBD'): ('were', 'VBD') } # plural to singular mapping singular_verb_forms = { ('are', 'VBP'): ('is', 'VBZ'), ('were', 'VBD'): ('was', 'VBD') }
Estamos buscando en el fragmento la posición de la primera palabra etiquetada usando el método first_chunk_index(). Este método tenía un parámetro ‘pred’ que toma una tupla (palabra, etiqueta) y devuelve Verdadero o Falso.
Código #2: first_chunk_index()
def first_chunk_index(chunk, pred, start = 0, step = 1): l = len(chunk) end = l if step > 0 else -1 for i in range(start, end, step): if pred(chunk[i]): return i return None
La función de predicado en el código a continuación devuelve True si la etiqueta en el argumento (palabra, etiqueta) comienza con un prefijo de etiqueta dado. De lo contrario, falso.
Código #3:
def tag_startswith(prefix): def f(wt): return wt[1].startswith(prefix) return f
Código #4: Corrijamos las formas verbales
from transforms import correct_verbs print ("Corrected verb forms : \n", correct_verbs([('is', 'VBZ'), ('our', 'PRP$'), ('children', 'NNS'), ('learning', 'VBG')]))
Producción :
Corrected verb forms : [('are', 'VBP'), ('our', 'PRP$'), ('children', 'NNS'), ('learning', 'VBG')]
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