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_Language_H
00025 #define DeSR_Language_H
00026
00027 #include "MorphExtractor.h"
00028
00029 namespace Tanl {
00030
00034 struct Language
00035 {
00036 char const* verbCPos;
00037 char const* nounCPos;
00038 char const* prepCPos;
00039 char const* timeDep;
00040 char const* locDep;
00041 MorphExtractor* morphExtractor;
00042
00043 static char const* DEFAULT_ROOT_LABEL;
00044
00045 Language(char const* v = "VB", char const* n = "NN", char const* p = "IN") :
00046 verbCPos(v),
00047 nounCPos(n),
00048 prepCPos(p),
00049 timeDep(""),
00050 locDep(""),
00051 morphExtractor(new MorphExtractor())
00052 { }
00053
00054 ~Language() { delete morphExtractor; }
00055
00057 virtual bool rootPos(std::string const& pos) const { return true; }
00058
00060 char const* code() const;
00061
00063 static Language const* get(char const* code);
00064 };
00065
00066 typedef std::pair<char const*, Language const*> tableItem;
00067
00071 extern tableItem languageTable[];
00072
00073 void freeLanguageTable();
00074
00075 struct ArabicLanguage : public Language
00076 {
00077 ArabicLanguage() { morphExtractor = new ArabicMorphExtractor(); }
00078 };
00079
00080 struct BasqueLanguage : public Language
00081 {
00082 BasqueLanguage() :
00083 Language("ADI", "IZE", "")
00084 { morphExtractor = new BasqueMorphExtractor(); }
00085 };
00086
00087 struct BulgarianLanguage : public Language
00088 {
00089 BulgarianLanguage() { morphExtractor = new MorphExtractor(); }
00090 };
00091
00092 struct CatalanLanguage : public Language
00093 {
00094 CatalanLanguage() :
00095 Language("v", "n", "s") {
00096 timeDep = "CCT";
00097 locDep = "CCL";
00098 morphExtractor = new SpanishMorphExtractor();
00099 }
00100 };
00101
00102 struct ChineseLanguage : public Language
00103 {
00104 ChineseLanguage() { morphExtractor = new MorphExtractor(); }
00105 };
00106
00107 struct CzechLanguage : public Language
00108 {
00109 CzechLanguage() { morphExtractor = new CzechMorphExtractor(); }
00110 };
00111
00112 struct DanishLanguage : public Language
00113 {
00114 DanishLanguage() { morphExtractor = new DanishMorphExtractor(); }
00115 };
00116
00117 struct DutchLanguage : public Language
00118 {
00119 DutchLanguage() { morphExtractor = new DutchMorphExtractor(); }
00120 };
00121
00122 struct EnglishLanguage : public Language
00123 {
00124 EnglishLanguage() {
00125 timeDep = "TMP";
00126 locDep = "LOC";
00127 morphExtractor = new MorphExtractor();
00128 }
00129
00130 bool rootPos(std::string const& pos) const {
00131 return pos == "VBD" || pos == "VBP" || pos == "VBZ" || pos == "MD";
00132 }
00133 };
00134
00135 struct GermanLanguage : public Language
00136 {
00137 GermanLanguage() { morphExtractor = new MorphExtractor(); }
00138 };
00139
00140 struct GreekLanguage : public Language
00141 {
00142 GreekLanguage() { morphExtractor = new MorphExtractor(); }
00143 };
00144
00145 struct ItalianLanguage : public Language
00146 {
00147 ItalianLanguage() :
00148 Language("V", "S", "E")
00149 { morphExtractor = new SpanishMorphExtractor(); }
00150 };
00151
00152 struct ItalianTutLanguage : public Language
00153 {
00154 ItalianTutLanguage() :
00155 Language("VERB", "NOUN", "PREP")
00156 { morphExtractor = new ItalianTutMorphExtractor(); }
00157 };
00158
00159 struct JapaneseLanguage : public Language
00160 {
00161 JapaneseLanguage() { morphExtractor = new MorphExtractor(); }
00162 };
00163
00164 struct HungarianLanguage : public Language
00165 {
00166 HungarianLanguage() { morphExtractor = new MorphExtractor(); }
00167 };
00168
00169 struct PortugueseLanguage : public Language
00170 {
00171 PortugueseLanguage() {
00172 morphExtractor = new PortugueseMorphExtractor();
00173 verbCPos = "v";
00174 }
00175 };
00176
00177 struct SloveneLanguage : public Language
00178 {
00179 SloveneLanguage() {
00180 morphExtractor = new SloveneMorphExtractor();
00181 }
00182 };
00183
00184 struct SpanishLanguage : public Language
00185 {
00186 SpanishLanguage() { morphExtractor = new SpanishMorphExtractor(); }
00187 };
00188
00189 struct SwedishLanguage : public Language
00190 {
00191 SwedishLanguage() { morphExtractor = new MorphExtractor(); }
00192
00193 bool rootPos(std::string const& pos) const {
00194 return pos.size() > 1 && pos[1] == 'V';
00195 }
00196 };
00197
00198 struct TurkishLanguage : public Language
00199 {
00200 TurkishLanguage() { morphExtractor = new TurkishMorphExtractor(); }
00201 };
00202
00203 }
00204
00205 #endif // DeSR_Language_H