00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef DeSR_SentenceReader_H
00025 #define DeSR_SentenceReader_H
00026
00027
00028 #include "text/RegExp.h"
00029 #include "text/XmlReader.h"
00030
00031
00032 #include <istream>
00033
00034
00035 #include "PosTagger.h"
00036 #include "Sentence.h"
00037 #include "Enumerator.h"
00038
00039 namespace Tanl {
00040
00041 class Corpus;
00042
00043 class SentenceReader : public Enumerator<Sentence*>
00044 {
00045 public:
00046
00047 SentenceReader() { }
00048
00054 SentenceReader(std::istream* is, Corpus* corpus);
00055
00057 virtual bool MoveNext();
00058
00060 virtual Sentence* Current();
00061
00063 virtual void reset() {}
00064
00065 virtual ~SentenceReader() {}
00066
00067 Corpus* corpus;
00068
00069 protected:
00070 Sentence* sentence;
00071 std::istream* is;
00072 };
00073
00078 class ConllXSentenceReader : public SentenceReader
00079 {
00080 public:
00081
00087 ConllXSentenceReader(std::istream* is, Corpus* corpus);
00088
00090 bool MoveNext();
00091
00092 MorphExtractor const& morphExtractor;
00093 };
00094
00098 class DgaSentenceReader : public SentenceReader
00099 {
00100 public:
00101
00106 DgaSentenceReader(std::istream* is, Corpus* corpus);
00107
00109 bool MoveNext();
00110
00111 private:
00112 Tanl::XML::XmlReader reader;
00113 };
00114
00119 class TokenSentenceReader : public SentenceReader
00120 {
00121 public:
00122
00127 TokenSentenceReader(std::istream* is, Corpus* corpus = 0);
00128
00130 bool MoveNext();
00131
00132 private:
00133 static Tanl::Text::RegExp::Pattern reTok;
00134
00135 # ifdef STEMMER
00136 sb_stemmer* stemmer;
00137 # endif
00138 };
00139
00140 class TaggedSentenceReader : public SentenceReader
00141 {
00142 public:
00143 TaggedSentenceReader(SentenceReader* reader, Parser::PosTagger* tagger) :
00144 reader(reader),
00145 tagger(tagger)
00146 { }
00147
00149 bool MoveNext();
00150
00151 SentenceReader* reader;
00152 Parser::PosTagger* tagger;
00153
00154 };
00155
00156 }
00157
00158 #endif // DeSR_SentenceReader_H