LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
bowNamedEntity.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/************************************************************************
7 * @file bowNamedEntity.h
8 * @author Besancon Romaric
9 * @date Tue Oct 7 2003
10 * copyright Copyright (C) 2003 by CEA LIST
11 *
12 ***********************************************************************/
13
14#include "bowNamedEntity.h"
18
19namespace Lima {
20namespace Common {
21namespace BagOfWords {
22
24{
25public:
26 friend class BoWNamedEntity;
27
29// // BoWNamedEntityPrivate(const BoWNamedEntity&);
30// // BoWNamedEntityPrivate(const BoWNamedEntity&,
31// // const std::map<BoWToken*,BoWToken*>&);
32//
33// BoWNamedEntityPrivate(const Lima::LimaString& lemma,
34// const Common::MediaticData::EntityType theType,
35// const uint64_t position,
36// const uint64_t length);
37//
38// BoWNamedEntityPrivate(const Lima::LimaString& lemma,
39// const LinguisticCode theCategory,
40// const Common::MediaticData::EntityType theType,
41// const uint64_t position,
42// const uint64_t length);
43//
44// virtual ~BoWNamedEntityPrivate();
45
47// BoWNamedEntityPrivate& operator=(const BoWNamedEntityPrivate&);
48
50 std::map<std::string, LimaString> m_features;
51
52 // private functions
53 void readNEProperties(std::istream& file);
54 void writeNEProperties(std::ostream& file) const;
55
56};
57
64
67m_type(bnep.m_type),
68m_features(bnep.m_features)
69{
70}
71
72// BoWNamedEntityPrivate::BoWNamedEntityPrivate(const Lima::LimaString& lemma,
73// const Common::MediaticData::EntityType theType,
74// const uint64_t position,
75// const uint64_t length) :
76// BoWComplexTokenPrivate(lemma, 0, position, length),
77// m_type(theType),
78// m_features()
79// {
80// }
81//
82// BoWNamedEntityPrivate::BoWNamedEntityPrivate(const Lima::LimaString& lemma,
83// const LinguisticCode theCategory,
84// const Common::MediaticData::EntityType theType,
85// const uint64_t position,
86// const uint64_t length):
87// BoWComplexTokenPrivate(lemma, theCategory, position, length),
88// m_type(theType),
89// m_features()
90// {
91// }
92//
93//
94// // BoWNamedEntityPrivate::BoWNamedEntityPrivate(const BoWNamedEntity& ne):
95// // BoWComplexTokenPrivate(ne),
96// // m_type(ne.m_d->m_type),
97// // m_features(ne.m_d->m_features)
98// // {
99// // }
100// // BoWNamedEntityPrivate::BoWNamedEntityPrivate(const BoWNamedEntity& ne,
101// // const std::map<BoWToken*,BoWToken*>& refmap):
102// // BoWComplexTokenPrivate(ne,refmap),
103// // m_type(ne.m_d->m_type),
104// // m_features(ne.m_d->m_features)
105// // {
106// // }
107//
108// BoWNamedEntityPrivate::~BoWNamedEntityPrivate()
109// {
110// m_features.clear();
111// }
112
113
114//**********************************************************************
115// constructors
116
121
124 const uint64_t position,
125 const uint64_t length) :
127{
128 m_d->m_lemma = lemma;
130 m_d->m_position = position;
131 m_d->m_length = length;
132 static_cast<BoWNamedEntityPrivate*>(m_d)->m_type = theType;
133}
134
136 const LinguisticCode theCategory,
138 const uint64_t position,
139 const uint64_t length):
141{
142 m_d->m_lemma = lemma;
143 m_d->m_category = theCategory;
144 m_d->m_position = position;
145 m_d->m_length = length;
146 static_cast<BoWNamedEntityPrivate*>(m_d)->m_type = theType;
147}
148
149
152{
153 static_cast<BoWNamedEntityPrivate&>(*m_d).copy(ne);
154}
155
160
161
166
168{
169 if (&t != this) {
171 static_cast<BoWNamedEntityPrivate*>(m_d)->m_type=static_cast<BoWNamedEntityPrivate*>(t.m_d)->m_type;
172 static_cast<BoWNamedEntityPrivate*>(m_d)->m_features=static_cast<BoWNamedEntityPrivate*>(t.m_d)->m_features;
173 }
174 return *this;
175}
176
178{
179 return( BoWComplexToken::operator==(t) && static_cast<BoWNamedEntityPrivate*>(m_d)->m_type==static_cast<BoWNamedEntityPrivate*>(t.m_d)->m_type && static_cast<BoWNamedEntityPrivate*>(m_d)->m_features==static_cast<BoWNamedEntityPrivate*>(t.m_d)->m_features);
180}
181//**************************************************************
182// functions
183//**************************************************************
186{
187 return static_cast<BoWNamedEntityPrivate*>(m_d)->m_type;
188}
189
194
195const
196std::map<std::string, LimaString>& BoWNamedEntity::getFeatures() const {
197 return static_cast<BoWNamedEntityPrivate*>(m_d)->m_features;
198}
199
200void BoWNamedEntity::setFeature(const std::string& attribute,
201 const LimaString& value) {
202 static_cast<BoWNamedEntityPrivate*>(m_d)->m_features[attribute]=value;
203}
204
206{
207 return new BoWNamedEntity(*(new BoWNamedEntityPrivate(static_cast<BoWNamedEntityPrivate&>(*(this->m_d)))));
208}
209// BoWNamedEntity*
210// BoWNamedEntity::clone(const std::map<BoWToken*,BoWToken*>& map) const
211// {
212// return new BoWNamedEntity(*this,map);
213// }
214
215
216//**********************************************************************
217// input/output functions
218//**********************************************************************
220 std::ostringstream oss;
221 if (! static_cast<BoWNamedEntityPrivate*>(m_d)->m_features.empty()) {
222 std::map<std::string, LimaString>::const_iterator i=static_cast<BoWNamedEntityPrivate*>(m_d)->m_features.begin();
223 oss << (*i).first << "="
224 << Misc::limastring2utf8stdstring((*i).second);
225 i++;
226 while (i != static_cast<BoWNamedEntityPrivate*>(m_d)->m_features.end()) {
227 oss << ";"
228 << (*i).first << "="
229 << Misc::limastring2utf8stdstring((*i).second);
230 i++;
231 }
232 }
233 return oss.str();
234}
235
237 std::ostringstream oss;
238 oss << BoWToken::getOutputUTF8String(macroManager) << "->" << getUTF8StringParts(macroManager)
239 << ":" << Misc::limastring2utf8stdstring(MediaticData::MediaticData::single().getEntityName(static_cast<BoWNamedEntityPrivate*>(m_d)->m_type)) << ":" << getFeaturesUTF8String();
240 return oss.str();
241}
242
244 std::ostringstream oss;
246 << ":" << static_cast<BoWNamedEntityPrivate*>(m_d)->m_type << ":" << getFeaturesUTF8String();
247 return oss.str();
248}
249
250} // namespace BagOfWords
251} // namespace Common
252} // namespace Lima
#define L_NONE
Definition StdBitset.h:338
This is a complex token for an index.
BoWComplexToken & operator=(const BoWComplexToken &)
std::string getUTF8StringParts(const Common::PropertyCode::PropertyManager *macroManager=0) const
std::map< std::string, LimaString > m_features
void writeNEProperties(std::ostream &file) const
This is a complex token used to represent a named entity token.
const std::map< std::string, LimaString > & getFeatures() const
virtual BoWNamedEntity * clone() const override
void setNamedEntityType(const Common::MediaticData::EntityType &)
std::string getFeaturesUTF8String(void) const
get a string of the features, of the kind : attribute1=value1;attribute2=value2
virtual std::string getOutputUTF8String(const Common::PropertyCode::PropertyManager *macroManager=0) const override
get a string of the BoWToken for output function
virtual std::string getIdUTF8String(void) const override
function used to identify a bowtoken in a text (used in BowDumper)
BoWNamedEntity & operator=(const BoWNamedEntity &)
Common::MediaticData::EntityType getNamedEntityType(void) const
bool operator==(const BoWNamedEntity &)
void setFeature(const std::string &attribute, const LimaString &value)
virtual std::string getOutputUTF8String(const Common::PropertyCode::PropertyManager *macroManager=0) const override
get a string of the BoWToken for output function
Definition bowToken.cpp:430
Provide tools to manage a specific property.
static const MediaticData & single()
const singleton accessor
Definition Singleton.h:51
std::string limastring2utf8stdstring(const Lima::LimaString &phrase, uint32_t size0)
Convert a wide string to a string , in dest up to size bytes.
NAUTITIA.
QString LimaString
Definition LimaString.h:33