Tanl Linguistic Pipeline |
00001 /* 00002 ** Tanl 00003 ** tag/POS/PosTagger.h 00004 ** ---------------------------------------------------------------------- 00005 ** Copyright (c) 2009 Giuseppe Attardi (attardi@di.unipi.it). 00006 ** ---------------------------------------------------------------------- 00007 */ 00008 00009 #ifndef Tanl_POS_PosTagger_H 00010 #define Tanl_POS_PosTagger_H 00011 00012 // Tanl library 00013 #include "IPipe.h" 00014 #include "Token.h" 00015 00016 // standard 00017 #include <stdexcept> 00018 #include <vector> 00019 #include <cstring> 00020 #include <functional> 00021 00022 namespace Tanl { namespace POS { 00023 00028 struct PosTagger : public Tanl::IPipe<Tanl::Token*, std::vector<Tanl::Token*>*> 00029 // should be: Tanl::IPipe<std::vector<Tanl::Token*>*, std::vector<Tanl::Token*>*> 00030 { 00031 PosTagger() { } 00032 00038 PosTagger(const char* modelFiles); 00039 00040 ~PosTagger() { } 00041 00057 Tanl::Enumerator<std::vector<Tanl::Token*>*>* pipe(Tanl::Enumerator<Tanl::Token*>& ts); 00058 00059 }; 00060 00061 struct PosTaggerPipe : public Tanl::Enumerator<std::vector<Tanl::Token*>*> 00062 { 00063 00064 PosTaggerPipe(PosTagger& tagger, Tanl::Enumerator<Tanl::Token*>& ts) : 00065 tagger(tagger), 00066 ts(ts), 00067 sentence(0) 00068 { } 00069 00072 bool MoveNext(); 00073 00075 std::vector<Tanl::Token*>* Current(); 00076 00077 PosTagger& tagger; 00078 00079 Tanl::Enumerator<Tanl::Token*>& ts; 00080 00081 std::vector<Tanl::Token*>* sentence; 00082 00083 }; 00084 00085 class PosTaggerError : public std::runtime_error { 00086 public: 00087 PosTaggerError(std::string const& what) : std::runtime_error(what) { } 00088 }; 00089 00090 } // namespace POS 00091 } // namespace Tanl 00092 00093 #endif // Tanl_POS_PosTagger_H