精华内容
下载资源
问答
  • 这是基于The Unreasonable Effectiveness of Deep Features as a Perceptual Metric 中所提到感知相似度计算网络代码,里面链接可供下载作者训练好的权重。供大家参考
  • 通过Java编程,使用余弦定理,相似度算法的实现/*** 计算有权重的相似度* @param dict1:Map:Map* @param dict2:Map:Map* @return*/public double similarity(Map dict1,Map dict2){double similarity = 0.0, ...

    通过Java编程,使用余弦定理,相似度算法的实现

    /**

    * 计算带有权重的相似度

    * @param dict1:Map:Map

    * @param dict2:Map:Map

    * @return

    */

    public double similarity(Map dict1,Map dict2){

    double similarity = 0.0, numerator = 0.0, denominator1 = 0.0, denominator2 = 0.0;

    if(dict1.size()==0||dict2.size()==0){

    similarity = 0.0;

    return similarity;

    }

    int value1=0;

    int value2=0;

    int num = 0;

    for(String keyword:dict1.keySet()){

    value1 = dict1.get(keyword);

    if(dict2.containsKey(keyword)){

    value2 = dict2.get(keyword);

    dict2.remove(keyword);

    num++;

    }else{

    value2 = 0;

    }

    numerator += value1 * value2;

    denominator1 += value1 * value1;

    denominator2 += value2 * value2;

    }

    for(String keyword:dict2.keySet()){

    value2 = dict2.get(keyword);

    denominator2 += value2 * value2;

    }

    similarity = numerator / (Math.sqrt(denominator1 * denominator2));

    return similarity;

    }0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 1:对文本的分类,不管用...具体的每个值就是这个特征的权重(关于权重的计算很多种,我这个地方只用了词频来代表)。然后读入测试本文,根据该测试文本中的特征,看和样本中的特征的向量做运算,这个地方用的是求向量

    1:对文本的分类,不管用什么高级的方法,首先还是需要建立数学模型的,这个地方就用SVM来建立,他的原理是根据文本的特征,比如一个文本有10个特征(一般来说每个特征是一个代表这个文本的关键词),那么这个文本向量大小就是10了。具体的每个值就是这个特征的权重(关于权重的计算很多种,我这个地方只用了词频来代表)。然后读入测试本文,根据该测试文本中的特征,看和样本中的特征的向量做运算,这个地方用的是求向量的夹角,用余弦值来表达,夹角大的就偏的远,否则比较近(这个地方没考虑到角度大于90°的情况)。

    2:这个例子是为了我接下来做SVM用的,对于搞此类的算是个入门。我觉得这个效果要和输入的样本特征关系很大,我对同类的比如股票下不同类别来做判断,基本也可以判断出来权重。

    3:java源代码如下:



    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Vector;


    public class VsmMain {


    public static void main(String[] args) {


    VsmMain vsm = new VsmMain();
    String basePath = vsm.getClass().getClassLoader().getResource("")
    .toString().substring(6);
    String content = vsm.getContent(basePath + "article.txt");
    Vector<Vector<String>> samples = vsm.loadSample(basePath + "sort.txt");


    vsm.samilarity(content, samples);
    }


    /**
    * 计算比对文章和样本的余弦值

    * @param content
    * @param samples
    */
    public void samilarity(String content, Vector<Vector<String>> samples) {
    for (int i = 0; i < samples.size(); i++) {
    Vector<String> single = samples.get(i);
    // 存放每个样本中的词语,在该对比文本中出现的次数
    Vector<Integer> wordCount = new Vector<Integer>();
    for (int j = 0; j < single.size(); j++) {
    String word = single.get(j);
    int count = getCharInStringCount(content, word);
    wordCount.add(j, count);
    //System.out.print(word + ":" + tfidf + ",");
    }
    //System.out.println("\n");
    // 计算余弦值
    int sampleLength = 0;
    int textLength = 0;
    int totalLength = 0;
    for (int j = 0; j < single.size(); j++) {
    // 样本中向量值都是1
    sampleLength += 1;
    textLength += wordCount.get(j) * wordCount.get(j);
    totalLength += 1 * wordCount.get(j);
    }
    // 开方计算
    double value = 0.00;
    if(sampleLength > 0 && textLength > 0){
    value = (double)totalLength/(Math.sqrt(sampleLength) * Math.sqrt(textLength));
    }

    System.out.println(single.get(0) + "," + sampleLength + ","
    + textLength + "," + totalLength + "," + value);


    }
    }


    /**
    * 计算word在content中出现的次数

    * @param content
    * @param word
    * @return
    */
    public int getCharInStringCount(String content, String word) {
    String str = content.replaceAll(word, "");
    return (content.length() - str.length()) / word.length();


    }


    /**
    * 加载样本

    * @param path
    * @return
    */
    public Vector<Vector<String>> loadSample(String path) {
    Vector<Vector<String>> vector = new Vector<Vector<String>>();
    try {
    try {
    FileReader reader = new FileReader(new File(path));
    BufferedReader bufferReader = new BufferedReader(reader);
    String hasRead = "";
    while ((hasRead = bufferReader.readLine()) != null) {
    String info[] = hasRead.split(",");
    Vector<String> single = new Vector<String>();
    for (int i = 0; i < info.length; i++) {
    single.add(info[i]);
    }
    vector.add(single);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    return vector;
    }


    /**
    * 读取对应path的文件内容

    * @param path
    * @return
    */
    public String getContent(String path) {
    StringBuffer buffer = new StringBuffer();
    try {
    try {
    FileReader reader = new FileReader(new File(path));
    BufferedReader bufferReader = new BufferedReader(reader);
    String hasRead = "";
    while ((hasRead = bufferReader.readLine()) != null) {
    buffer.append(hasRead);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    return buffer.toString();
    }


    }

    里面sort就是我自己手工维持的类别特征,每个特征用,隔开。article是我自己输入的待测试文本。。

    入门用吧。。看起来效果还是可以的。接下来我再做svm的实现,样本特征自动来实现。。

    转载地址

    展开全文
  • 背景 原文[1]在利用依存结构进行相似度计算时,只考虑那些有效搭配对之间的相似度。有效搭配对是指全句核心词和直接依赖于它的有效词组成的搭配对。 优化策略1: 可以比较依赖树中节点的重复率,重复率可以作为...

    背景

    原文[1]在利用依存结构进行相似度计算时,只考虑那些有效搭配对之间的相似度。有效搭配对是指全句核心词和直接依赖于它的有效词组成的搭配对。

    优化策略1

    可以比较依赖树中节点的重复率,重复率可以作为相似度的权重之一。 

    其中:ComCount:为两棵树都有的节点个数。PairCount1为句子1的节点个数,PairCount2为句子2的节点个数。

    优化策略2

    依存结构中的有效搭配,在原有的基础上,加上句子中所有动词或名词,和直接依赖于它的有效词组成的搭配对。

    原因:对于稍长的句子,句法分析的依存树就相对发杂,单纯的核心词和直接依赖于它的有效词组成的搭配对,不足以代表句子的结构,将核心词扩大到全句的所有动词和名词,则更能代表全句的语义,以及结构。

    注:核心词个人理解为依存树的头结点,如果由于个人理解错误,则策略2不一定成立。

     参考目录:

    1基于语义依存的汉语句子相似度计算。  http://ir.hit.edu.cn/phpwebsite/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=214

     

    转载于:https://www.cnblogs.com/bent/archive/2011/11/01/2232083.html

    展开全文
  • 文本相似度的计算

    2016-05-06 06:42:45
    文本相似度的计算方法很多,这里简单记录一下 传统VSM模型: 计算文本相似度的时候主要是使用tfidf来协助生成文档向量 整个文档集合多少词,就是多少维度 每个文档中词用tfidf来生成权重,用权重来表示文档...
        

    文本相似度的计算方法有很多,这里简单记录一下

    传统的VSM模型:

    计算文本相似度的时候主要是使用tfidf来协助生成文档向量
    整个文档集合有多少词,就是多少维度
    每个文档中的词用tfidf来生成权重,用权重来表示文档的向量
    生成向量后,就可以计算相似度了,用夹角余弦
    当然这里词的权重的生成方式还有很多,也可以用其他的
    
    

    LSI(Latent semantic indexing) 的方式

    这个的方式也比较简单,主要是先生成文档 - 词矩阵
    矩阵中的内容就是文档中出现该词的频数
    然后用svd分解矩阵得到三个矩阵
    C = USV
    然后每个文档向量分别和USV相乘得到向量
    文本相似度计算还是夹角余弦
    至于降低维度,就要对S进行奇异值削减了
    
    展开全文
  • 1.基于属性的相似度计算的基本依据是,如果两个概念具有完全相同的属性,则认为两个概念可能是相同的,根据属性计算相似度的算法可以归结为计算两个概念的属性集合的相似程度,应该不仅与两个概念具有的相似属性有关...
  • 最后,按照一定的权重比例综合这三个主题模型,计算文本之间的相似度。由于考虑了不同词性的词集对文本相似度计算的贡献差异,利用文本的语义信息提高了文本聚类准确率。将分离后的三个词集的LDA建模过程并行化,...
  • 文本相似度计算(二):hash方法

    千次阅读 2019-05-07 11:57:53
    文本相似度计算BooI模型tf-idf模型(增加词权重特征)BM25 模型(增加了长度特征)Proximity 模型(增加了位置特征)语义特征模型(增加了 Topic特征)句法特征模型(增加了句法特征)深度表示模型(增加语义特征) 这一篇都是...
  • 对于CBR中案例检索问题,结合经典案例...经过特征约简,在假设时间因素对历史案例可采纳程度显著影响基础上,提出了一种小规模基于时序案例特征权重多阶段调整算法。该算法适用于数值型特征项相似度计算
  • 从大类上分,计算句子相似度的方法可以分为两类:1)无监督方法,即不使用额外标注数据,常用方法:(1)对句子中所有词word vector求平均,获得sentence embedding(2)以每个词tf-idf为权重,对所有词...
  • 现在个需求是这样子的:需要计算搜索词的权重设置其为总排序权重的0.6,其他因素的权重为0.4其他因素中还有详细的划分.这里我们用Solr如何来实现?众所周知solr默认的排序方式为按照文本相似度来进行降序排列的,现在...
  • https://blog.csdn.net/qq_39521554/article/details/82121174写作背景...最近想做一个基于内容的新闻简单推荐系统,其中的一个推荐权重就是两篇新闻标签的相似度,由于没什么数据挖掘和机器学习经验,自己一直在...
  • 通过JAVA编程,使用余弦定理,相似度算法的实现/*** 计算有权重的相似度* @param dict1:Map:Map* @param dict2:Map:Map* @return*/public double similarity(Map dict1,Map dict2){double similarity = 0.0, ...
  • 计算两组标签/关键词 相似度算法

    万次阅读 2016-02-05 11:03:40
    最近想做一个基于内容的新闻简单推荐系统,其中的一个推荐权重就是两篇新闻标签的相似度,由于没什么数据挖掘和机器学习经验,自己一直在摸索,感觉自己还没有入门,先记录下来,慢慢学习。应用案例比较现在两篇...
  • 某个原始先只有权重的模型文件pnet.h5 ,生成包含网络结构和权重的模型文件PNET.h5 。接着用keras2onnx工具把它( PNET.h5 )转换成onnx模型pnet.onnx ,其他胶水部分的逻辑没什么变化。具体的转换代码请参考keras_...
  • java 实现相似度算法

    2011-11-01 09:15:15
    * 计算有权重的相似度 * @param dict1:Map:Map * @param dict2:Map:Map * @return */ public double similarity(Map dict1,Map dict2){ double similarity = 0.0, num...
  • LSTM-DSSM句子相似度

    2019-11-13 00:25:09
    用句子相似度计算话术与实际的相似度. 之前只知道使用的编解码器可以通过训练词编码器后实现句编码, 但想了想除了权重失衡和压缩损失外, 2gram太短也是个问题, 3gram又过度压缩效果不好. 15年篇LSTM-DSSM的论文, ...
  • 中文文本相似度计算的算法:1、最长公共子串、编辑距离(基于原文本进行查找测试,)可以进行改进2、分词后进行集合操作。Jaccard相似度、1、分词,把需要判断文本分词形成这个文章特征单词。最后形成去掉噪音词...
  • 文本相似度算法

    千次阅读 2015-11-21 16:40:40
    文本相似度算法 1.信息检索中的重要发明TF-IDF 1.1TF Term frequency即关键词词频,是指一篇文章中...Inverse document frequency指逆向文本频率,是用于衡量关键词权重的指数,由公式 (公式1.2-1) 计算而得
  • 在第一遍中,他们计算所有权重的总和,从而确定最终止损极限的分布。 这允许预先估计适当的停止极限。 例如,如果停止极限被初始化为该分布的第90个百分位数,则即使对于停止极限本来可以无限的第一
  • NLP—文本相似度算法BM25

    千次阅读 2018-05-20 22:39:41
    BM25算法,通常用来做检索相关性评分。首先对一个查询Query进行分词得qi,对每个搜索结果文档d,计算qi与文档d相关性得分。最后将所有qi进行加权求和,从而得到查询...定义一个词与文档相关性的权重方法很...
  • 建立文本数据数学描述过程分为三个步骤:文本预处理、建立向量空间模型和优化文本向量。...相似度有很多不同的计算方法,所以优化文本向量就是采用最为合适的计算方法来规范化文本向量,使其能更好
  • 实际应用,两个String相似性判定,要去除标点符号,甚至停用词等,然后对于连续数字要降低权重,比如同样“2016”只能作为一个相似度。 具体代码,去停词那个以后再发,需要一个停词表+扫描数据结构算法,...
  • 对彩色人脸输入图进行色偏校正和亮度调节预处理,利用肤色聚类特性构建一种自适应球体肤色模型,并基于该模型计算自适应肤色相似度,利用肤色相似度,采用自适应动态阈值进行肤色区域目标分割和提取。...
  • 在sphinx文档中,说明: SetFieldWeights (设置字段权重) 原型: function SetFieldWeights ( $weights ) 按字段名称设置字段权值。参数必须是一个hash(关联数组),该hash将代表字段名字字符串映射到一...

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

有权重的相似度计算