我有一个巨大的数据集,包含单词 word_i
和权重 weight[i,j]
,
其中权重是单词之间的“连接强度”。
我想将这些数据二值化,但我想知道是否有任何现有算法可以对每个单词进行二进制编码,使单词代码之间的汉明距离与该权重相关。
已添加:
我正在处理的问题是我想尝试教神经网络或支持向量机在单词之间建立关联。这就是我决定将数据二值化的原因。
不要问我为什么不想使用马尔可夫模型或只是图,我已经尝试过它们并想将它们与神经网络进行比较。
所以,
我希望我的神经网络在给定单词“a”上返回其最接近的关联或任何集合单词及其概率,
我试图将“ab”作为输入和权重作为首选答案,但效果不佳,
我正在考虑让阈值(权重)再改变 1 位。这个阈值越小,你需要的位数就越多,
我有一个情况:a->b w1; b->一个w2; w1>>w2,所以方向很重要。
最佳答案
你可以做的是使用具有固定长度拓扑结构的自组织映射 (SOM),比如 N 位,单词,例如如果 N=8,则 SOM 中的每个单元格恰好有 8 个邻居(翻转了一位的单元格)。现在,如果你有 K 个 [dictionary] 单词,你可以将每个 [dictionary] 单词编码为 0..1 之间的实数向量,这样第 i 个单词的第 i 个元素设置为 1,其他元素设置为 0。然后你可以计算两个任意向量 a1...aK 和 b1...bK 之间的“距离”通过求和
i,j : ai * bj * distance(ai, bj)
它为您提供运行 SOM 算法的距离度量。当 SOM 稳定后,度量中彼此靠近的 [字典] 词在 map 的拓扑结构中彼此靠近,您可以从中简单地获得编码作为 [二进制] 词。
请注意, map 中的单元格数必须多于单词数,即 2**N > K。
这个答案当然假设背景是自组织 map 。看 http://en.wikipedia.org/wiki/Self-organizing_map
关于算法 : data binarization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2298752/