ADAMS 16.12.1 has been released. More details and download links are available from here.
Alright, this is the final update before I'll be making a release. Definitely going to happen now next week! :-)
- Clearing the history of a GenericObjectEditor panel now correctly clears also the list of commandlines (and no longer generates exceptions).
- The SimplePlot and SequencePlotter sinks allow you to turn off the tool tips for the plot.
- The SerializationHelper class now always closes all streams to avoid any race conditions between JVM and OS.
- Marker data in SequencePlotter is now correctly colored and only displayed if corresponding sequence is visible.
- Plot plugins SimplePlot and JFreeChart for spreadsheet and Instances tables now respect the sorting of the column when using subsets.
- The ActualVsPredicted sink now suppresses the plot tool tips as they distract and annoy.
- The DefaultTypeMapper now maps Types.DECIMAL to DOUBLE instead of STRING (returned e.g., when using SQL calculations).
- Weka Investigator:
- All textual output, like run information or models, is now read-only.
- Save action now adds the new file to the recent files menu.
- Fixed the notifications when attributes get checked/unchecked in the Proprocess tab. Also fixed the None button, as it behaved like the All one.
- Added fastrandomforest dependency.
- The WekaInstanceDumper did not delete an existing file if buffer size larger than 1 (and keepExisting not checked).
- Weka Investigator:
- adams-spectral-dim: JCampDX readers now have an option to use the filename (without extension) as the ID for the spectrum.
- The GridView standalone now has an option for adding headers to the grid, to better distinguish the individual cells in the grid (uses the names of the actors).
- The SequencePlotter received two more options: -adjust-to-visible-data, -side-panel-width
- When checking before saving is enabled in the Flow editor, any error message gets output in the notification area now as well in order to be able to jump to problematic actors.
- The IntToString conversion now supports optional byte format strings, e.g., to generate strings like 3,456.89KB.
- SpreadSheetMerge how has a flag to only keep a single instance of the unique ID column in the output: -keep-only-single-unique-id
- WekaInstancesMerge how has a flag to only keep a single instance of the unique ID attribute in the output: -keep-only-single-unique-id
- VotedImbalance now supports manual list of thresholds (prob of minority class = # of resampled models) for more targeted resampling based on data.
- Weka Investigator:
- It is now optional whether to sort the attribute names in the dropdown list for the class attribute in the data/preprocess table.
- The run information can be used as tooltip for result history entries now (classify, cluster, attsel tab).
- The Classify/Cluster/Attribute Selection tabs now allow you to Compare output of several results side-by-side.
- The LongToString conversion works like the IntToString one, but on Long objects instead.
- The MultiPLS filter operates on multiple Y values for the same range of X attributes and places the results side-by-side. Applies the same PLS algorithm to each Xs/Y combination.
- Added the adams-groovy-webservice module to adams-addons, which uses the groovy-wslite library for making SOAP and REST webservices easily accessible within Groovy (NB: only client-side).
Initially, I had a release planned for this week, but with a plethora of minor bug fixes/UI improvements happening and other projects demanding time, I had to abandon this plan. Hopefully, this will eventuate next week instead.
- Interactive actors now call the root actor's stopExecution method instead of their own, in order to stop the flow.
- The SelectArraySubset interactive transformer now updates the message label with each interaction and double-clicking on an item automatically selects it and accepts the dialog.
- Spreadsheet tables now interpret Long cell values as Double, in order to get correct sorting of columns with mixed Long/Double values.
- adams-weka: Fixed the batch-filtering functionality of the Weka Investigator's preprocess tab.
- The ImageViewer sink now accepts objects implementing BufferedImageSupporter as well.
- adams-spectral-core has been renamed to adams-spectral-2dim (as it is for 2-dimensional spectra).
- Start buttons now display a tooltip if disabled, explaining why process cannot be started (hover over the button to display it).
- PCA tab now offers checkbox for skipping nominal attributes.
- Closing a tab now prompts the user whether to go ahead with it (to avoid losses of tabs when quickly switching between them and accidentally hitting the close button).
- The ClassifierErrors output generator now allows anti-aliasing to be configured (default is Auto, i.e., if more than 1000 datapoints, it gets turned off to speed up the plot).
- The unsupervised instance-based filters DatasetCleaner and DatasetLabeler now have the additional flag -only-first-batch, which applies the filter only to the first batch of the data.
- Weka Investigator:
- Added RomanToInt and IntToRoman conversions for handling Roman numerals.
- Added Kendall-Theil robust regression calculation: ArrayKendallTheil, StatUtils.kendallTheil, KendallTheilOverlayPaintlet.
- Added the BufferedImageSupporterToBufferedImageContainer conversion to allow attaching of metadata.
- Added meta-data text overlay for images, e.g., used in the ImageViewer sink: MetaDataText.
- The SetContainerValue control actor allows updating of a single container value, using data from either a callable actor or storage.
- The PredictionEccentricity transformer allows the calculation of the eccentricity for the predictions generated by a regressor.
- The ActualVsPredictedPlot sink now implements AntiAliasingSupporter, i.e., you can turn on/off anti-aliasing for pretty/fast plots.
- Added PLS spectrum batch filter, which makes use of the new PLS algorithm class hierarchy to transform the spectral data.
- Added PCA spectrum batch filter.
- The JFreeChartPlot sink allows plots from spreadsheet columns using JFreeChart plot library and the JFreeChartFileWriter outputs image files from generated plots.
- The Spreadsheet file viewer now has a chart plugin using JFreeChart.
- Added WekaGenericPLSMatrixAccess transformer which gives access to internal PLS matrices of the new AbstractPLS class hierarchy.
- PLS-based classifier that uses the new PLS class hierarchy: weka.classifiers.functions.PLSWeighted.
- The classify/cluster tab in the Weka Investigator now have Build model evaluations that just generate a model and save it to disk.
- The Data table of the Weka Investigator now has a plugin for plotting using JFreeChart.
- The WekaSpreadSheetToPredictions transformer allows the recreation of an Evaluation object simply from predictions of a model (actual/predicted).
- weka.filters.FilteredFilter is a filter for applying a pre-filter to the data before using the main filter (eg for selecting a subset).
- The Weka Investigator now offers an output generator for displaying/calculating the Prediction Eccentricity of the predictions (Classify tab, numeric classes only).
- It is now possible to compare the predictions of two models evaluated in the same way on the same dataset (with a numeric class) through the Compare models menu item in the result history of the Classify tab of the Weka Investigator.
Didn't manage to get this one out on Friday, been way too busy with preparations for ACML 2016, which we're hosting this week here at Waikato.
Oh, in regards to last night's earthquake here in NZ: everyone at Waikato is safe. Our thoughts go out to the people around NZ that suffered from this quake.
- The directory chooser dialog now reloads the bookmarks before showing the dialog (in case they got modified in another dialog).
- The table model for reports now performs searches in the values of the fields as well, not just the names of the fields.
- AdamsCommandLineHandler.setOptions method now correctly resets the options to default ones before applying the supplied options.
- The Stop buttons in the Preprocess/Classify tab now work as expected (stopping worked, but didn't update the buttons).
- deleting attributes or instances in the data tab now updates the preprocess panel accordingly.
- Moving datasets up or down now correctly updates the comboboxes listing the available datasets (e.g., in the Classify tab).
- Moving tabs no longer clears their result history.
- Weka Investigator
- The SequencePlotter now allows you to save only the visible data to a spreadsheet as well.
- window titles are now getting prefixed with the hostname (if available), to make it easier locating windows when logged in multiple remote machines.
- Plots now allow the modification of their paintlets through the right-click menu.
- Added -minimal-window option to the AbstractApplicationFrame class to avoid main frame being extended to full screensize.
- adams-imaging: upgraded zxing barcode library to 3.3.0.
- adams-pdf: The PdfProclets have been extended to allow processing of objects rather than just files; The PDFAppendDocument transformer now can process objects from storage as well.
- adams-spectral-core: JCampDX2SpectrumReader now handles files with multiple pages.
- adams-spreadsheet: The ScatterPlot chart of the Spreadsheet file viewer can now plot circles or crosses with specified diameter and overlays.
- adams-visualstats: The ScatterPlot now allows you to save the data and the visible data to a spreadsheet.
- Now allows you to export all currently displayed outputs (attribute selection, classification, clustering): to a directory, to a ZIP file (requires adams-compress), to a PDF file (requires adams-pdf), or via email (requires adams-net).
- Whole tabs like Classify can be copied now as well, including their current history.
- The Export action of the data table has been renamed to Save.
- The data tab now caches tables for faster display (and keeping any custom column sizes).
- Operations in investigator (loading files, copying tabs, obtaining data from sources) can be stopped now.
- Weka classes are now using the ADAMS GenericObjectEditor in the GUI.
- Weka classes now display their full help in the Class help tool (available from the Help menu).
- Weka Investigator
- adams-nlp: added ptstemmer 2.0.0 weka package dependency.
- adams-spectral-core: added Weka file loader for FOSS CAL files called CALSpectrumLoader.
- adams-spreadsheet: added convenience reader/writer for tab-separated values (TSV) files.
- The output tabs in the Weka Investigator (attribute selection, classify, cluster) now support copying the content to the clipboard as well.
- A new class hierarchy for updating the relation name of files being loaded is now available (e.g., based on file name or attribute name).
- Added (optional) model size to investigator's run information (classify/cluster tabs).
- Added new PLS filter that uses class hierarchy of PLS implementations, with PLS1 and SIMPLS as the currently available implementations.
- Weka Investigator:
The Weka Investigator is still under heavy development, but now it is more about stability, usability and additional functionality. The general framework is pretty much there.
- Fixed memory leak that occurs within Rat actors in conjunction with directed control actors like Switch, the setUp() method call didn't remove its current Directory instance from the PauseStateManager as listener.
- The plain text handler of the Preview browser now displays a Creation of preview failed if it cannot load the file as text. Also fixed the occasional occurring use of the wrong content handler (race condition).
- Added boolean flag to catch circular calculation in spreadsheet formulas, avoiding costly StackOverflows per cell (can take a very long time in large spreadsheets).
- The XSLT transformer no longer fails if the stylesheet file property is empty (and wrongly trying to load a non-existing file).
- The Export action in the Weka Investigator now allows overwriting existing files; also uses any existing file as the suggested export file name.
- The Weka Investigator dropdown lists for the class attribute in the data table are no longer cached to avoid inconsistencies in case the user modifies the attributes of a dataset.
- Stopping cross-validation in the Weka Investigator now properly waits for the sub-threads to finish.
- The Simple plot for spreadsheet/instances tables now asks the user for number of data points to plot if that should exceed 1000.
- The File commander now pops up remote directory setup if it should require initialization (when changing the chooser).
- Panels for choosing files and directories now retain a history of selected elements.
- The EnterManyValues source can output the key-value pairs as a java.util.Map object now as well.
- SimplePlot and SequencePlotter now allow the export of the first visible plot to CSV.
- adams-compress: upgraded lzma-java artifact to 1.3.
- adams-visualstats: added support for mouse click actions to the ScatterDisplay sink.
- The WekaPrincipalComponents transformer now outputs not only loadings, but also the transformed data. Automatically filters out attributes that PCA does not support (uses PartitionedMultiFilter internally to add them again to the transformed data).
- WekaPredictionsToInstances and WekaPredictionsToSpreadSheet allow the user to output the absolute error (default) or not.
- The Weka Investigator now allows you to copy, save and load workspaces (any graphical output has to be regenerated though; simply right-click on history entry and select Regenerate output). Undo can be turned off now as well. Testing classifier models now outputs from progress information as feedback for the user.
- Transformer for changing prefixes of report fields to a new one: ChangeReportFieldPrefixes.
- added AttributeStatistics column processor for tables displaying Instances objects, like the Data tab in the Weka Investigator.
- The Weka Investigator now has principal components and partial least squares visualization tabs, which display loadings and scores. The Investigator also offers shortcuts now for the tabs, to quickly open new tabs. An action for randomizing a dataset has been added to the Data tab.
- Added MergeObjectLocations transformer to merge the located objects in two reports.
- The CompareObjectTypes transformer compares the type of located objects in two reports and outputs a comparison spreadsheet.
- The LookUpInit standalone initializes an empty lookup table in storage.
- With the ReportToSpreadSheet conversion, you can turn a Report object into a spreadsheet.
- With the LookUpUpdate transformer, you can update a spreadsheet that acts as a lookup table using custom rules (e.g., if-then-else).
- adams-spectral-core: added support for PCA/PLS analysis using spectra to the Spectrum Explorer.
The Weka Investigator is maturing quite nicely. Going back to the Weka Explorer feels quite weird now... Handling of multi-core processing has slightly changed, as explained below.
- Fixed layout issues with the Class help menu item from the Help menu.
- fixed PlaceholderFile.expand method, which accidentally used getPath() instead of provided path, resulting in renameTo method not working as expected (old and new name were the same).
- adams-ml: The ActualVsPredictedPlot sink no longer drops points with the same X, now compares X and Y to make that decision.
- adams-spreadsheet: The COUNT aggregation of the SpreadSheetAggregate transformer now works if no numeric columns have been specified. This allows the SpreadSheetQuery transformer to process a query like SELECT COUNT GROUP BY class.
- Upgraded EnterManyValues source to work in headless environment as well.
- History of GenericObjectEditor panels is now persistent; stored as simple list of commandlines in project's home directory. Affects ADAMS and Weka GOE panels.
- File Commander allows you now to connect to remote servers using FTP, SFTP and SMB (if adams-net module present). Viewing of remote files is supported as well (remote file gets downloaded as temporary file first).
- The Preview browser now carries over search settings from one file to the next, as long as the content handler stays the same.
- The number of threads option for multi-threading has changed its meaning slightly. Previously, anything below 1 was considered to use all available cores. The new interpretation is that only 0 is considered to use all available cores. Negative numbers represent the number of cores to reserve for other processes, e.g., -1 means all cores minus one are used, reserving one core for other operations.
- The WhileLoop control actor now allows standalone actors to be added.
- adams-rats: Added guards class hierarchy to the EnQueue rats output scheme, e.g., MaxQueueSize which ensures that the queue doesn't become too full.
- adams-visualstats: The following sinks can be enclosed in a DisplayPanelManager now: BoxPlot, FourInOneDisplay, Histogram, MatrixPlot, ProbabilityPlotDisplay, ScatterDisplay.
- adams-weka: The Weka Investigator now allows you to store additional columns from the data alongside the evaluation. The Classifier Errors plot (not the Weka legacy one) displays that then when clicking on data points in the plot. The Predictions output of the Classify tab shows these additional attributes, too.
- Added stopping criterion MaxIterationsWithoutImprovement for the genetic optimization algorithms.
- Searchlets for the FileSystemSearch source actor that operate on the local file system have been prefixed with Local, to distinguish them better from others offered through other modules.
- added support for listing files via SMB (i.e., Windows shares) and FTP to the FileSystemSearch source actor.
- FTPLister source has been deprecated and will get removed in the future. Use FileSystemSearch in conjunction with FTP searchlets instead.
- FTPGet, ScpFrom and SFTPGet now have an empty directory as default they no longer prefix the remote directory if empty.
- The SMBGet and SMBSend transformers in conjunction with the SMBConnection standalone allow you to retrieve/send files from a Windows host.
- adams-spectral-core: The Update Sample data maintenance interface allows you to update a single field for all the checked spectra. Useful when setting a particular flag.
- adams-spreadsheet: Row and column statistics can be calculated now for instances of the SpreadSheetTable class, e.g., used by the Spreadsheet file viewer.
- Added an Instance Explorer-like tab and a Box plot tab to the Weka Investigator.
- Row and column statistics can be calculated now for InstancesTable instances, as used by the Weka Investigator.
Have a good weekend!
The replacement of the default Weka interfaces (Explorer, Experimenter) with more user-friendly and efficient interfaces is more or less finished, with the introduction of the Multi-Experimenter (see below).
- adams.core.discovery.DefaultPropertyDiscovery now uses the regular expressions on the property paths.
- adams-twitter: The extraction of hashtags from tweet archives incorrectly cut off the last character from tags (Retwee instead of Retweet).
- adams-rats: Fixed the incomplete full names of Rat actors.
- The Find next menu item has been removed from the Flow Editor's menu, as the updated Find menu item now lists all occurrences in a dialog.
- The File commander now offers action plugins, with the adams-compress module offering GZIP and ZIP actions.
- The RegExp Test maintenance tool now offers Replace and Match tabs.
- The FileSystemSearch source is now stoppable.
- adams-net: upgraded jsch to 0.1.54.
adams-weka: The Weka Investigator received a few changes:
- Supports now leave-one-out cross-validation (LOO-CV) and multi-threaded evaluation in the Classify tab.
- Sports the 4-in-1 plot available from the adams-visualstats module as output for the classify tab.
- In the data tab, you can now display histograms and simple plots for rows/columns.
- Undo is now available as well - per dataset level.
- Modules have been rearranged: adams-base-all, adams-addons-all annd adams-incubator-all have been moved to adams-applications. The Snapshot (Apps) page on the ADAMS website got removed, as the application snapshots have been folded into the regular snapshots.
- Added object reader/write using a nested command-line format, which is easier to edit manually than the default command-line format.
- Added FindText flow processor that allows searching for text in the actors' options (String and BaseObject-derived ones).
- adams-net: additional searchlets for the FileSystemSearch source that allow searching on remote servers using SFTP channels. A SSHConnection standalone actor must be present in the flow for this to work.
- adams-rats: added Exec rat input and output schemes which execute an external program.
- Added Attribute selection panel to the Weka Investigator.
- Added Weka Multi-Experimenter tool, which offers a user interface that utilizes the Weka experiment framework mainly for analyzing experimental results. Weka's simple setup is available, as well as one for ADAMS-based experiments. The advantage of the latter is support for multi-threading and (in theory) also distributed computation.
- There is a new snapshot available: adams-ml-app. This collection of modules combines all machine learning modules.
All lot of effort has gone into making ADAMS work in a headless environment, like on a Linux server in the cloud. Thanks to Lanterna, there is now a simple, terminal-based interface available for such environments. A number of interactive actors can be used in headless environments now as well.
- The ManageInteractiveActors now enables/disables interactive actors correctly.
- Added support for interactive actors to be used in a headless environment (e.g., in a terminal on a server), with the following actors supporting this now: EnterValue, SelectCharset, SelectDateTime, SelectDirectory, SelectFile, WekaSelectDataset, ConfirmationDialog, PasteFromClipboard. The following actors can now ask for the password in the console as well: DatabaseConnection, FTPConnection, SMTPConnection, SSHConnection.
- The adams.flow.FlowRunner class now offers a -non-interactive flag, that ensures that all interactive actors avoid interaction with the user. Useful for flows that can be run with user interaction through GUI or command-line and also as background process.
- Added support for gzip-compressed Properties files: .props.gz
- adams-weka: The Weka Investigator now has a Cluster tab as well as a tab in the system-wide Preferences (Program -> Preferences).
- Added support for customizable enumerations: adams.core.ConfigurableEnumeration.
- The adams.terminal.Main class allows you to run flows in a terminal, i.e., without a graphical user interface. Useful when working in a headless environment, like remotely on Linux servers.
- Introduced a simple file manager called File commander inspired by the Midnight Commander.
- adams-imaging: added JpegIsComplete file-use check algorithm, which determines whether a JPEG is fully written to disk.
- With the SpreadSheetMatrixStatistic you can now calculate statistics for a whole spreadsheet (or a defined subset).
- The SimpleStreamSpreadSheetReader/Writer pair allows you to store spreadsheet data alongside their types. Sparse format and chunking is supported as well.
- With the SpreadSheetToCreateTableStatement conversion it is easy to create a SQL CREATE TABLE statement.
- adams-weka: With WekaClusterAssignments you can output the cluster assignments (i.e., which instance got assigned to what cluster) from the last evaluation as spreadsheet.
- Data loaded in the SpectrumExplorer, InstanceExplorer, etc now keeps its associated color, even when being filtered or transformed.
- Fixed StackOverflow error caused by AbstractActor.isHeadless() method when using a graphical actor by itself outside a flow.
- Fixed a headless environment exception adams.gui.application.DatabaseConnections.
- adams-imaging: the ChangeCanvasSize BufferedImage transformer no longer loses the meta-data.
- adams-weka: fixed a cast exception in the WekaInstanceViewer sink.
- Added support for trainable outlier detectors.
- DirectoryLister, FileSupplier and FileSystemSearch sources now offer output of files with forward slashes (to avoid \t problems with variables).
- ReplaceFileExtension and StringToValidFileName conversion can output forwards slashes now as well.
- The Placeholder management dialog now has two tabs, one for the user-defined placeholders and one listing the system ones (CWD/HOME/TMP).
- The SetReportFromFile and SetReportFromSource transformers now allow merging as well, instead of just replacing the existing report
- Centralized headless environment checks in GUIHelper.isHeadless().
- The run/run.bat files have been trimmed down and the actual logic is now handled by the launcher.sh/launcher.bat scripts in the new adams-scripts module. Reduces duplication to a bare minimum.
- adams-meta: CopyCallableX actors now replace themselves in the flow with the copy of the callable actor rather than being kept internally. The callable actor can be marked as optional now as well. In case of the callable actor not being available, a dummy acctor is used instead.
- adams-net: Upgraded tika-core to 1.13.
- The Rat actor can be started in paused mode now.
- Fixed a problem with the RatPlague actor that variables were not being propagated correctly; the output queue is now optional as well.
- adams-spreadsheet: added support for custom type mappers (spreadsheet cell type <-> SQL type).
- adams-weka: the WekaInstancesDisplay sink now uses the improved table/model from the Weka Investigator, which includes a search panel now.
- Added PropertiesToMap and ReportToMap conversions.
- Added Null dummy standalone and source actors.
- Added class hierarchy for checking whether files are in use: adams.core.io.fileuse.AbstractFileUseCheck
- The JAI transformer ChangeOrientation ensures that images have the specified orientation (landscape or portrait).
- With the ImageAnnotator, the user can interactively label objects in an image that an object locator determined.
- adams-net: The Socket sink and source actors allow you to send and receive strings and byte arrays via sockets.
- adams-rats: The ChangeRatState control actor pauses/resumes the specified Rat actors from within the flow. Allows to initially start up a Rat actor in paused mode and then activate it later on (for instance, after user feedback).
- adams-spectral-core: added AmplitudeRange outlier detector, which determines its accepted range based on the training spectra. Flags any spectrum that falls outside the ranges.
- adams-weka: The new Weka Investigator tool is aimed at providing a more versatile alternative to the Weka Explorer. Being able to handle multiple sessions in parallel, multiple datasets per session (e.g., train and test set), using tabs instead of windows, pre-defined outputs to be generated from evaluations, and lots more. At this stage, only classification is available (apart from Data and Preprocessing tabs), with more functionality coming bit by bit.
Well, this week saw some important bug fixes, notably a critical memory leak in logging and deeplearning4j now working on Windows. See below for details.
- Fixed memory leak in the logging framework: Java's logging facility doesn't garbage collected Logger instances and slowly gobbles up memory. Reimplemented the functionality to avoid this issue. Thanks to Sam for uncovering that!
- Fixed passing on of data for control actors CallableActorScreenshot and ClearCallableDisplay.
- NewSpreadSheet now accepts an empty initial column list.
- SpreadSheetInsertColumn and SpreadSheetInsertRow now ignore the position if the spreadsheet coming through is empty (they simply add a row).
- adams-dl4j: Fixed the java.lang.UnsatisfiedLinkError: no jnind4j in java.library.path exception on Windows - correct inclusion of native artifacts.
- Data container reader/writer classes now state the supported file extensions and the default file extension under "additional information" in the help.
- Spreadsheet reader/writer classes now state the supported file extensions and the default file extension under "additional information" in the help.
- Added Open in file browser to directory panel of the Preview Browser.
- adams-spreadsheet: The SpreadSheetFileViewer now allows the user to paste a spreadsheet from the system clipboard (gets prompted how to read in the data).
- Added Copy ID(s) to popup menu of container lists.
- Centralized shortening of strings in adams.core.Shortening and adams.core.ShorteningType.
- Spectrum Explorer now allows reloading of spectral files, not just from database.
- The adams.core.management.Launcher class now allows the collapse of the classpath when launching the actual process, i.e., instead of listing every single jar explicitly, only the directory with /* appended is used. This dramatically reduces the length of the commandline string. Should also help with Windows' restriction of only allowing 260 characters in a classpath (Linux filesystems usually handle 4096 characters). The startup scripts, run and run.bat, got updated accordingly.
- AppendName, DirName and PrependDir can output paths with forward slashes now as well, when processing strings.
- adams-dl4j: upgraded deeplearning4j/nd4j to 0.4.0 and canova to 0.0.0.17.
- Added global switch for anti-aliasing (enable/disable), available from the Visualization menu.
- Added preview handler to the Preview browser for basic file information: FileInfoHandler
- MapToVariables transformer turns the key-value pairs into variables and associated values, useful when loading in YAML config files.
- added EditDistance transformer for computing the edit distance between strings (supplied base and ones received).
- added Stemmer transformer for performing word stemming, single words or arrays of words.
Have a good weekend!