package ruc.irm.similarity.word.hownet2.sememe; /** * 描述知网义原的基本对象, 出于性能考虑,把未用到的英文名称、定义等在加载时忽略, 更准确的做法是以[英文定义|中文定义] * 作为一个整理进行处理,不过绝大多数只根据中文定义就可以标识出来,因此忽略不计。<br/> * 义原编号采用父节点Id-子节点Id编码方式,如: * <sememe cn="成功" define="{experiencer,scope}" en="succeed" id="1-1-2-1-4-5"/> * 义原的id表明了义原之间的上下位关系和义原的深度。 * * @author <a href="mailto:iamxiatian@gmail.com">夏天</a> * @organization 中国人民大学信息资源管理学院 知识工程实验室 */ public class Sememe { /** * 义原编号,采用父节点Id-子节点Id编码方式,如<sememe cn="成功" define="{experiencer,scope}" en="succeed" id="1-1-2-1-4-5"/> * id表明了义原之间的上下位关系 */ private String id; /** 义原的中文名称*/ private String cnWord; /** 义原的英文名称 */ private String enWord; /** 义原的定义,如果没有(例如数量),则为空串 */ private String define; /** * 每一行的形式为:be|是 {relevant,isa}/{relevant,descriptive} * <br/>或者 official|官 [#organization|组织,#employee|员] * <br/>或者 amount|多少 * <br/>把相应的部分赋予不同的属性 * 出于性能考虑,把未用到的英文名称、定义等忽略 * @param id * @param parentId * @param item 读取文件中的一行 */ public Sememe(String id, String en, String cn, String define) { this.id = id; this.cnWord = cn; //为提高效率,减少内存空间利用,可去掉以下两行 this.enWord = en; this.define = define; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getCnWord() { return cnWord; } public void setCnWord(String cnWord) { this.cnWord = cnWord; } public String getEnWord() { return enWord; } public void setEnWord(String enWord) { this.enWord = enWord; } public String getDefine() { return define; } public void setDefine(String define) { this.define = define; } public int getType() { char ch = id.charAt(0); switch (ch) { case '1': return SememeType.Event; case '2': return SememeType.Entity; case '3': return SememeType.Attribute; case '4': return SememeType.Quantity; case '5': return SememeType.AValue; case '6': return SememeType.QValue; case '7': return SememeType.SecondaryFeature; case '8': return SememeType.Syntax; case '9': return SememeType.EventRoleAndFeature; default: return 0; } } @Override public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("id="); sb.append(id); sb.append("; cnWord="); sb.append(cnWord); sb.append("; enWord="); sb.append(enWord); sb.append("; define="); sb.append(define); return sb.toString(); } }