Pattern generating DSL for spaCy
Project description
Spatgen: Pattern generator for spaCy
Spatgen is a concise and readable DSL and parser which produces patterns for spaCy which you can use in the Matcher class.
We think Matcher is fantastic but writing patterns can become tedious especially if there are several combinations with the same prefix or suffix and if the rules don't fall into any of the OP operations provided. This package simplifies the creation of large lists of patterns.
Example
Here's an example showing how to match some syntax with optional and either-or patterns (you can combine these too):
from spatgen import parser
patterns = r"""
name = example
anchors = [study survey report research datum article review]
++match++
lemma(anchors) aux? adv? verb adp? <det? noun | date> [adp det? <org | gpe>]
"""
parser.parse_str(str(patterns))
This will produce a Sections object which contains a list of patterns (suitable for Matcher) for each heading found in the input. It also has a get_meta method which allows you to retrieve extra information about the pattern such as its line number and the raw source that led to its creation.
Syntax
Variables
Names can contain lowercase alphabetic characters and underscores only. Values are interpreted as either strings or arrays of strings and quotation marks are not required.
Sections
Sections are demarcated by surrounding an identifier with ++ on either side.
Patterns
Patterns loosely follow command-line syntax format.
[a ...]means whatever inside is optional. A pattern will be generated for combinations with and without this option.<a | b | ...>means either a or b (or more). Patterns are generated for every combination.action(param)interpretsactionto be one of spaCy's token operators (LEMMA,LOWER, etc).- If
paramis a string surrounded by quotes then the pattern is compared directly (e.g.{"LEMMA": "say"}). - If
paramis an identifier and is specified as a variable then the pattern is anINpattern ( e.g.{"LEMMA": {"IN": var}}).
- If
- Other terms are interpreted as either POS tags or entity types. These are matched on context so the spaCy pattern will
have the correct type.
- E.g.
verbwill produce{"POS": "VERB"}butorgwill produce{"ENT_TYPE": "ORG"}.
- E.g.
- Every match supports modifiers and will produce the corresponding
OPentry:?will match zero or one*will match zero or more+will match one or more!will ensure that none match
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spatgen-0.1.5.tar.gz.
File metadata
- Download URL: spatgen-0.1.5.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9231e7e44f6bb711600d9f60ce6d66d40a4dc4cbeaf2df08f0d9d85bd6948cd1
|
|
| MD5 |
a7f4641414acb7f76e92d518d1dc6e5e
|
|
| BLAKE2b-256 |
86e3759bb4d9d367a33e5b0ad3cba179624298b7d19ab962451c9aaac94b3bcd
|
File details
Details for the file spatgen-0.1.5-py3-none-any.whl.
File metadata
- Download URL: spatgen-0.1.5-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59f1a4089b1dcc1dfa2164a0c5e4eaa768c452baa3084be410b46413fa7049d1
|
|
| MD5 |
814e95d25b468e8aa21ae2096ed16839
|
|
| BLAKE2b-256 |
df10eada346b1275d24df78a2e7806a203fda05e2f4a9607e11010d6bf7a1b93
|