使用大语言模型(LLM)修正小段乱码(Mojibake)为正常文本
Python
方案
在上一篇文章ftfy:修正小段乱码(Mojibake)为正常文本的Python库中,我介绍了ftfy
这个库。但随着持续的开发,我发现它仍然有一些解决不了的转换。如下:
>>> ftfy.fix_text('è‡ªç›‘ç£ 6 自由度ä½å§¿ä¼°è®¡çš„伪关键点 RKHS å¦ä¹')
'自监督 6 自由度位姿估计的伪关键点 RKHS å\xad¦ä¹'
>>> ftfy.is_bad(_)
True
可以看到后面的结果并没有转换成功,而且 ftfy.is_bad()
也返回 True
,非常爽快地承认了这一点。
大语言模型(LLM)方案
而当使用 chatGPT 来解决时,简单的提示语足以解决问题:
你是一位熟悉各种语言的机器编码,如Utf8,ascii,等等,的专家,你一眼就能看出一句乱码的文字实质上是哪一种编码错误导致的,当我发给你一串乱码,修正以下乱码:
è‡ªç›‘ç£ 6 自由度ä½å§¿ä¼°è®¡çš„伪关键点 RKHS å¦ä¹
输出:
修正后的文本应该是:
自监督6自由度位姿估计的伪关键点RKHS学习
修正过程是通过分析该文本的语言特征,结合常见编码格式和编码转换规则来判断该文本所使用的编码格式,然后进行对应的编码转换,将乱码转换为可读的字符。例如,上述文本可能是以UTF-8编码格式进行存储,但在读取和显示时使用了ISO-8859-1或其他不兼容的编码方式,导致了乱码的问题。
这就很妥贴。接下来只要优化一下提示词,让 LLM 返回 JSON 对象,就可以很方便地进行下一步处理了。