26#include <boost/algorithm/string/replace.hpp>
33using namespace boost::tuples;
39namespace LinguisticProcessing {
40namespace AnalysisDumpers {
93 LERROR <<
"Warning: no features selected in TextFeaturesDumper: output will be empty";
102 auto metadata = std::dynamic_pointer_cast<LinguisticMetaData>(analysis.
getData(
"LinguisticMetaData"));
104 LERROR <<
"no LinguisticMetaData ! abort";
110 map<Token*,LinguisticGraphVertex,lTokenPosition > categoriesMapping;
112 auto anagraph = std::dynamic_pointer_cast<AnalysisGraph>(analysis.
getData(m_graph));
114 LERROR <<
"graph " << m_graph <<
" has not been produced: check pipeline";
124 std::queue<LinguisticGraphVertex> toVisit;
125 std::set<LinguisticGraphVertex> visited;
126 toVisit.push(anagraph->firstVertex());
129 while (!toVisit.empty()) {
132 if (v == anagraph->lastVertex()) {
136 for (boost::tie(outItr,outItrEnd)=out_edges(v,*graph); outItr!=outItrEnd; outItr++)
139 if (visited.find(next)==visited.end())
141 visited.insert(next);
148 categoriesMapping[ft]=v;
152 for (map<Token*,LinguisticGraphVertex,lTokenPosition >::const_iterator ftItr=categoriesMapping.begin();
153 ftItr!=categoriesMapping.end();
156 outputVertex(dstream->out(),anagraph.get(),ftItr->second,analysis,metadata->getStartOffset());
164void TextFeaturesDumper::outputVertex(ostream& out,
168 uint64_t offset)
const
174 for (WordFeatures::const_iterator it=m_features.begin(),it_end=m_features.end();
177 if (first) { first=
false; }
182 string str=(*it)->getValue(graph,v,analysis);
183 boost::replace_all(str,m_sep,m_sepReplace);
A graph structure for linguistic analysis.
LinguisticGraph::vertex_descriptor LinguisticGraphVertex
LinguisticGraph::out_edge_iterator LinguisticGraphOutEdgeIt
boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, LinguisticVertexProperties > LinguisticGraph
Property to identify the chains in the graph.
Defines a Factory to create Object of type Base.
#define TEXTFEATURESDUMPER_CLASSID
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
std::shared_ptr< AnalysisData > getData(const QString &id)
return AnalysisData by id
std::string & getParamsValueAtKey(const std::string &key)
std::deque< std::string > & getListsValueAtKey(const std::string &key)
return a message when a 'list' was not found
return a message when a 'param' was not found
Manage initialization of InitializableObjects using configuration module and parameters.
const InitializationParameters & getInitializationParameters() const
get Initialization Parameters
std::shared_ptr< DumperStream > initialize(AnalysisContent &analysis) const
virtual void init(Common::XMLConfigurationFiles::GroupConfigurationStructure &unitConfiguration, Manager *manager) override
initialize with parameters from configuration file.
LimaStatusCode process(AnalysisContent &analysis) const override
Process on data in analysisContent.
virtual ~TextFeaturesDumper()
void init(Common::XMLConfigurationFiles::GroupConfigurationStructure &unitConfiguration, Manager *manager) override
initialize with parameters from configuration file.
An AnalysisData containing a LinguisticGraph with a language and an id.
holds surface data of a token
void initialize(const std::deque< std::string > &featureNames)
void setLanguage(MediaId language)
SimpleFactory< MediaProcessUnit, TextFeaturesDumper > textFeaturesDumperFactory(TEXTFEATURESDUMPER_CLASSID)
launch exception related to the configuration file parsing