LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
dummyPosTagger.cpp
Go to the documentation of this file.
1// Copyright 2002-2020 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6#include "dummyPosTagger.h"
7
12
17
18#include <iostream>
19#include <iterator>
20#include <set>
21#include <map>
22#include <algorithm>
23
24using namespace boost;
25using namespace std;
26using namespace Lima::Common::MediaticData;
28
29namespace Lima
30{
31namespace LinguisticProcessing
32{
33namespace PosTagger
34{
35
37
40 Manager* manager)
41
42{
43 m_language=manager->getInitializationParameters().media;
44 m_macroAccessor=&(static_cast<const Common::MediaticData::LanguageData&>(Common::MediaticData::MediaticData::single().mediaData(m_language)).getPropertyCodeManager().getPropertyAccessor("MACRO"));
45 m_microAccessor=&(static_cast<const Common::MediaticData::LanguageData&>(Common::MediaticData::MediaticData::single().mediaData(m_language)).getPropertyCodeManager().getPropertyAccessor("MICRO"));
46}
47
49 AnalysisContent& analysis) const
50{
51
53
54 // start postagging here !
56 LINFO << "Start of Dummy posTagging";
57
58 auto anagraph = std::dynamic_pointer_cast<AnalysisGraph>(analysis.getData("AnalysisGraph"));
59
60 AnalysisGraph* posgraph=new AnalysisGraph("PosGraph",m_language,false,true,*anagraph);
61 analysis.setData("PosGraph",posgraph);
62 LinguisticGraph* graph=posgraph->getGraph();
63
64 const LanguageData& ld=static_cast<const Common::MediaticData::LanguageData&>(MediaticData::single().mediaData(m_language));
65
66 // process all vertices with fulltoken
68 boost::tie(it,itEnd) = vertices(*graph);
69 for (;it != itEnd; it++)
70 {
71 MorphoSyntacticData* data = get(vertex_data,*graph,*it);
72 if (data != 0)
73 {
74 MorphoSyntacticData* posdata=new MorphoSyntacticData(*data);
75 put(vertex_data,*graph,*it,posdata);
76 // select the first empty micro if one, else put the first non empty micro.
77 LinguisticCode micro;
78 if (posdata->size()>0)
79 {
80 for (MorphoSyntacticData::const_iterator dataItr=posdata->begin();
81 dataItr!=posdata->end();
82 dataItr++)
83 {
84 LinguisticCode mic(m_microAccessor->readValue(dataItr->properties));
85 if (dataItr==posdata->begin()) {
86 micro=mic;
87 }
88 if (ld.isAnEmptyMicroCategory(mic))
89 {
90 // there is an empty micro, so choose it.
91 micro=mic;
92 break;
93 }
94 }
95 CheckDifferentPropertyPredicate cdpp(*m_microAccessor,micro);
96 posdata->erase(remove_if(posdata->begin(),posdata->end(),cdpp),posdata->end());
97 }
98 else
99 {
100 Token* tok= get(vertex_token,*graph,*it);
101 LWARN << "The MorphoSyntacticData "
102 << Common::Misc::limastring2utf8stdstring(tok->stringForm()) << " is empty !";
103 }
104 }
105 }
106
107 // Affichage du graphe après le POSTagging
108 LDEBUG << "Graph after Dummy posTagging:";
109
110 LINFO << "End of Dummy posTagging";
111
112 TimeUtils::logElapsedTime("DummyPosTagger");
113 return SUCCESS_ID;
114
115}
116
117
118} // PosTagger
119} // LinguisticProcessing
120} // Lima
#define LWARN
Definition LimaCommon.h:160
#define LDEBUG
Definition LimaCommon.h:157
#define LINFO
Definition LimaCommon.h:158
A graph structure for linguistic analysis.
LinguisticGraph::vertex_iterator LinguisticGraphVertexIt
@ vertex_token
@ vertex_data
boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, LinguisticVertexProperties > LinguisticGraph
Property to identify the chains in the graph.
#define PTLOGINIT
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
void setData(const QString &id, std::shared_ptr< AnalysisData > data)
set an analysisData with the given id.
Holds linguistic data for one language.
bool isAnEmptyMicroCategory(LinguisticCode id) const
const MediaData & mediaData(MediaId media) const
LinguisticCode readValue(const LinguisticCode &code) const
read a property in a coded int.
Manage initialization of InitializableObjects using configuration module and parameters.
const InitializationParameters & getInitializationParameters() const
get Initialization Parameters
An AnalysisData containing a LinguisticGraph with a language and an id.
const LinguisticGraph * getGraph(void) const
Returns the underlying graph structure.
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.
static const MediaticData & single()
const singleton accessor
Definition Singleton.h:51
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
#define DUMMYPOSTAGGER_CLASSID
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, DummyPosTagger > dummyPosTaggerFactory(DUMMYPOSTAGGER_CLASSID)
NAUTITIA.
LimaStatusCode
Definition LimaCommon.h:236
@ SUCCESS_ID
Definition LimaCommon.h:237
STL namespace.