wfjsw / danbooru-diffusion-prompt-builder

Danbooru / NovelAI 标签超市
https://tags.novelai.dev
GNU Affero General Public License v3.0
1.06k stars 112 forks source link

我想写一个 prompt 的 parser #14

Closed ununian closed 1 year ago

ununian commented 1 year ago

准备用 rust 写,那样转换成 wasm 也方便,主要是为了后续做开源的 prompt 编辑器组件 (monaco editor 或者 ProseMirror)方便点。想问一下你这边有 prompt 的数据集吗?因为我刚刚接触这个,接触的 prompt 比较少,我找到了 https://github.com/krea-ai/open-prompts 这个, 但是我稍微看了下,这里面用复杂语法的很少,所以想请教一下

wfjsw commented 1 year ago

可以参照 https://github.com/wfjsw/danbooru-diffusion-prompt-builder/blob/master/src/prompt/grammarNew.ne 把逗号去掉就是你想要的东西。

ununian commented 1 year ago

@wfjsw 我看到了这个,这个是你的语法描述文件吧,你在网页上说了这个还不完善 (例如我想解析 short hair 这种),而且主要是我也不熟悉 Earley DSL 这个。 我的意思是你写这个解析器的时候是怎么做测试的呢?有没有类似一个数据集,包含很多别人写的 prompt 字符串这种

wfjsw commented 1 year ago

这个东西做的比较早,所以 Extra Network 没有做。 这个东西现在比较显著的问题是太严格了,我因为要解析 Tag 所以把逗号视作语法的一部分,实际上并不需要这样。另外 SD-WebUI 处理 Emphasis 括号的方式并不是通过 Lark 解析器做的(WebUI 的 Lark 解析器只解决 Scheduling 的问题也就是 Editing 和 Alternate),他在错误语法处理上就要宽容很多。 测试就自己造几个比较离谱的,或者从元素法典上边拿几个,那上边大部分标签都有问题,触发的语法边界情况相当多,比较适合测试。

ununian commented 1 year ago

好的 谢谢