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 Tanl_POS_HMM_H
00025 #define Tanl_POS_HMM_H
00026
00027
00028 #include <string>
00029
00030
00031 #include "State.h"
00032
00033 namespace Tanl { namespace POS {
00034
00038 struct HMM {
00044 typedef std::pair<State, double> Transition;
00045
00046 enum seen_type { Seen, LowerCaseSeen, SpecialToken, UnSeen };
00047
00048 struct Observation {
00049
00050 Observation() { }
00051
00052 Observation(std::string& word) :
00053 word(word), is_first(false), seen(Seen) { }
00054
00055 char const* type2string() const {
00056 switch (seen) {
00057 case Seen: return "S";
00058 case LowerCaseSeen: return "*L";
00059 case SpecialToken: return "*D";
00060 case UnSeen: return "*";
00061 }
00062 }
00063
00064 std::string word;
00065 bool is_first;
00066 seen_type seen;
00067 std::vector<std::string> anals;
00068 std::vector<std::pair<std::string, double> > guessed;
00069 };
00070
00075 virtual std::vector<Transition> transitions(State const& from,
00076 Observation const& obs) { }
00077
00078 typedef std::vector<Observation> Observations;
00079 };
00080
00081 }
00082 }
00083
00084 #endif // Tanl_POS_HMM_H