Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Migrate from CRF++ to Ingredient Parser (a Python package) #5061

Merged

Conversation

michael-genson
Copy link
Collaborator

@michael-genson michael-genson commented Feb 14, 2025

What this PR does / why we need it:

(REQUIRED)

Replaces the CRF++ dependency with ingredient-parser (a Python library). Inspired largely from @hay-kot's recipes-api which is getting used for recipinned.

While the results are pretty comparable to the old CRF++ library, this gives several added benefits:

  • reduces deployment complexity since we can just install this as a Python dependency now
  • much easier to work on in the dev container (it just works now)

Which issue(s) this PR fixes:

(REQUIRED)

Fixes #4960
Fixes #4993
Fixes #5121

Special notes for your reviewer:

(fill-in or delete this section)

Not everything is 1:1 (e.g. "ground black pepper" is parsed as a food rather than "black pepper" as the food and "ground" as the note), but it seems to be about 50/50 when it comes to improvements vs regressions (and they're minor). At least now we can easily add some more tests since it works in the dev container without a hassle.

This package theoretically supports additional languages, but it doesn't work out of the box. Something we can look into in the future. For now it really only works with English (same as the old parser).

Also had to fix a totally unrelated issue regarding stale data because it's making tests fail. No clue why this is happening now and wasn't happening before

Testing

(fill-in or delete this section)

Threw lots of examples at it and got comparable outputs vs the old parser.

Verified

This commit was signed with the committer’s verified signature.
JoeKarow Joe Karow

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
…g tests now I guess??
…-nlp-parser
Copy link
Collaborator

@Kuchenpirat Kuchenpirat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just the one comment.

Copy link
Collaborator

@Kuchenpirat Kuchenpirat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍
Might have to see if i can add some german to the package :)

@Kuchenpirat Kuchenpirat merged commit b12aea8 into mealie-recipes:mealie-next Feb 28, 2025
14 checks passed
@michael-genson michael-genson deleted the feat/upgrade-nlp-parser branch February 28, 2025 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
2 participants