Compare commits

...

2 Commits

Author SHA1 Message Date
Jamie Hardt
739d27fe71 Implementation of recommend 2025-08-27 15:37:53 -07:00
Jamie Hardt
de7ad3d65a Implemented recommend 2025-08-27 15:27:30 -07:00

View File

@@ -14,7 +14,19 @@ from .util import ffmpeg_description, parse_ucs
def recommend_text(text: str, ctx: InferenceContext): def recommend_text(text: str, ctx: InferenceContext):
return None return ctx.classify_text_ranked(text)
def print_recommendation(path: str | None, text: str, ctx: InferenceContext):
recommendations = ctx.classify_text_ranked(text)
print("----------")
if path:
print(f"Path: {path}")
print(f"Text: {text or '<None>'}")
for r in recommendations:
cat, subcat, _ = ctx.lookup_category(r)
print(f"- {r}: {cat}-{subcat}")
@click.group(epilog="For more information see " @click.group(epilog="For more information see "
"<https://git.squad51.us/jamie/ucsinfer>") "<https://git.squad51.us/jamie/ucsinfer>")
@@ -22,16 +34,15 @@ def recommend_text(text: str, ctx: InferenceContext):
def ucsinfer(): def ucsinfer():
""" """
Tools for applying UCS categories to sounds using large-language Models Tools for applying UCS categories to sounds using large-language Models
""" """
pass pass
@ucsinfer.command('recommend') @ucsinfer.command('recommend')
@click.option('--text', type=Optional[str], default=None, @click.option('--text', default=None,
help="Recommend a category for given text instead of reading " help="Recommend a category for given text instead of reading "
"from a file") "from a file")
@click.argument('files', nargs=-1) @click.argument('paths', nargs=-1)
@click.option('--model', type=str, metavar="<model-name>", @click.option('--model', type=str, metavar="<model-name>",
default="paraphrase-multilingual-mpnet-base-v2", default="paraphrase-multilingual-mpnet-base-v2",
show_default=True, show_default=True,
@@ -44,29 +55,17 @@ def recommend(text, paths, model):
m = SentenceTransformer(model) m = SentenceTransformer(model)
ctx = InferenceContext(m, model) ctx = InferenceContext(m, model)
recommendations = []
if text is not None: if text is not None:
recommendations.append({ print_recommendation(None, text, ctx)
"text": text,
"recommendations": recommend_text(text, ctx)
})
for path in paths: for path in paths:
text = ffmpeg_description(path) text = ffmpeg_description(path)
if text: if text:
recommendations.append({ print_recommendation(path, text, ctx)
"path":path,
"text":text,
"recommendations":recommend_text(text, ctx)
})
else: else:
recommendations.append({ filename = os.path.basename(path)
"path":path, print_recommendation(path, filename, ctx)
"text":None,
"recommendations":None
})
@ucsinfer.command('gather') @ucsinfer.command('gather')