문자열 유사도 알고리즘, AS3 구현, 채팅 광고 판단에 사용
4341 단어 유사도 알고리즘
/**
* source target
* @param source
* @param target
* @return
*
*/
public static function editDistance(source:String,target:String):int
{
var slen:int = source.length;
var tlen:int = target.length;
var d:Array = [];
for(var i:int=0;i<=slen;i++){
d[i] = [];
d[i][0] = i;
if(i==0){
for(var j:int=1;j<=tlen;j++){
d[0][j] = j;
}
}
else
{
for(var j:int=1;j<=tlen;j++){
d[i][j] = 0;
}
}
}
for(var i:int=1;i<=slen;i++){
for(var j:int=1;j<=tlen;j++){
if(source.charCodeAt(i-1) == target.charCodeAt(j-1)){
d[i][j] = d[i-1][j-1];
} else {
var insert:int = d[i][j-1]+1;
var del:int = d[i-1][j]+1;
var update:int = d[i-1][j-1]+1;
d[i][j] = Math.min(insert,del)>Math.min(del,update)?
Math.min(del,update):Math.min(insert,del);
}
}
}
return d[slen][tlen];
}
/**
*
* @param source
* @param target
* @return
*
*/
public static function getSimilarityRate(source:String,target:String):Number
{
return 1-editDistance(source,target)/Math.max(source.length,target.length);
}
사실 코드 참조
http://www.blogjava.net/wangxinsh55/archive/2012/02/02/368414.html
주로 최근에 게임 안에서 채팅이 빈번하게 발송되는 것을 참을 수 없기 때문에 이를 감안하여 우리는 광고 계정 여부를 판단했다.