diff --git a/libmaca/morph/morfeusz2analyser.cpp b/libmaca/morph/morfeusz2analyser.cpp index e1b85f5f17d837e3bf72798eff8533e16c18d7d5..3a225c90b8c7b350409265e8b1eb6aaeb41ab9d9 100644 --- a/libmaca/morph/morfeusz2analyser.cpp +++ b/libmaca/morph/morfeusz2analyser.cpp @@ -51,7 +51,7 @@ Morfeusz2Analyser::Morfeusz2Analyser(const Config::Node& cfg) new Conversion::TagsetConverter(conv_cfg)); require_matching_tagsets(c->tagset_to(), *this, - "Morfeusz analyser creation"); + "Morfeusz analyser creation"); conv_ = c.release(); std::string ign_tag_string = cfg.get("ign_tag", "ign"); @@ -83,12 +83,12 @@ bool Morfeusz2Analyser::process_functional(const Toki::Token &t, std::string s = PwrNlp::to_utf8(t.orth()); std::vector<details::Morfeusz2Edge> pmorf; - Morfeusz *morf = Morfeusz::createInstance(); + Morfeusz *morf = Morfeusz::createInstance(ANALYSE_ONLY); morf->setCharset(charset); - ResultsIterator *res_iter = morf->analyze(s); + ResultsIterator *res_iter = morf->analyse(s); while(res_iter->hasNext()) - pmorf.push_back(details::Morfeusz2Edge(res_iter->next())); + pmorf.push_back(details::Morfeusz2Edge(res_iter->next(), morf)); if(pmorf.size() == 1 && pmorf[0].lemma.length() > 0) { // only one analysis Corpus2::Token *tok = make_token(t, pmorf[0]); @@ -261,11 +261,12 @@ std::string Morfeusz2Error::info() const } namespace details { - Morfeusz2Edge::Morfeusz2Edge(const morfeusz::MorphInterpretation& morf) - : node_from(morf.getStartNode()), node_to(morf.getEndNode()) - , orth(UnicodeString::fromUTF8(morf.getOrth())) - , lemma(UnicodeString::fromUTF8(morf.getLemma())) - , tag_string(morf.getTag()), token(NULL) + Morfeusz2Edge::Morfeusz2Edge(const morfeusz::MorphInterpretation interp, + const morfeusz::Morfeusz * morf) + : node_from(interp.startNode), node_to(interp.endNode) + , orth(UnicodeString::fromUTF8(interp.orth)) + , lemma(UnicodeString::fromUTF8(interp.lemma)) + , tag_string(morf->getIdResolver().getTag(interp.tagId)), token(NULL) { } } diff --git a/libmaca/morph/morfeusz2analyser.h b/libmaca/morph/morfeusz2analyser.h index 14a849c4fdcdb58914ba3c00aaa1eb27f80c3b0d..f47debe549b7fcd86760af7d82be247cb60950aa 100644 --- a/libmaca/morph/morfeusz2analyser.h +++ b/libmaca/morph/morfeusz2analyser.h @@ -137,7 +137,8 @@ namespace details { /// Helper struct for holding preprocessed Morfeusz results struct Morfeusz2Edge { - explicit Morfeusz2Edge(const morfeusz::MorphInterpretation& morf); + explicit Morfeusz2Edge(const morfeusz::MorphInterpretation interp, + const morfeusz::Morfeusz * morf); int node_from, node_to; UnicodeString orth;