LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
DebugSyntacticAnalysisLogger.cpp
Go to the documentation of this file.
1// Copyright 2002-2013 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
21
22#include <iostream>
23#include <fstream>
24
25using namespace std;
27using namespace Lima::Common::MediaticData;
29
30namespace Lima
31{
32namespace LinguisticProcessing
33{
34namespace SyntacticAnalysis
35{
36
38
40AbstractLinguisticLogger(".syntanal.txt"),
41m_language(0),
42m_displayChains(true),
43m_displayDependencies(true),
44m_displayRelationsOrderOfArguments(false),
45m_displayRelationsDistanceOfArguments(false),
46m_displayLemmas(true)
47{}
48
51
54 Manager* manager)
55
56{
57 AbstractLinguisticLogger::init(unitConfiguration,manager);
58
59 m_language=manager->getInitializationParameters().media;
60
61 try
62 {
63 string boolValue=unitConfiguration.getParamsValueAtKey("displayChains");
64 if (boolValue=="yes" || boolValue=="true" || boolValue=="1") {
65 m_displayChains=true;
66 }
67 else {
68 m_displayChains=false;
69 }
70 }
71 catch (NoSuchParam& ) {
72 // optional param, keep default value
73 }
74 try
75 {
76 string boolValue=unitConfiguration.getParamsValueAtKey("displayDependencies");
77 if (boolValue=="yes" || boolValue=="true" || boolValue=="1") {
78 m_displayDependencies=true;
79 }
80 else {
81 m_displayDependencies=false;
82 }
83 }
84 catch (NoSuchParam& ) {
85 // optional param, keep default value
86 }
87
88 try
89 {
90 string boolValue=unitConfiguration.getParamsValueAtKey("lemma");
91 if (boolValue=="yes" || boolValue=="true" || boolValue=="1") {
92 m_displayLemmas=true;
93 }
94 else {
95 m_displayLemmas=false;
96 }
97 }
98 catch (NoSuchParam& ) {
99 // optional param, keep default value
100 }
101
102 try
103 {
104 string boolValue=unitConfiguration.getParamsValueAtKey("displayRelationsOrderOfArguments");
105 if (boolValue=="yes" || boolValue=="true" || boolValue=="1") {
106 m_displayRelationsOrderOfArguments=true;
107 }
108 else {
109 m_displayRelationsOrderOfArguments=false;
110 }
111 }
112 catch (NoSuchParam& ) {
113 // optional param, keep default value
114 }
115 try
116 {
117 string boolValue=unitConfiguration.getParamsValueAtKey("displayRelationsDistanceOfArguments");
118 if (boolValue=="yes" || boolValue=="true" || boolValue=="1") {
119 m_displayRelationsDistanceOfArguments=true;
120 }
121 else {
122 m_displayRelationsDistanceOfArguments=false;
123 }
124 }
125 catch (NoSuchParam& ) {
126 // optional param, keep default value
127 }
128}
129
130
131// Each token of the specified path is
132// searched into the specified dictionary.
134 AnalysisContent& analysis) const
135{
136 SALOGINIT;
138 auto metadata = std::dynamic_pointer_cast<LinguisticMetaData>(analysis.getData("LinguisticMetaData"));
139 if (metadata == 0) {
140 SALOGINIT;
141 LERROR << "no LinguisticMetaData ! abort";
142 return MISSING_DATA;
143 }
144 auto tokenList = std::dynamic_pointer_cast<AnalysisGraph>(analysis.getData("AnalysisGraph"));
145 if (tokenList == 0) {
146 SALOGINIT;
147 LERROR << "no AnalysisGraph ! abort";
148 return MISSING_DATA;
149 }
150 auto syntacticData = std::dynamic_pointer_cast<SyntacticData>(analysis.getData("SyntacticData"));
151 if (syntacticData == 0) {
152 SALOGINIT;
153 LERROR << "no SyntacticData ! abort";
154 return MISSING_DATA;
155 }
156
157 std::ofstream ofs;
158 if (!openLogFile(ofs,metadata->getMetaData("FileName"))) {
159 SALOGINIT;
160 LERROR << "DebugSyntacticAnalysisLogger::Cannot open log file";
162 }
163 //ofs << endl << "Printing syntactic analysis result :" << endl;
164
165 //cout << endl;
166 if (m_displayChains) {
167 LDEBUG << "call of displayChains";
168 SyntacticAnalysisTools::displayChains(tokenList.get(), ofs);
169 }
170 if (m_displayDependencies) {
171 LDEBUG << "call of displayDependancies";
173 m_language,ofs,m_displayLemmas);
174 }
175 if (m_displayRelationsOrderOfArguments) {
176 LDEBUG << "call of displayRelationsOrderOfArguments";
178 m_language,
179 ofs);
180 }
181 if (m_displayRelationsDistanceOfArguments) {
182 LDEBUG << "call of displayRelationsDistanceOfArguments";
184 m_language,
185 ofs);
186 }
187 ofs.close();
188 TimeUtils::logElapsedTime("DebugSyntacticAnalysisLogger");
189 return SUCCESS_ID;
190}
191
192} // Data
193} // LinguisticProcessing
194} // Lima
debug only logger for syntactic analysis.
#define DEBUGSYNTACTICANALYSISLOGGER_CLASSID
#define LDEBUG
Definition LimaCommon.h:157
#define LERROR
Definition LimaCommon.h:161
#define SALOGINIT
Defines a Factory to create Object of type Base.
Dependency graph text form displaying tools.
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
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
A generic process unit to log information in files: contains some common informations such as : outpu...
bool openLogFile(std::ofstream &output, const std::string &sourceFile) 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.
void init(Common::XMLConfigurationFiles::GroupConfigurationStructure &unitConfiguration, Manager *manager) override
initialize with parameters from configuration file.
static void displayChains(const LinguisticAnalysisStructure::AnalysisGraph *graph, std::ostream &out)
static void displayRelationsDistanceOfArguments(const SyntacticData &data, const MediaId language, std::ostream &out)
static void displayRelationsOrderOfArguments(const SyntacticData &data, const MediaId language, std::ostream &out)
static void displayDependancies(const SyntacticData &data, const MediaId language, std::ostream &out, const bool DisplayLemma=false)
static void logElapsedTime(const std::string &mess, const std::string &taskCategory=std::string(""))
log the number of microseconds since last UpdateCurrentTime
static void updateCurrentTime(const std::string &taskCategory=std::string(""))
store current time for new elapsed time computation
SimpleFactory< MediaProcessUnit, DebugSyntacticAnalysisLogger > debugSyntacticAnalysisLoggerFactory(DEBUGSYNTACTICANALYSISLOGGER_CLASSID)
NAUTITIA.
LimaStatusCode
Definition LimaCommon.h:236
@ CANNOT_OPEN_FILE_ERROR
Definition LimaCommon.h:239
@ SUCCESS_ID
Definition LimaCommon.h:237
@ MISSING_DATA
Definition LimaCommon.h:243
STL namespace.