package ruc.irm.similarity.word.hownet; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ruc.irm.similarity.Similaritable; import ruc.irm.similarity.word.hownet2.concept.BaseConceptParser; import ruc.irm.similarity.word.hownet2.concept.XiaConceptParser; import ruc.irm.similarity.word.hownet2.sememe.XiaSememeParser; import ruc.irm.similarity.word.hownet2.sememe.BaseSememeParser; /** * Hownet的主控制类, 通过知网的概念和义原及其关系计算汉语词语之间的相似度. * 相似度的计算理论参考论文《汉语词语语义相似度计算研究》 * * @author <a href="mailto:iamxiatian@gmail.com">夏天</a> * @organization 中国人民大学信息资源管理学院 知识工程实验室 * * @see ruc.irm.similarity.Similaritable */ public class Hownet implements Similaritable{ /** the logger */ private static final Logger LOG = LoggerFactory.getLogger(Hownet.class); /** 知网的单例 */ private static Hownet instance = null; private BaseConceptParser conceptParser = null; private Hownet(){ try { BaseSememeParser sememeParser = new XiaSememeParser(); conceptParser = new XiaConceptParser(sememeParser); } catch (IOException e) { e.printStackTrace(); LOG.error(e.toString()); } } /** * 单例获取知网对象 * @return */ public static Hownet instance(){ if(null == instance){ instance = new Hownet(); } return instance; } /** * 获取概念解析器 * @return */ public BaseConceptParser getConceptParser(){ return conceptParser; } public double getSimilarity(String item1, String item2) { return conceptParser.getSimilarity(item1, item2); } }