Matlab计算字符串相似度
来源:互联网 发布:网络创世纪手游 编辑:程序博客网 时间:2024/06/07 06:03
运行环境:Matlab
单纯的计算字符串的相似度,并没有计算词性,如TF-IDF之类的;代码如下:
%计算字符串相似度%一个source字符串通过插入、删除、替换而变成target字符串的操作次数越少,则两个字符串越相近。function strsim = mystrsim(target,source) %X为字符串len1=length(source);len2=length(target);d=zeros(len1+1,len2+1); for i=2:length(source)+1 d(i,1)= i; end for j=2:length(target)+1 d(1,j)= j; end for i =2:length(source)+1 for j = 2:length(target)+1 if source(i - 1) == target(j - 1) d(i,j) = d(i-1,j-1); %不需要编辑操作 else edIns = d(i,j-1)+1; %source 插入字符 edDel = d(i-1,j)+1; %source 删除字符 edRep = d(i-1,j-1)+1; %source 替换字符 d(i,j)= min(min(edIns, edDel),edRep); end end end y=d(length(source)+1,length(target)+1); %最少操作次数 strsim=1/(y+1); %相似度end
实例:
1. 计算中文字符串相似度:
2. 计算英文字符串相似度:
3. 但是通过这种方式计算,其相似度效果不是很明显,如下:
这里需要注意的是:
y是操作次数,1/(1+y)就是简易版的相似度,如果读者觉得这样的相似度表意不清楚的话,可以自己选择变换函数,比如log或1/(exp()+a)之类的函数平滑下。
这里简易版的相似度,读者可以设置阈值如0.3,基本就可以了。
那么既然它不是计算语义相似度的,那么它有什么用呢?
比如,现在有很多数据,这些数据是地段的楼价。然后, 想知道某地段的楼价,但是这个地段的楼价并没有在这些数据中,这个时候就可以根据周边的楼价去匹配,得到类似的楼价。例如:现在想知道广州天河车陂南的房价,那么可以找到数据中包含车陂北街,车陂北街29号,车陂*等等这些地段的房价,然后求平均得到。
阅读全文
0 0
- Matlab计算字符串相似度
- 计算字符串相似度
- 字符串相似度计算
- 字符串相似度计算
- 字符串相似度计算
- 计算字符串相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 字符串相似度计算[整理]
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 堆棋子问题
- numpy random
- STORM入门之(集成KafkaBolt)
- 【腾讯TMQ】当Espresso遇见Android单元测试
- MySQL索引的数据结构及算法原理
- Matlab计算字符串相似度
- VS2010与Qt5.1.0集成(非源码方式)
- 自己对git的一点认知
- Nexus创建本地Maven仓库(Maven私服)
- I
- POJ 3630 Phone List(Trie)
- 在java中 变量之间是如何赋值的
- Linux Shell 特殊变量
- DAG动规 uva