rules
projects
Our great sponsors
rules | projects | |
---|---|---|
1 | 6 | |
1,106 | 1,243 | |
- | 1.7% | |
0.0 | 4.7 | |
over 1 year ago | 16 days ago | |
JavaScript | Python | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rules
-
SpaCy v3.0 Released (Python Natural Language Processing)
Currently https://github.com/nilp0inter/experta but https://github.com/noxdafox/clipspy seems nice, I just shied away from using it due to uneasiness about FFI and debugging, even though the original CLIPS is still awesome and has a very interesting manual.
There's also https://github.com/jruizgit/rules but haven't tried it yet.
projects
-
Newbie question with Spacy Coreference Resolution
I'm pretty new to Spacy. I followed the example and am able to get the text of the clusters, but unable to figure out how to get the indices of the span so I can replace them in the original text.
I used this example: https://github.com/explosion/projects/tree/v3/experimental/coref
-
SpaCy v3.0 Released (Python Natural Language Processing)
The improved transformers support is definitely one of the main features of the release. I'm also really pleased with how the project system and config files work.
If you're always working with exactly one task model, I think working directly in transformers isn't that different from using spaCy. But if you're orchestrating multiple models, spaCy's pipeline components and Doc object will probably be helpful. A feature in v3 that I think will be particularly useful is the ability to share a transformer model between multiple components, for instance you can have an entity recogniser, text classifier and tagger all using the same transformer, and all backpropagating to it.
You also might find the projects system useful if you're training a lot of models. For instance, take a look at the project repo [here](https://github.com/explosion/projects/tree/v3/benchmarks/ner...). Most of the readme there is actually generated from the project.yml file, which fully specifies the preprocessing steps you need to build the project from the source assets. The project system can also push and pull intermediate or final artifacts to a remote cache, such as an S3 bucket, with the addressing of the artifacts calculated based on hashes of the inputs and the file itself.
The config file is comprehensive and extensible. The blocks refer to typed functions that you can specify yourself, so you can substitute any of your own layer (or other) functions in, to change some part of the system's behaviour. You don't _have_ to specify your models from the config files like this --- you can instead put it together in code. But the config system means there's a way of fully specifying a pipeline and all of the training settings, which means you can really standardise your training machinery.
Overall the theme of what we're doing is helping you to line up the workflows you use during development with something you can actually ship. We think one of the problems for ML engineers is that there's quite a gap between how people are iterating in their local dev environment (notebooks, scrappy directories etc) and getting the project into a state that you can get other people working on, try out in automation, and then pilot in some sort of soft production (e.g. directing a small amount of traffic to the model).
The problem with iterating in the local state is that you're running the model against benchmarks that are not real, and you hit diminishing returns quite quickly this way. It also introduces a lot of rework.
All that said, there will definitely be usage contexts where it's not worth introducing another technology. For instance, if your main goal is to develop a model, run an experiment and publish a paper, you might find spaCy doesn't do much that makes your life easier.
What are some alternatives?
json-rules-engine - A rules engine expressed in JSON
duckling - Language, engine, and tooling for expressing, testing, and evaluating composable language rules on input strings.
syntaxdot - Neural syntax annotator, supporting sequence labeling, lemmatization, and dependency parsing.
spaCy - 💫 Industrial-strength Natural Language Processing (NLP) in Python
Kornia - Geometric Computer Vision Library for Spatial AI
laserembeddings - LASER multilingual sentence embeddings as a pip package
BLINK - Entity Linker solution