Identificación de lenguajes de programación

philomath-1209
Clasificación de texto

Este modelo es una versión ajustada de huggingface/CodeBERTa-small-v1 en el conjunto de datos cakiki/rosetta-code para 26 lenguajes de programación. El modelo está entrenado para clasificar fragmentos de código en su respectivo lenguaje de programación.

Como usar

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TextClassificationPipeline

model_name = 'philomath-1209/programming-language-identification'
loaded_tokenizer = AutoTokenizer.from_pretrained(model_name)
loaded_model = AutoModelForSequenceClassification.from_pretrained(model_name)


device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
text = """
PROGRAM Triangle
IMPLICIT NONE
REAL :: a, b, c, Area
PRINT *, 'Welcome, please enter the&
&lengths of the 3 sides.'
READ *, a, b, c
PRINT *, 'Triangle''s area:  ', Area(a,b,c)
END PROGRAM Triangle
FUNCTION Area(x,y,z)
IMPLICIT NONE
REAL :: Area            ! function type
REAL, INTENT( IN ) :: x, y, z
REAL :: theta, height
theta = ACOS((x**2+y**2-z**2)/(2.0*x*y))
height = x*SIN(theta); Area = 0.5*y*height
END FUNCTION Area

"""
inputs = loaded_tokenizer(text, return_tensors="pt", truncation=True)
with torch.no_grad():
    logits = loaded_model(**inputs).logits
    predicted_class_id = logits.argmax().item()
loaded_model.config.id2label[predicted_class_id]
import torch
from transformers import pipeline, AutoTokenizer
from optimum.onnxruntime import ORTModelForSequenceClassification

model_path = "philomath-1209/programming-language-identification"

import torch
from transformers import pipeline, AutoTokenizer

from optimum.onnxruntime import ORTModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained(model_path, subfolder="onnx")
model = ORTModelForSequenceClassification.from_pretrained(model_path, export=False, subfolder="onnx")

text = """
PROGRAM Triangle
IMPLICIT NONE
REAL :: a, b, c, Area
PRINT *, 'Welcome, please enter the&
&lengths of the 3 sides.'
READ *, a, b, c
PRINT *, 'Triangle''s area:  ', Area(a,b,c)
END PROGRAM Triangle
FUNCTION Area(x,y,z)
IMPLICIT NONE
REAL :: Area            ! function type
REAL, INTENT( IN ) :: x, y, z
REAL :: theta, height
theta = ACOS((x**2+y**2-z**2)/(2.0*x*y))
height = x*SIN(theta); Area = 0.5*y*height
END FUNCTION Area

"""
inputs = tokenizer(text, return_tensors="pt", truncation=True)
with torch.no_grad():
    logits = model(**inputs).logits
    predicted_class_id = logits.argmax().item()
model.config.id2label[predicted_class_id]

Funcionalidades

Clasificación de texto
Basado en Transformers
Compatibilidad con ONNX
Uso de Safetensors

Casos de uso

Identificación del lenguaje de programación en fragmentos de código.
Clasificación automática de código fuente por lenguaje.
Investigación y análisis de proyectos de software.