将多个字符串与一个字符串关联



我正在尝试制作一种算法,可以轻松地将同义词(带有不匹配、大写字母、缩略词等)简化并分组为一个。我认为应该有一种标准的方法来构建这样一个结构,在寻找可能不匹配的字符串时,如果该字符串存在于结构中,它会返回一个标准化的字符串键。简而言之,有时同一个概念可以用几种方式书写,但我只想保留这个概念。

例如:Supose我想规范化或简化的外观

"General Director", "General Manager", "G, Dtor", "Gen Dir", ...

进入

"GEN_DIR"

并且仅保留该结果以供进一步参考。

顺便说一句,我想用这样的密钥/值对构建哈希

hash["General Director"]="GEN_DIR"
hash["General Manager"]="GEN_DIR"
hash["G, Dtor"]="GEN_DIR"
hash["G, Dir"]="GEN_DIR"

可能是一个解决方案,但我怀疑还有更优雅或更充分的解决方案。

我还需要一种方法,在没有任何数据库的情况下轻松地保持这种联想结构,因为当我发现同一个单词或句子有更多的不匹配时,它应该会增长。我认为一种可能的方法是通过DSL来定义这个结构,但我愿意接受建议。

好吧,没有规则,至少有一个明确的规则。

我的目标是从网络上删除一些"结构化"数据,这些数据有时是不正确或不完整的。有些字段是描述,可以保持原样。但有些字段被怀疑是"集合",但类型不正确(如我的示例)。作为一个能读懂它的人,他立刻知道它的含义,并能将其与意义联系起来。

但我想尽可能地自动化将这些可能的不匹配减少到只有一个"字符串"(或符号)的过程,例如,在将其保存到数据库中之前。因此,我需要的是一种散列或字典,正如sawa正确指出的那样,我可以用它来查找任何这样的脏字符串,以获得规范化的字符串或符号。

当然,也希望有一种方法来制作这个散列(或者它可能是什么),以某种方式从新的不匹配中学习,并自动添加新的关联(可能是基于不匹配字符串和规范化字符串之间的距离测量,如果低于X,则会建立新的关联)。整个关联(即散列)应该随着新的不匹配和概念的出现而增长,不过,它应该保存在任何地方(可能是在xml文件中,或者类似于Mori下面回答的内容),以备将来使用。

有什么新想法吗?

最新更新