# maana-nlp-numbers

> A simple, deterministic, monadic parser for natural language numbers

Latest version **1.0.5** (published 2020-05-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install maana-nlp-numbers
pnpm add maana-nlp-numbers
yarn add maana-nlp-numbers
bun add maana-nlp-numbers
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.5 |
| Published | 2020-05-02 |
| First published | 2020-05-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 27.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Maana, Inc |
| Maintainers | dlsmaana |
| Keywords | nlp, number, parse, monad |

## Links

- npm: https://www.npmjs.com/package/maana-nlp-numbers
- Repository: https://github.com/maana-io/maana-nlp-numbers
- Homepage: https://github.com/maana-io/maana-nlp-numbers#readme
- Issues: https://github.com/maana-io/maana-nlp-numbers/issues
- npm.io page: https://npm.io/package/maana-nlp-numbers

## Dependencies (1)

- [parsimmon](https://npm.io/package/parsimmon.md) ^1.13.0

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 1.0.5 (latest) — 2020-05-02
- 1.0.4 — 2020-05-02
- 1.0.3 — 2020-05-02
- 1.0.2 — 2020-05-02
- 1.0.1 — 2020-05-02
- 1.0.0 — 2020-05-01

## README

# Maana-NLP-Numbers
This package implements a simple, deterministic, numeric entity extractor 
suitable for finding natural language number mentions in text.   It recognizes
whole numbers between zero and 999,999,999,999, as well customary numeric 
quantities (e.g. dozen, score, ...).   The parser is built using monadic
parser combinators and can easily be extended to support additional numeric 
expressions.


# Installation
You can install the latest version of this package from npm:
```bash
npm i maana-nlp-numbers
```

# Parsing numeric entities
Given a string containing a surface form for a numeric entity, the ```parse``` 
function returns the normal form ( a.k.a. the numeric value ) of the 
entity.   If the function is not a valid surface form for a numeric entity, or
contains extra characters before or after the numeric entity mention, the parser
will fail.   Consider the following examples:

```javascript
const { parse } = require('maana-nlp-numbers')

console.log(parse("nineteen nintey nine")) // 1999
console.log(parse("sixty five thousand, five hundred and thiry five"))// 65535
console.log(parse("four score and seven")) // 87
console.log(parse("one day at a time")) // error
```

# Extracting numeric entities
Given a string containing zero or more surfaces forms for numeric entities, 
the ```extract``` function returns a list of entity mentions.   For each
numeric entity, it returns a structured object which contains the starting 
end ending position (```start``` and ```end``` fields) of the entity mention, and the 
normal form (```value``` field).  Consider the following example:

```javascript
const { extract } = require('maana-nlp-numbers')

console.log(extract(`Nine out of ten respondents would buy the product for 
fifty four dollars or less per dozen.   The optimum price point is thirty seven 
dollars.
`)).map( x => x.value )

// [9,10,54,12,37]
```

# The parser
The numeric parser is built using modadic parser combinators from the 
[parsimmon](https://github.com/jneen/parsimmon) npm package.    We export the 
numeric parser as ```parser``` to facilitate construction of more sophisticated
parsers in combination with other monadic parsers.   For example:

```javascript
const { parser } = require('maana-nlp-numbers')
const P = require('parsimmon')

/** a parser for a comma separated list of numbers */
const manyNumbers = P.sepBy( parser, P.string(","))

console.log(manyNumbers.tryParse("one,two,three"))
// [1,2,3]
```

---
_Source: https://npm.io/package/maana-nlp-numbers · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
