NEKOparapa / AiNiee

一款专注于Ai翻译的工具,可以用来一键自动翻译RPG SLG游戏,Epub TXT小说,Srt Lrc字幕等等。
GNU General Public License v3.0
1.24k stars 72 forks source link

翻译出现格式错误,请问有没有什么解决办法 #72

Open 1762011099 opened 8 months ago

1762011099 commented 8 months ago
PixPin_2024-01-21_16-13-19

如图,通过sakurallm模型翻译RPG的时候,会导致格式错误,一直重复,一般是符号会被ai错翻,在sukura那边已经进行了反映,那边的人员让我问问贵方有没有什么解决办法?

1762011099 commented 8 months ago
PixPin_2024-01-21_19-10-35

这是sukura那边给的回复,想着佬能不能给做个适配,球球了

NEKOparapa commented 8 months ago

这种问题,gpt3.5都经常出现,慢慢等,或者再减少行数

NEKOparapa commented 8 months ago

prompt是适配了的

sakura-umi commented 8 months ago

最好使用Raw文本格式,也即

text_list = ['x', 'yy', 'zzz', ...]
text_raw = "\n".join(text_list)

这个commit https://github.com/SakuraLLM/AiNiee-chatgpt/commit/fd2c87792d4f1f74562f6225df88a01afb6aaadb 将输入模型的待翻译文本从json格式改成了raw格式,可以参考一下

1762011099 commented 8 months ago

最好使用Raw文本格式,也即

text_list = ['x', 'yy', 'zzz', ...]
text_raw = "\n".join(text_list)

这个commit SakuraLLM@fd2c877 将输入模型的待翻译文本从json格式改成了raw格式,可以参考一下 想参考,但中道崩殂,ERROR: Invalid requirement: '"PyQt-Fluent-Widgets[full]"' (from line 7 of requirements.txt) 我是直接吧项目文件给下下来了,然后改的AiNiee-chatgpt4.py里的代码,这对吗?

sakura-umi commented 8 months ago

对的 修改或者覆盖都可以

1762011099 commented 8 months ago

pip install "PyQt-Fluent-Widgets[full]" -i https://pypi.org/simple/ 运行这个可以解决ERROR: Invalid requirement: '"PyQt-Fluent-Widgets[full]"' (from line 7 of requirements.txt) 有遇到一样问题的可以参考下。

1762011099 commented 8 months ago

最好使用Raw文本格式,也即

text_list = ['x', 'yy', 'zzz', ...]
text_raw = "\n".join(text_list)

这个commit SakuraLLM@fd2c877 将输入模型的待翻译文本从json格式改成了raw格式,可以参考一下

又有新的错误。用tanslator++导出的,不清楚是不是这个原因,报错说与原文字数不匹配。

sakura-umi commented 8 months ago

最好使用Raw文本格式,也即

text_list = ['x', 'yy', 'zzz', ...]
text_raw = "\n".join(text_list)

这个commit SakuraLLM@fd2c877 将输入模型的待翻译文本从json格式改成了raw格式,可以参考一下

又有新的错误。用tanslator++导出的,不清楚是不是这个原因,报错说与原文字数不匹配。

有没有可以复现的文件?以及完整的log

1762011099 commented 8 months ago

最好使用Raw文本格式,也即

text_list = ['x', 'yy', 'zzz', ...]
text_raw = "\n".join(text_list)

这个commit SakuraLLM@fd2c877 将输入模型的待翻译文本从json格式改成了raw格式,可以参考一下

又有新的错误。用tanslator++导出的,不清楚是不是这个原因,报错说与原文字数不匹配。

有没有可以复现的文件?以及完整的log

文件有,但是这个运行mtool导出的文件没问题,除了速度慢点,没敢开多线程和多行,单线程单行跑的 文件:https://ipfs.chainsafe.io/ipfs/QmX42UvSL14AG2Q1ZmEBxPDyF4UQphFUdFuM1zwQShPFbc(Translator++导出的) 报错log [![Uploading PixPin_2024-01-22_14-27-31.png…]()](https://www.z4a.net/images/2024/01/22/PixPin_2024-01-22_14-27-31.png) 还有这个 PixPin_2024-01-22_14-33-15 感觉一般是狗头的引擎容易出问题,我还是别碰了。

sakura-umi commented 8 months ago

多线程按你现在的设置会出问题,原因在下面。而单行这个不至于,完全可以多行去跑,单行会浪费时间/损失上下文。

log1属于正常情况,有的时候模型会漏行,出现频率不会很高,一般不断拆分就能解决。

log2也属于正常情况,是llama.cpp的配置问题。你在启动llama.cpp的server的时候只给了一个slot,所以server最多只能同时处理一个请求,也就是只能单线程。(并且设置多线程会增大显存占用,如果硬件条件不够好还是推荐单线程)

你可以将llama.cpp server设置成多个slot,但llama.cpp server的多slot可能存在bug,可能需要测试一下稳定性。

文件我之后会测试一下。

NEKOparapa commented 8 months ago

最好使用Raw文本格式,也即

text_list = ['x', 'yy', 'zzz', ...]
text_raw = "\n".join(text_list)

这个commit SakuraLLM@fd2c877 将输入模型的待翻译文本从json格式改成了raw格式,可以参考一下

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

sakura-umi commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

NEKOparapa commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

sakura-umi commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

NEKOparapa commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

比如说我发送文本: aaaa/naaaa bbbbbbbbb cccc/ncccc

然后翻译回复: AAAA/nAAAA BBBBBBBBBB CCCC/nCCCC

此时如果按照换行符进行切割语句的话,就会出现错误

NEKOparapa commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

多行文本一起发送可以让整体语义更加流畅合适,效率也更高,但是也带来一些问题,怎么样才能比较准确的切割文本

NEKOparapa commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

多行文本一起发送可以让整体语义更加流畅合适,效率也更高,但是也带来一些问题,怎么样才能比较准确的切割文本

大大,以后会考虑微调模型时,加入一个固定的回复格式么?可以方便提取和检验,无论是json格式还是其他

sakura-umi commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

比如说我发送文本: aaaa/naaaa bbbbbbbbb cccc/ncccc

然后翻译回复: AAAA/nAAAA BBBBBBBBBB CCCC/nCCCC

此时如果按照换行符进行切割语句的话,就会出现错误

这个问题现在就可以处理。行间换行使用正常的"\n",而行内换行使用字符的\n,也即"\n"。或者像GalTransl那样,把行内换行的\n改为某个特殊的emoji/符号,再在模型输出后改回去。

NEKOparapa commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

比如说我发送文本: aaaa/naaaa bbbbbbbbb cccc/ncccc 然后翻译回复: AAAA/nAAAA BBBBBBBBBB CCCC/nCCCC 此时如果按照换行符进行切割语句的话,就会出现错误

这个问题现在就可以处理。行间换行使用正常的"\n",而行内换行使用字符的\n,也即"\n"。或者像GalTransl那样,把行内换行的\n改为某个特殊的emoji/符号,再在模型输出后改回去。

把行内换行的\n改为某个特殊的emoji/符号,这个功能软件很早就有了,不过在当时使用时,因为gpt3.5模型经常会吞换行符以及表情符号,所以我怕Sakura也会出现这种情况,现在Sakura能够很好的保留换行符了么?

sakura-umi commented 8 months ago

谢谢模型作者大大的优化建议,可以正常运行么,如果可以,就提交吧,我后续再优化一下

可以的,已经提了#74

想问一下模型大大,因为RPG提取文本中经常含有换行符的话,这样切割回复文本,有时会切错,不过按照我的程序逻辑大不了最后拆到一行行发送。大大,以后会考虑多轮对话文本一起翻译时,回复时固定某个格式,无论是json格式还是其他,方便进行切割

没太看懂,可以举个例子吗?

比如说我发送文本: aaaa/naaaa bbbbbbbbb cccc/ncccc 然后翻译回复: AAAA/nAAAA BBBBBBBBBB CCCC/nCCCC 此时如果按照换行符进行切割语句的话,就会出现错误

这个问题现在就可以处理。行间换行使用正常的"\n",而行内换行使用字符的\n,也即"\n"。或者像GalTransl那样,把行内换行的\n改为某个特殊的emoji/符号,再在模型输出后改回去。

把行内换行的\n改为某个特殊的emoji/符号,这个功能软件很早就有了,不过在当时使用时,因为gpt3.5模型经常会吞换行符以及表情符号,所以我怕Sakura也会出现这种情况,现在Sakura能够很好的保留换行符了么?

这个目前都没法说能百分百按照格式来,但相比\n来说,特殊符号的保留概率会高很多。