15#ifndef LIMA_LINGUISTICPROCESSING_SYNTACTICANALYSIS_CHAINSDISAMBIGUATOR_H
16#define LIMA_LINGUISTICPROCESSING_SYNTACTICANALYSIS_CHAINSDISAMBIGUATOR_H
37namespace LinguisticProcessing {
38namespace SyntacticAnalysis {
40#define SADLOGINIT LOGINIT("LP::SyntacticAnalysis::Disamb")
49 Elem(uint64_t
id,
unsigned char type=0) : m_id(id), m_type(type) {}
50 Elem(
const Elem& elem) : m_id(elem.m_id), m_type(elem.m_type), m_elems(elem.m_elems) {}
57 inline uint64_t
id()
const {
return m_id;}
62 inline unsigned char type()
const {
return m_type;}
67 inline const std::vector< uint64_t >&
elems()
const {
return m_elems;}
72 inline std::vector< uint64_t >&
elems() {
return m_elems;}
80 std::vector< uint64_t > m_elems;
90 Key(uint64_t
id,
const std::set< uint64_t>& chainsToIgnore = std::set< uint64_t>()) :
91 m_id(id), m_chainsToIgnore(chainsToIgnore) {}
93 Key(
const Key& key) : m_id(key.m_id), m_chainsToIgnore(key.m_chainsToIgnore) {}
97 Key& operator=(
const Key& key);
104 inline uint64_t
id()
const {
return m_id;}
105 inline const std::set< uint64_t >&
chainsToIgnore()
const {
return m_chainsToIgnore;}
114 std::set< uint64_t > m_chainsToIgnore;
123 const std::set< uint64_t>& chainsToIgnore,
124 unsigned char type=0,
125 uint64_t chainId=std::numeric_limits<uint64_t>::max());
140 inline const Key&
key()
const {
return m_key;}
141 inline const std::list< Elem >&
elems()
const {
return m_elems;}
145 inline uint64_t
chainsNb()
const {
return m_chainsNb;}
147 inline std::list< Elem >&
elems() {
return m_elems;}
153 inline void elems(
const std::list< Elem >& elems) {m_elems =
elems;}
159 inline uint64_t
depsNb()
const {
return m_depsNb; }
170 bool incrOutChainsWordsNb,
177 std::list< Elem > m_elems;
182 uint64_t m_idealConjVerbNb;
184 uint64_t m_conjVerbNb;
186 uint64_t m_outChainsWordsNb;
224 uint64_t depGraphMaxBranchingFactor);
245 void applyDisambiguisation();
257 void cancelCurrentChain(
Elem elem,
Path& hyp);
268 void startWithSeveralChainsOnNewVertex(
270 const std::set< LinguisticAnalysisStructure::ChainIdStruct >& nextVertexChains,
271 const Path& currentHyp);
278 uint64_t computeDepsNb(
const Path& path);
281 std::deque< Path > m_hypsStack;
289 std::multiset< Path > m_completePaths;
307 uint64_t m_depGraphMaxBranchingFactor;
A graph structure for linguistic analysis.
LinguisticGraph::vertex_descriptor LinguisticGraphVertex
#define LIMA_SYNTACTICANALYSIS_EXPORT
Data used for the syntactic analyzis of texts.
Provide function to read write and check a property.
Builds possible chains paths between two vertices.
virtual ~ChainsDisambiguator()
Destructor.
An element of a Path (out of chain vertex or candidate chain)
unsigned char type() const
Accessor to the type of this elem: vertex or chain.
Elem(uint64_t id, unsigned char type=0)
std::vector< uint64_t > & elems()
Non const accessor to the subelements collection.
const std::vector< uint64_t > & elems() const
Const accessor to the subelements collection.
uint64_t id() const
Accessor to the vertex or chain id.
Stores a path end vertex id and the chains ids that have been found to ignore.
Key(uint64_t id, const std::set< uint64_t > &chainsToIgnore=std::set< uint64_t >())
const std::set< uint64_t > & chainsToIgnore() const
std::set< uint64_t > & chainsToIgnore()
Candidate path during chains search.
void chainsNb(uint64_t chainsNb)
uint64_t conjVerbNb() const
void idealConjVerbNb(uint64_t idealConjVerbNb)
uint64_t & outChainsWordsNb()
uint64_t outChainsWordsNb() const
uint64_t chainsNb() const
uint64_t idealConjVerbNb() const
uint64_t & idealConjVerbNb()
std::list< Elem > & elems()
void depsNb(uint64_t depsNb)
void conjVerbNb(uint64_t conjVerbNb)
void elems(const std::list< Elem > &elems)
const std::list< Elem > & elems() const
void outChainsWordsNb(uint64_t outChainsWordsNb)
This class points to a graph, its dependency graph and the structure that holds the maping between th...
std::ostream & operator<<(std::ostream &os, const Key &k)
Operators to dump to stream the classes defined here.
static bool operator<(const QStringView &entityStr, const TextHtmlEntity &entity)