Number spaCy is a custom spaCy pipeline component that enhances the identification of number entities in text and fetches the parsed numeric values using spaCy's token extensions. It uses RegEx to identify number entities written in words and then leverages the word2number library to convert those words into structured numeric data. The output numeric value is stored in a custom entity extension: ._.number
.
This lightweight component can be seamlessly added to an existing spaCy pipeline or integrated into a blank model. If using within an existing spaCy pipeline, ensure to insert it before the NER model.
To install Number spaCy, execute:
pip install number-spacy
Begin by importing the find_numbers
component and then integrating it into your spaCy pipeline:
import spacy
from number_spacy import find_numbers
# Initialize your preferred spaCy model
nlp = spacy.blank('en')
# Integrate the component into the pipeline
nlp.add_pipe('find_numbers')
Post the component addition, you can process text as you typically would:
doc = nlp("I have three apples. She gave me twenty-two more, and now I have twenty-five apples in total.")
You can loop through the entities in the doc
and access the specific number extension:
for ent in doc.ents:
if ent.label_ == "NUMBER":
print(f"Text: {ent.text} -> Parsed Number: {ent._.number}")
This should output:
Text: three -> Parsed Number: 3
Text: twenty-two -> Parsed Number: 22
Text: twenty-five -> Parsed Number: 25