String 映射字符串

String 映射字符串,string,algorithm,hash,String,Algorithm,Hash,我想用数字映射一些字符串(单词)。字符串越相似,其值越接近(映射的数字)。此外,在检查字母的位置组合时,应影响映射。映射函数应为字母的函数、位置(给定字母位置的组合优先顺序,如凹坑和尖端应不同)、字母数 好吧,我想举几个例子:starter、stater、stapper、starter、tstarter都是一些单词。这些单词的格式为“(*optional)sta(*opt)*er”,其中*表示某种类型的变量,在我们的例子中,它是“t”或“l”(即,对于初学者和初学者)。这些都应该单独映射,而不需

我想用数字映射一些字符串(单词)。字符串越相似,其值越接近(映射的数字)。此外,在检查字母的位置组合时,应影响映射。映射函数应为字母的函数、位置(给定字母位置的组合优先顺序,如凹坑和尖端应不同)、字母数

好吧,我想举几个例子:starter、stater、stapper、starter、tstarter都是一些单词。这些单词的格式为“(*optional)sta(*opt)*er”,其中*表示某种类型的变量,在我们的例子中,它是“t”或“l”(即,对于初学者和初学者)。这些都应该单独映射,而不需要上下文,这样它们的值就不会有太大差异。然后在创建组时,我可以将适当的数字范围用于区分组

因此,在映射字符串时,它们的值应该相似。单词很多,所以相互比较会很复杂。因此,为每个单词独立地映射一些数值,并将相似的字符串(因为它们具有相似的值)放入一个组中,然后通过其他方式找到这些模式

因此,现在我需要查找一些现有的映射方法,以便类似的字符串(我想我已经为我的上下文澄清了术语“相似”)具有相似的值,并且这些值应该与不同的值不同。请再说一遍,我要强调的是,字符串的数量将是巨大的,而且相互比较几乎是不可能的(或者计算成本高且速度慢)。因此,我认为应该设计一种算法(借助现有算法)来映射单词(字符串)

我说清楚了吗?请先给我一些想法。一些搜索和研究的术语


我想我需要某种类型的“bad”散列函数来散列字符串,然后根据散列值将它们放入bucket中。至少有一些想法或算法名称。

似乎最好使用像这样的已知算法
显示,该链接与您想要的完全一样。

谢谢,我正在详细查看。让我们看看我是否可以使用它来满足我的要求。thanksi通过Levenshtein距离,我发现这是用来比较两个字符串的。但我要在哪里实现这一点,需要大量的数据。我试过比较大约100万个整数(大约10位数),这花了很长时间。所以我想,字符串对字符串的比较是完全不可能的。因此,我的意思是,可能有一些现有的方法可以单独通过数值来映射字符串,这样每当出现新字符串时,我们就可以使用数值来映射它们(使用相同的方法),并直接将它们放入合适的组中(group由数值范围组成)我不介意映射时是否有碰撞,但在最后,每当出现新单词时,我们根据这种方法对其进行映射,它的映射值应该接近已映射字符串的值。谢谢类似于ok…但他在那里不活跃,我无法联系他,答案也不相关,我真的希望通过与每个评论的互动和我问题的改进来解决问题。我不能在别人的帖子中这样做问题是一样的,但我不能对答案发表评论,这个问题是关于一小部分字符串(100),但这里我必须处理流字符串(在一段时间内有数百万个字符串(实际上是日志))。我的目的不是寻找像Levenshtein或jaccard_index coz这样需要传递字符串作为比较参数的相似性算法,这在我的例子中是不可能的。我只需要一些散列(评分)方法,这样散列值不会因为字符串中的微小变化而发生显著变化。很明显,这些字符串是非结构化的。最后一个链接给出了确切的信息:Simhash是一种为任何给定的单个字符串生成哈希值的方法,其结果值应该与类似字符串的值相似。感谢Ashelly,我目前正在研究Simhash。让我们看看我是否需要任何帮助,我可以很容易地张贴在这里,而评论其他帖子是相当困难的。