LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
StructuredBoWToBoWDocument.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
6/************************************************************************
7 *
8 * @file StructuredBoWToBoWDocument.cpp
9 * @author Besancon Romaric (romaric.besancon@cea.fr)
10 * @date Mon Mar 6 2006
11 * @version $Id$
12 * copyright Copyright (C) 2006-2012 by CEA LIST
13 *
14 ***********************************************************************/
15
17
18using namespace Lima::Common::BagOfWords;
19using namespace Lima::Common::Misc;
20
21namespace Lima {
22namespace LinguisticProcessing {
23
24#define LPCLIENTSBOWHANDLERLOGINIT LOGINIT("LP::SBoWHandler")
25
26//***********************************************************************
27// constructors and destructors
29StructuredBoWToBoWDocument(std::vector<BoWDocument>* bowDocs):
30m_bowDocs(bowDocs),
31m_inIndexingNode(),
32m_currentDocument(0)
33{
34}
35
37{
38 // do not delete pointer
39}
40
41//***********************************************************************
44 const std::string& /*unused elementName*/)
45{
46 m_inIndexingNode.push_back(false);
47}
48
51 const std::string& /*unused elementName*/)
52{
53 BoWDocument newDoc;
54 m_bowDocs->push_back(newDoc);
55 m_currentDocument=&(m_bowDocs->back());
56 if (properties!=0) {
57 m_currentDocument->setProperties(static_cast<const Common::Misc::GenericDocumentProperties&>(*properties));
58 }
59 m_inIndexingNode.push_back(true);
60}
61
63processSBoWText(const BoWText* boWText,
64 bool /*unused useIterators*/, bool useIndexIterator)
65{
66 LIMA_UNUSED(useIndexIterator)
67 if (! m_inIndexingNode.empty() &&
68 m_inIndexingNode.back() &&
69 boWText!=0) {
70 // clone BoWText (pointers of boWText will be deleted)
71 BoWText* newBoWText=new BoWText(*boWText);
72 m_currentDocument->insert(m_currentDocument->end(),
73 newBoWText->begin(),
74 newBoWText->end());
75 }
76}
77
80 bool /*unused useIterators*/, bool /*useIndexIterator*/)
81{
82 if (m_inIndexingNode.back()) {
83 addProperties(*m_currentDocument,properties);
84 }
85}
86
89{
90 m_inIndexingNode.pop_back();
91}
92
93void StructuredBoWToBoWDocument::
94addProperties(BoWDocument& /*document*/,
95 const GenericDocumentProperties* properties)
96{
97 if (properties == nullptr ) {
98 return;
99 }
100 std::pair<GenericDocumentProperties::IntPropertiesIterator,GenericDocumentProperties::IntPropertiesIterator> intProps=properties->getIntProperties();
101 for (GenericDocumentProperties::IntPropertiesIterator it=intProps.first,it_end=intProps.second;
102 it!=it_end; it++) {
103 m_currentDocument->setIntValue((*it).first,(*it).second);
104 }
105
106 std::pair<GenericDocumentProperties::StringPropertiesIterator,GenericDocumentProperties::StringPropertiesIterator> strProps=properties->getStringProperties();
107 for (GenericDocumentProperties::StringPropertiesIterator it=strProps.first,it_end=strProps.second;
108 it!=it_end; it++) {
109 m_currentDocument->setStringValue((*it).first,(*it).second);
110 }
111
112 std::pair<GenericDocumentProperties::DatePropertiesIterator,GenericDocumentProperties::DatePropertiesIterator> dateProps=properties->getDateProperties();
113 for (GenericDocumentProperties::DatePropertiesIterator it=dateProps.first,it_end=dateProps.second;
114 it!=it_end; it++) {
115 m_currentDocument->setDateValue((*it).first,(*it).second);
116 }
117
118 std::pair<GenericDocumentProperties::DateIntervalPropertiesIterator,GenericDocumentProperties::DateIntervalPropertiesIterator> dateIntProps=properties->getDateIntervalProperties();
119 for (GenericDocumentProperties::DateIntervalPropertiesIterator it=dateIntProps.first,it_end=dateIntProps.second;
120 it!=it_end; it++) {
121 m_currentDocument->setDateIntervalValue((*it).first,(*it).second);
122 }
123
124}
125
126
127} // end namespace
128} // end namespace
#define LIMA_UNUSED(x)
Definition LimaCommon.h:224
represent a document as a Bag Of Word, with associated document properties.
Definition bowDocument.h:57
virtual void setProperties(const Misc::GenericDocumentProperties &properties)
This class represents a list of elements, that are pointers on polymmorphic tokens that can be simple...
Definition bowText.h:48
std::pair< DateIntervalPropertiesIterator, DateIntervalPropertiesIterator > getDateIntervalProperties() const
std::pair< DatePropertiesIterator, DatePropertiesIterator > getDateProperties() const
std::pair< IntPropertiesIterator, IntPropertiesIterator > getIntProperties() const
void setStringValue(const std::string &propName, const std::string &val)
std::map< std::string, std::string >::const_iterator StringPropertiesIterator
void setDateIntervalValue(const std::string &propName, const std::pair< QDate, QDate > &val)
std::map< std::string, std::pair< QDate, QDate > >::const_iterator DateIntervalPropertiesIterator
void setDateValue(const std::string &propName, const QDate &val)
std::map< std::string, QDate >::const_iterator DatePropertiesIterator
std::pair< StringPropertiesIterator, StringPropertiesIterator > getStringProperties() const
void setIntValue(const std::string &propName, const uint64_t &val)
std::map< std::string, uint64_t >::const_iterator IntPropertiesIterator
Read access functions for all "only once valued" properties return an iterator Types may be any of (u...
void processSBoWText(const Common::BagOfWords::BoWText *boWText, bool useIterators, bool useIndexIterator) override
StructuredBoWToBoWDocument(std::vector< Common::BagOfWords::BoWDocument > *bowDocs)
void openSBoWIndexingNode(const Common::Misc::GenericDocumentProperties *properties, const std::string &elementName) override
void processProperties(const Common::Misc::GenericDocumentProperties *properties, bool useIterators, bool useIndexIterator) override
void openSBoWNode(const Common::Misc::GenericDocumentProperties *properties, const std::string &elementName) override
NAUTITIA.