一个用机器学习来预测字符编码的库

Python 库:charamel,号称用机器学习训练,支持60多种语言,近百种字符编码,准确率高达 97%

测试了下,一个简短的用 GBK 编码的 “七里香 - 周杰伦”,这个 charamel 准确预测
Linux 的 file 命令 和 另一个 Python 库 chardet 都预测不准(作者说不适合预测短文本[1][2]

~$ iconv -t 'GBK' <<<'七里香 - 周杰伦' | file --mime-encoding -
/dev/stdin: iso-8859-1

~$ python3 -c 'import chardet; print(chardet.detect("七里香 - 周杰伦".encode("GBK")))'
{'encoding': None, 'confidence': 0.0, 'language': None}

~$ python3 -c 'from charamel import Detector; print(Detector().detect("七里香 - 周杰伦".encode("GBK")))'
Encoding.GB_2312

看了下源码,过程很简单,不用依赖其他库,很容易移植至其他语言,感觉纯 C 百来行也行

站长不妨试试?

2 Likes

多谢楼主分享的方案!这东西看起来靠谱,后面测试下看看效果,好就用上。

但这库严重依赖作者提供的 10MB 的模型,也没找到作者的训练过程

要是效果不佳,也不知该如何改进了

试试下面文本会怎样

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷

保存为GBK/GB2312编码,一般自动识别编码会容易识别成UTF-8编码