| extract_relations_mrebel |
function |
py |
datascience |
1.0.0 |
impure |
def extract_relations_mrebel(text: str, entities: list[EntityCandidate], tokenizer: Any, model: Any, src_lang: str = 'es_XX', sentence_split_re: str = r'(?<=[.!?])\s+', min_sentence_chars: int = 20, num_beams: int = 4, max_length: int = 256) -> list[RelationCandidate] |
Extrae relaciones entre entidades usando mREBEL (seq2seq multilingue). Divide el texto por oraciones, genera triplets con mREBEL, parsea con parse_rebel_output y alinea a entidades conocidas con align_relations_to_entities. Drop-in con extract_relations_glirel para benchmarks. |
| mrebel |
| relation-extraction |
| nlp |
| extract |
| knowledge-graph |
| seq2seq |
| multilingual |
| datascience |
| python |
| pendiente-usar |
|
| mrebel_load_model_py_datascience |
| parse_rebel_output_py_datascience |
| align_relations_to_entities_py_datascience |
|
| entity_candidate_py_datascience |
| relation_candidate_py_datascience |
|
| relation_candidate_py_datascience |
|
false |
error_go_core |
|
| name |
desc |
| text |
texto fuente en el idioma de src_lang (mismo chunk usado para extraer las entidades) |
|
| name |
desc |
| entities |
entidades ya extraidas de este texto (de extract_entities_gliner o similar). Solo se conservan relaciones entre entidades de esta lista. |
|
| name |
desc |
| tokenizer |
tokenizer mREBEL cargado con mrebel_load_model — inyectado por el caller para evitar re-carga en batch |
|
| name |
desc |
| model |
modelo mREBEL cargado con mrebel_load_model — inyectado por el caller |
|
| name |
desc |
| src_lang |
informativo — el idioma con que se cargo el tokenizer (ej. 'es_XX'). No se usa en runtime. |
|
| name |
desc |
| sentence_split_re |
patron regex para dividir el texto en oraciones. Defecto: split despues de [.!?] seguido de espacio. |
|
| name |
desc |
| min_sentence_chars |
longitud minima de caracteres para procesar una oracion. Fragmentos mas cortos se saltan (defecto 20). |
|
| name |
desc |
| num_beams |
ancho del beam search para model.generate (defecto 4) |
|
| name |
desc |
| max_length |
longitud maxima en tokens para tokenizacion y generacion (defecto 256) |
|
|
lista de RelationCandidate con confidence=1.0 (mREBEL no produce score continuo). from_name/to_name siempre coinciden con entidades del input. |
true |
| flujo completo con stub produce RelationCandidate correctos |
| menos de 2 entidades retorna vacio |
| texto vacio retorna vacio |
| triplets no alineables se descartan |
|
python/functions/datascience/tests/test_extract_relations_mrebel.py |
python/functions/datascience/extract_relations_mrebel.py |
impure: model.generate es I/O computacional con estado externo (pesos del modelo).
mREBEL no produce un confidence score continuo — devuelve los triplets que el modelo
decodifico como output mas probable. confidence=1.0 es un marcador "el modelo lo emitio",
no una probabilidad calibrada. Para filtrar por calidad, usar el numero de beams
como proxy o combinar con un clasificador posterior.
Drop-in con extract_relations_glirel para benchmarks:
- Misma interfaz de entrada (text, entities, model)
- Misma salida (list[RelationCandidate])
- Diferencia: mREBEL no necesita relation_types (genera relaciones libre),
glirel necesita relation_types (zero-shot discriminativo).
LICENCIA del modelo: Babelscape/mrebel-large es CC BY-NC-SA 4.0 (no comercial).
Ver mrebel_load_model para mas detalles.
|