diff --git a/libcorpus2/ann/channel.cpp b/libcorpus2/ann/channel.cpp index eae9000dec58dd8fa89a80875c3554ef7ad2a683..394dbb0d9886edd02c9217154535c37b4af2c978 100644 --- a/libcorpus2/ann/channel.cpp +++ b/libcorpus2/ann/channel.cpp @@ -170,6 +170,24 @@ std::string AnnotationChannel::dump_iob() const return ss.str(); } +std::string AnnotationChannel::dump_segments() const +{ + std::stringstream ss; + foreach (int s, segments_) { + ss << s; + } + return ss.str(); +} + +std::string AnnotationChannel::dump_heads() const +{ + std::stringstream ss; + foreach (bool b, heads_) { + ss << (b ? "H" : " "); + } + return ss.str(); +} + void AnnotationChannel::do_counts(int& annotations, int& disjoint, int& unannotated) const { std::set<int> used_sids; diff --git a/libcorpus2/ann/channel.h b/libcorpus2/ann/channel.h index e6765d36eb12f3d4e3f6aaeda19765fd4f6da4b5..2c3a76f65458dcd23c5af8ffe26a202f45436d65 100644 --- a/libcorpus2/ann/channel.h +++ b/libcorpus2/ann/channel.h @@ -147,6 +147,16 @@ public: */ std::string dump_iob() const; + /** + * Compose a string consisting of all segment indices in order. + */ + std::string dump_segments() const; + + /** + * Compose a string consisting of all head flags in order + */ + std::string dump_heads() const; + void do_counts(int& annotations, int& disjoint, int& unannotated) const; private: diff --git a/tests/ioann.cpp b/tests/ioann.cpp index 04831f8c2295b76e555f7d045a85b1a01f87e279..8f9d3804a6b097536d99684f3c2d6e065f75134d 100644 --- a/tests/ioann.cpp +++ b/tests/ioann.cpp @@ -102,6 +102,9 @@ BOOST_AUTO_TEST_CASE( iobase ) BOOST_REQUIRE(chunk); std::stringstream ss; boost::shared_ptr<Corpus2::TokenWriter> w(Corpus2::TokenWriter::create("xces,flat", ss, tagset)); + //boost::shared_ptr<Corpus2::TokenWriter> wann(Corpus2::TokenWriter::create("ccl", std::cerr, tagset)); + //wann->write_chunk(*chunk); + //wann->finish(); w->write_chunk(*chunk); w->finish(); BOOST_CHECK_EQUAL(ss.str(), swiatopoglad); @@ -113,6 +116,8 @@ BOOST_AUTO_TEST_CASE( iobase ) BOOST_REQUIRE(as->has_channel("cute")); as->get_channel("cute").make_iob_from_segments(); BOOST_CHECK_EQUAL(as->get_channel("cute").dump_iob(), "BIOB"); + BOOST_CHECK_EQUAL(as->get_channel("cute").dump_segments(), "1102"); + BOOST_CHECK_EQUAL(as->get_channel("cute").dump_heads(), " "); Corpus2::Sentence::Ptr cute = Corpus2::create_view(as, "cute"); BOOST_REQUIRE_EQUAL(cute->size(), 3); BOOST_CHECK_EQUAL(cute->tokens()[0]->orth_utf8(), "Uważam,");