Changeset 547 for trunk/quest-core-usageprofiles/src/main/java/de/ugoe/cs/quest/usageprofiles/TrieBasedModel.java
- Timestamp:
- 08/16/12 12:34:24 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/quest-core-usageprofiles/src/main/java/de/ugoe/cs/quest/usageprofiles/TrieBasedModel.java
r518 r547 49 49 * </p> 50 50 */ 51 protected Trie<Event <?>> trie = null;51 protected Trie<Event> trie = null; 52 52 53 53 /** … … 101 101 * thrown is sequences is null 102 102 */ 103 public void train(Collection<List< ? extends Event<?>>> sequences) {103 public void train(Collection<List<Event>> sequences) { 104 104 trie = null; 105 105 update(sequences); … … 119 119 * thrown is sequences is null 120 120 */ 121 public void update(Collection<List< ? extends Event<?>>> sequences) {121 public void update(Collection<List<Event>> sequences) { 122 122 if (sequences == null) { 123 123 throw new InvalidParameterException("sequences must not be null"); 124 124 } 125 125 if (trie == null) { 126 trie = new Trie<Event <?>>();127 } 128 for (List< ? extends Event<?>> sequence : sequences) {129 List<Event <?>> currentSequence = new LinkedList<Event<?>>(sequence); // defensive126 trie = new Trie<Event>(); 127 } 128 for (List<Event> sequence : sequences) { 129 List<Event> currentSequence = new LinkedList<Event>(sequence); // defensive 130 130 // copy 131 131 currentSequence.add(0, Event.STARTEVENT); … … 142 142 */ 143 143 @Override 144 public List< ? extends Event<?>> randomSequence() {144 public List<Event> randomSequence() { 145 145 return randomSequence(Integer.MAX_VALUE, true); 146 146 } … … 152 152 */ 153 153 @Override 154 public List< ? extends Event<?>> randomSequence(int maxLength,154 public List<Event> randomSequence(int maxLength, 155 155 boolean validEnd) { 156 List<Event <?>> sequence = new LinkedList<Event<?>>();156 List<Event> sequence = new LinkedList<Event>(); 157 157 if (trie != null) { 158 158 boolean endFound = false; 159 159 while (!endFound) { // outer loop for length checking 160 sequence = new LinkedList<Event <?>>();161 IncompleteMemory<Event <?>> context = new IncompleteMemory<Event<?>>(160 sequence = new LinkedList<Event>(); 161 IncompleteMemory<Event> context = new IncompleteMemory<Event>( 162 162 trieOrder - 1); 163 163 context.add(Event.STARTEVENT); … … 166 166 double randVal = r.nextDouble(); 167 167 double probSum = 0.0; 168 List<Event <?>> currentContext = context.getLast(trieOrder);169 for (Event <?>symbol : trie.getKnownSymbols()) {168 List<Event> currentContext = context.getLast(trieOrder); 169 for (Event symbol : trie.getKnownSymbols()) { 170 170 probSum += getProbability(currentContext, symbol); 171 171 if (probSum >= randVal) { … … 262 262 String[] stateStrings = new String[getNumSymbols()]; 263 263 int i = 0; 264 for (Event <?>symbol : trie.getKnownSymbols()) {264 for (Event symbol : trie.getKnownSymbols()) { 265 265 if (symbol.toString() == null) { 266 266 stateStrings[i] = "null"; … … 279 279 */ 280 280 @Override 281 public Collection< ? extends Event<?>> getEvents() {282 if (trie == null) { 283 return new HashSet<Event <?>>();281 public Collection<Event> getEvents() { 282 if (trie == null) { 283 return new HashSet<Event>(); 284 284 } else { 285 285 return trie.getKnownSymbols(); … … 294 294 */ 295 295 @Override 296 public Collection<List< ? extends Event<?>>> generateSequences(int length) {296 public Collection<List<Event>> generateSequences(int length) { 297 297 return generateSequences(length, false); 298 298 } … … 306 306 */ 307 307 @Override 308 public Set<List< ? extends Event<?>>> generateSequences(int length,308 public Set<List<Event>> generateSequences(int length, 309 309 boolean fromStart) { 310 Set<List< ? extends Event<?>>> sequenceSet = new LinkedHashSet<List<? extends Event<?>>>();310 Set<List<Event>> sequenceSet = new LinkedHashSet<List<Event>>(); 311 311 if (length < 1) { 312 312 throw new InvalidParameterException( … … 315 315 if (length == 1) { 316 316 if (fromStart) { 317 List<Event <?>> subSeq = new LinkedList<Event<?>>();317 List<Event> subSeq = new LinkedList<Event>(); 318 318 subSeq.add(Event.STARTEVENT); 319 319 sequenceSet.add(subSeq); 320 320 } else { 321 for (Event <?>event : getEvents()) {322 List<Event <?>> subSeq = new LinkedList<Event<?>>();321 for (Event event : getEvents()) { 322 List<Event> subSeq = new LinkedList<Event>(); 323 323 subSeq.add(event); 324 324 sequenceSet.add(subSeq); … … 327 327 return sequenceSet; 328 328 } 329 Collection< ? extends Event<?>> events = getEvents();330 Collection<List< ? extends Event<?>>> seqsShorter = generateSequences(329 Collection<Event> events = getEvents(); 330 Collection<List<Event>> seqsShorter = generateSequences( 331 331 length - 1, fromStart); 332 for (Event <?>event : events) {333 for (List< ? extends Event<?>> seqShorter : seqsShorter) {334 Event <?>lastEvent = event;332 for (Event event : events) { 333 for (List<Event> seqShorter : seqsShorter) { 334 Event lastEvent = event; 335 335 if (getProbability(seqShorter, lastEvent) > 0.0) { 336 List<Event <?>> subSeq = new ArrayList<Event<?>>(seqShorter);336 List<Event> subSeq = new ArrayList<Event>(seqShorter); 337 337 subSeq.add(lastEvent); 338 338 sequenceSet.add(subSeq); … … 351 351 */ 352 352 @Override 353 public Collection<List< ? extends Event<?>>> generateValidSequences(353 public Collection<List<Event>> generateValidSequences( 354 354 int length) { 355 355 // check for min-length implicitly done by generateSequences 356 Collection<List< ? extends Event<?>>> allSequences = generateSequences(356 Collection<List<Event>> allSequences = generateSequences( 357 357 length, true); 358 Collection<List< ? extends Event<?>>> validSequences = new LinkedHashSet<List<? extends Event<?>>>();359 for (List< ? extends Event<?>> sequence : allSequences) {358 Collection<List<Event>> validSequences = new LinkedHashSet<List<Event>>(); 359 for (List<Event> sequence : allSequences) { 360 360 if (sequence.size() == length 361 361 && Event.ENDEVENT.equals(sequence.get(sequence.size() - 1))) { … … 374 374 */ 375 375 @Override 376 public double getProbability(List< ? extends Event<?>> sequence) {376 public double getProbability(List<Event> sequence) { 377 377 if (sequence == null) { 378 378 throw new InvalidParameterException("sequence must not be null"); 379 379 } 380 380 double prob = 1.0; 381 List<Event <?>> context = new LinkedList<Event<?>>();382 for (Event <?>event : sequence) {381 List<Event> context = new LinkedList<Event>(); 382 for (Event event : sequence) { 383 383 prob *= getProbability(context, event); 384 384 context.add(event);
Note: See TracChangeset
for help on using the changeset viewer.