Skip to content

Commit

Permalink
First version with unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
MathieuLoutre committed Dec 30, 2019
1 parent be0a39b commit 35cb221
Show file tree
Hide file tree
Showing 18 changed files with 1,020,238 additions and 1 deletion.
36 changes: 36 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"parserOptions": {
"ecmaVersion": 2018
},
"env": {
"node": true,
"es6": true
},
"extends": [
"standard"
],
"rules": {
"indent": ["error", "tab"],
"no-tabs": 0,
"brace-style": ["error", "stroustrup"],
"arrow-parens": ["error", "always"],
"no-control-regex": 0,
"no-useless-escape": 0,
"array-bracket-spacing": ["error", "never"],
"object-curly-spacing": ["error", "always"],
"lines-between-class-members": ["error", "always"],
"padding-line-between-statements": [
"error",
{ "blankLine": "always", "prev": "*", "next": "multiline-block-like" },
{ "blankLine": "always", "prev": "multiline-block-like", "next": "*" },
{ "blankLine": "always", "prev": "multiline-expression", "next": "*" },
{ "blankLine": "always", "prev": "*", "next": "multiline-expression" },
{ "blankLine": "always", "prev": "*", "next": "return" }
],
"space-before-function-paren": ["error", {
"anonymous": "always",
"named": "always",
"asyncArrow": "always"
}]
}
}
31 changes: 31 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
lib-cov
*.seed
*.log
*.csv
*.dat
*.out
*.pid
*.gz

pids
logs
results

Procfile

npm-debug.log

node_modules/
dist/

coverage.html
certificates/

.env
.env-staging
.env-production
.env-local

.DS_Store

.cache
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test/
51 changes: 50 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,51 @@
# node-symspell
Javascript port of SymSpell for Node.js
JavaScript port of SymSpell 6.6 based on the [original C# version by Wolf Garde](https://github.com/wolfgarbe/SymSpell) and the [Python version by mammothb](https://github.com/mammothb/symspellpy).

Just like the Python version, this cuts out some of the C# memory optimisation which aren't really relevant in JavaScript. As a result, this port is not optimised for speed, though it's still quite fast.

This version also includes the additions of the Python version such as the `ignoreToken` and `transferCasing` options. The unit tests provided are those of the Python version which are much more comprehensive than the original ones.

This library uses the `iter-tools` and `difflib` modules which are Javascript ports of the Python modules with similar names. Because it uses async/await and async generators, it needs at least Node 12.x.

**NOTE: this is still a work in progress and the API is likely to change**

## Basic Example

```js
const SymSpell = require('node-symspell)
const maxEditDistance = 2
const prefixLength = 7
const symSpell = new SymSpell(maxEditDistance, prefixLength)
await symSpell.loadDictionary(dictionaryPath, 0, 1)
await symSpell.loadBigramDictionary(bigramPath, 0, 2)
const typo = 'Can yu readthis messa ge despite thehorible sppelingmsitakes'
const results = symSpell.lookupCompound(typo, maxEditDistance)
console.log(results[0])
// {
// term: 'can you read this message despite the horrible spelling mistakes',
// distance: 10,
// count: 0
// }
```
## Main API overview
`constructor (maxDictionaryEditDistance = 2, prefixLength = 7, countThreshold = 1)`
`async loadDictionary (dictFile, termIndex, countIndex, separator = ' ')`
`async loadBigramDictionary (dictFile, termIndex, countIndex, separator = ' ')`
`lookup (input, verbosity, maxEditDistance = null, { includeUnknown, ignoreToken, transferCasing } = {})`
`lookupCompound (input, maxEditDistance = null, { ignoreNonWords, transferCasing } = {})`
`wordSegmentation (input, { maxEditDistance = null, maxSegmentationWordLength = null, ignoreToken } = {})`
## References
https://github.com/wolfgarbe/SymSpell
https://github.com/mammothb/symspellpy
Loading

0 comments on commit 35cb221

Please sign in to comment.