102 LINFO <<
"start syntactic analysis - dependence relations search";
104 auto anagraph = std::dynamic_pointer_cast<AnalysisGraph>(analysis.
getData(
"PosGraph"));
107 LERROR <<
"no AnalysisGraph ! abort";
110 auto sb = std::dynamic_pointer_cast<SegmentationData>(analysis.
getData(
"SentenceBoundaries"));
113 LERROR <<
"no sentence bounds ! abort";
116 if (sb->getGraphId() !=
"PosGraph") {
117 LERROR <<
"SentenceBounds have been computed on " << sb->getGraphId() <<
" !";
118 LERROR <<
"SyntacticAnalyzer-deps needs SentenceBounds on PosGraph";
122 if (analysis.
getData(
"SyntacticData") == 0)
124 auto syntacticData = std::make_shared<SyntacticData>(anagraph.get(),
nullptr);
125 syntacticData->setupDependencyGraph();
126 analysis.
setData(
"SyntacticData",syntacticData);
129 auto recoData = std::dynamic_pointer_cast<RecognizerData>(analysis.
getData(
"RecognizerData"));
132 recoData = std::make_shared<RecognizerData>();
133 analysis.
setData(
"RecognizerData", recoData);
138 for (std::vector<Segment>::const_iterator boundItr=(sb->getSegments()).begin();
139 boundItr!=(sb->getSegments()).end();
145 LDEBUG <<
"analyze sentence from vertex " << beginSentence <<
" to vertex " << endSentence;
147 std::deque< std::string >::const_iterator actionsit, actionsit_end;
149 for (; actionsit != actionsit_end; actionsit++)
151 std::string action = *actionsit;
152 if (action ==
"setl2r" || action ==
"setr2l")
154 LWARN <<
"SyntacticAnalyzerDeps actions setl2r and setr2l are deprecated";
159 LDEBUG <<
"Geting automaton for action" << action;
162 std::vector<Automaton::RecognizerMatch> result;
164 LDEBUG <<
"Applying automaton for action " << action <<
" on sentence from "
165 << beginSentence <<
" to " << endSentence;
167 recognizer->apply(*anagraph,
183 LINFO <<
"end syntactic analysis - dependence relations search";
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
void setData(const QString &id, std::shared_ptr< AnalysisData > data)
set an analysisData with the given id.