Changeset 256
- Timestamp:
- 01/04/08 00:20:22 (1 year ago)
- Files:
-
- lex/trunk/jsp/clause.jsp (modified) (8 diffs)
- lex/trunk/src/com/qwirx/lex/morph/HebrewMorphemeGenerator.java (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lex/trunk/jsp/clause.jsp
r248 r256 107 107 " type_id, macrorole_number "+ 108 108 " [word GET lexeme, phrase_dependent_part_of_speech, " + 109 " tense, wordnet_gloss, wordnet_synset, " +109 " tense, stem, wordnet_gloss, wordnet_synset, " + 110 110 " graphical_preformative, " + 111 111 " graphical_locative, " + … … 165 165 166 166 SheafConstIterator phrases = clause.getSheaf().const_iterator(); 167 boolean isFirstWord = true; 167 168 168 169 while (phrases.hasNext()) … … 176 177 177 178 SheafConstIterator words = phrase.getSheaf().const_iterator(); 179 178 180 while (words.hasNext()) 179 181 { … … 190 192 private StringBuffer m_hebrew; 191 193 private List m_morphs; 194 boolean m_IsFirstWord, m_IsLastWord; 195 boolean m_IsMorpheme; 192 196 193 197 public HebrewFeatureConverter(TreeNode root, 194 198 MatchedObject word, StringBuffer hebrew, 195 List morphs) 199 List morphs, boolean isFirstWord, 200 boolean isLastWord) 196 201 { 197 202 m_root = root; … … 199 204 m_hebrew = hebrew; 200 205 m_morphs = morphs; 206 m_IsFirstWord = isFirstWord; 207 m_IsLastWord = isLastWord; 208 } 209 210 public boolean isMorpheme() 211 { 212 return m_IsMorpheme; 201 213 } 202 214 … … 213 225 translit = HebrewConverter.toHtml(translit); 214 226 if (translit.equals("")) translit = "Ø"; 215 if (!lastMorpheme) translit += "-"; 227 228 if (desc != null && desc.equals("CONJ")) 229 { 230 if (m_IsFirstWord) { desc = "CLM"; } 231 else { desc = "CR"; } 232 } 233 234 // desc += ":" + lastMorpheme + ":" + m_IsLastWord; 235 236 if (!lastMorpheme) 237 { 238 translit += "-"; 239 desc += "-"; 240 m_IsMorpheme = true; 241 } 242 else if (translit.endsWith("-")) 243 { 244 desc += "-"; 245 lastMorpheme = false; 246 m_IsMorpheme = true; 247 } 248 else 249 { 250 m_IsMorpheme = false; 251 } 216 252 217 253 TreeNode node = m_root.createChild(translit); … … 219 255 if (desc == null) desc = ""; 220 256 node.createChild(desc); 257 258 if (lastMorpheme && !m_IsLastWord) 259 { 260 // blank cell between words 261 m_root.createChild(""); 262 } 221 263 222 264 m_morphs.add(new MorphEdge(morphNode, … … 227 269 HebrewFeatureConverter hfc = 228 270 new HebrewFeatureConverter(root, word, hebrewText, 229 morphEdges); 271 morphEdges, isFirstWord, 272 !phrases.hasNext() && !words.hasNext()); 230 273 231 274 generator.parse(word, hfc, true); 232 233 hebrewText.append(" "); 234 275 isFirstWord = false; 276 277 if (!hfc.isMorpheme()) 278 { 279 hebrewText.append(" "); 280 } 281 235 282 if (psp.equals("verb")) 236 283 { lex/trunk/src/com/qwirx/lex/morph/HebrewMorphemeGenerator.java
r211 r256 101 101 "lexeme", 102 102 "tense", 103 "stem", 103 104 })); 104 105 } … … 131 132 else if (person.equals("unknown")) person = ""; 132 133 133 String gender = ((String)m_Genders.get( 134 word.getEMdFValue("gender").toString() 135 )).substring(0, 1); 136 137 String number = ((String)m_Numbers.get( 138 word.getEMdFValue("number").toString() 139 )).substring(0, 1); 134 String gender; 135 switch (word.getFeatureAsLong(word.getEMdFValueIndex("gender"))) 136 { 137 case 2: gender = ""; break; 138 case 3: gender = "M"; break; 139 case 4: gender = "F"; break; 140 default: gender = "=" + word.getFeatureAsLong( 141 word.getEMdFValueIndex("gender")); 142 } 143 144 String number; 145 switch (word.getFeatureAsLong(word.getEMdFValueIndex("number"))) 146 { 147 case 0: number = ""; break; 148 case 3: number = "sg"; break; 149 case 4: number = "pl"; break; 150 case 5: number = "dl"; break; 151 default: number = word.getFeatureAsString( 152 word.getEMdFValueIndex("number")); 153 } 140 154 141 155 String state = (String)m_States.get( 142 156 word.getEMdFValue("state").toString()); 157 if (state.equals("construct")) { state = "CS"; } 158 else if (state.equals("absolute")) { state = "AB"; } 143 159 144 160 gloss = word.getEMdFValue("wordnet_gloss").getString(); … … 163 179 164 180 verbEnding = person + gender + number; 165 nounEnding = gender + number + "." +state;181 nounEnding = gender + number + state; 166 182 } 167 183 … … 169 185 { 170 186 String tense = null; 187 String stem = null; 171 188 172 189 if (generateGloss) 173 190 { 174 String tenseNum = word.getEMdFValue("tense").toString(); 175 tense = (String)m_Tenses.get(tenseNum); 191 tense = word.getFeatureAsString(word.getEMdFValueIndex("tense")); 192 if (tense.equals("imperfect")) { tense = "IMPF"; } 193 else if (tense.equals("perfect")) { tense = "PRFV"; } 194 else if (tense.equals("imperative")) { tense = "IMP"; } 195 else if (tense.equals("infinitive_construct")) { tense = "INF"; } 196 else if (tense.equals("infinitive_absolute")) { tense = "EMPH"; } 197 else if (tense.equals("participle")) { tense = "PART"; } 198 else if (tense.equals("wayyiqtol")) { tense = "NARR"; } 199 200 stem = word.getFeatureAsString(word.getEMdFValueIndex("stem")); 201 if (stem.equals("qal")) { stem = "Qa"; } 202 else if (stem.equals("piel")) { stem = "Pi"; } 203 else if (stem.equals("hifil")) { stem = "Hi"; } 204 else if (stem.equals("nifal")) { stem = "Ni"; } 205 else if (stem.equals("pual")) { stem = "Pu"; } 206 else if (stem.equals("hitpael")) { stem = "Hit"; } 207 else if (stem.equals("hofal")) { stem = "Ho"; } 176 208 } 177 209 … … 180 212 // String stemNum = word.getEMdFValue("verbal_stem").toString(); 181 213 handler.convert("graphical_root_formation", false, 182 "(stem)", "V/STM");214 stem, "V/STM"); 183 215 184 216 handler.convert("graphical_lexeme", false, gloss, "V/LEX"); … … 187 219 verbEnding, "V/PGN"); 188 220 189 handler.convert("graphical_pron_suffix", true, "S FX", "V/SFX");221 handler.convert("graphical_pron_suffix", true, "SUFF", "V/SFX"); 190 222 } 191 223 else if (psp.equals("noun") … … 202 234 handler.convert("graphical_nominal_ending", false, 203 235 nounEnding, "MARK/N"); 204 handler.convert("graphical_pron_suffix", true, "S FX", "SFX/N");236 handler.convert("graphical_pron_suffix", true, "SUFF", "SFX/N"); 205 237 } 206 238 else … … 218 250 else if (psp.equals("article")) 219 251 { 220 type = " DET";252 type = "ART"; 221 253 } 222 254 else if (psp.equals("conjunction"))
