You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(5) |
Sep
|
Oct
(14) |
Nov
(37) |
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(14) |
Feb
|
Mar
|
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
(2) |
2003 |
Jan
(4) |
Feb
|
Mar
(1) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2004 |
Jan
(1) |
Feb
(3) |
Mar
|
Apr
|
May
(4) |
Jun
(3) |
Jul
(1) |
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(17) |
Nov
(3) |
Dec
|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(23) |
Dec
|
2007 |
Jan
|
Feb
|
Mar
(7) |
Apr
(17) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(20) |
Oct
|
Nov
(15) |
Dec
(2) |
2009 |
Jan
(38) |
Feb
(4) |
Mar
(20) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
(17) |
Sep
(26) |
Oct
|
Nov
(2) |
Dec
|
From: Jason B. <jas...@us...> - 2001-11-22 15:07:09
|
Update of /cvsroot/maxent/maxent In directory usw-pr-cvs1:/tmp/cvs-serv16742 Modified Files: build.xml Log Message: Index: build.xml =================================================================== RCS file: /cvsroot/maxent/maxent/build.xml,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** build.xml 2001/11/21 10:15:55 1.10 --- build.xml 2001/11/22 15:07:05 1.11 *************** *** 10,14 **** <property name="Name" value="Maxent"/> <property name="name" value="maxent"/> ! <property name="version" value="1.2.4"/> <property name="year" value="2001"/> --- 10,14 ---- <property name="Name" value="Maxent"/> <property name="name" value="maxent"/> ! <property name="version" value="1.2.5"/> <property name="year" value="2001"/> |
From: Jason B. <jas...@us...> - 2001-11-21 10:16:00
|
Update of /cvsroot/maxent/maxent In directory usw-pr-cvs1:/tmp/cvs-serv30633 Modified Files: CHANGES build.xml Log Message: Added simple Main class that tells people that the executable jar doesn't actually execute anything at the moment. Index: CHANGES =================================================================== RCS file: /cvsroot/maxent/maxent/CHANGES,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CHANGES 2001/11/15 13:09:54 1.3 --- CHANGES 2001/11/21 10:15:54 1.4 *************** *** 1,10 **** ! 1.2.3 ----- Added sample application "sports" to help with testing model behavior ! and act as an example to help newbies use the toolkit. Fixed bug in TrainEval in which the number of iterations and the cutoff were swapped in the call to train the model. --- 1,24 ---- ! 1.2.4 ----- + Added options for doing *very* simple smoothing, in which we 'observe' + features that we didn't actually see in the training data. Seems to + improve performance for models with small data sets and only a few + outcomes, though it conversely appears to degrade those with lots of + data and lots of outcomes. + + Added BasicEventStream and BasicContextGenerator classes which assume + that the contextual predicates and outcomes are just sitting pretty in + lines. This allows the events to be stored in a file and then read in + for training without scanning around producing the events everytime. + Added sample application "sports" to help with testing model behavior ! and to act as an example to help newbies use the toolkit and build ! their own maxent applications. Fixed bug in TrainEval in which the number of iterations and the cutoff were swapped in the call to train the model. + PerlHelp and BasicEnglishAffixes classes were moved out of Maxent so + that gnu-regexp.jar is no longer needed. Index: build.xml =================================================================== RCS file: /cvsroot/maxent/maxent/build.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** build.xml 2001/11/19 02:17:36 1.9 --- build.xml 2001/11/21 10:15:55 1.10 *************** *** 10,14 **** <property name="Name" value="Maxent"/> <property name="name" value="maxent"/> ! <property name="version" value="1.2.3"/> <property name="year" value="2001"/> --- 10,14 ---- <property name="Name" value="Maxent"/> <property name="name" value="maxent"/> ! <property name="version" value="1.2.4"/> <property name="year" value="2001"/> *************** *** 128,131 **** --- 128,134 ---- <pathelement location="${lib.dir}/trove.jar"/> </mergefiles> + <addfiles> + <pathelement path="META-INF"/> + </addfiles> </jlink> <delete file="${build.dir}/${name}-${DSTAMP}.jar" /> |
From: Jason B. <jas...@us...> - 2001-11-21 10:16:00
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv30633/src/java/opennlp/maxent Added Files: Main.java Log Message: Added simple Main class that tells people that the executable jar doesn't actually execute anything at the moment. --- NEW FILE: Main.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// package opennlp.maxent; /** * Main file for opennlp.maxent. Right now just tells the user that * the executable jar doesn't actually execute anything but the * message telling the user that the jar doesn't execute anything * but... * * @author Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/21 10:15:55 $ */ public class Main { public static void main (String[] args) { System.out.println( "\n********************************************************************\n" + "The \"executable\" jar of OpenNLP Maxent does not currently execute\n" + "anything except this message. It exists only so that there is a jar\n" + "of the package which contains all of the other jar dependencies\n" + "needed by Maxent so that users can download it and be able to use\n" + "it to build maxent applications without hunting down the other jars.\n" + "********************************************************************\n" ); } } |
From: Jason B. <jas...@us...> - 2001-11-21 10:16:00
|
Update of /cvsroot/maxent/maxent/META-INF In directory usw-pr-cvs1:/tmp/cvs-serv30633/META-INF Added Files: MANIFEST.MF Log Message: Added simple Main class that tells people that the executable jar doesn't actually execute anything at the moment. --- NEW FILE: MANIFEST.MF --- Main-Class: opennlp.maxent.Main |
From: Jason B. <jas...@us...> - 2001-11-21 10:14:38
|
Update of /cvsroot/maxent/maxent/META-INF In directory usw-pr-cvs1:/tmp/cvs-serv30242/META-INF Log Message: Directory /cvsroot/maxent/maxent/META-INF added to the repository |
Update of /cvsroot/maxent/maxent/samples/sports In directory usw-pr-cvs1:/tmp/cvs-serv23314/sports Modified Files: CreateModel.java Predict.java football.dat football.test gameLocation.dat gameLocation.test Removed Files: MyContextGenerator.java MyEventCollector.java Log Message: Updated for changes in maxent package in which PerlHelp was moved to OpenNLP and the BasicEventStream and BasicContextGenerator classes were made available. Index: CreateModel.java =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/CreateModel.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CreateModel.java 2001/11/16 10:38:21 1.2 --- CreateModel.java 2001/11/20 17:07:16 1.3 *************** *** 51,56 **** try { FileReader datafr = new FileReader(new File(dataFileName)); ! EventCollector ec = new MyEventCollector(datafr); ! EventStream es = new EventCollectorAsStream(ec); GIS.SMOOTHING = USE_SMOOTHING; GIS.SMOOTHING_OBSERVATION = SMOOTHING_OBSERVATION; --- 51,56 ---- try { FileReader datafr = new FileReader(new File(dataFileName)); ! EventStream es = ! new BasicEventStream(new PlainTextByLineDataStream(datafr)); GIS.SMOOTHING = USE_SMOOTHING; GIS.SMOOTHING_OBSERVATION = SMOOTHING_OBSERVATION; Index: Predict.java =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/Predict.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Predict.java 2001/11/15 13:03:41 1.1 --- Predict.java 2001/11/20 17:07:17 1.2 *************** *** 29,33 **** public class Predict { MaxentModel _model; ! ContextGenerator _cg = new MyContextGenerator(); public Predict (MaxentModel m) { --- 29,33 ---- public class Predict { MaxentModel _model; ! ContextGenerator _cg = new BasicContextGenerator(); public Predict (MaxentModel m) { *************** *** 74,78 **** if (dataFileName.equals("")) { ! predictor.eval("Rainy,Happy,Humid"); predictor.eval("Rainy"); predictor.eval("Blarmey"); --- 74,78 ---- if (dataFileName.equals("")) { ! predictor.eval("Rainy Happy Humid"); predictor.eval("Rainy"); predictor.eval("Blarmey"); *************** *** 86,90 **** while (ds.hasNext()) { String s = (String)ds.nextToken(); ! predictor.eval(s.substring(0, s.lastIndexOf(','))); } return; --- 86,90 ---- while (ds.hasNext()) { String s = (String)ds.nextToken(); ! predictor.eval(s.substring(0, s.lastIndexOf(' '))); } return; Index: football.dat =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/football.dat,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** football.dat 2001/11/15 13:03:41 1.1 --- football.dat 2001/11/20 17:07:17 1.2 *************** *** 1,14 **** ! home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_lost_previous,man_united_won_previous,arsenal ! home=man_united,Beckham=true,Scholes=false,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=tense,Wengler=confident,arsenal_won_previous,man_united_lost_previous,man_united ! home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=tense,Wengler=tense,arsenal_lost_previous,man_united_won_previous,tie ! home=man_united,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=false,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,tie ! home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,arsenal ! home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,man_united ! home=man_united,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,man_united ! home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_lost_previous,man_united_won_previous,arsenal ! home=arsenal,Beckham=true,Scholes=false,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=tense,Wengler=confident,arsenal_won_previous,man_united_lost_previous,arsenal ! home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=tense,Wengler=tense,arsenal_lost_previous,man_united_won_previous,tie ! home=arsenal,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=false,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,man_united ! home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,arsenal ! home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,man_united ! home=arsenal,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,arsenal --- 1,14 ---- ! home=man_united Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_lost_previous man_united_won_previous arsenal ! home=man_united Beckham=true Scholes=false Neville=true Henry=false Kanu=true Parlour=false Ferguson=tense Wengler=confident arsenal_won_previous man_united_lost_previous man_united ! home=man_united Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=tense Wengler=tense arsenal_lost_previous man_united_won_previous tie ! home=man_united Beckham=true Scholes=true Neville=false Henry=true Kanu=false Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous tie ! home=man_united Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous arsenal ! home=man_united Beckham=false Scholes=true Neville=true Henry=false Kanu=true Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous man_united ! home=man_united Beckham=true Scholes=true Neville=false Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous man_united ! home=arsenal Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_lost_previous man_united_won_previous arsenal ! home=arsenal Beckham=true Scholes=false Neville=true Henry=false Kanu=true Parlour=false Ferguson=tense Wengler=confident arsenal_won_previous man_united_lost_previous arsenal ! home=arsenal Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=tense Wengler=tense arsenal_lost_previous man_united_won_previous tie ! home=arsenal Beckham=true Scholes=true Neville=false Henry=true Kanu=false Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous man_united ! home=arsenal Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous arsenal ! home=arsenal Beckham=false Scholes=true Neville=true Henry=false Kanu=true Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous man_united ! home=arsenal Beckham=true Scholes=true Neville=false Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous arsenal Index: football.test =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/football.test,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** football.test 2001/11/15 13:03:41 1.1 --- football.test 2001/11/20 17:07:17 1.2 *************** *** 1,5 **** ! home=arsenal,? ! home=man_united,arsenal_won_previous,man_united_won_previous,Wengler=tense,? ! home=man_united,Beckham=true,Henry=true,? ! home=arsenal,Beckham=false,Henry=true,? ! home=arsenal,Beckham=true,Henry=false,? --- 1,5 ---- ! home=arsenal ? ! home=man_united arsenal_won_previous man_united_won_previous Wengler=tense ? ! home=man_united Beckham=true Henry=true ? ! home=arsenal Beckham=false Henry=true ? ! home=arsenal Beckham=true Henry=false ? Index: gameLocation.dat =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/gameLocation.dat,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gameLocation.dat 2001/11/15 13:03:41 1.1 --- gameLocation.dat 2001/11/20 17:07:17 1.2 *************** *** 1,15 **** ! Sunny,Happy,Outdoor ! Sunny,Happy,Dry,Outdoor ! Sunny,Happy,Humid,Outdoor ! Sunny,Sad,Dry,Outdoor ! Sunny,Sad,Humid,Outdoor ! Cloudy,Happy,Humid,Outdoor ! Cloudy,Happy,Humid,Outdoor ! Cloudy,Sad,Humid,Outdoor ! Cloudy,Sad,Humid,Outdoor ! Rainy,Happy,Humid,Indoor ! Rainy,Happy,Dry,Indoor ! Rainy,Sad,Dry,Indoor ! Rainy,Sad,Humid,Indoor ! Cloudy,Sad,Humid,Indoor ! Cloudy,Sad,Humid,Indoor --- 1,15 ---- ! Sunny Happy Outdoor ! Sunny Happy Dry Outdoor ! Sunny Happy Humid Outdoor ! Sunny Sad Dry Outdoor ! Sunny Sad Humid Outdoor ! Cloudy Happy Humid Outdoor ! Cloudy Happy Humid Outdoor ! Cloudy Sad Humid Outdoor ! Cloudy Sad Humid Outdoor ! Rainy Happy Humid Indoor ! Rainy Happy Dry Indoor ! Rainy Sad Dry Indoor ! Rainy Sad Humid Indoor ! Cloudy Sad Humid Indoor ! Cloudy Sad Humid Indoor Index: gameLocation.test =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/gameLocation.test,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** gameLocation.test 2001/11/16 10:38:21 1.2 --- gameLocation.test 2001/11/20 17:07:17 1.3 *************** *** 1,9 **** ! Cloudy,Sad,? ! Sunny,? ! Rainy,Happy,Humid,? ! Happy,Dry,? ! Rainy,? ! Rainy,Dry,? ! Sunny,Sad,Dry,? ! Cloudy,Happy,Humid,? ! Cloudy,Humid,? --- 1,9 ---- ! Cloudy Sad ? ! Sunny ? ! Rainy Happy Humid ? ! Happy Dry ? ! Rainy ? ! Rainy Dry ? ! Sunny Sad Dry ? ! Cloudy Happy Humid ? ! Cloudy Humid ? --- MyContextGenerator.java DELETED --- --- MyEventCollector.java DELETED --- |
From: Jason B. <jas...@us...> - 2001-11-20 17:06:21
|
Update of /cvsroot/maxent/maxent/lib In directory usw-pr-cvs1:/tmp/cvs-serv22959 Modified Files: LIBNOTES trove.jar Log Message: Added new version of Trove. Index: LIBNOTES =================================================================== RCS file: /cvsroot/maxent/maxent/lib/LIBNOTES,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** LIBNOTES 2001/11/15 15:42:13 1.2 --- LIBNOTES 2001/11/20 17:06:19 1.3 *************** *** 29,40 **** ------------------------------------------------------------------------ - gnu-regexp.jar - - The GNU Regular Expressions Package for Java, version 1.1.3a - Homepage: http://www.cacas.org/~wes/java/ - License: LGPL - - - ------------------------------------------------------------------------ java-getopt.jar --- 29,32 ---- *************** *** 49,53 **** trove.jar ! GNU Trove, version 0.0.4 Homepage: http://trove4j.sf.net License: LGPL --- 41,45 ---- trove.jar ! GNU Trove, version 0.0.6 Homepage: http://trove4j.sf.net License: LGPL Index: trove.jar =================================================================== RCS file: /cvsroot/maxent/maxent/lib/trove.jar,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsQvUAci and /tmp/cvsi2VLCp differ |
From: Jason B. <jas...@us...> - 2001-11-20 17:05:40
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv22689 Added Files: BasicContextGenerator.java BasicEventStream.java Log Message: Added ContextGenerator and EventStream which assume that the contextual predicates and outcome are just sitting pretty in lines. This allows the events to be stored in a file and then read in for training without scanning around producing the events everytime. --- NEW FILE: BasicContextGenerator.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// package opennlp.maxent; import java.util.*; /** * Generate contexts for maxent decisions, assuming that the input * given to the getContext() method is a String containing contextual * predicates separated by spaces, e.g: * * <p> * cp_1 cp_2 ... cp_n * </p> * * @author Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/20 17:05:37 $ */ public class BasicContextGenerator implements ContextGenerator { /** * Builds up the list of contextual predicates given a String. */ public String[] getContext(Object o) { String s = (String)o; int prevIndex = 0; int index = s.indexOf(' '); List cuts = new ArrayList(); while (index != -1) { cuts.add(s.substring(prevIndex, index)); prevIndex = index; index = s.indexOf(' ', ++index); } cuts.add(s.substring(prevIndex, s.length())); return (String[])cuts.toArray(new String[cuts.size()]); } } --- NEW FILE: BasicEventStream.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// package opennlp.maxent; /** * A object which can deliver a stream of training events assuming * that each event is represented as a space separated list containing * all the contextual predicates, with the last item being the * outcome, e.g.: * * <p> cp_1 cp_2 ... cp_n outcome * * @author Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/20 17:05:37 $ */ public class BasicEventStream implements EventStream { ContextGenerator _cg = new BasicContextGenerator(); DataStream _ds; Event _next; public BasicEventStream (DataStream ds) { _ds = ds; if (_ds.hasNext()) _next = createEvent((String)_ds.nextToken()); } /** * Returns the next Event object held in this EventStream. Each call to nextEvent advances the EventStream. * * @return the Event object which is next in this EventStream */ public Event nextEvent () { while (_next == null && _ds.hasNext()) _next = createEvent((String)_ds.nextToken()); Event current = _next; if (_ds.hasNext()) { _next = createEvent((String)_ds.nextToken()); } else { _next = null; } return current; } /** * Test whether there are any Events remaining in this EventStream. * * @return true if this EventStream has more Events */ public boolean hasNext () { while (_next == null && _ds.hasNext()) _next = createEvent((String)_ds.nextToken()); return _next != null; } private Event createEvent(String obs) { int lastSpace = obs.lastIndexOf(' '); if (lastSpace == -1) return null; else return new Event(obs.substring(lastSpace+1), _cg.getContext(obs.substring(0, lastSpace))); } } |
From: Eric F. <er...@us...> - 2001-11-19 02:17:39
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv8950/src/java/opennlp/maxent Removed Files: BasicEnglishAffixes.java PerlHelp.java Log Message: removed gnu-regexp from maxent, per thread on maxent dev list --- BasicEnglishAffixes.java DELETED --- --- PerlHelp.java DELETED --- |
From: Eric F. <er...@us...> - 2001-11-19 02:17:39
|
Update of /cvsroot/maxent/maxent/lib In directory usw-pr-cvs1:/tmp/cvs-serv8950/lib Removed Files: gnu-regexp.jar gnu-regexp.license Log Message: removed gnu-regexp from maxent, per thread on maxent dev list --- gnu-regexp.jar DELETED --- --- gnu-regexp.license DELETED --- |
From: Eric F. <er...@us...> - 2001-11-19 02:17:39
|
Update of /cvsroot/maxent/maxent In directory usw-pr-cvs1:/tmp/cvs-serv8950 Modified Files: build.xml Log Message: removed gnu-regexp from maxent, per thread on maxent dev list Index: build.xml =================================================================== RCS file: /cvsroot/maxent/maxent/build.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** build.xml 2001/11/15 15:42:13 1.8 --- build.xml 2001/11/19 02:17:36 1.9 *************** *** 41,45 **** <path id="build.classpath"> - <pathelement location="${lib.dir}/gnu-regexp.jar"/> <pathelement location="${lib.dir}/java-getopt.jar"/> <pathelement location="${lib.dir}/colt.jar"/> --- 41,44 ---- *************** *** 125,129 **** <mergefiles> <pathelement path="${build.dir}/${name}-${DSTAMP}.jar"/> - <pathelement location="${lib.dir}/gnu-regexp.jar"/> <pathelement location="${lib.dir}/java-getopt.jar"/> <pathelement location="${lib.dir}/colt.jar"/> --- 124,127 ---- |
From: Jason B. <jas...@us...> - 2001-11-16 10:38:24
|
Update of /cvsroot/maxent/maxent/samples/sports In directory usw-pr-cvs1:/tmp/cvs-serv5936/samples/sports Modified Files: CreateModel.java README gameLocation.test Log Message: Added options for using smoothing. Index: CreateModel.java =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/CreateModel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CreateModel.java 2001/11/15 13:03:41 1.1 --- CreateModel.java 2001/11/16 10:38:21 1.2 *************** *** 30,33 **** --- 30,42 ---- public class CreateModel { + // some parameters if you want to play around with the smoothing option + // for model training. This can improve model accuracy, though training + // will potentially take longer and use more memory. Model size will also + // be larger. Initial testing indicates improvements for models built on + // small data sets and few outcomes, but performance degradation for those + // with large data sets and lots of outcomes. + public static boolean USE_SMOOTHING = false; + public static double SMOOTHING_OBSERVATION = 0.1; + /** * Main method. Call as follows: *************** *** 44,47 **** --- 53,58 ---- EventCollector ec = new MyEventCollector(datafr); EventStream es = new EventCollectorAsStream(ec); + GIS.SMOOTHING = USE_SMOOTHING; + GIS.SMOOTHING_OBSERVATION = SMOOTHING_OBSERVATION; GISModel model = GIS.trainModel(es); Index: README =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/README,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** README 2001/11/15 13:03:41 1.1 --- README 2001/11/16 10:38:21 1.2 *************** *** 91,94 **** --- 91,102 ---- in whatever order you like. + You can also play around with the smoothing option by setting the + boolean value USE_SMOOTHING to "true" in CreateModel.java. This makes + a difference in performance on the gameLocation decision. In + particular, when the only feature available is "Rainy" for a + decision. So, try training the model with smoothing and without + smoothing, and then testing it on "gameLocation.test" for both models + to see the difference for the input "Rainy". + If you have any suggestions, interesting modifications, or data sets for other examples to add to this sample maxent application, please Index: gameLocation.test =================================================================== RCS file: /cvsroot/maxent/maxent/samples/sports/gameLocation.test,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gameLocation.test 2001/11/15 13:03:41 1.1 --- gameLocation.test 2001/11/16 10:38:21 1.2 *************** *** 3,7 **** Rainy,Happy,Humid,? Happy,Dry,? ! Happy,? Rainy,Dry,? Sunny,Sad,Dry,? --- 3,7 ---- Rainy,Happy,Humid,? Happy,Dry,? ! Rainy,? Rainy,Dry,? Sunny,Sad,Dry,? |
From: Jason B. <jas...@us...> - 2001-11-16 10:37:47
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv5740/java/opennlp/maxent Modified Files: GIS.java GISTrainer.java Log Message: Added options for doing *very* simple smoothing, in which we 'observe' features that we didn't actually see in the training data. Seems to improve performance for models with small data sets and only a few outcomes, though it conversely seems to degrade those with lots of data and lots of outcomes. Index: GIS.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/GIS.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** GIS.java 2001/11/06 12:14:35 1.2 --- GIS.java 2001/11/16 10:37:43 1.3 *************** *** 31,37 **** * version of trainModel() to conditionally enable progress messages. */ ! public static boolean printMessages = true; /** * Train a model using the GIS algorithm, assuming 100 iterations and no * cutoff. --- 31,50 ---- * version of trainModel() to conditionally enable progress messages. */ ! public static boolean PRINT_MESSAGES = true; /** + * Defines whether the created trainer will use smoothing while training + * the model. This can improve model accuracy, though training will + * potentially take longer and use more memory. Model size will also be + * larger. Set true if smoothing is desired, false if not. + */ + public static boolean SMOOTHING = false; + + // If we are using smoothing, this is used as the "number" of + // times we want the trainer to imagine that it saw a feature that it + // actually didn't see. Defaulted to 0.1. + public static double SMOOTHING_OBSERVATION = 0.1; + + /** * Train a model using the GIS algorithm, assuming 100 iterations and no * cutoff. *************** *** 43,47 **** */ public static GISModel trainModel(EventStream eventStream) { ! return trainModel(eventStream, 100, 0, printMessages); } --- 56,60 ---- */ public static GISModel trainModel(EventStream eventStream) { ! return trainModel(eventStream, 100, 0, PRINT_MESSAGES); } *************** *** 60,64 **** int iterations, int cutoff) { ! return trainModel(eventStream,iterations,cutoff,printMessages); } --- 73,77 ---- int iterations, int cutoff) { ! return trainModel(eventStream, iterations, cutoff, PRINT_MESSAGES); } *************** *** 81,85 **** boolean printMessagesWhileTraining) { GISTrainer trainer = new GISTrainer(printMessagesWhileTraining); ! return trainer.trainModel(eventStream,iterations,cutoff); } } --- 94,100 ---- boolean printMessagesWhileTraining) { GISTrainer trainer = new GISTrainer(printMessagesWhileTraining); ! trainer.setSmoothing(SMOOTHING); ! trainer.setSmoothingObservation(SMOOTHING_OBSERVATION); ! return trainer.trainModel(eventStream, iterations, cutoff); } } Index: GISTrainer.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/GISTrainer.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** GISTrainer.java 2001/10/23 14:06:53 1.1.1.1 --- GISTrainer.java 2001/11/16 10:37:43 1.2 *************** *** 37,41 **** --- 37,55 ---- */ class GISTrainer { + + // This can improve model accuracy, though training will potentially take + // longer and use more memory. Model size will also be larger. Initial + // testing indicates improvements for models built on small data sets and + // few outcomes, but performance degradation for those with large data + // sets and lots of outcomes. + private boolean _simpleSmoothing = false; + + // If we are using smoothing, this is used as the "number" of + // times we want the trainer to imagine that it saw a feature that it + // actually didn't see. Defaulted to 0.1. + private double _smoothingObservation = 0.1; + private boolean printMessages = false; + private int numTokens; // # of event tokens private int numPreds; // # of predicates *************** *** 193,197 **** --- 207,235 ---- } + + /** + * Sets whether this trainer will use smoothing while training the model. + * This can improve model accuracy, though training will potentially take + * longer and use more memory. Model size will also be larger. + * + * @param smooth true if smoothing is desired, false if not + */ + public void setSmoothing (boolean smooth) { + _simpleSmoothing = smooth; + } + /** + * Sets whether this trainer will use smoothing while training the model. + * This can improve model accuracy, though training will potentially take + * longer and use more memory. Model size will also be larger. + * + * @param timesSeen the "number" of times we want the trainer to imagine + * it saw a feature that it actually didn't see + */ + public void setSmoothingObservation (double timesSeen) { + _smoothingObservation = timesSeen; + } + + /** * Train a model using the GIS algorithm. * *************** *** 256,260 **** di = null; // don't need it anymore ! // Get the observed expectations of the features. Strictly speakings, // we should divide the counts by the number of Tokens, but because of // the way the model's expectations are approximated in the --- 294,303 ---- di = null; // don't need it anymore ! // A fake "observation" to cover features which are not detected in ! // the data. The default is to assume that we observed "1/10th" of a ! // feature during training. ! final double smoothingObservation = Math.log(_smoothingObservation); ! ! // Get the observed expectations of the features. Strictly speaking, // we should divide the counts by the number of Tokens, but because of // the way the model's expectations are approximated in the *************** *** 264,269 **** modifiers = new OpenIntDoubleHashMap[numPreds]; observedExpects = new OpenIntDoubleHashMap[numPreds]; ! for (PID=0; PID<numPreds; PID++) { ! params[PID] = new OpenIntDoubleHashMap(); modifiers[PID] = new OpenIntDoubleHashMap(); observedExpects[PID] = new OpenIntDoubleHashMap(); --- 307,313 ---- modifiers = new OpenIntDoubleHashMap[numPreds]; observedExpects = new OpenIntDoubleHashMap[numPreds]; ! ! for (PID=0; PID<numPreds; PID++) { ! params[PID] = new OpenIntDoubleHashMap(); modifiers[PID] = new OpenIntDoubleHashMap(); observedExpects[PID] = new OpenIntDoubleHashMap(); *************** *** 274,277 **** --- 318,326 ---- observedExpects[PID].put(OID,Math.log(predCount[PID][OID])); } + else if (_simpleSmoothing) { + params[PID].put(OID, 0.0); + modifiers[PID].put(OID, 0.0); + observedExpects[PID].put(OID, smoothingObservation); + } } params[PID].trimToSize(); |
From: Jason B. <jas...@us...> - 2001-11-15 18:08:23
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv11000/src/java/opennlp/maxent Modified Files: DataIndexer.java Event.java Log Message: Changed a few more data structures over to gnu.trove objects Index: DataIndexer.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/DataIndexer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** DataIndexer.java 2001/11/15 15:42:14 1.3 --- DataIndexer.java 2001/11/15 18:08:20 1.4 *************** *** 49,58 **** } ! private List computeEventCounts(EventStream eventStream, ! Map count) { ! List events = new ArrayList(); while (eventStream.hasNext()) { Event ev = eventStream.nextEvent(); ! events.add(ev); String[] ec = ev.getContext(); for (int j=0; j<ec.length; j++) { --- 49,131 ---- } ! /** ! * Two argument constructor for DataIndexer. ! * ! * @param events An Event[] which contains the a list of all the Events ! * seen in the training data. ! * @param cutoff The minimum number of times a predicate must have been ! * observed in order to be included in the model. ! */ ! public DataIndexer(EventStream eventStream, int cutoff) { ! Map count; ! TLinkedList events; ! ! System.out.println("Indexing events"); ! ! System.out.print("\tComputing event counts... "); ! count = new THashMap(); ! events = computeEventCounts(eventStream,count); ! //for(int tid=0; tid<events.length; tid++) { ! System.out.println("done."); ! ! System.out.print("\tPerforming cutoff of " + cutoff + "... "); ! applyCutoff(count, cutoff); ! System.out.println("done."); ! ! System.out.print("\tIndexing... "); ! ComparableEvent[] eventsToCompare = index(events,count); ! // done with event list ! events = null; ! // done with predicate counts ! count = null; ! ! System.out.println("done."); ! ! System.out.print("Sorting and merging events... "); ! Arrays.sort(eventsToCompare); ! ! ComparableEvent ce = eventsToCompare[0]; ! List uniqueEvents = new ArrayList(); ! List newGroup = new ArrayList(); ! int numEvents = eventsToCompare.length; ! for (int i=0; i<numEvents; i++) { ! if (ce.compareTo(eventsToCompare[i]) == 0) { ! newGroup.add(eventsToCompare[i]); ! } else { ! ce = eventsToCompare[i]; ! uniqueEvents.add(newGroup); ! newGroup = new ArrayList(); ! newGroup.add(eventsToCompare[i]); ! } ! } ! uniqueEvents.add(newGroup); ! ! int numUniqueEvents = uniqueEvents.size(); ! ! System.out.println("done. Reduced " + eventsToCompare.length ! + " events to " + numUniqueEvents + "."); ! ! contexts = new int[numUniqueEvents][]; ! outcomeList = new int[numUniqueEvents]; ! numTimesEventsSeen = new int[numUniqueEvents]; ! ! for (int i=0; i<numUniqueEvents; i++) { ! List group = (List)uniqueEvents.get(i); ! numTimesEventsSeen[i] = group.size(); ! ComparableEvent nextCE = (ComparableEvent)group.get(0); ! outcomeList[i] = nextCE.outcome; ! contexts[i] = nextCE.predIndexes; ! } ! ! System.out.println("Done indexing."); ! } ! ! ! private TLinkedList computeEventCounts(EventStream eventStream, ! Map count) { ! TLinkedList events = new TLinkedList(); while (eventStream.hasNext()) { Event ev = eventStream.nextEvent(); ! events.addLast(ev); String[] ec = ev.getContext(); for (int j=0; j<ec.length; j++) { *************** *** 81,85 **** } ! private ComparableEvent[] index(List events, Map count) { Map omap = new THashMap(), pmap = new THashMap(); --- 154,158 ---- } ! private ComparableEvent[] index(TLinkedList events, Map count) { Map omap = new THashMap(), pmap = new THashMap(); *************** *** 92,96 **** for (int eventIndex=0; eventIndex<numEvents; eventIndex++) { ! Event ev = (Event)events.get(eventIndex); String[] econtext = ev.getContext(); --- 165,169 ---- for (int eventIndex=0; eventIndex<numEvents; eventIndex++) { ! Event ev = (Event)events.removeFirst(); String[] econtext = ev.getContext(); *************** *** 150,223 **** } - /** - * Two argument constructor for DataIndexer. - * - * @param events An Event[] which contains the a list of all the Events - * seen in the training data. - * @param cutoff The minimum number of times a predicate must have been - * observed in order to be included in the model. - */ - public DataIndexer(EventStream eventStream, int cutoff) { - Map count; - List events; - - System.out.println("Indexing events"); - - System.out.print("\tComputing event counts... "); - count = new HashMap(); - events = computeEventCounts(eventStream,count); - //for(int tid=0; tid<events.length; tid++) { - System.out.println("done."); - - System.out.print("\tPerforming cutoff of " + cutoff + "... "); - applyCutoff(count, cutoff); - System.out.println("done."); - - System.out.print("\tIndexing... "); - ComparableEvent[] eventsToCompare = index(events,count); - // done with event list - events = null; - // done with predicate counts - count = null; - - System.out.println("done."); - - System.out.print("Sorting and merging events... "); - Arrays.sort(eventsToCompare); - - ComparableEvent ce = eventsToCompare[0]; - List uniqueEvents = new ArrayList(); - List newGroup = new ArrayList(); - int numEvents = eventsToCompare.length; - for (int i=0; i<numEvents; i++) { - if (ce.compareTo(eventsToCompare[i]) == 0) { - newGroup.add(eventsToCompare[i]); - } else { - ce = eventsToCompare[i]; - uniqueEvents.add(newGroup); - newGroup = new ArrayList(); - newGroup.add(eventsToCompare[i]); - } - } - uniqueEvents.add(newGroup); - - int numUniqueEvents = uniqueEvents.size(); - - System.out.println("done. Reduced " + eventsToCompare.length - + " events to " + numUniqueEvents + "."); - - contexts = new int[numUniqueEvents][]; - outcomeList = new int[numUniqueEvents]; - numTimesEventsSeen = new int[numUniqueEvents]; - - for (int i=0; i<numUniqueEvents; i++) { - List group = (List)uniqueEvents.get(i); - numTimesEventsSeen[i] = group.size(); - ComparableEvent nextCE = (ComparableEvent)group.get(0); - outcomeList[i] = nextCE.outcome; - contexts[i] = nextCE.predIndexes; - } - - System.out.println("Done indexing."); - } } --- 223,225 ---- Index: Event.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/Event.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Event.java 2001/10/23 14:06:53 1.1.1.1 --- Event.java 2001/11/15 18:08:20 1.2 *************** *** 25,29 **** * @version $Revision$, $Date$ */ ! public class Event { private String outcome; private String[] context; --- 25,29 ---- * @version $Revision$, $Date$ */ ! public class Event extends gnu.trove.TLinkableAdaptor { private String outcome; private String[] context; |
From: Jason B. <jas...@us...> - 2001-11-15 18:08:23
|
Update of /cvsroot/maxent/maxent/lib In directory usw-pr-cvs1:/tmp/cvs-serv11000/lib Modified Files: trove.jar Log Message: Changed a few more data structures over to gnu.trove objects Index: trove.jar =================================================================== RCS file: /cvsroot/maxent/maxent/lib/trove.jar,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsgvGem1 and /tmp/cvsQjERaS differ |
From: Jason B. <jas...@us...> - 2001-11-15 16:18:42
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent/io In directory usw-pr-cvs1:/tmp/cvs-serv10482/io Modified Files: GISModelWriter.java Log Message: Now using gnu.trove's TObjectIntHashMap for the mapping from predicates to their indexes. Index: GISModelWriter.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/io/GISModelWriter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** GISModelWriter.java 2001/11/15 15:42:14 1.2 --- GISModelWriter.java 2001/11/15 16:18:40 1.3 *************** *** 19,22 **** --- 19,23 ---- import opennlp.maxent.*; + import gnu.trove.*; import cern.colt.list.*; import cern.colt.map.*; *************** *** 44,48 **** PARAMS = (OpenIntDoubleHashMap[])data[0]; ! Map pmap = (Map)data[1]; OUTCOME_LABELS = (String[])data[2]; CORRECTION_CONSTANT = ((Integer)data[3]).intValue(); --- 45,49 ---- PARAMS = (OpenIntDoubleHashMap[])data[0]; ! TObjectIntHashMap pmap = (TObjectIntHashMap)data[1]; OUTCOME_LABELS = (String[])data[2]; CORRECTION_CONSTANT = ((Integer)data[3]).intValue(); *************** *** 50,57 **** PRED_LABELS = new String[pmap.size()]; ! for (Iterator i=pmap.keySet().iterator(); i.hasNext();) { ! String pred = (String)i.next(); ! PRED_LABELS[((Integer)pmap.get(pred)).intValue()] = pred; ! } } --- 51,60 ---- PRED_LABELS = new String[pmap.size()]; ! pmap.forEachEntry(new TObjectIntProcedure() { ! public boolean execute (Object pred, int index) { ! PRED_LABELS[index] = (String)pred; ! return true; ! } ! }); } |
From: Jason B. <jas...@us...> - 2001-11-15 16:18:42
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv10482 Modified Files: GISModel.java Log Message: Now using gnu.trove's TObjectIntHashMap for the mapping from predicates to their indexes. Index: GISModel.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/GISModel.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** GISModel.java 2001/11/15 15:42:14 1.3 --- GISModel.java 2001/11/15 16:18:40 1.4 *************** *** 32,36 **** public final class GISModel implements MaxentModel { private final OpenIntDoubleHashMap[] params; ! private final Map pmap; private final String[] ocNames; private final int correctionConstant; --- 32,36 ---- public final class GISModel implements MaxentModel { private final OpenIntDoubleHashMap[] params; ! private final TObjectIntHashMap pmap; private final String[] ocNames; private final int correctionConstant; *************** *** 47,53 **** double _correctionParam) { ! pmap = new THashMap(predLabels.length); for (int i=0; i<predLabels.length; i++) ! pmap.put(predLabels[i], new Integer(i)); params = _params; --- 47,53 ---- double _correctionParam) { ! pmap = new TObjectIntHashMap(predLabels.length); for (int i=0; i<predLabels.length; i++) ! pmap.put(predLabels[i], i); params = _params; *************** *** 89,93 **** if (pmap.containsKey(context[i])) { OpenIntDoubleHashMap predParams = ! params[((Integer)pmap.get(context[i])).intValue()]; predParams.keys(activeOutcomes); for (int j=0; j<activeOutcomes.size(); j++) { --- 89,93 ---- if (pmap.containsKey(context[i])) { OpenIntDoubleHashMap predParams = ! params[pmap.get(context[i])]; predParams.keys(activeOutcomes); for (int j=0; j<activeOutcomes.size(); j++) { |
From: Jason B. <jas...@us...> - 2001-11-15 15:42:17
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent In directory usw-pr-cvs1:/tmp/cvs-serv31733/src/java/opennlp/maxent Modified Files: DataIndexer.java GISModel.java Log Message: Added Trove and used it in the places where it was trivial to swap trove classes in. Index: DataIndexer.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/DataIndexer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DataIndexer.java 2001/10/28 03:17:03 1.2 --- DataIndexer.java 2001/11/15 15:42:14 1.3 *************** *** 18,21 **** --- 18,22 ---- package opennlp.maxent; + import gnu.trove.*; import java.util.*; *************** *** 82,86 **** private ComparableEvent[] index(List events, Map count) { ! Map omap = new HashMap(), pmap = new HashMap(); int numEvents = events.size(); --- 83,87 ---- private ComparableEvent[] index(List events, Map count) { ! Map omap = new THashMap(), pmap = new THashMap(); int numEvents = events.size(); Index: GISModel.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/GISModel.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** GISModel.java 2001/11/06 12:16:58 1.2 --- GISModel.java 2001/11/15 15:42:14 1.3 *************** *** 18,21 **** --- 18,22 ---- package opennlp.maxent; + import gnu.trove.*; import cern.colt.list.*; import cern.colt.map.*; *************** *** 31,35 **** public final class GISModel implements MaxentModel { private final OpenIntDoubleHashMap[] params; ! private final HashMap pmap = new HashMap(); private final String[] ocNames; private final int correctionConstant; --- 32,36 ---- public final class GISModel implements MaxentModel { private final OpenIntDoubleHashMap[] params; ! private final Map pmap; private final String[] ocNames; private final int correctionConstant; *************** *** 39,46 **** private final double iprob; private final double fval; - - //private final double[] OUTSUMS; - //private final int[] NUMFEATS; - public GISModel (OpenIntDoubleHashMap[] _params, --- 40,43 ---- *************** *** 50,53 **** --- 47,51 ---- double _correctionParam) { + pmap = new THashMap(predLabels.length); for (int i=0; i<predLabels.length; i++) pmap.put(predLabels[i], new Integer(i)); *************** *** 62,67 **** fval = 1.0/correctionConstant; - //OUTSUMS= new double[numOutcomes]; - //NUMFEATS= new int[numOutcomes]; } --- 60,63 ---- *************** *** 100,104 **** outsums[oid] += fval * predParams.get(oid); } - //params[((Integer)pmap.get(context[i])).intValue()].forEachPair(updateSums); } } --- 96,99 ---- *************** *** 189,193 **** * <li>index 0: cern.colt.map.OpenIntDoubleHashMap[] containing the model * parameters ! * <li>index 1: java.util.HashMap containing the mapping of model predicates * to unique integers * <li>index 2: java.lang.String[] containing the names of the outcomes, --- 184,188 ---- * <li>index 0: cern.colt.map.OpenIntDoubleHashMap[] containing the model * parameters ! * <li>index 1: java.util.Map containing the mapping of model predicates * to unique integers * <li>index 2: java.lang.String[] containing the names of the outcomes, |
From: Jason B. <jas...@us...> - 2001-11-15 15:42:17
|
Update of /cvsroot/maxent/maxent/src/java/opennlp/maxent/io In directory usw-pr-cvs1:/tmp/cvs-serv31733/src/java/opennlp/maxent/io Modified Files: GISModelReader.java GISModelWriter.java Log Message: Added Trove and used it in the places where it was trivial to swap trove classes in. Index: GISModelReader.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/io/GISModelReader.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** GISModelReader.java 2001/10/28 01:25:56 1.2 --- GISModelReader.java 2001/11/15 15:42:14 1.3 *************** *** 18,24 **** package opennlp.maxent.io; import cern.colt.map.*; import java.util.StringTokenizer; - import opennlp.maxent.*; /** --- 18,24 ---- package opennlp.maxent.io; + import opennlp.maxent.*; import cern.colt.map.*; import java.util.StringTokenizer; /** Index: GISModelWriter.java =================================================================== RCS file: /cvsroot/maxent/maxent/src/java/opennlp/maxent/io/GISModelWriter.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** GISModelWriter.java 2001/10/23 14:06:53 1.1.1.1 --- GISModelWriter.java 2001/11/15 15:42:14 1.2 *************** *** 18,24 **** package opennlp.maxent.io; import cern.colt.list.*; import cern.colt.map.*; - import opennlp.maxent.*; import java.io.*; import java.util.*; --- 18,24 ---- package opennlp.maxent.io; + import opennlp.maxent.*; import cern.colt.list.*; import cern.colt.map.*; import java.io.*; import java.util.*; *************** *** 44,48 **** PARAMS = (OpenIntDoubleHashMap[])data[0]; ! HashMap pmap = (HashMap)data[1]; OUTCOME_LABELS = (String[])data[2]; CORRECTION_CONSTANT = ((Integer)data[3]).intValue(); --- 44,48 ---- PARAMS = (OpenIntDoubleHashMap[])data[0]; ! Map pmap = (Map)data[1]; OUTCOME_LABELS = (String[])data[2]; CORRECTION_CONSTANT = ((Integer)data[3]).intValue(); *************** *** 90,99 **** // compactly than as the entire list. ComparablePredicate[] sorted = sortValues(); ! ArrayList compressed = compressOutcomes(sorted); writeInt(compressed.size()); for (int i=0; i<compressed.size(); i++) { ! ArrayList a = (ArrayList)compressed.get(i); writeUTF(a.size() + ((ComparablePredicate)a.get(0)).toString()); --- 90,99 ---- // compactly than as the entire list. ComparablePredicate[] sorted = sortValues(); ! List compressed = compressOutcomes(sorted); writeInt(compressed.size()); for (int i=0; i<compressed.size(); i++) { ! List a = (List)compressed.get(i); writeUTF(a.size() + ((ComparablePredicate)a.get(0)).toString()); *************** *** 149,157 **** } ! protected ArrayList compressOutcomes (ComparablePredicate[] sorted) { ComparablePredicate cp = sorted[0]; ! ArrayList outcomePatterns = new ArrayList(); ! ArrayList newGroup = new ArrayList(); for (int i=0; i<sorted.length; i++) { if (cp.compareTo(sorted[i]) == 0) { --- 149,157 ---- } ! protected List compressOutcomes (ComparablePredicate[] sorted) { ComparablePredicate cp = sorted[0]; ! List outcomePatterns = new ArrayList(); ! List newGroup = new ArrayList(); for (int i=0; i<sorted.length; i++) { if (cp.compareTo(sorted[i]) == 0) { |
From: Jason B. <jas...@us...> - 2001-11-15 15:42:17
|
Update of /cvsroot/maxent/maxent In directory usw-pr-cvs1:/tmp/cvs-serv31733 Modified Files: build.xml Log Message: Added Trove and used it in the places where it was trivial to swap trove classes in. Index: build.xml =================================================================== RCS file: /cvsroot/maxent/maxent/build.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** build.xml 2001/11/06 15:59:43 1.7 --- build.xml 2001/11/15 15:42:13 1.8 *************** *** 44,47 **** --- 44,48 ---- <pathelement location="${lib.dir}/java-getopt.jar"/> <pathelement location="${lib.dir}/colt.jar"/> + <pathelement location="${lib.dir}/trove.jar"/> </path> *************** *** 127,130 **** --- 128,132 ---- <pathelement location="${lib.dir}/java-getopt.jar"/> <pathelement location="${lib.dir}/colt.jar"/> + <pathelement location="${lib.dir}/trove.jar"/> </mergefiles> </jlink> |
From: Jason B. <jas...@us...> - 2001-11-15 13:09:56
|
Update of /cvsroot/maxent/maxent In directory usw-pr-cvs1:/tmp/cvs-serv13143 Modified Files: CHANGES Log Message: Index: CHANGES =================================================================== RCS file: /cvsroot/maxent/maxent/CHANGES,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CHANGES 2001/11/06 15:59:43 1.2 --- CHANGES 2001/11/15 13:09:54 1.3 *************** *** 1,2 **** --- 1,12 ---- + 1.2.3 + ----- + Added sample application "sports" to help with testing model behavior + and act as an example to help newbies use the toolkit. + + Fixed bug in TrainEval in which the number of iterations and the + cutoff were swapped in the call to train the model. + + + 1.2.2 ----- |
From: Jason B. <jas...@us...> - 2001-11-15 13:07:38
|
Update of /cvsroot/maxent/maxent/samples/sports In directory usw-pr-cvs1:/tmp/cvs-serv12407/samples/sports Added Files: .cvsignore Log Message: --- NEW FILE: .cvsignore --- *Model.txt |
From: Jason B. <jas...@us...> - 2001-11-15 13:03:44
|
Update of /cvsroot/maxent/maxent/samples/sports In directory usw-pr-cvs1:/tmp/cvs-serv11682 Added Files: CreateModel.java MyContextGenerator.java MyEventCollector.java Predict.java README football.dat football.test gameLocation.dat gameLocation.test Log Message: New simple sample maxent application to help people get started with Maxent. Created by Chieu Hai Leong, modified extensively by Jason Baldridge. --- NEW FILE: CreateModel.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Chieu Hai Leong and Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// import opennlp.maxent.*; import opennlp.maxent.io.*; import java.io.*; /** * Main class which calls the GIS procedure after building the EventStream * from the data. * * @author Chieu Hai Leong and Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/15 13:03:41 $ */ public class CreateModel { /** * Main method. Call as follows: * <p> * java CreateModel dataFile */ public static void main (String[] args) { String dataFileName = new String(args[0]); String modelFileName = dataFileName.substring(0,dataFileName.lastIndexOf('.')) + "Model.txt"; try { FileReader datafr = new FileReader(new File(dataFileName)); EventCollector ec = new MyEventCollector(datafr); EventStream es = new EventCollectorAsStream(ec); GISModel model = GIS.trainModel(es); File outputFile = new File(modelFileName); GISModelWriter writer = new SuffixSensitiveGISModelWriter(model, outputFile); writer.persist(); } catch (Exception e) { System.out.print("Unable to create model due to exception: "); System.out.println(e); } } } --- NEW FILE: MyContextGenerator.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Chieu Hai Leong and Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// import opennlp.maxent.*; import gnu.regexp.*; import java.util.*; /** * Implements opennlp.maxent.ContextGenerator for the Weather sample. * Assumes a comma separated list of contextual predicates. * * @author Chieu Hai Leong and Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/15 13:03:41 $ */ public class MyContextGenerator implements ContextGenerator { public String[] getContext(Object o) { List collectFeats = new ArrayList(); String[] toks = PerlHelp.split((String)o, ","); for(int i=0; i<toks.length; i++) collectFeats.add(toks[i]); String[] context= new String[collectFeats.size()]; collectFeats.toArray(context); return context; } } --- NEW FILE: MyEventCollector.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Chieu Hai Leong and Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// import opennlp.maxent.*; import java.io.*; import java.util.*; /** * Implements opennlp.maxent.EventCollector for the Weather sample. * Assumes a comma separated list containing all the features, * with the last item being the outcome, e.g.: * <p> * feature_1, feature_2, ... feature_n, outcome * * @author Chieu Hai Leong and Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/15 13:03:41 $ */ public class MyEventCollector implements EventCollector { private ContextGenerator _cg = new MyContextGenerator(); private List _eventList; public MyEventCollector (Reader datafr) { _eventList = new ArrayList(); try { BufferedReader br = new BufferedReader( datafr ); String s = br.readLine(); while (s != null) { int lastComma = s.lastIndexOf(','); String oc = s.substring(lastComma+1); String[] context = _cg.getContext(s.substring(0, lastComma)); _eventList.add(new Event(oc, context)); s = br.readLine(); } br.close(); } catch( Exception e ) { e.printStackTrace(); } } public Event[] getEvents () { return getEvents(false); } public Event[] getEvents (boolean evalMode) { Event[] events = new Event[_eventList.size()]; _eventList.toArray(events); return events ; } } --- NEW FILE: Predict.java --- /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2001 Chieu Hai Leong and Jason Baldridge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// import opennlp.maxent.*; import opennlp.maxent.io.*; import java.io.*; /** * Test the model on some input. * * @author Jason Baldridge * @version $Revision: 1.1 $, $Date: 2001/11/15 13:03:41 $ */ public class Predict { MaxentModel _model; ContextGenerator _cg = new MyContextGenerator(); public Predict (MaxentModel m) { _model = m; } private void eval (String predicates) { double[] ocs = _model.eval(_cg.getContext(predicates)); System.out.println("For context: " + predicates + "\n" + _model.getAllOutcomes(ocs) + "\n"); } /** * Main method. Call as follows: * <p> * java Predict dataFile (modelFile) */ public static void main(String[] args) { String dataFileName, modelFileName; if (args.length > 0) { dataFileName = args[0]; if (args.length > 1) modelFileName = args[1]; else modelFileName = dataFileName.substring(0,dataFileName.lastIndexOf('.')) + "Model.txt"; } else { dataFileName = ""; modelFileName = "weatherModel.txt"; } Predict predictor = null; try { GISModel m = new SuffixSensitiveGISModelReader( new File(modelFileName)).getModel(); predictor = new Predict(m); } catch (Exception e) { e.printStackTrace(); System.exit(0); } if (dataFileName.equals("")) { predictor.eval("Rainy,Happy,Humid"); predictor.eval("Rainy"); predictor.eval("Blarmey"); } else { try { DataStream ds = new PlainTextByLineDataStream( new FileReader(new File(args[0]))); while (ds.hasNext()) { String s = (String)ds.nextToken(); predictor.eval(s.substring(0, s.lastIndexOf(','))); } return; } catch (Exception e) { System.out.println("Unable to read from specified file: " + args[0]); System.out.println(); } } } } --- NEW FILE: README --- This is a simple example of a use of maximum entropy and the OpenNLP Maxent toolkit. (It was designed to work with Maxent v1.2.2.) There are two example data sets provided, one for whether a game should be played indoors or outdoors and another for whether Arsenal or Manchester United (two English football clubs) will win when they play each other, based on a few potentially salient features for either decision. The java classes should be helpful getting up and running with your own maxent implementation, though the context generator is about as simple as it gets. For more complex examples, look at the classes in the opennlp.grok.preprocess package, available at http://grok.sf.net. To play with this sample application, do the following: Be sure that opennlp.maxent is in your classpath. Compile the java files: > javac *.java or > jikes *.java (If you have it installedon your system, jikes is faster!) Build the models: > java CreateModel gameLocation.dat > java CreateModel football.dat This will produce the two models "gameLocationModel.txt" and "footballModel.txt" in this directory. You can then test the models on the data itself to see what sort of results they get on the data they were trained on: > java Predict gameLocation.dat > java Predict football.dat You'll get output such as the following: -------------------------------------------------- For context: Cloudy,Happy,Humid Outdoor[0.77126] Indoor[0.22873] For context: Rainy,Sad,Humid Outdoor[0.00193] Indoor[0.99806] -------------------------------------------------- For the first, the model has assigned a normalized probability of 77% to the Outdoor outcome, so given the context "Cloudy,Happy,Humid" it would choose to have the game outdoors. For the second, the model appears to be almost entirely sure that the game should be indoors. The Arsenal vs. Manchester United decision is a bit more interesting because there are three possible outcomes: Arsenal wins, ManU wins, or they tie. Here is some example output: -------------------------------------------------- For context: home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous arsenal[0.29334] man_united[0.44398] tie[0.26267] For context: home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=tense,Wengler=tense,arsenal_lost_previous,man_united_won_previous arsenal[0.35432] man_united[0.24733] tie[0.39833] -------------------------------------------------- In the first case, ManU looks like the clear winner, but in the second it looks like it will be a tie, though Arsenal looks to have more of a chance at winning it than ManU. (For those who don't know, Beckham, Scholes, and Neville or ManU players and Ferguson is the coach, while Henry, Kanu, and Parlour are Arsenal players with Wengler as their coach. By "Beckham=false" I mean that Beckham won't play this game.) Also, try this on the test files: > java Predict gameLocation.test > java Predict football.test Go ahead and modify the data to experiment with how the results can vary depending on the input to training. There isn't much data, so its not a full-fledge example of maxent, but it should still give the general idea. Also, add more contexts in the test files to see what the model will produce with different features active. On a side note, though the features appear in almost the same orderings in the data files, this is not important. You can list them in whatever order you like. If you have any suggestions, interesting modifications, or data sets for other examples to add to this sample maxent application, please post them to the maxent open discussion forum: https://sourceforge.net/forum/forum.php?forum_id=18384 or send mail to Jason Baldridge <jm...@co...>. Posting to the forum is preferable. --- NEW FILE: football.dat --- home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_lost_previous,man_united_won_previous,arsenal home=man_united,Beckham=true,Scholes=false,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=tense,Wengler=confident,arsenal_won_previous,man_united_lost_previous,man_united home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=tense,Wengler=tense,arsenal_lost_previous,man_united_won_previous,tie home=man_united,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=false,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,tie home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,arsenal home=man_united,Beckham=false,Scholes=true,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,man_united home=man_united,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,man_united home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_lost_previous,man_united_won_previous,arsenal home=arsenal,Beckham=true,Scholes=false,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=tense,Wengler=confident,arsenal_won_previous,man_united_lost_previous,arsenal home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=tense,Wengler=tense,arsenal_lost_previous,man_united_won_previous,tie home=arsenal,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=false,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,man_united home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,arsenal home=arsenal,Beckham=false,Scholes=true,Neville=true,Henry=false,Kanu=true,Parlour=false,Ferguson=confident,Wengler=confident,arsenal_won_previous,man_united_won_previous,man_united home=arsenal,Beckham=true,Scholes=true,Neville=false,Henry=true,Kanu=true,Parlour=false,Ferguson=confident,Wengler=tense,arsenal_won_previous,man_united_won_previous,arsenal --- NEW FILE: football.test --- home=arsenal,? home=man_united,arsenal_won_previous,man_united_won_previous,Wengler=tense,? home=man_united,Beckham=true,Henry=true,? home=arsenal,Beckham=false,Henry=true,? home=arsenal,Beckham=true,Henry=false,? --- NEW FILE: gameLocation.dat --- Sunny,Happy,Outdoor Sunny,Happy,Dry,Outdoor Sunny,Happy,Humid,Outdoor Sunny,Sad,Dry,Outdoor Sunny,Sad,Humid,Outdoor Cloudy,Happy,Humid,Outdoor Cloudy,Happy,Humid,Outdoor Cloudy,Sad,Humid,Outdoor Cloudy,Sad,Humid,Outdoor Rainy,Happy,Humid,Indoor Rainy,Happy,Dry,Indoor Rainy,Sad,Dry,Indoor Rainy,Sad,Humid,Indoor Cloudy,Sad,Humid,Indoor Cloudy,Sad,Humid,Indoor --- NEW FILE: gameLocation.test --- Cloudy,Sad,? Sunny,? Rainy,Happy,Humid,? Happy,Dry,? Happy,? Rainy,Dry,? Sunny,Sad,Dry,? Cloudy,Happy,Humid,? Cloudy,Humid,? |
From: Jason B. <jas...@us...> - 2001-11-15 12:59:57
|
Update of /cvsroot/maxent/maxent/samples/sports In directory usw-pr-cvs1:/tmp/cvs-serv10801/sports Log Message: Directory /cvsroot/maxent/maxent/samples/sports added to the repository |
From: Jason B. <jas...@us...> - 2001-11-15 12:59:45
|
Update of /cvsroot/maxent/maxent/samples In directory usw-pr-cvs1:/tmp/cvs-serv10755/samples Log Message: Directory /cvsroot/maxent/maxent/samples added to the repository |