2

假设我们有两个信号空间 S1 和 S2,每个空间包含数百甚至数千个信号。S1 是给定系统(飞机、汽车等)发送或接收的所有信号,S2 是系统内部子系统的软件模块发送或接收的所有信号。每个信号都有一组特定的属性,如信号名称、周期时间、电压等。

现在我想检查 S1 中的每个信号是否在 S2 中至少有一个表示,这意味着 S1 中信号的所有属性都等于 S2 中信号的所有属性。起初这听起来很容易,因为可以遍历信号及其属性并检查某处是否存在等效信号。但事实证明,两侧(S1 和 S2 信号)可能存在错误的规范,因此无法识别属于同一对的信号对。

例子:

K1 = {名称:= CAN_1234_UHV;电压:= 0.8 mV;周期=100ms}

D1 = {名称:= CAN_1234_UH;电压:= 0.8mV;周期=100 毫秒}

尽管存在一些拼写错误,但人类可以很容易地看出这两个信号可能很好地结合在一起。

所以我所做的是设计一种算法,计算每个属性的字符串的距离度量,将相似性映射到某个概率,即这个特定属性等于另一个信号的相同属性,计算平均值并将信号分类为如果这个概率达到某个阈值,则相等。

这产生了可怕的结果,因为两个信号可以被归类为相等,因为某些属性具有在信号空间中非常常见的值。所以下一步是对这些属性进行加权(信号名比周期时间更适合识别信号)。

这整个过程对我来说似乎很随意,因为我真的不知道会产生好的结果的概率和权重。所以我有一种感觉,这可以通过机器学习算法来解决,因为它可以从训练数据中得出概率和权重。

因此,总而言之,使用机器学习算法将信号识别为“足够相似”以便将它们分类为相等是否可行。我知道这个问题一般不能回答,我对“直觉”和“朝着正确的方向轻推”更感兴趣。

提前致谢

4

1 回答 1

2

解决方案 1 -您可以使用 Apache Solr。

  • 您可以在 Apache Solr 中保存(索引)所有信号,其中信号的每个属性都将存储为 Solr 的字段。

    Example:
    K1 = {Name:= CAN_1234_UHV; Voltage:= 0.8 mV; Cycle=100ms}
    D1 = {Name:= CAN_1234_UH; Voltage:= 0.8mV; Cycle=100 ms}
    
    K1 and D1 is a document in Solr. Name, Voltage, Cycle will be Solr's Field.
    
  • 然后可以使用 Solr 的MoreLikeThis功能来识别相似的信号。


这产生了可怕的结果,因为两个信号可以被归类为相等,因为某些属性具有在信号空间中非常常见的值。所以下一步是对这些属性进行加权(信号名比周期时间更适合识别信号)。

为此检查下面的mlt.qf。

Solr 为MoreLikeThis提供了许多通用参数,可以根据您的需要进行调整。

  • mlt.fl指定用于相似性的字段。如果可能,这些应该存储 termVectors。
  • mlt.mintf指定最小术语频率,低于该频率的术语将在源文档中被忽略。
  • mlt.mindf指定最小文档频率,即忽略至少在这么多文档中没有出现的单词的频率。
  • mlt.maxdf指定最大文档频率,即在多于这么多文档中出现的单词将被忽略的频率。
  • mlt.minwl设置最小字长,低于该字长将被忽略。
  • mlt.maxwl设置最大字长,超过该字长将被忽略。
  • mlt.maxqt设置将包含在任何生成的查询中的查询词的最大数量。
  • mlt.maxntp设置要在每个示例文档字段中解析的最大令牌数,这些字段不使用 TermVector 支持存储。
  • mlt.boost指定查询是否将被感兴趣的术语相关性提升。它可以是“真”或“假”。
  • mlt.qf使用与 DisMaxRequestHandler 相同的格式查询字段及其提升。这些字段也必须在 mlt.fl 中指定。

解决方案 2 -编写您自己的解决方案。

您可以使用这些算法为此问题编写自定义解决方案。

  • Levenshtein 距离- 通俗地说,两个单词之间的 Levenshtein 距离是将一个单词更改为另一个单词所需的单字符编辑(即插入、删除或替换)的最小数量。
  • 汉明距离——在信息论中,两个相等长度的字符串之间的汉明距离是对应符号不同的位置数。
  • Smith–Waterman-algorithm - Smith–Waterman 算法执行局部序列比对;也就是说,用于确定两个字符串或核苷酸或蛋白质序列之间的相似区域。Smith-Waterman 算法不是查看总序列,而是比较所有可能长度的片段并优化相似性度量。
  • Sørensen–Dice Coefficient - 用于比较两个样本相似性的统计量
于 2016-09-19T08:57:53.047 回答