LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
AbstractIEDumper.h
Go to the documentation of this file.
1// Copyright (C) 2016 by CEA - LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6#ifndef ABSTRACTIEDUMPER_H
7#define ABSTRACTIEDUMPER_H
8
19
20namespace Lima {
21namespace LinguisticProcessing {
22namespace AnalysisDumpers {
23
25{
26public:
28
29 virtual ~AbstractIEDumper();
30
31 virtual void init(
33 Manager* manager) override
34 ;
35
36 virtual LimaStatusCode process(AnalysisContent& analysis) const override;
37
42 virtual void outputGlobalHeader(std::ostream& /*os*/, const std::string& /*sourceFile*/="",
43 const LimaStringText& /*originalText*/=LimaStringText("")) const {}
44 virtual void outputGlobalFooter(std::ostream& /*os*/) const {}
45 virtual void outputEntitiesHeader(std::ostream& /*os*/) const {}
46 virtual void outputEntitiesFooter(std::ostream& /*os*/) const {}
47 virtual void outputRelationsHeader(std::ostream& /*os*/) const {}
48 virtual void outputRelationsFooter(std::ostream& /*os*/) const {}
49 virtual void outputEventsHeader(std::ostream& /*os*/) const {}
50 virtual void outputEventsFooter(std::ostream& /*os*/) const {}
51
52 virtual void outputEntityString(std::ostream& out,
53 unsigned int entityId,
54 const std::string& entityType,
55 const std::string& entityString,
56 const std::vector<std::pair<uint64_t,uint64_t> >& positions,
57 const Automaton::EntityFeatures& entityFeatures,
58 bool noNorm=false) const=0;
59
60 virtual void outputAttributesString(std::ostream& out,
61 unsigned int entityId,
62 std::map <std::tuple <std::size_t, std::string , std::string >, std::size_t >& mapAttributes) const=0;
63
64 virtual unsigned int outputRelationString(std::ostream& out,
65 unsigned int relationId,
66 const std::string& relationType,
67 const std::string& sourceArgString,
68 const std::string& targetArgString) const=0;
69
70 virtual void outputEventString(std::ostream& out,
71 unsigned int eventId,
72 unsigned int eventMentionId,
73 const std::string& eventMentionType,
74 const std::vector<unsigned int>& eventRoleId,
75 const std::vector<std::string>& eventRoleType) const=0;
76
77 virtual void outputEntityNorm(std::ostream& out,
78 unsigned int entityId,
79 const std::string& entityNorm) const=0;
80
84 // virtual function to indicate if event mention must be printed separately as an entity: to be redefined in child classes if needed
85 // deprecated: always false, even for Brat
86 virtual bool addEventMentionAsEntity() const { return false; }
87
88protected:
89 MediaId m_language;
90 std::string m_graph;
92 std::set< std::string > m_domains; // list of domains to output
93 std::set< std::string > m_ignore; // list of entity types to ignore in the output
94 std::deque< std::string > m_attributes;
96 std::map<std::string, std::shared_ptr<EventAnalysis::EventTemplateDefinitionResource>> m_templateDefinitions;
97 std::set<std::string> m_templateNames;
98 // small hack: make it mutable so that process() can be const
99 // @todo: pass it as argument to all the internal functions where needed
101 bool m_outputGroups; // ouptut full entity types with the groups
102 int m_posOffset; // offset on token positions (default is -1, meaning tokens start at 1)
103
104 struct IEDumperMetaData;
105
106 //member private members
108 getSemanticRelationAnnotation(LinguisticGraphVertex v,
109 const Common::AnnotationGraphs::AnnotationData* annotationData) const;
110
111
113 getSpecificEntityAnnotation(LinguisticGraphVertex v,
114 const Common::AnnotationGraphs::AnnotationData* annotationData) const;
115
116 bool
117 outputEntity(std::ostream& out,
120 const VertexTokenPropertyMap& tokenMap,
121 uint64_t offset,
122 LimaStringText originalText,
123 std::map <std::tuple <uint64_t, uint64_t, std::string >, std::size_t >& mapEntities,
124 std::map <std::tuple <std::size_t, std::string , std::string >, std::size_t >& mapAttributes,
125 IEDumperMetaData* metadata
126 ) const;
127
128 uint outputSemanticRelations(std::ostream& out,
129 const Common::AnnotationGraphs::AnnotationData* annotationData,
130 const VertexTokenPropertyMap& tokenMap,
131 std::map<std::tuple<std::uint64_t,std::uint64_t,std::string>,std::size_t > mapEntities,
132 uint64_t offset,
133 IEDumperMetaData* metadata
134 ) const;
135 uint outputEventData(std::ostream& out,
136 const EventAnalysis::EventTemplateData* eventData,
137 const Common::AnnotationGraphs::AnnotationData* annotationData,
138 const VertexTokenPropertyMap& tokenMap,
139 std::map<std::tuple<std::uint64_t,std::uint64_t,std::string>,std::size_t > mapEntities,
140 uint64_t offset,
141 LimaStringText originalText,
142 IEDumperMetaData* metadata
143 ) const;
144 std::string outputSemanticRelationArg(const std::string& vertexRole,
145 const AnnotationGraphVertex& vertex,
146 const VertexTokenPropertyMap& tokenMap,
147 std::map<std::tuple<std::uint64_t,std::uint64_t,std::string>,std::size_t > mapEntities,
148 const Common::AnnotationGraphs::AnnotationData* annotationData,
149 uint64_t offset) const;
150
151 void computePositions(std::vector<std::pair<uint64_t,uint64_t> >& positions, LimaString& stringForm, uint64_t pos, uint64_t len) const;
152
153 void adjustPosition(std::uint64_t& position,uint64_t offset=0) const;
154 void adjustPositions(std::vector<std::pair<uint64_t,uint64_t> >& positions,uint64_t offset=0) const;
155
156
157};
158
159} // AnalysisDumpers
160} // LinguisticProcessing
161} // Lima
162
163#endif
#define LIMA_ANALYSISDUMPERS_EXPORT
boost::property_map< LinguisticGraph, vertex_token_t >::type VertexTokenPropertyMap
LinguisticGraph::vertex_descriptor LinguisticGraphVertex
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
Holds an annotation graph and gives an API to manipulate it.
Manage initialization of InitializableObjects using configuration module and parameters.
virtual void outputGlobalHeader(std::ostream &, const std::string &="", const LimaStringText &=LimaStringText("")) const
specific output functions to deal with actual output format these functions are called inside the pro...
virtual void outputEntityNorm(std::ostream &out, unsigned int entityId, const std::string &entityNorm) const =0
virtual unsigned int outputRelationString(std::ostream &out, unsigned int relationId, const std::string &relationType, const std::string &sourceArgString, const std::string &targetArgString) const =0
virtual void outputEventString(std::ostream &out, unsigned int eventId, unsigned int eventMentionId, const std::string &eventMentionType, const std::vector< unsigned int > &eventRoleId, const std::vector< std::string > &eventRoleType) const =0
virtual void outputEntityString(std::ostream &out, unsigned int entityId, const std::string &entityType, const std::string &entityString, const std::vector< std::pair< uint64_t, uint64_t > > &positions, const Automaton::EntityFeatures &entityFeatures, bool noNorm=false) const =0
virtual void outputAttributesString(std::ostream &out, unsigned int entityId, std::map< std::tuple< std::size_t, std::string, std::string >, std::size_t > &mapAttributes) const =0
std::map< std::string, std::shared_ptr< EventAnalysis::EventTemplateDefinitionResource > > m_templateDefinitions
a list of generic features: each feature is unique (only one feature for a name)
define the limaStringText resource which is the text in limaString formal
An annotation between two annotation graph vertices denoting the semantic relation(s) holding between...
A representation of a specific entity to store in the annotation graph.
AnnotationGraph::vertex_descriptor AnnotationGraphVertex
NAUTITIA.
LimaStatusCode
Definition LimaCommon.h:236
QString LimaString
Definition LimaString.h:33