LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
EntityTrackerXmlLogger.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
7
17#include "CoreferenceData.h"
18
19#include <fstream>
20
21using namespace std;
22using namespace Lima::Common::AnnotationGraphs;
23using namespace Lima::Common::Misc;
25
26namespace Lima
27{
28namespace LinguisticProcessing
29{
30namespace EntityTracking
31{
32
34
40
41
44
47 Manager* manager)
48
49{
51 LDEBUG << "EntityTrackerXmlLogger::init";
52 AbstractLinguisticLogger::init(unitConfiguration,manager);
53
54 m_language=manager->getInitializationParameters().media;
55
56 try
57 {
58 m_graph=unitConfiguration.getParamsValueAtKey("graph");
59 }
61 {
63 LWARN << "No 'graph' parameter in unit configuration '"
64 << unitConfiguration.getName() << "' ; using AnalysisGraph";
65 m_graph=string("AnalysisGraph");
66 }
67 try
68 {
69 string val=unitConfiguration.getParamsValueAtKey("compactFormat");
70 if (val=="yes" || val=="true" || val=="1") {
71 m_compactFormat=true;
72 }
73 }
74 catch (Common::XMLConfigurationFiles::NoSuchParam& ) {} // do nothing: optional
75
76}
77
78
80 AnalysisContent& analysis) const
81{
83 LDEBUG << "EntityTrackerXmlLogger::process";
85 /* permet de récupérer les annotations */
86 //auto annotationData = std::dynamic_pointer_cast< AnnotationData >(analysis.getData("AnnotationData"));
87
88 /* recupérer le graph après l'analyse */
89 //const LinguisticAnalysisStructure::AnalysisGraph& graph = *(static_cast<LinguisticAnalysisStructure::AnalysisGraph*>(analysis.getData(m_graph)));
90
91 auto metadata = std::dynamic_pointer_cast<LinguisticMetaData>(analysis.getData("LinguisticMetaData"));
92 if (metadata == 0) {
94 LERROR << "no LinguisticMetaData ! abort";
95 return MISSING_DATA;
96 }
97
98 CoreferenceData* corefData=static_cast<CoreferenceData*>(analysis.getData("CoreferenceData").get());
99 if (corefData == 0) {
100 SELOGINIT;
101 LERROR << "no CoreferenceData ! abort";
102 return MISSING_DATA;
103 }
104
105 ofstream out;
106 if (!openLogFile(out,metadata->getMetaData("FileName"))) {
107 SELOGINIT;
108 LERROR << "Can't open log file '" << metadata->getMetaData("FileName") << "'";
109 return UNKNOWN_ERROR;
110 }
111
112 out << "<coreference>" << endl;
113 for (CoreferenceData::const_iterator it=corefData->begin(),
114 it_end=corefData->end(); it != it_end; it++)
115 {
116 out << "<entity mentions=\"" << (*it).size() << "\">" << endl;
117 for (vector<Token>::const_iterator it2=(*it).begin(), it2_end=(*it).end();
118 it2 != it2_end; it2++)
119 {
120 out << " <entity_mention>"
121 << limastring2utf8stdstring((*it2).stringForm())
122 <<"</entity_mention>";
123 }
124 out << "<entity>" <<endl;
125 }
126 out.close();
127
128 return SUCCESS_ID;
129}
130
131
132} // EntityTracking
133} // LinguisticProcessing
134} // Lima
This file is the main header file for the data related to annotation graphs.
#define ENTITYTRACKERXMLLOGGER_CLASSID
#define LWARN
Definition LimaCommon.h:160
#define LDEBUG
Definition LimaCommon.h:157
#define LERROR
Definition LimaCommon.h:161
#define SELOGINIT
Defines a Factory to create Object of type Base.
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.
virtual LimaStatusCode process(AnalysisContent &analysis) const override
Process on data in analysisContent.
virtual void init(Common::XMLConfigurationFiles::GroupConfigurationStructure &unitConfiguration, Manager *manager) override
initialize with parameters from configuration file.
static void updateCurrentTime(const std::string &taskCategory=std::string(""))
store current time for new elapsed time computation
std::string limastring2utf8stdstring(const Lima::LimaString &phrase, uint32_t size0)
Convert a wide string to a string , in dest up to size bytes.
SimpleFactory< MediaProcessUnit, EntityTrackerXmlLogger > EntityTrackerXmlLoggerFactory(ENTITYTRACKERXMLLOGGER_CLASSID)
NAUTITIA.
LimaStatusCode
Definition LimaCommon.h:236
@ UNKNOWN_ERROR
Definition LimaCommon.h:238
@ SUCCESS_ID
Definition LimaCommon.h:237
@ MISSING_DATA
Definition LimaCommon.h:243
STL namespace.