让我们说我有为其分配标签的项目,如“蓝色”,“大”,“灵活”。假设我也有一本所有可能标签的字典。
现在的问题是:如何将所有标签压缩为单个小签名,让我们说一个浮点数。要求是具有相似标签的项目具有相似的签名。
所有标签永远都是已知的。签名应该相对较小,例如一个浮点数,或一组几个整数。
答案 0 :(得分:0)
为每个标签分配一个ID号。您可能希望将标记的映射存储在单独的表中的ID中。调用标签的总数N和给定项目可以具有的标签的数量M.标签签名将是作为M位基数N的ID。
因此,如果N = 50k且M = 3
标签1 = 49,999 标签2 = 1 标签3 = 2
标签签名= 49,999 + 1 * 50,000 ^ 1 + 2 * 50,000 ^ 2 = 5,000,099,999
您需要超过64位来表示这一点。使用足够大的整数类型来表示此值。如有必要,请使用多个整数。不要使用浮子,你将失去精确度。