带加权滤波器的字符串模式识别算法?

时间:2012-08-15 20:16:30

标签: algorithm machine-learning pattern-matching pattern-recognition

是否有模式识别算法,我可以指定匹配或缺少某些参数的权重?例如,假设我有3个字符串:

str1 = Samsung 11.6" 64GB Slate PC Tablet with Wi-Fi - Black  
str2 = Samsung Series 7 XE700T1A-A05US 11.6-Inch Slate (64 GB, Win 7 Pro)
str3 = Samsung Series 7 XE700T1A-A03US 11.6-Inch Slate (128 GB SSD, Win 7 HP)

我想将str2与str1匹配,因为它们具有相等的GB,即使传统的字符串距离会说str2更接近str3。实际上,我希望能够处理大量具有不同权重的参数。

任何指向正确方向的指标都将受到赞赏。

2 个答案:

答案 0 :(得分:6)

  1. 创建命名实体的字典,例如“三星”,“英寸”,“Wi-Fi”等
  2. 创建一组规则以提取功能,例如{Number}{Space}?"GB"为千兆字节,{TradeMark}{Space}"Series"{Space}{Number}为商标和系列。
  3. 创建要素向量,将已知属性设置为相应的值,将未知属性设置为“NA”(不可用)。
  4. 测量项目之间的距离(表示为要素向量),而不是字符串。
  5. 注意:为了更轻松地使用词典和规则,请考虑使用GATE框架。要测量2个向量之间的距离,您可以使用cosine distance

答案 1 :(得分:2)

您可能想要做的是开发一个解析器,从String中提取相关信息,然后对其进行加权,而不是对字符串本身进行操作。

这可以包括生成一组正则表达式,用于提取所需的花絮(这些被称为'特征'例如GB)或使用更复杂的解析或NLP技术。然后你自己开发一个权重函数或使用某种clustering(用于相似性)或classifier(用于将事物分类)

对于您的简单示例,生成看起来像GB [0-9]+的正则表达式应足以进行比较。