dccuchile / beto

BETO - Spanish version of the BERT model
Creative Commons Attribution 4.0 International
488 stars 64 forks source link

Usar beto con pipeline #13

Closed ximo1984 closed 4 years ago

ximo1984 commented 4 years ago

Hola,

Al intentar utilizar los pipeline de transformers en el caso de 'fill-mask' si que funciona bien: nlp_fill = pipeline('fill-mask', model="dccuchile/bert-base-spanish-wwm-cased", tokenizer="dccuchile/bert-base-spanish-wwm-cased") nlp_fill('Mi caballo está ' + nlp_fill.tokenizer.mask_token)

[{'score': 0.3315647542476654, 'sequence': '[CLS] Mi caballo está muerto [SEP]', 'token': 3435}, {'score': 0.055828217417001724, 'sequence': '[CLS] Mi caballo está herido [SEP]', 'token': 9403}, {'score': 0.045170336961746216, 'sequence': '[CLS] Mi caballo está aquí [SEP]', 'token': 1401}, {'score': 0.03713322430849075, 'sequence': '[CLS] Mi caballo está perdido [SEP]', 'token': 5036}, {'score': 0.036504991352558136, 'sequence': '[CLS] Mi caballo está enfermo [SEP]', 'token': 8434}]

Pero en cambio en otros casos como 'sentiment-analysis' no funciona bien poniendo 'LABEL_0' y 'LABEL_1', creo que 'LABEL_0' es positivo y 'LABEL_1' negativo:

nlp_token_class = pipeline('sentiment-analysis', model="dccuchile/bert-base-spanish-wwm-cased", tokenizer="dccuchile/bert-base-spanish-wwm-cased") nlp_token_class('Que día tan malo hace')

[{'label': 'LABEL_1', 'score': 0.5785217881202698}]

josecannete commented 4 years ago

Hola @ximo1984

BETO es un modelo que fue pre-entrenado con la tarea de "fill-mask" (Masked Language Model) por lo que es razonable que funcione bien en ella (aprendió a trabajar en ella).

Si lo quieres usar para cualquier otra tarea tendrás que "fine-tunearlo" en ella. Es decir debes conseguir algún dataset para la tarea que te interese (Sentiment Analysis por ejemplo) y luego reentrenarlo en aquella tarea. Te recomiendo buscar acerca de "fine-tuning BERT" y encontrarás multiples tutoriales para lograrlo.

Saludos

ximo1984 commented 4 years ago

Gracias por contestar y disculpa la confusión. Creía que era un modelo general en español que se podía utilizar para diversas tareas. Muy buen trabajo por cierto ;).