你的位置:首页 > 软件开发 > Java > 利用分词技术实现,生成两个字符串匹配度和相似率。

利用分词技术实现,生成两个字符串匹配度和相似率。

发布时间:2016-05-03 10:00:08
业务场景是客户在业务办理时候需要提交一个材料列表,材料会入材料库,下次客户再来办理业务时候输入客户的身份证,会通过材料库进行加载,我们通过材料名称匹配材料相似度就不用再手动上传材料。(首先需要IKAnalyzer2012FF_u1.jar 进行下载支持的jar)1.以下是对两个词 ...

  业务场景是客户在业务办理时候需要提交一个材料列表,材料会入材料库,下次客户再来办理业务时候输入客户的身份证,会通过材料库进行加载,我们通过材料名称匹配材料相似度就不用再手动上传材料。(首先需要IKAnalyzer2012FF_u1.jar 进行下载支持的jar)

1.以下是对两个词进行处理的核心算法

package com.ikanalyzer;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Vector;/** * Description:相似度百分比 * @author: administrator * @Date: 2015-1-22下午1:20:34 * @version 1.0 */public class IKAnalyzerUtil{  //阈值  public static double YUZHI = 0.2 ;    /**   * 返回百分比   * @author: Administrator   * @Date: 2015年1月22日   * @param T1   * @param T2   * @return   */  public static double getSimilarity(Vector<String> T1, Vector<String> T2) throws Exception {    int size = 0 , size2 = 0 ;    if ( T1 != null && ( size = T1.size() ) > 0 && T2 != null && ( size2 = T2.size() ) > 0 ) {            Map<String, double[]> T = new HashMap<String, double[]>();            //T1和T2的并集T      String index = null ;      for ( int i = 0 ; i < size ; i++ ) {        index = T1.get(i) ;        if( index != null){          double[] c = T.get(index);          c = new double[2];          c[0] = 1;  //T1的语义分数Ci          c[1] = YUZHI;//T2的语义分数Ci          T.put( index, c );        }      }         for ( int i = 0; i < size2 ; i++ ) {        index = T2.get(i) ;        if( index != null ){          double[] c = T.get( index );          if( c != null && c.length == 2 ){            c[1] = 1; //T2中也存在,T2的语义分数=1          }else {            c = new double[2];            c[0] = YUZHI; //T1的语义分数Ci            c[1] = 1; //T2的语义分数Ci            T.put( index , c );          }        }      }              //开始计算,百分比      Iterator<String> it = T.keySet().iterator();      double s1 = 0 , s2 = 0, Ssum = 0; //S1、S2      while( it.hasNext() ){        double[] c = T.get( it.next() );        Ssum += c[0]*c[1];        s1 += c[0]*c[0];        s2 += c[1]*c[1];      }      //百分比      return Ssum / Math.sqrt( s1*s2 );    } else {      throw new Exception("传入参数有问题!");    }  }}

原标题:利用分词技术实现,生成两个字符串匹配度和相似率。

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录