Skip to content
Snippets Groups Projects
tset.cpp 1.37 KiB
Newer Older
ilor's avatar
ilor committed
#include <libwccl/values/tset.h>
#include <libpwrutils/foreach.h>
#include <libpwrutils/bitset.h>

#include <boost/algorithm/string.hpp>
ilor's avatar
ilor committed

namespace Wccl {

const char* TSet::type_name = "TSet";

std::string TSet::to_raw_string() const
{
	return tag_.raw_dump();
}

std::string TSet::to_string(const Corpus2::Tagset& tagset) const
{
	return "{" + tagset.tag_to_symbol_string(tag_) + "}";
std::string TSet::var_repr(const std::string &var_name)
{
	std::ostringstream ss;
	ss << "$t:" << var_name;
int TSet::categories_count(const Corpus2::Tagset& tagset) const
{
	int cats = (tag_.get_pos().any()) ? 1 : 0;
	foreach (const Corpus2::mask_t& mask, tagset.all_attribute_masks()) {
		if (tag_.get_values_for(mask).any()) {
			++cats;
		}
	}
	return cats;
}

int TSet::matching_categories(const Corpus2::Tag& tag) const
{
   const Corpus2::Tag& masked = tag_.get_masked(tag);
   return PwrNlp::count_bits_set(masked.get_pos()) + PwrNlp::count_bits_set(masked.get_values());
}

void TSet::insert_symbol(const Corpus2::Tagset& tagset, const std::string& s)
{
	tag_.combine_with(tagset.parse_symbol(s));
}

std::string TSet::to_compact_string(const Corpus2::Tagset& tagset)
		const
{
	if (tag_.is_null()) {
		return "-";
	}

	std::string body = tagset.tag_to_symbol_string(tag_);
	boost::algorithm::replace_all(body, ",", "-");
	return body;
}

ilor's avatar
ilor committed
} /* end ns Wccl */