Algorithm I';我正在寻找一个算法或函数,可以采取一个文本字符串,并将其转换为一个数字

Algorithm I';我正在寻找一个算法或函数,可以采取一个文本字符串,并将其转换为一个数字,algorithm,machine-learning,data-mining,Algorithm,Machine Learning,Data Mining,我正在寻找一种算法、函数或技术,可以将字符串转换为数字。我希望算法或函数具有以下属性: 相同的字符串产生相同的计算值 相似的字符串将产生相似的值(相似可以定义为含义相似或组成相似) 能够处理长度可变的字符串 几年前我读过一篇文章,这篇文章给了我实现这一目标的希望。不幸的是,我无法回忆起这篇文章的来源 num = 0 for (byte in getBytes(str)) num += UnsignedIntValue(byte) 这将满足所有3个属性(对于#2,这适用于字符串的二进制组

我正在寻找一种算法、函数或技术,可以将字符串转换为数字。我希望算法或函数具有以下属性:

  • 相同的字符串产生相同的计算值
  • 相似的字符串将产生相似的值(相似可以定义为含义相似或组成相似)

  • 能够处理长度可变的字符串

  • 几年前我读过一篇文章,这篇文章给了我实现这一目标的希望。不幸的是,我无法回忆起这篇文章的来源

    num = 0
    for (byte in getBytes(str))
        num += UnsignedIntValue(byte)
    

    这将满足所有3个属性(对于#2,这适用于字符串的二进制组合)。

    类似的组合非常容易,我会让其他人解决这个问题

    意思相似要困难得多,但有趣的是:),我记得读过一篇文章,讲的是如何训练神经网络来构建一个由一大堆英语单词组成的二维“语义图”,其中两个单词之间的距离表示它们在意义上有多“相似”,只需在维基百科的文章中进行训练即可

    你也可以做同样的事情,但要使它是一维的,这将给你一个连续的数字,相似的单词将彼此接近。

    模糊哈希(上下文触发的分段哈希)可能就是你想要的

    实施:


    算法说明:

    非严肃回答:将所有内容映射到0

    属性1:检查。属性2:检查。属性3:检查

    但我想你也希望不同的字符串得到不同的值。那么问题是,什么相似,什么不相似

    实际上,您正在寻找一个散列函数

    有许多散列函数是根据不同的目标设计的。例如,Crypographic散列的计算成本非常高,因为您想让返回甚至预测输入的更改如何影响输出变得非常困难。所以他们真的很想违反你的条件2。还有一些更简单的散列函数,它们主要尝试传播数据。他们大多试图确保关闭的输入值在之后不会彼此接近(但如果是可预测的,则可以)

    您可能需要阅读维基百科:

    (是的,它有一个关于“通过哈希查找类似子字符串”的部分)

    Wikipedia还有一个哈希函数列表:

    这里有一些相关的东西给你。例如,可以使用minhash。以下是一个受minhash启发的方法:定义字母表中所有字母的一些随机列表。假设我只有字母“abcde”用于这个例子。对于这个例子,我只使用两个列表。那么我的名单是:

    p1 = "abcde"
    p2 = "edcba"
    

    f1(str)
    作为我测试单词中第一个字母在p1中的索引,
    f2(str)
    作为p2中第一个字母的索引。所以单词“bababa”会映射到0,3。“阿巴巴”这个词也是。“dada”一词表示0,1,而“ce”表示2,0。请注意,此映射对单词排列是不变的(因为它将它们视为集合),对于长文本,它将收敛到“0,0”。然而,通过一些微调,它可以让您很快找到候选人进行更仔细的检查。

    我认为您可能需要一个哈希函数,正如许多海报所说的那样。然而,在某种程度上,类似的含义也是可能的:使用类似或的东西将你的单词映射到多维空间,相对于一个在大量文本集合上训练过的模型(如果你不能访问你感兴趣的文本类型的代表性样本,可以下载这些预先训练过的模型)。如果你需要一个标量值而不是多维向量(很难说,你没有说你想要它做什么),你可以尝试一些事情,比如最可能主题的概率、维度的平均值、最可能主题的索引等等。

    Define
    2。类似的
    xyz
    zxy
    相似吗?你可能会感兴趣:我同意你的观点,相似的意思更难,也更有趣。你提出了一个非常有趣的方法。谢谢。我只想在这里加上一句,也许值得使用一些降维算法,比如PCA,以最大限度地减少从更高维度到单个维度时失去的意义。你是对的,但LDA/LSA实际上会将维度从词汇的#降到主题的#(其中#主题