跳转到主要内容

在SentencePiece词汇表中转义未知符号

项目描述

escape-unk

在SentencePiece词汇表中转义未知符号。这对于MarianNMT工具包特别有用,该工具包不支持用源中注意力最高的词替换未知标记(见此处,感谢@emjotde的想法)。

重要说明:此解决方案远非理想,因为模型(特别是如果没有用转义字符训练),可能无法复制转义的未知字符。理想情况下,您应该使用--byte_fallback选项训练SentencePiece词汇表。这只是在模型没有字节回退或无法重新训练的情况下的一个权宜之计。

安装

只需从PyPi安装即可

pip install escape-unk

背景

在某些情况下,您的机器翻译模型必须翻译包含SentencePiece词汇表中未知字符的句子。当未知字符输入时,神经网络模型通常开始产生幻觉,输出垃圾信息,或者根本不知道如何翻译。在这些情况下,如果那些字符只需要被复制,将它们转义为其十六进制表示,如果模型能够复制转义符号,这可能是有用的。

在英语-德语词汇表中转义中文字符就像

echo "Beijing (Chinese: 北京) is the capital of the People's Republic of China" | escape-unk -m vocab.deen.spm
Beijing (Chinese: [[e58c97e4baac]]) is the capital of the People's Republic of China

或转义表情符号

echo "I ❤️ you" | escape-unk -m vocab.deen.spm
I [[e29da4efb88f]] you

所以,而不是

echo "Beijing (Chinese: 北京) is the capital of the People's Republic of China" | marian-decoder -c model.config.yml
Peking (chinesisch: ) ist die Hauptstadt der Volksrepublik China

我们将有

echo "Beijing (Chinese: 北京) is the capital of the People's Republic of China" | escape-unk -m vocab.deen.spm | marian-decoder -c model.config.yml
Beijing (chinesisch: [[e58c97e4baac]]) ist die Hauptstadt der Volksrepublik China

以及完整的unescape-unk管道

echo "Beijing ..." | escape-unk -m vocab.deen.spm | marian-decode -c config.yml | unescape-unk
Beijing (chinesisch: 北京) ist die Hauptstadt der Volksrepublik China

警告:如果转译者未能正确复制转义序列并生成无效序列,则字符将被省略,并替换为空字符串。如果希望在这种情况下失败,请使用带有 unescape-unk 命令的 --strict/-s 模式。

项目详情


下载文件

下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

escape_unk-1.4.tar.gz (5.0 kB 查看哈希值)

上传时间

构建分发

escape_unk-1.4-py3-none-any.whl (6.0 kB 查看哈希值)

上传时间 Python 3

由以下支持