创建可表示的标签签名

时间:2012-08-16 10:56:27

标签: tags compression signature

让我们说我有为其分配标签的项目,如“蓝色”,“大”,“灵活”。假设我也有一本所有可能标签的字典。

现在的问题是:如何将所有标签压缩为单个小签名,让我们说一个浮点数。要求是具有相似标签的项目具有相似的签名。

所有标签永远都是已知的。签名应该相对较小,例如一个浮点数,或一组几个整数。

1 个答案:

答案 0 :(得分:0)

坦率地说,我认为将这种方法简化为单一数字的计划是不值得的。只需使用16位int或32位int来表示标记。并为要应用于项目的每个标记使用其中一个字段。您寻求节省空间只会不必要地增加复杂性。

为每个标签分配一个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位来表示这一点。使用足够大的整数类型来表示此值。如有必要,请使用多个整数。不要使用浮子,你将失去精确度。