LightJason - AgentSpeak(L++)
CLevenshteinDistance.java
Go to the documentation of this file.
1 /*
2  * @cond LICENSE
3  * ######################################################################################
4  * # LGPL License #
5  * # #
6  * # This file is part of the LightJason AgentSpeak(L++) #
7  * # Copyright (c) 2015-19, LightJason (info@lightjason.org) #
8  * # This program is free software: you can redistribute it and/or modify #
9  * # it under the terms of the GNU Lesser General Public License as #
10  * # published by the Free Software Foundation, either version 3 of the #
11  * # License, or (at your option) any later version. #
12  * # #
13  * # This program is distributed in the hope that it will be useful, #
14  * # but WITHOUT ANY WARRANTY; without even the implied warranty of #
15  * # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
16  * # GNU Lesser General Public License for more details. #
17  * # #
18  * # You should have received a copy of the GNU Lesser General Public License #
19  * # along with this program. If not, see http://www.gnu.org/licenses/ #
20  * ######################################################################################
21  * @endcond
22  */
23 
24 package org.lightjason.agentspeak.consistency.metric;
25 
26 
29 
30 import java.util.stream.Collectors;
31 import java.util.stream.Stream;
32 
33 
39 public final class CLevenshteinDistance implements IMetric
40 {
44  private final double m_insertweight;
48  private final double m_replaceweight;
52  private final double m_deleteweight;
53 
58  {
59  this( 1, 1, 1 );
60  }
61 
69  public CLevenshteinDistance( final double p_insertweight, final double p_replaceweight, final double p_deleteweight )
70  {
71  m_insertweight = p_insertweight;
72  m_replaceweight = p_replaceweight;
73  m_deleteweight = p_replaceweight;
74  }
75 
76 
77  @Override
78  public final Double apply( final Stream<? extends ITerm> p_first, final Stream<? extends ITerm> p_second )
79  {
80  return CCommon.levenshtein(
81  p_first.map( Object::toString ).collect( Collectors.joining( "" ) ),
82  p_second.map( Object::toString ).collect( Collectors.joining( "" ) ),
83  m_insertweight, m_replaceweight, m_deleteweight
84  );
85  }
86 
87 }
final double m_replaceweight
cost / weight of replace operation
final double m_insertweight
cost / weight of insert operation
metric interface of the coherency structure
Definition: IMetric.java:37
final Double apply(final Stream<? extends ITerm > p_first, final Stream<? extends ITerm > p_second)
CLevenshteinDistance(final double p_insertweight, final double p_replaceweight, final double p_deleteweight)
ctor
common structure for execution definition
final double m_deleteweight
cost / weight of delete operation
static double levenshtein( @Nonnull final String p_first, @Nonnull final String p_second, final double p_insertweight, final double p_replaceweight, final double p_deleteweight)
calculates the levenshtein distance