Frog
Parser.h
Go to the documentation of this file.
1 /* ex: set tabstop=8 expandtab: */
2 /*
3  Copyright (c) 2006 - 2020
4  CLST - Radboud University
5  ILK - Tilburg University
6 
7  This file is part of frog:
8 
9  A Tagger-Lemmatizer-Morphological-Analyzer-Dependency-Parser for
10  several languages
11 
12  frog is free software; you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation; either version 3 of the License, or
15  (at your option) any later version.
16 
17  frog is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with this program. If not, see <http://www.gnu.org/licenses/>.
24 
25  For questions and suggestions, see:
26  https://github.com/LanguageMachines/frog/issues
27  or send mail to:
28  lamasoftware (at ) science.ru.nl
29 
30 */
31 
32 #ifndef PARSER_H
33 #define PARSER_H
34 
35 #include <string>
36 #include <vector>
37 #include <set>
38 #include "ticcutils/LogStream.h"
39 #include "ticcutils/Configuration.h"
40 #include "ticcutils/Unicode.h"
41 #include "libfolia/folia.h"
42 #include "ucto/tokenize.h"
43 #include "timbl/TimblAPI.h"
44 #include "frog/FrogData.h"
45 #include "frog/ckyparser.h" // only for struct parsrel....
46 
47 struct parseData;
48 class TimerBlock;
49 class timbl_result;
50 
51 class ParserBase {
52  public:
53  explicit ParserBase( TiCC::LogStream* errlog, TiCC::LogStream* dbglog ):
54  isInit( false ),
55  filter( 0 )
56  {
57  errLog = new TiCC::LogStream(errlog, "parser-");
58  dbgLog = new TiCC::LogStream(dbglog, "parser-dbg-");
59  };
60  virtual ~ParserBase();
61  virtual bool init( const TiCC::Configuration& ) = 0;
62  virtual void add_provenance( folia::Document& doc,
63  folia::processor * ) const =0;
64  virtual void Parse( frog_data&, TimerBlock& ) = 0;
65  virtual void add_result( const frog_data&,
66  const std::vector<folia::Word*>& ) const;
67  std::vector<std::string> createParserInstances( const parseData& );
68  std::string getTagset() const { return dep_tagset; };
69  protected:
70  bool isInit;
71  TiCC::LogStream *errLog;
72  TiCC::LogStream *dbgLog;
73  std::string _version;
74  std::string dep_tagset;
75  std::string POS_tagset;
76  std::string MWU_tagset;
77  std::string textclass;
78  TiCC::UniFilter *filter;
79  std::string _host;
80  std::string _port;
81  ParserBase( const ParserBase& ){}; // inhibit copies
82 };
83 
84 class Parser: public ParserBase {
85  public:
86  explicit Parser( TiCC::LogStream* errlog, TiCC::LogStream* dbglog ):
87  ParserBase( errlog, dbglog ),
88  maxDepSpan( 0 ),
89  pairs(0),
90  dir(0),
91  rels(0) {};
92  ~Parser();
93  bool init( const TiCC::Configuration& );
94  void add_provenance( folia::Document& doc, folia::processor * ) const;
96  void Parse( frog_data&, TimerBlock& );
97  private:
98  std::vector<std::string> createPairInstances( const parseData& );
99  std::vector<std::string> createDirInstances( const parseData& );
100  std::vector<std::string> createRelInstances( const parseData& );
101  std::vector<timbl_result> timbl_server( const std::string&,
102  const std::vector<std::string>& );
103  std::string maxDepSpanS;
104  size_t maxDepSpan;
105  Timbl::TimblAPI *pairs;
106  Timbl::TimblAPI *dir;
107  Timbl::TimblAPI *rels;
108  std::string _pairs_base;
109  std::string _dirs_base;
110  std::string _rels_base;
111 };
112 
113 void appendParseResult( frog_data& fd,
114  const std::vector<parsrel>& res );
115 #endif
ParserBase::add_provenance
virtual void add_provenance(folia::Document &doc, folia::processor *) const =0
ParserBase::_host
std::string _host
Definition: Parser.h:79
ParserBase::MWU_tagset
std::string MWU_tagset
Definition: Parser.h:76
frog_data
a datastructure to hold all frogged information of one Sentence
Definition: FrogData.h:76
Parser::add_provenance
void add_provenance(folia::Document &doc, folia::processor *) const
Definition: Parser.cxx:868
ParserBase
Definition: Parser.h:51
Parser::prepareParse
parseData prepareParse(frog_data &)
Definition: Parser.cxx:914
Parser::~Parser
~Parser()
Definition: Parser.cxx:308
Parser::Parser
Parser(TiCC::LogStream *errlog, TiCC::LogStream *dbglog)
Definition: Parser.h:86
ParserBase::init
virtual bool init(const TiCC::Configuration &)=0
ParserBase::_port
std::string _port
Definition: Parser.h:80
ParserBase::getTagset
std::string getTagset() const
Definition: Parser.h:68
Parser::init
bool init(const TiCC::Configuration &)
Definition: Parser.cxx:90
parseData
structure to store parsing results
Definition: Parser.cxx:62
ckyparser.h
ParserBase::filter
TiCC::UniFilter * filter
Definition: Parser.h:78
ParserBase::dbgLog
TiCC::LogStream * dbgLog
Definition: Parser.h:72
ParserBase::add_result
virtual void add_result(const frog_data &, const std::vector< folia::Word * > &) const
Definition: Parser.cxx:1208
appendParseResult
void appendParseResult(frog_data &fd, const std::vector< parsrel > &res)
Definition: Parser.cxx:1101
Parser::Parse
void Parse(frog_data &, TimerBlock &)
Definition: Parser.cxx:1125
ParserBase::Parse
virtual void Parse(frog_data &, TimerBlock &)=0
ParserBase::~ParserBase
virtual ~ParserBase()
Definition: Parser.cxx:1202
ParserBase::textclass
std::string textclass
Definition: Parser.h:77
ParserBase::errLog
TiCC::LogStream * errLog
Definition: Parser.h:71
ParserBase::ParserBase
ParserBase(const ParserBase &)
Definition: Parser.h:81
Parser
Definition: Parser.h:84
timbl_result
this class stores a triple of Timbl results
Definition: csidp.h:42
ParserBase::ParserBase
ParserBase(TiCC::LogStream *errlog, TiCC::LogStream *dbglog)
Definition: Parser.h:53
ParserBase::POS_tagset
std::string POS_tagset
Definition: Parser.h:75
ParserBase::isInit
bool isInit
Definition: Parser.h:68
FrogData.h
ParserBase::dep_tagset
std::string dep_tagset
Definition: Parser.h:74
TimerBlock
Definition: Frog-util.h:51
ParserBase::createParserInstances
std::vector< std::string > createParserInstances(const parseData &)
ParserBase::_version
std::string _version
Definition: Parser.h:73