python - torchtext 库中的 interleave_keys() 函数究竟做了什么?
问题描述
你可以在torchtext/data/utils.py文件中找到这个函数
我已经给出了官方代码和下面的文档
def interleave_keys(a, b):
"""Interleave bits from two sort keys to form a joint sort key.
Examples that are similar in both of the provided keys will have similar
values for the key defined by this function. Useful for tasks with two
text fields like machine translation or natural language inference.
"""
def interleave(args):
return ''.join([x for t in zip(*args) for x in t])
return int(''.join(interleave(format(x, '016b') for x in (a, b))), base=2)
更详细的解释将有助于理解它如何根据给定的两个字符串的相似程度返回一个整数。
而且里面使用的format函数是python中常用的内置函数
解决方案
因此,在分解该功能后,我能够弄清楚该功能在做什么。
format(x, '016b')
这段代码将整数(在我的例子中实际上是句子中没有单词的 a 和 b)转换为 16 位二进制数。
并且该interleave
函数取出二进制表示的对(相同位置)像这样加入它们,
为了便于理解,我们假设 2 和 11 是 4 位二进制
2 的二进制表示为:0 0 1 0
11的二进制表示为:1 0 1 1
所以这里的输出将是 01001101 (01,00,11,01 已组合)当转换为整数时将给出 77
推荐阅读
- jquery - 附加消息与以前的数据冲突
- javascript - 即时自动重置值
- android - 根据TextView的高度计算文本的大小
- angular - 离子存储值不显示,除非我重新加载页面
- laravel - 在 Laravel 中选择列的总和等于固定值的行
- typescript - 更改编辑模式Vue.js + Typescript后如何专注于输入字段
- api - 从返回空白或零响应的 cURL 请求中读取 OData
- custom-post-type - 基于帖子的页面和标签的 WordPress 自定义 URL
- socket.io - 使用 pm2 在系统启动时重新启动 socketio(非集群模式)
- flutter - 颤振复选框 UI 未更新