我有一大堆任意自然语言字符串.对于我分析它们的工具,我需要将每个字符串转换为唯一的颜色值(RGB或其他).我需要颜色对比来依赖于字符串相似性(字符串与其他字符串不同,它们各自的颜色应该不同).如果我总是为同一个字符串获得相同的颜色值,那将是完美的.
关于如何解决这个问题的任何建议?
更新字符串之间的距离
我可能需要将“相似性”定义为类似Levenstein的距离.不需要自然语言解析.
那是:
"I am going to the store" and "We are going to the store"
类似.
"I am going to the store" and "I am going to the store today"
类似(但略少).
"I am going to the store" and "J bn hpjoh up uif tupsf"
很不相似.
(谢谢,Welbog!)
只有当我看到程序输出时,我才可能确切地知道我需要什么距离函数.所以让我们从简单的事情开始吧.
更新任务简化
我删除了自己的建议,将任务分成两部分 – 绝对距离计算和颜色分布.这不会很好,因为我们首先将尺寸信息减少到一个维度,然后尝试将其合成到三维.
解决方法
您需要详细说明“类似字符串”的含义,以便提出适当的转换函数.是字符串
"I am going to the store" and "We are going to the store"
认为类似?怎么样的字符串
"I am going to the store" and "J bn hpjoh up uif tupsf"
(原始1中的所有字母),或
"I am going to the store" and "I am going to the store today"
?根据“类似”的含义,您可能会考虑不同的功能.
如果差异可以仅基于字符的值(在Unicode或它们来自的任何空间中),那么您可以尝试将值相加并将结果用作HSV空间的色调.如果使用较长的字符串会导致颜色更加不同,您可以考虑按字符串中的位置对字符进行加权.
如果差异更复杂,例如某些字母或单词的出现,则需要识别这一点.如果您的域名中包含很多这些值,也许您可以根据字符串中的Es,Ss和Rs数来决定红色,绿色和蓝色值.或者根据元音与韵母的比例或音节的单词选择一种色调.