Changes in version 2.0.0 o UPDATE: package rebuilt from the ground up: one file per function, input checks up front, the fluency and free association code paths merged, and a `testthat` suite (there were no tests before) o ADD: `bad_response`, `best_guess`, `binary_to_responses`, `qwerty_distance`, `read_data`, and `responses_to_binary` replace `bad.response`, `best.guess`, `bin2resp`, `qwerty.dist`, `read.data`, and `resp2bin`; the dotted names still work o REMOVE: `lowercase` argument of `textcleaner`; responses are always lowercased because capitalization does not change the word (a capital counted as a spelling error and `Cat` could be corrected to `gnat`). Calls that pass `lowercase` now fail with "unused argument" o ADD: `keepRepeats` argument in `textcleaner` (fluency only) keeps repeated responses in `$responses$clean` (GitHub Issue #17); `$responses$binary` and `$behavioral$Perseverations` are unchanged o ADD: `$dictionary` (the whole dictionary, reusable as `dictionary = result$dictionary`) and `$added_words` (only the words added in the session) in the `textcleaner` output when the dictionary is saved "In my results" o ADD: the manual spell-check help opens in a separate browser window when the manual spell-check starts (and again with `H`); `options(SemNetCleaner.help_window = FALSE)` keeps the help in the console o ADD: the instructions for reviewing the automated corrections (shown after the manual spell-check) open in a separate browser window too, followed by one ENTER prompt, instead of three screens of text in the console; `options(SemNetCleaner.help_window = FALSE)` keeps the console instructions o UPDATE: requires `SemNetDictionaries` (>= 0.3.0) (new category dictionaries and monikers, and a classed warning for a dictionary that cannot be found); a missing dictionary still stops with the `textcleaner` message when none loads, and gives one warning naming it when only some are missing o FIX: saving the dictionary at the end of the manual spell-check under a name that already exists kept the old file and lost the words added in that session o FIX: a cell that holds only spaces in the review of the automated corrections is now treated as missing (a space typed to clear `to_2` left a blank response in the cleaned data) o FIX: the review app for the automated corrections (`automated_edit`) redrew the whole table after every edit, so the user lost their place; the table is now processed in the browser and an edit no longer redraws it o UPDATE: the review of the automated corrections shows only the responses the automated spell-check changed (`$spellcheck$automated`, as documented); responses that were already correct are no longer listed, and the review is skipped when nothing changed (open.animals: 462 rows instead of 793) o ADD: `options(SemNetCleaner.pause = FALSE)` turns off the deliberate pauses in the console wizard o UPDATE: `parallel_process` (used by `textcleaner`) no longer changes the global random seed o ADD: `best_guess` uses a phonetic (Metaphone) match alongside the QWERTY keyboard distance (`"graple"` is now corrected); when the two disagree the response goes to manual review o UPDATE: `keepStrings = TRUE` (fluency) splits a string of dictionary words unless the whole string is a dictionary entry ("sea slug" stays, "marmoset otter" becomes "marmoset" and "otter", "sea slug dog" becomes "sea slug" and "dog"); with `keepStrings = FALSE` a dictionary entry inside a longer string is kept whole o UPDATE: with `keepStrings = FALSE`, a multi-word string that cannot be split automatically is asked about word by word, and strings are separated unless they are dictionary entries o UPDATE: BAD WORD with `keepStrings = TRUE` drops only the bad word and keeps the rest of the string (one `NA` is kept for the intrusion count); BAD STRING still drops the whole string o UPDATE: ID columns are only inferred when they look like IDs (numeric, or every value contains a digit); the names `Participants`, `IDs`, `Subjects`, etc. are recognized; explicit row names are used as IDs when there is no ID column (also for `partBY = "col"`) o UPDATE: task `type` is detected from the presence of `Cue` and `Response` columns rather than `ncol(data) > 3` o UPDATE: duplicated or missing participant IDs are an error naming the values and rows (they were silently renamed) o UPDATE: unusable input (`NULL`, no rows or columns, all responses missing, a failed preparation step) stops with a plain-language error instead of printing a bug report and returning `NULL` o UPDATE: `correct_changes` (through `textcleaner`) opens the Shiny/`DT` review app on every operating system (Linux used `edit`); pass `edit_fn = edit` for no extra packages. A review table with extra `to_` columns is accepted o UPDATE: separators written without spaces (`cow/pig`, `fish,bird`) separate words, digits inside words are kept for the spell-check, accented characters are transliterated (`"cafe"`), and runs of spaces are collapsed o UPDATE: words typed in the manual spell-check receive the same cleaning as every other response o UPDATE: typing `x` or pressing ENTER at "Please enter a new selection:" exits; GO BACK across responses is announced and documented o UPDATE: dependencies: `hunspell` and `phonics` are now `Imports`; `pbapply`, `parallel`, and `easycsv` are dropped; `shiny`, `DT`, `promises`, `tcltk`, and `rstudioapi` are `Suggests` only, and so are `foreign`, `readxl`, and `R.matlab`, which `read_data` needs only for `.sav`, `.xls`/`.xlsx`, and `.mat` files (it names the package to install); requires R (>= 4.0.1) and `SemNetDictionaries` (>= 0.2.1) o UPDATE: parallel processing uses `future`, `future.apply`, and `progressr`; the worker plan is always restored. Workers load the installed package, so `cores > 1` needs the package installed o REMOVE: the vignettes (and the `knitr`, `rmarkdown`, `markdown`, and `htmlTable` suggestions); the tutorial is Christensen and Kenett (2021, https://doi.org/10.1037/met0000463) o UPDATE: faster spell-checking against very large dictionaries such as `"general"` (370,000 words) o MOVE: `textcleaner_shiny` (point-and-click wizard) and the functions that support it are internal while the app is developed o FIX: `correct_data` perseverations were always 0 for a participant with no `"NA"` response (3 instead of 116 in `open.animals`); the same empty-`which()` negative index also emptied other vectors, matrix columns, and lists o FIX: a manual edit made while reviewing automated corrections was discarded for fluency data o FIX: `textcleaner` crashed with the default `partBY` ("the condition has length > 1") o FIX: `keepLength` filtered nothing for `keepLength >= 2` and everything for `keepLength <= 1` o FIX: GO BACK in the manual spell-check could discard every other recorded change; after a mistyped answer GO BACK and HELP replaced the word with `NA`; with `keepStrings = TRUE` and no suggestions GO BACK acted as BAD STRING o FIX: menus crashed on narrow consoles (`object 'def' not found`) and printed `1: SKIP` twice on consoles of 132 or more columns (GitHub Issues #20, #22, #26, #28) o FIX: data with one response column after the ID column failed (`attempt to set 'rownames' on an object with no dimensions`) (GitHub Issue #16); data with three or fewer columns was treated as free association (GitHub Issue #18) o FIX: a single column of whole word lists stops with a message explaining the one-response-per-column format (GitHub Issue #25) o FIX: `correct_data` overflowed when a response was corrected into three or more words (GitHub Issue #23) o FIX: errors in the corrections review were hidden behind a dump of the results object (GitHub Issues #27, #29) o FIX: a dictionary that cannot be found stops immediately, explaining that custom dictionaries are saved as `.dictionary.rds`; `auto_spellcheck` crashed with `keepStrings = FALSE` when no multi-word response could be corrected (GitHub Issues #21, #24) o FIX: saving a dictionary with "choose the directory" falls back to the working directory when `tcltk` cannot load (GitHub Issue #24); `add.path = "choose"` is resolved once, up front o FIX: a dictionary name that is not a valid file name, or a failed save, no longer loses the manual session; names are validated and a failed save keeps the dictionary in `$dictionary` o FIX: participant IDs came back space-padded when the ID column was numeric o FIX: pressing ENTER at "TYPE MY OWN WORD" or "TYPE MY OWN STRING" crashed; menu answers with stray whitespace were rejected o FIX: the HELP screen and the walkthrough described the wrong option numbers and wording under `keepStrings = TRUE` o FIX: `allowNumbers = TRUE` and capital letters crashed the automated spell-check (`qwerty_distance` now lowercases and has digits on the keyboard); `allowPunctuations = ""` crashed o FIX: a single participant failed; `continue =` a finished result failed with `argument is of length zero` and now explains what can be continued o FIX: resuming after exiting at a single-word decision could fail with `input 'word' has length 0` o FIX: a response that repeats an unknown word ("teh cat teh dog") stopped the run; the word is now asked about once for all occurrences o FIX: "pollar bear" became "polar bear bear", "tardigrade goose" lost "goose", "sea sponge" became "seal sponge", and "english cocker spaniel" repeated "spaniel"; "sting" in "sting ray" was asked about although "sting ray" is a dictionary entry o FIX: free association: KEEP ORIGINAL and a one-word TYPE MY OWN STRING garbled the response; a response reduced to nothing (all stop words) aborted the final cleaning; the moniker lists returned capitalized proper nouns ("I do know") o FIX: `convert2snafu` with a single dataset wrote an empty file o FIX: `qwerty_distance` and `singularize` were never exported; `bad.response` was defined twice and the unreviewed copy won at load time o FIX: several `1:length()`, `1:nrow()`, and `1:ncol()` ranges ran backwards on empty or one-row input Changes in version 1.3.6 o FIX: major fixes to free association preprocessing pipeline Changes in version 1.3.5 o UPDATE: added parallel processing for large spell checks o ADD: `textcleaner` functionality for free association response tasks (*hunspell* is used to expedite processing) o FIX: `singularize` handling of words ending in "es" o REMOVE: dependency *miniUI* and *editData* Changes in version 1.3.4 o FIX: error in getting "automated" data from `textcleaner` into Shiny GUI Changes in version 1.3.3 o FIX: `edit` error on Macs, switched to `editData`, and added *editData* dependency Changes in version 1.3.2 o UPDATE: faster conversion between US and UK spellings o FIX: revert of `singularize` Changes in version 1.3.1 o UPDATE: `textcleaner` now allows for either UK or US English spelling o FIX: `correct.changes` did not like vectors (see GitHub Issue #4) o FIX: bug for BAD STRING option in `textcleaner` fixed (see GitHub Issue #5) o UPDATE: new output and message for dictionary and monikers in `textcleaner` o FIX: bug for moniker check when `dictionary = "general"` in `textcleaner` (see GitHub Issue #7) o UPDATE: internal adjustment for parsing multiple words with the general dictionary (speeds up process) o ADD: preprocessing data from SemNA tutorial (`open.preprocess`) Changes in version 1.3.0 o ADD: function to convert cleaned data to the SNAFU library's format in Python: `convert2snafu` o UPDATE: `correct.changes` included within `textcleaner` to streamline code for single function preprocessing o UPDATE: `edit` function added within the `correct.changes` function to allow more seamless interface o UPDATE: change tracking has been added to `correct.changes` in the output (`$spellcheck$changes`) o UPDATE: `textcleaner`'s help is now more helpful o UPDATE: text styling (face and color) are now adaptive to OS, software (R and RStudio), and RStudio theme Changes in version 1.2.0 o **MAJOR UPDATE**: overhauled `textcleaner` and `correct.changes` system to be more functionally efficient, convenient, and aesthetically intuitive o ADD: a walkthrough has been added prior to the manual spell-check in `textcleaner` o ADD: a help option has been added to `textcleaner` o UPDATE: error catching added to `textcleaner` and `correct.changes` so not all is lost (data up to error will be saved and returned) o MOVE: `equate` and `finalize` moved from SemNetCleaner to SemNeT o UPDATE: moved many miscellaneous functions to internals to clean up package presentation o UPDATE: cleaned up textcleaner code to be more streamlined and readable o REMOVE: lead.word data was removed because the `rm.lead.space` function was moved to internals Changes in version 1.1.5 o FIX: `read.data` bug for .csv files o FIX: NA bug in `textcleaner` o ADD: `resp2bin` converts response matrix to binary response matrix o FIX: naming output in `equate` function o FIX: `pluralize` handling of words ending in 'ion' Changes in version 1.1.4 o diacritic characters bug fux in `qwerty.dist` o temporary bug fix in `correct.changes` (see code) o removed progress bar for Macs and Linux -- will work on progress bar solution at a later time o fixed diacritic character error for Macs Changes in version 1.1.3 o fixed fatal bug in `correct.changes` Changes in version 1.1.2 o updates to documentation o fixed obnoxious message bug in `textcleaner` function o changed progress bar in `spell.check.dictionary` to display words done out of words in total (rather than percentage) o updated citation (PsyArXiv) o added vignettes for preprocessing and estimating semantic networks Changes in version 1.1.1 o `equate` now handles any number of groups (`equate.multi` is defunct and merged into `equate`) o added a group variable for the dataset 'open.animals' o removed option to save appendix dictionary to package (not allowed by CRAN policies) o added a general function to read in common types of data file extensions: `read.data` o updated `textcleaner` to bypass double query for adding a dictionary o bug fixes in `textcleaner` and `spell.check.dictionary` o updated `singularize` and `pluralize` rule sets o removed `autoConverge` and `autoDestr` functions o changed `corr.chn` to `correct.changes` Changes in version 1.1.0 o cleaned up examples and removed unnecessary datasets ('convmat', 'rmat', and 'trial') o updated `spell.check.dictionary` to automate continuous string selection when continuous response length is greater than maximum continuous string length in dictionary o changed output to have quotes around words being asked to add into dictionary to decipher whether they are a string or separate words o updated `splitstr.check` so responses are not repeated after they've been corrected. Also no longer asks to split responses that are in the dictionary (splits them automatically) o updated `word.check.wrapper` so that 10 responses are always given if the original response is not auto-corrected o added additional nested list called `auto` to spellcheck object in `textcleaner` and `corr.chn` functions, which includes only the incorrect responses changed during the spell-check o fixed save dictionary bug in `spell.check.dictionary` o added a response option called, 'CONTEXT' to the `word.check.wrapper` function to give greater context around a participant's response o added third auto-correct function using `hunspell_suggest` function to the `word.check.wrapper` function o updated functionality of code -- improved speed of several lines in `textcleaner` and `spell.check.dictionary` o fixed multi-word bug in `spell.check.dictionary` Changes in version 1.0.0 o fixed bug in `rm.lead.space` for Linux o updated `textcleaner` to default to `general.dictionary` when no dictionary is specified o updated citation o algorithm for `best.guess` was changed to Damerau-Levenshtein distance o `corr.chn` function code was cleaned up and streamlined o 'animals.database' has been moved to the 'SemNetDictionaries' package. It was renamed as 'animals.dictionary' o 'animals.misnomer' was removed o `textcleaner` function code was cleaned up and streamlined. Integrated functionality with the 'SemNetDicationaries' package o `autoConverge` function code was cleaned up and streamlined Changes in version 0.9.9 o animals.database: a database for animals was added o animals.misnomer: common misnomers for animals was added o textcleaner: added database functionality, which makes the cleaning process more accurate, efficient, and reproducible o several wrapper functions added to aid textcleaning from a database Changes in version 0.1.2 o autoConverge: significantly improved interface o separated all function files into individual files o semnetcleaner (changed to textcleaner): added argument to input participants by row or column; ids now included for output; added output to show what spellcheck changed o destr: improved functionality to allow selection of separating character o randwalk: added a function to simulate random walks on the network to examine spontaenous spreading activation o bin2resp: a function to change cleaned binary response data back into character data for each participant Changes in version 0.1.1 o cosine: added cosine similarity o semnetboot: changed name to partboot and added the cosine similarity o semnetmeas: moved from NetworkToolbox o plot.partboot: a function that generates "raindrop" plots for bootstrapped data o org.plot: an organization function for plot.partboot (not for individual use) o convert2cytoscape: added a function to convert a network matrix into a sparse matrix for Cytoscape visualization o added new examples with corresponding data files Changes in version 0.1.0 o autoConverge: created an automated converge function to eliminate the manual converge process o autoDeStr: created an automated de-string function to eliminate most manual de-stringing o fine-tuned most functions o semnetboot: moved from package NetworkToolbox