package ruc.irm.similarity.word.hownet;
import java.io.InputStream;
import ruc.irm.similarity.util.FileUtils;
import ruc.irm.similarity.word.hownet.sememe.Sememe;
import ruc.irm.similarity.word.hownet.sememe.SememeDictTraverseEvent;
import ruc.irm.similarity.word.hownet2.sememe.XiaSememeParser;
/**
* 针对义原的测试
*
* @author <a href="mailto:iamxiatian@gmail.com">夏天</a>
* @organization 中国人民大学信息资源管理学院 知识工程实验室
*/
public class SememeTest {
public static void main(String[] args) throws Exception{
String id1 = "2-1-3-4";
// String id2 = "2-1-2";
// System.out.println(getDistance(id1, id2));
// System.out.println(getSimilarityBySememeId(id1, id2));
int pos = id1.lastIndexOf("-");
String parentId = "root";
if(pos>0){
parentId = id1.substring(0, pos);
}
System.out.println(parentId);
new XiaSememeParser().getSimilarity("test", "hello");
}
static void saveXML() throws Exception{
String sememeFile = Sememe.class.getPackage().getName().replaceAll("\\.", "/") + "/sememe.dat";
InputStream input = Sememe.class.getClassLoader().getResourceAsStream(sememeFile);
SememeDictTraverseEvent event = new SememeDictTraverseEvent();
FileUtils.traverseLines(input, "utf8", event);
event.saveToXML("/home/xiatian/Desktop/sememe.xml");
}
static double getSimilarityBySememeId(final String id1, final String id2) {
int position = 0;
String[] array1 = id1.split("-");
String[] array2 = id2.split("-");
for (position = 0; position < array1.length && position < array2.length; position++) {
if (!array1[position].equals(array2[position])) {
break;
}
}
return 2.0*position/(array1.length + array2.length);
}
static int getDistance(String id1, String id2) {
// 两个Id相同的位置终止地方
int position = 0;
String[] array1 = id1.split("-");
String[] array2 = id2.split("-");
for (position = 0; position < array1.length && position < array2.length; position++) {
if (!array1[position].equals(array2[position])) {
return array1.length + array2.length - position - position;
}
}
if (array1.length == array2.length) {
return 0;
} else if (array1.length == position) {
return array2.length - position;
} else {
return array1.length - position;
}
}
}