-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
be0a39b
commit 35cb221
Showing
18 changed files
with
1,020,238 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
}] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
test/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.