Changeset 299
- Timestamp:
- 06/22/08 20:18:27 (7 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lex/trunk/jsp/clause.jsp
r268 r299 152 152 String predicate_text = ""; 153 153 StringBuffer hebrewText = new StringBuffer(); 154 List morphEdges = new ArrayList();154 List<MorphEdge> morphEdges = new ArrayList<MorphEdge>(); 155 155 HebrewMorphemeGenerator generator = new HebrewMorphemeGenerator(); 156 156 BookData swordVerse = null; … … 182 182 ); 183 183 184 class HebrewFeatureConverter implements MorphemeHandler 185 { 186 private List<String[]> m_Columns; 187 private MatchedObject m_word; 188 private StringBuffer m_hebrew; 189 private List m_morphs; 190 boolean m_IsFirstWord, m_IsLastWord; 191 boolean m_IsMorpheme; 192 193 public HebrewFeatureConverter(List<String[]> columns, 194 MatchedObject word, StringBuffer hebrew, 195 List morphs, boolean isFirstWord, 196 boolean isLastWord) 197 { 198 m_Columns = columns; 199 m_word = word; 200 m_hebrew = hebrew; 201 m_morphs = morphs; 202 m_IsFirstWord = isFirstWord; 203 m_IsLastWord = isLastWord; 204 } 205 206 public boolean isMorpheme() 207 { 208 return m_IsMorpheme; 209 } 210 211 public void convert(String surface, 212 boolean lastMorpheme, String desc, 213 String morphNode) 214 { 215 String raw = m_word.getEMdFValue(surface).getString(); 216 217 String hebrew = HebrewConverter.toHebrew(raw); 218 m_hebrew.append(hebrew); 219 220 String translit = HebrewConverter.toTranslit(raw); 221 translit = HebrewConverter.toHtml(translit); 222 if (translit.equals("")) translit = "Ø"; 223 224 if (desc != null && desc.equals("CONJ")) 225 { 226 if (m_IsFirstWord) { desc = "CLM"; } 227 else { desc = "CR"; } 228 } 229 230 // desc += ":" + lastMorpheme + ":" + m_IsLastWord; 231 232 if (!lastMorpheme) 233 { 234 translit += "-"; 235 desc += "-"; 236 m_IsMorpheme = true; 237 } 238 else if (translit.endsWith("-")) 239 { 240 desc += "-"; 241 lastMorpheme = false; 242 m_IsMorpheme = true; 243 } 244 else 245 { 246 m_IsMorpheme = false; 247 } 248 249 if (desc == null) desc = ""; 250 251 m_Columns.add(new String[]{translit, desc}); 252 253 if (lastMorpheme && !m_IsLastWord) 254 { 255 // blank cell between words 256 m_Columns.add(new String[]{"",""}); 257 } 258 259 m_morphs.add(new MorphEdge(morphNode, 260 translit, m_morphs.size())); 261 } 262 } 263 264 HebrewFeatureConverter hfc = 265 new HebrewFeatureConverter(columns, word, hebrewText, 184 HebrewGlossTableGeneratingMorphemeHandler hmh = 185 new HebrewGlossTableGeneratingMorphemeHandler( 186 columns, word, hebrewText, 266 187 morphEdges, isFirstWord, 267 188 !phrases.hasNext() && !words.hasNext()); 268 189 269 generator.parse(word, h fc, true, sql);190 generator.parse(word, hmh, true, sql); 270 191 isFirstWord = false; 271 192 272 if (!h fc.isMorpheme())193 if (!hmh.isMorpheme()) 273 194 { 274 195 hebrewText.append(" "); lex/trunk/test/com/qwirx/lex/HebrewConverterTest.java
r252 r299 1 1 package com.qwirx.lex; 2 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import jemdros.MatchedObject; 7 import jemdros.Sheaf; 8 import jemdros.SheafConstIterator; 9 import jemdros.Straw; 10 import jemdros.StrawConstIterator; 11 import junit.framework.TestCase; 12 13 import com.qwirx.db.sql.SqlDatabase; 14 import com.qwirx.lex.emdros.EmdrosDatabase; 3 15 import com.qwirx.lex.hebrew.HebrewConverter; 4 5 import junit.framework.TestCase; 16 import com.qwirx.lex.morph.HebrewGlossTableGeneratingMorphemeHandler; 17 import com.qwirx.lex.morph.HebrewMorphemeGenerator; 18 import com.qwirx.lex.parser.MorphEdge; 6 19 7 20 public class HebrewConverterTest extends TestCase … … 14 27 assertEquals("îm", HebrewConverter.toTranslit("I92Jm")); 15 28 } 29 30 SqlDatabase m_SQL; 31 EmdrosDatabase m_Emdros; 16 32 33 public void setUp() throws Exception 34 { 35 m_SQL = Lex.getSqlDatabase("test"); 36 m_Emdros = Lex.getEmdrosDatabase("test", "test", m_SQL); 37 } 38 39 private List<String[]> getGlossColumns(int clauseId) 40 throws Exception 41 { 42 StringBuffer hebrewText = new StringBuffer(); 43 List<String[]> columns = new ArrayList<String[]>(); 44 45 Sheaf sheaf = m_Emdros.getSheaf 46 ( 47 "SELECT ALL OBJECTS IN " + 48 "{" + m_Emdros.getMinM() + "-" + m_Emdros.getMaxM() + "} " + 49 "WHERE [clause self = " + clauseId + " " + 50 " GET logical_struct_id, logical_structure "+ 51 " [phrase GET phrase_type, phrase_function, argument_name, "+ 52 " type_id, macrorole_number "+ 53 " [word GET lexeme, phrase_dependent_part_of_speech, " + 54 " tense, stem, wordnet_gloss, wordnet_synset, " + 55 " graphical_preformative, " + 56 " graphical_locative, " + 57 " graphical_lexeme, " + 58 " graphical_pron_suffix, " + 59 " graphical_verbal_ending, " + 60 " graphical_root_formation, " + 61 " graphical_nominal_ending, " + 62 " person, number, gender, state, " + 63 " surface_consonants, " + 64 " suffix_person, suffix_number, suffix_gender " + 65 " ]"+ 66 " ]"+ 67 " ]" 68 ); 69 70 MatchedObject clause = null; 71 SheafConstIterator sci = sheaf.const_iterator(); 72 if (sci.hasNext()) 73 { 74 Straw straw = sci.next(); 75 StrawConstIterator swci = straw.const_iterator(); 76 if (swci.hasNext()) 77 { 78 clause = swci.next(); 79 } 80 } 81 82 SheafConstIterator phrases = clause.getSheaf().const_iterator(); 83 List<MorphEdge> morphEdges = new ArrayList<MorphEdge>(); 84 boolean isFirstWord = true; 85 HebrewMorphemeGenerator generator = new HebrewMorphemeGenerator(); 86 87 while (phrases.hasNext()) 88 { 89 MatchedObject phrase = 90 phrases.next().const_iterator().next(); 91 92 SheafConstIterator words = phrase.getSheaf().const_iterator(); 93 94 while (words.hasNext()) 95 { 96 MatchedObject word = words.next().const_iterator().next(); 97 98 HebrewGlossTableGeneratingMorphemeHandler hmh = 99 new HebrewGlossTableGeneratingMorphemeHandler( 100 columns, word, hebrewText, 101 morphEdges, isFirstWord, 102 !phrases.hasNext() && !words.hasNext()); 103 104 generator.parse(word, hmh, true, m_SQL); 105 } 106 } 107 108 return columns; 109 } 110 111 public void testGloss() throws Exception 112 { 113 List<String[]> columns = getGlossColumns(28951); // Gen 2,24(b) 114 assertEquals("CLM-", columns.get(0)[1]); 115 assertEquals("SER2-", columns.get(1)[1]); 116 117 columns = getGlossColumns(590946); // IKON11,2(f) 118 assertEquals("P-", columns.get(0)[1]); 119 assertEquals("3Mpl", columns.get(1)[1]); 120 assertEquals("", columns.get(2)[1]); 121 assertEquals("PERF-", columns.get(3)[1]); 122 } 123 17 124 public static void main(String[] args) 18 125 { 19 126 junit.textui.TestRunner.run(HebrewConverterTest.class); 20 127 } 21 22 128 }
