relation_extraction/
relation_extraction.rs1use composable::*;
2use orp::model::Model;
3use orp::pipeline::*;
4use orp::params::RuntimeParameters;
5use gliner::util::result::Result;
6use gliner::model::params::Parameters;
7use gliner::model::pipeline::{token::TokenPipeline, relation::RelationPipeline};
8use gliner::model::input::{text::TextInput, relation::schema::RelationSchema};
9
10
11fn main() -> Result<()> {
25 const MODEL_PATH: &str = "models/gliner-multitask-large-v0.5/onnx/model.onnx";
27 const TOKENIZER_PATH: &str = "models/gliner-multitask-large-v0.5/tokenizer.json";
28
29 let params: Parameters = Parameters::default();
31 let runtime_params = RuntimeParameters::default();
32
33 let mut relation_schema = RelationSchema::new();
36 relation_schema.push_with_allowed_labels("founded", &["person"], &["company"]);
37
38 let input = TextInput::from_str(
40 &["Bill Gates is an American businessman who co-founded Microsoft."],
41 &["person", "company"],
42 )?;
43
44 println!("Loading model...");
46 let model = Model::new(MODEL_PATH, runtime_params)?;
47
48 let pipeline = composed![
52 TokenPipeline::new(TOKENIZER_PATH)?.to_composable(&model, ¶ms),
53 Print::new(Some("Entities:\n"), None),
54 RelationPipeline::default(TOKENIZER_PATH, &relation_schema)?.to_composable(&model, ¶ms),
55 Print::new(Some("Relations:\n"), None)
56 ];
57
58 pipeline.apply(input)?;
60
61 Ok(())
62}