我有一个Python函数,它接受一个文本块并返回一个特殊的2D矢量/字典表示,具体取决于所选长度 n 。示例输出可能如下所示:
1: [6, 8, 1]
2: [6, 16, 4, 4, 5, 11, 5, 8]
3: [4, 7, 8, 4]
..
..
n: [5, 2, 1, 4, 5, 6]
从1到 n 的键表示输入文本中的位置;例如,如果n = 12,则密钥5将保存数据到文档的路径的约5/12。
每个密钥的整数列表的长度是任意的;因此,对于相同的 n 值,另一个文本块可以很好地产生这个:
1: [4, 5, 16, 7, 6]
2: None
3: [7, 9, 12]
..
..
n: [3]
我想为任何两个相同长度 n 的矢量创建相似性度量。我尝试过的一件事是只考虑字典中每个整数列表的平均值,从而提供简单的1D向量,以便进行简单的余弦比较。
但这会丢失一些比我想要的更多的信息(更不用说偶尔无值的麻烦)。
由于我可以通过选择不同的* n * s来创建表示的不同向量/不同“粒度”,因此在获取两个文档时会有价值,在匹配的* n * s范围内创建多个向量对,然后做某种平均值的平均值?
或者以完全不同的方式处理事情会更好吗?我可以将输入文本表示为一维向量,但仍然可以得到我想要的想法,但它们最终会有不同的长度,这可能会使比较变得复杂。 (想到这一点,原始表示中每个键的不同长度并没有完全解决这个问题......哈哈。但仍然......)