es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo traduciría “corpus to text with nltk” al español?

Hola, descargué un corpus utilizando NLTK.

phrase = nltk.corpus.conll2002.iob_sents('esp.testb')[0]

Eso devuelve:

[(‘La’, ‘DA’, ‘B-LOC’), (‘Coruña’, ‘NC’, ‘I-LOC’), (‘,’, ‘Fc’, ‘O’),
(’23’, ‘Z’, ‘O’), (‘may’, ‘NC’, ‘O’), (‘(‘, ‘Fpa’, ‘O’), (‘EFECOM’,
‘NP’, ‘B-ORG’),

La pregunta es cómo puedo obtener la oración completa. Estoy utilizando el siguiente código:

' '.join([w[0] for w in phrase])
phrase = ' '.join([w[0] for w in phrase])

Pero obtengo esto:

‘La Coruña , 23 may ( EFECOM ) .’

En lugar de:

‘La Coruña, 23 may (EFECOM).’

¿Cómo puedo obtener la segunda oración?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la segunda oración con la puntuación adecuada, puedes modificar el código de la siguiente manera:

    ' '.join([w[0] + (' ' if (i+1 < len(frase) and not frase[i+1][0] in ".!?") else "") for i, w in enumerate(frase)])
    

    Este código agrega un espacio después de cada palabra a menos que la siguiente palabra sea un símbolo de puntuación. Esto asegura que la puntuación esté correctamente adjunta a la palabra anterior, resultando en la estructura de oración correcta.

    El resultado de este código modificado debería ser:

    ‘La Coruña, 23 mayo (EFECOM).’

Comments are closed.