事后修复了Unicode的mojibake和其他问题
项目描述
ftfy: 修复你的文本
>>> from ftfy import fix_encoding
>>> print(fix_encoding("(ง'⌣')ง"))
(ง'⌣')ง
ftfy的完整文档可在ftfy.readthedocs.org找到。文档涵盖的内容远不止README,以下是一些链接
推荐信
- “我的生活又可行了!” — @planarrowspace
- “一件方便的魔法工具” — @simonw
- “帮我节省了大量令人沮丧的开发工作” — @iancal
- “ftfy立即做了正确的事情,没有多余的麻烦。出色的工作,解决了一个非常棘手的实际问题(全球问题!)。” — Brennan Young
- “我不知道我什么时候会用得上这个,但我肯定会把它添加到书签中。” — /u/ocrow
- “9.2/10” — pylint
它做了什么
以下是一些ftfy可以做到的例子(这些例子来自现实世界)
ftfy可以通过检测字符的特定模式来修复mojibake(编码错误),这些字符显然应该使用UTF-8编码,但被解码为其他编码
>>> import ftfy
>>> ftfy.fix_text('✔ No problems')
'✔ No problems'
这听起来不可能吗?其实并不是。UTF-8是一种设计良好的编码,当它被错误使用时很容易被发现,mojibake字符串通常包含我们恢复原始字符串所需的所有信息。
ftfy可以同时修复多层mojibake
>>> ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.')
"The Mona Lisa doesn't have eyebrows."
它还可以修复应用了“花括号引号”的mojibake,直到引号被展开,否则无法一致地解码
>>> ftfy.fix_text("l’humanité")
"l'humanité"
ftfy可以修复本应包含字符U+A0(非断行空格)的mojibake,但U+A0被转换为ASCII空格,然后与另一个随后的空格组合
>>> ftfy.fix_text('Ã\xa0 perturber la réflexion')
'à perturber la réflexion'
>>> ftfy.fix_text('à perturber la réflexion')
'à perturber la réflexion'
ftfy还可以解码HTML实体,即使这些实体出现在HTML之外,甚至在实体被错误地大写的情况下
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable
>>> ftfy.fix_text('PÉREZ')
'PÉREZ'
这些修复并非在所有情况下都适用,因为ftfy有一个强烈的宗旨,即避免错误判断——它永远不会将正确解码的文本更改成其他内容。
以下文本可能以Windows-1252编码并解码为UTF-8,解码结果为'MARQUɅ'。然而,原始文本已经是合理的,所以没有更改。
>>> ftfy.fix_text('IL Y MARQUÉ…')
'IL Y MARQUÉ…'
安装
ftfy是一个Python 3包,可以使用pip进行安装
pip install ftfy
(或者在同时全局安装了Python 2和3的系统上,使用pip3 install ftfy,此时pip指的是Python 2。)
如果你使用poetry,你可以像通常一样将ftfy作为依赖项使用(例如poetry add ftfy)。
本地开发
ftfy使用poetry进行开发。其setup.py是遗留的,不是推荐的安装方式。
安装Poetry,检出此存储库,并运行poetry install以安装ftfy进行本地开发,例如尝试启发式方法或运行测试。
谁维护ftfy?
我是Robyn Speer,也被称为Elia Robyn Lake。你可以在GitHub或Cohost上找到我。
引用ftfy
ftfy已被用作主要NLP研究中的关键数据处理步骤。
在研究中,为所有基于你的工作的人适当致谢是很重要的。这包括软件,而不仅仅是像数学模型那样具有高地位的贡献。当你使用ftfy进行研究时,我唯一的要求是引用它。
ftfy在Zenodo上有可引用的记录(链接)。ftfy的引用可能如下所示
Robyn Speer. (2019). ftfy (Version 5.5). Zenodo.
http://doi.org/10.5281/zenodo.2591652
在BibTeX格式中,引用如下:
@misc{speer-2019-ftfy,
author = {Robyn Speer},
title = {ftfy},
note = {Version 5.5},
year = 2019,
howpublished = {Zenodo},
doi = {10.5281/zenodo.2591652},
url = {https://doi.org/10.5281/zenodo.2591652}
}
重要的许可说明
如果你不遵循ftfy的许可,则没有ftfy的许可。
这听起来很明显且自相矛盾,但有些人认为开源许可证意味着他们可以做他们想做的事情,尤其是在生成式AI领域。这是一个许可许可证,但你仍然必须遵守它。《Apache许可证》是唯一允许您使用和复制ftfy的许可证;否则,所有权利均予以保留。
如果您使用或分发ftfy,您必须遵守《Apache许可证》,包括您必须正确地归属ftfy(Robyn Speer)的作者。
您 不得 创建任何掩盖ftfy作者身份的衍生作品,例如将它的代码放入AI训练数据集中,包括在运行时将代码包含在AI训练中,或使用从这种数据集中复制代码的生成式AI。
根据我的判断,我可以通知您有关许可证违规的情况,并给您一个机会纠正它或删除您所拥有的所有ftfy副本。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。