LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
SyntagmaticMatrix.h
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
16#ifndef SYNTAGMATICMATRIX_H
17#define SYNTAGMATICMATRIX_H
18
20#include "TokenFilter.h"
25
26#include <set>
27#include <map>
28
29namespace Lima
30{
31namespace LinguisticProcessing
32{
33namespace SyntacticAnalysis
34{
35
36#define SYNTAGMDEFSTRUCT_CLASSID "SyntagmDefinitionStructure"
37
39 {
40public:
42 virtual ~SyntagmaticMatrixRow() = default;
43
46
47
48 void deleteRow()
49 {
50 m_filters.clear();
51 }
52
53 std::set< TokenFilter, tfless >::const_iterator find(const TokenFilter& f) const;
54
55 std::set< TokenFilter, tfless > m_filters;
56 };
57
58inline LIMA_SYNTACTICANALYSIS_EXPORT std::ostream& operator<<(std::ostream &os, const SyntagmaticMatrixRow& r)
59{
60 std::set< TokenFilter, tfless >::const_iterator it, it_end;
61 it = r.m_filters.begin(); it_end = r.m_filters.end();
62 for (; it != it_end; it++)
63 os << (*it) << " ; ";
64 os << std::endl;
65 return os;
66}
67
68class tf_dwless : public std::less< TokenFilter >
69{
70public:
71 bool operator()(const TokenFilter& x, const TokenFilter& y) const;
72 bool operator()(const TokenFilter& x, const std::pair<TokenFilter,SyntagmaticMatrixRow>& p) const;
73 bool operator()(const std::pair<TokenFilter,SyntagmaticMatrixRow>& p, const TokenFilter& y) const;
74};
75
76typedef std::map< TokenFilter, SyntagmaticMatrixRow, tfless > SyntagmaticMatrixFilter;
77
79{
80public:
81
83 m_filters(SyntagmaticMatrixFilter()),
84 m_language()
85 {}
86
88 m_filters(SyntagmaticMatrixFilter(matrix.m_filters)),
89 m_language(matrix.m_language)
90 {}
91
92 virtual ~SyntagmaticMatrix() {}
93
94 void deleteMatrix();
95
96 SyntagmaticMatrixFilter& filters();
97
98 const SyntagmaticMatrixFilter& filters() const;
99
100 SyntagmaticMatrixFilter::const_iterator find(const TokenFilter& f) const;
101
102 void display() const;
103
104 inline MediaId language() const
105 {
106 return m_language;
107 }
108
109 inline void language(MediaId lang)
110 {
111 m_language=lang;
112 }
113
114private:
115 SyntagmaticMatrixFilter m_filters;
116 MediaId m_language;
117};
118
120{
121 Q_OBJECT
122public:
124
125 virtual ~SyntagmDefStruct();
126
127 void init(
129 Manager* manager) override;
130
131 inline SyntagmaticMatrix& nominal() {return m_nominalMatrix;}
132 inline SyntagmaticMatrix& verbal() {return m_verbalMatrix;}
133 inline SyntagmaticMatrixRow& nominalBegin() {return m_nomChainBeg;}
134 inline SyntagmaticMatrixRow& nominalEnd() {return m_nomChainEnd;}
135 inline SyntagmaticMatrixRow& verbalBegin() {return m_verbChainBeg;}
136 inline SyntagmaticMatrixRow& verbalEnd() {return m_verbChainEnd;}
137
138 void loadFromFile(const std::string& fileName);
139
140 void deleteMatrices();
141
142 void display() const;
143
144 bool canChainBeginBy(const LinguisticAnalysisStructure::MorphoSyntacticData* filter, Common::MediaticData::ChainsType type) const;
147
148 bool canNominalChainBeginBy(const LinguisticAnalysisStructure::MorphoSyntacticData* cat) const;
149 bool canNominalChainEndBy(const LinguisticAnalysisStructure::MorphoSyntacticData* cat) const;
150 bool canVerbalChainBeginBy(const LinguisticAnalysisStructure::MorphoSyntacticData* cat) const;
151 bool canVerbalChainEndBy(const LinguisticAnalysisStructure::MorphoSyntacticData* cat) const;
152 bool belongsToNominalMatrix(const LinguisticAnalysisStructure::MorphoSyntacticData* src, const LinguisticAnalysisStructure::MorphoSyntacticData* dest) const;
153 bool belongsToVerbalMatrix(const LinguisticAnalysisStructure::MorphoSyntacticData* src, const LinguisticAnalysisStructure::MorphoSyntacticData* dest) const;
154
155 inline MediaId language() const {return m_language;};
156
157private:
158 MediaId m_language;
159 const Common::PropertyCode::PropertyAccessor* m_macroAccessor;
160 const Common::PropertyCode::PropertyAccessor* m_microAccessor;
161
162 // Definition of the nominal/verbal chains matrices
163 SyntagmaticMatrix m_nominalMatrix;
164 SyntagmaticMatrix m_verbalMatrix;
165
166 // Definition of the authorized categories to begin/end a nominal/verbal chain
167 SyntagmaticMatrixRow m_nomChainBeg;
168 SyntagmaticMatrixRow m_nomChainEnd;
169 SyntagmaticMatrixRow m_verbChainBeg;
170 SyntagmaticMatrixRow m_verbChainEnd;
171
172};
173
174
175
176} // namespace SyntacticAnalysis
177} // namespace LinguisticProcessing
178} // namespace Lima
179
180#endif
#define LIMA_SYNTACTICANALYSIS_EXPORT
Provide function to read write and check a property.
Manage initialization of InitializableObjects using configuration module and parameters.
SyntagmaticMatrixRow & operator=(const SyntagmaticMatrixRow &row)=default
SyntagmaticMatrixRow(const SyntagmaticMatrixRow &row)=default
bool operator()(const TokenFilter &x, const TokenFilter &y) const
Used to search a DicoWord inside syntagmatic structure.
ChainsType
syntactic chains type
std::map< TokenFilter, SyntagmaticMatrixRow, tfless > SyntagmaticMatrixFilter
std::ostream & operator<<(std::ostream &os, const Key &k)
Operators to dump to stream the classes defined here.
NAUTITIA.