精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-10
最后修改:2009-09-10
如: window2000 将切分为 | window2000 | window | 2000; readme.txt 将切分为 | readme.txt | readme | txt; linliangyi2005@gmail.com 将切分为 | linliangyi2005@gmail.com | linliangyi | 2005 | gmail | com ; 下载 :IKAnalyzer3.1.2稳定版完整包.rar 更多详细请参看《IKAnalyzer中文分词器V3.1.1使用手册.pdf》 或访问本人Blog:http://linliangyi2007.iteye.com/blog/429960 项目地址:http://code.google.com/p/ik-analyzer/ 。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-13
刚刚打开你的程序看了一下,看到一个类:
/** * 判断词元是否彼此包含 * @param other * @return boolean true 完全包含 , false 可能不相交 或者 相交但不包含 */ public boolean isOverlap(Lexeme other){ if(other != null){ if(this.begin <= other.begin && this.getEndPosition() >= other.getEndPosition()){ return true; }else if(this.begin >= other.begin && this.getEndPosition() <= other.getEndPosition()){ return true; }else { return false; } } return false; } 这个地方为什么判断begin,然后是 getEndPosition之间的关系,是不是应该同样判断getBeginPosition? 还有写得代码太复杂了,两个条件变成一个或不就可以了吗? 另外hashcode和equal都没有判断文本的内容,这个也挺奇怪的 当然我还没看其他的代码,可能你的本意就需要这样? |
|
返回顶楼 | |
发表时间:2009-09-13
你好,可以问你个问题吗?看你写了关于很多CAS的,我出了个这样的问题,可以给我点帮助吗?java.security.cert.CertificateException: No subject alternative names present
|
|
返回顶楼 | |
发表时间:2009-09-13
最后修改:2009-09-13
potian 写道 刚刚打开你的程序看了一下,看到一个类:
/** * 判断词元是否彼此包含 * @param other * @return boolean true 完全包含 , false 可能不相交 或者 相交但不包含 */ public boolean isOverlap(Lexeme other){ if(other != null){ if(this.begin <= other.begin && this.getEndPosition() >= other.getEndPosition()){ return true; }else if(this.begin >= other.begin && this.getEndPosition() <= other.getEndPosition()){ return true; }else { return false; } } return false; } 这个地方为什么判断begin,然后是 getEndPosition之间的关系,是不是应该同样判断getBeginPosition? 还有写得代码太复杂了,两个条件变成一个或不就可以了吗? 另外hashcode和equal都没有判断文本的内容,这个也挺奇怪的 当然我还没看其他的代码,可能你的本意就需要这样? 我想说的是,不要把这段代码等同于两个Lexeme对象的相等判断。代码没有错,也没有多余。 不判断文本内容是考虑到效率问题,对于明确的一段文字,相同位置上的字符是一样的 当然如果将begin改为getBeginPosition会更利于程序的阅读,这个会进行修改。 |
|
返回顶楼 | |
发表时间:2009-09-13
最后修改:2009-09-13
linliangyi2007 写道 potian 写道 刚刚打开你的程序看了一下,看到一个类:
/** * 判断词元是否彼此包含 * @param other * @return boolean true 完全包含 , false 可能不相交 或者 相交但不包含 */ public boolean isOverlap(Lexeme other){ if(other != null){ if(this.begin <= other.begin && this.getEndPosition() >= other.getEndPosition()){ return true; }else if(this.begin >= other.begin && this.getEndPosition() <= other.getEndPosition()){ return true; }else { return false; } } return false; } 这个地方为什么判断begin,然后是 getEndPosition之间的关系,是不是应该同样判断getBeginPosition? 还有写得代码太复杂了,两个条件变成一个或不就可以了吗? 另外hashcode和equal都没有判断文本的内容,这个也挺奇怪的 当然我还没看其他的代码,可能你的本意就需要这样? 我想说的是,不要把这段代码等同于两个Lexeme对象的相等判断。代码没有错,也没有多余。 不判断文本内容是考虑到效率问题,对于明确的一段文字,相同位置上的字符是一样的 当然如果将begin改为getBeginPosition会更利于程序的阅读,这个会进行修改。 难道不能这么写 if(other == null) return false; return (this.begin <= other.begin && this.getEndPosition() >= other.getEndPosition()) || (this.begin >= other.begin && this.getEndPosition() <= other.getEndPosition()) |
|
返回顶楼 | |
发表时间:2009-09-14
potian 写道 linliangyi2007 写道 potian 写道 刚刚打开你的程序看了一下,看到一个类:
/** * 判断词元是否彼此包含 * @param other * @return boolean true 完全包含 , false 可能不相交 或者 相交但不包含 */ public boolean isOverlap(Lexeme other){ if(other != null){ if(this.begin <= other.begin && this.getEndPosition() >= other.getEndPosition()){ return true; }else if(this.begin >= other.begin && this.getEndPosition() <= other.getEndPosition()){ return true; }else { return false; } } return false; } 这个地方为什么判断begin,然后是 getEndPosition之间的关系,是不是应该同样判断getBeginPosition? 还有写得代码太复杂了,两个条件变成一个或不就可以了吗? 另外hashcode和equal都没有判断文本的内容,这个也挺奇怪的 当然我还没看其他的代码,可能你的本意就需要这样? 我想说的是,不要把这段代码等同于两个Lexeme对象的相等判断。代码没有错,也没有多余。 不判断文本内容是考虑到效率问题,对于明确的一段文字,相同位置上的字符是一样的 当然如果将begin改为getBeginPosition会更利于程序的阅读,这个会进行修改。 难道不能这么写 if(other == null) return false; return (this.begin <= other.begin && this.getEndPosition() >= other.getEndPosition()) || (this.begin >= other.begin && this.getEndPosition() <= other.getEndPosition()) 呵呵,这个纯属代码风格问题。如果这个要讨论下去,又会引起争论了。事实上,对于分词器而言,两段代码没有本质区别,不是吗?既不影响效率,也不影响算法。 如果需要讨论代码编写的话,建议学习ruby吧,哪里有比java好的多的魔法代码哦,这跟本贴的中心就相去甚远了,还是就此打住吧。 |
|
返回顶楼 | |
发表时间:2009-09-14
最后修改:2009-09-14
因为最近想了解分词,所以找了Javaeye推荐的IK。我发帖的主要原因就是有一些不理解的地方,从一开始就没有想要说你的代码什么不好,只不过有点疑问,当然有可能是引起了你的误会
咱们到此打住吧 |
|
返回顶楼 | |
发表时间:2009-10-14
强烈建议发布基于1。5版的。。。
|
|
返回顶楼 | |
发表时间:2009-10-14
最后修改:2009-10-14
尽管在工作中主要使用java,也接受java的繁琐,但对类似
if (true) { return true; } else { return false; } 的写法非常反感。不能因为java的繁琐,我们就不去追求代码的简洁。potian的建议还是很中肯的。 |
|
返回顶楼 | |
发表时间:2009-10-14
joachimz 写道 尽管在工作中主要使用java,也接受java的繁琐,但对类似
if (true) { return true; } else { return false; } 的写法非常反感。不能因为java的繁琐,我们就不去追求代码的简洁。potian的建议还是很中肯的。 好吧,我承认繁琐。但有时候,真的是代码习惯问题啊,改过来怪怪的,请各位容忍一下下啦 |
|
返回顶楼 | |