gpt4 book ai didi

unicode - Unicode Collat​​ion Algorithm 中组合字符的处理是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 00:26:57 25 4
gpt4 key购买 nike

我维护了一个开源的纯 Python 实现 Unicode Collation Algorithmpyuca .

虽然它满足了我对古希腊文本进行排序的需求(并且似乎满足了许多其他人的需求),但我希望通过让它通过整个 official conformance tests 套件来提高它对罕见案例的覆盖范围。 .

然而,1,869 次测试(略高于 1%)失败了。第一次失败是在 0332 0334测试文件建议应该获得排序键 | 004A 0021 | 0002 0002 | .

pyuca ,然而,形成排序键 | 0021 004A | 0002 0002 | .

起初我认为这可能是由于缺乏对非起始字符( S2.1.1 thru S2.1.3 of the algorithm in the latest spec )的支持。然而,我对这部分的后续实现并没有改变排序键,并且在纸上完成算法的手册也无法触发该部分,这让我想知道我是否只是遗漏了什么。

算法中的相关步骤是:

S2.1.1 如果在 S 之后有任何非起动器,则处理每个非起动器 C。
S2.1.2 如果 C 没有被 S 阻塞,则查找 S + C 在表中是否有匹配项。
S2.1.3 如果匹配,则将 S 替换为 S + C,并删除 C。

关键短语是“如果有匹配”。在上面提到的失败的测试中,没有匹配到 0332 0334所以这部分算法无法解释为什么排序键应该与我的实现产生的顺序不同。

谁能解释一下 UCA 的哪一部分会像测试文件建议的那样形成排序键?

最佳答案

如果您先将字符串插入规范化表格 D 中,效果会更好吗? (第1步。)

这完全是基于 0332 0334 的事实的疯狂猜测。不在 NFD 中。我根本没有尝试过算法。

关于unicode - Unicode Collat​​ion Algorithm 中组合字符的处理是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21494076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com