【问题标题】:mapping strings映射字符串
【发布时间】:2011-07-10 04:54:06
【问题描述】:

我想用数字映射一些字符串(单词)。字符串越相似,它们的值(映射数字)越接近。另外,在检查字母的位置组合时应该影响映射。映射函数应该是字母,位置(组合给定字母位置的优先级,例如坑和尖端应该不同),字母的数量。

好吧,我举几个例子:starter, stater,stapler, startler, tstarter 是一些词。这些词的格式为“(*optinal)sta(*opt)*er”,其中 * 表示某种变量,在我们的例子中它是 't' 或 'l'(即在 starter 和 staler 的情况下)。这些都应该单独映射,没有上下文到其他的,这样它们的值没有太大的区别。稍后我可以在哪些创建组上放置适当的数字范围来区分组。

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

所以,现在我需要查找一些现有的映射方法,以便相似的字符串(我想我已经澄清了我的上下文中的“相似”一词)具有相似的值,并且这些值应该与不同的值不同.拜托,我再次强调字符串的数量会很大,并且几乎不可能相互比较(或者计算成本高且速度慢)。所以我想设计一个算法(从现有算法的帮助)映射字( STRING) 独立

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

我认为我需要某种类型的“bad”哈希函数来对字符串进行哈希处理,然后根据该哈希值将它们放入存储桶中。至少有一些想法或算法名称。

【问题讨论】:

  • 好的......但他在那里不活跃,我无法联系他并且答案不相关,我真的希望通过与每个 cmets 的交互和整个问题的改进来解决问题。我不能在别人的帖子中这样做

标签: string algorithm hash


【解决方案1】:

似乎最好使用像Levenshtein Distance这样的已知算法

【讨论】:

  • 谢谢,我正在详细查看。让我们看看我是否可以使用它来满足我的要求。谢谢
  • 我经历了 Levenshtein 距离,我发现这是用于比较两个字符串。但是我要实现的地方包含大量数据。我尝试比较大约百万个整数(大约 10 位),这需要很长时间。所以我的事情,字符串到字符串的比较是完全不等式的。所以我的意思是可能有一些现有的方法可以通过其自身的数值来映射字符串,这样每当新字符串出现时,我们就可以用数值映射它们(使用相同的方法)并直接放入合适的组(组由数字范围组成)
  • 我不介意映射时是否有冲突,但最后每当出现新单词并且我们根据这种方法映射它时,它应该映射的值接近已经映射的字符串的值。谢谢
【解决方案2】:

【讨论】:

  • 好吧,问题是一样的,但我不能评论那里的答案,那个问题是关于小字符串(100),但在这里我必须处理流字符串(数百万个字符串(实际上是日志)一段时间内)。我的意图不是找到像 Levenshtein 或 jaccard_index 因为需要传递字符串作为参数进行比较的相似性算法,这在我的情况下是不可能的。我只需要某种散列(评分)方式,以便散列值不会因字符串的微小变化而显着变化。显然这些字符串是非结构化的。
  • 对。最后一个链接准确地给出了这一点:Simhash 是一种为任何给定的单个字符串生成哈希值的方法,其中结果值对于相似的字符串应该是相似的。
  • 感谢Ashelly,我目前正在学习simhash。让我们看看我是否需要任何帮助,我可以在这里轻松发布,而对其他帖子发表评论则非常困难。
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 2021-11-15
  • 2011-02-10
相关资源
最近更新 更多