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_NER_TokenCategorizer_H
00025 #define Tanl_NER_TokenCategorizer_H
00026
00027
00028 #include "include/ixe.h"
00029 #include "text/RegExp.h"
00030
00031 #include "text/WordSet.h"
00032
00033
00034 #include <map>
00035 #include <string>
00036
00037 namespace Tanl {
00038 namespace NER {
00039
00040 enum Language {
00041 en = 0,
00042 cz,
00043 de,
00044 es,
00045 fr,
00046 it,
00047 pt
00048 };
00049
00050 struct EntityType
00051 {
00052 enum Type
00053 {
00054 NoType = 0,
00055 Word,
00056 Quantity,
00057 Name,
00058 Time,
00059 Symbol,
00060 Punct,
00061 Address,
00062 TypeEnd
00063 };
00064
00065 enum Subtype
00066 {
00067 Person = TypeEnd,
00068 Organization,
00069 Location,
00070 Product,
00071 Number,
00072 Money,
00073 Measure,
00074 Duration,
00075 Date,
00076 Instant,
00077 Url,
00078 Email
00079 };
00080
00081 EntityType(Type type = NoType, Subtype subtype = (Subtype)NoType) :
00082 type(type), subtype(subtype)
00083 { }
00084
00085 Type type;
00086 Subtype subtype;
00087 };
00088
00092 class TokenCategorizer
00093 {
00094 public:
00095
00099 TokenCategorizer(char const* lang);
00100
00104 EntityType analyze(char const* token);
00105
00106 private:
00107 Tanl::Text::WordSet* abbrev;
00108 Language language;
00109
00110 Tanl::Text::RegExp::Pattern wordPattern;
00111 Tanl::Text::RegExp::Pattern quantityPattern;
00112 Tanl::Text::RegExp::Pattern currencyPattern;
00113 Tanl::Text::RegExp::Pattern datePattern;
00114 Tanl::Text::RegExp::Pattern timePattern;
00115
00116 Tanl::Text::RegExp::Pattern MUC_name;
00117 Tanl::Text::RegExp::Pattern MUC_num;
00118 Tanl::Text::RegExp::Pattern MUC_time;
00119 Tanl::Text::RegExp::Pattern MUC_opt;
00120
00121 Tanl::Text::RegExp::Pattern tagPattern;
00122 Tanl::Text::RegExp::Pattern urlPattern;
00123 Tanl::Text::RegExp::Pattern emailPattern;
00124
00125 static std::map<std::string, EntityType::Subtype> nameType;
00126 };
00127
00128 }
00129 }
00130
00131 #endif // Tanl_NER_TokenCategorizer_H
00132