conllx 0.12.1

Readers/writers for the CoNLL-X dependency format
Documentation
use std::fs::File;
use std::io::BufReader;

use lazy_static::lazy_static;

use crate::graph::{DepTriple, Sentence};
use crate::io::{ReadSentence, Reader};
use crate::token::{Features, TokenBuilder};

lazy_static! {
    pub static ref TEST_SENTENCES: Vec<Sentence> = {
        let mut sentences = Vec::new();

        let mut s1 = Sentence::new();
        s1.push(
            TokenBuilder::new("Die")
                .lemma("die")
                .cpos("ART")
                .pos("ART")
                .features(Features::from("nsf"))
                .into(),
        );

        s1.push(
            TokenBuilder::new("Großaufnahme")
                .lemma("Großaufnahme")
                .cpos("N")
                .pos("NN")
                .features(Features::from("nsf"))
                .into(),
        );

        s1.dep_graph_mut()
            .add_deprel(DepTriple::new(2, Some("DET"), 1));
        s1.dep_graph_mut()
            .add_deprel(DepTriple::new(0, Some("ROOT"), 2));
        s1.proj_dep_graph_mut()
            .add_deprel(DepTriple::new(0, Some("TEST"), 1));

        sentences.push(s1);

        let mut s2 = Sentence::new();
        s2.push(
            TokenBuilder::new("Gilles")
                .lemma("Gilles")
                .cpos("N")
                .pos("NE")
                .features(Features::from("nsm"))
                .into(),
        );
        s2.push(
            TokenBuilder::new("Deleuze")
                .lemma("Deleuze")
                .cpos("N")
                .pos("NE")
                .features(Features::from(
                    "case:nominative|gender:masculine|number:singular",
                ))
                .into(),
        );
        s2.dep_graph_mut()
            .add_deprel(DepTriple::new(0, Some("ROOT"), 1));
        s2.dep_graph_mut()
            .add_deprel(DepTriple::new(1, Some("APP"), 2));
        sentences.push(s2);

        sentences
    };
}

pub fn read_sentences(filename: &str) -> Vec<Sentence> {
    Reader::new(BufReader::new(File::open(filename).unwrap()))
        .sentences()
        .map(|s| s.unwrap())
        .collect()
}