First we try, then we trust

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  183 随笔 :: 111 文章 :: 2966 评论 :: 301 Trackbacks

SharpICTCLAS 1.0 发布 (感谢工控网发现了一个问题,问题出在字符串比较上,目前已经修正,请重新下载。2007年4月20日)

 

一、SharpICTCLAS 1.0 版相对于测试版的改进

1、修改了原子分词代码,使得对于全角字母有较好的识别

2、修改了部分词性标注部分的代码

因为词性标注部分的代码存在问题(应当是从ICTCLAS就存在的问题),主要表现在如果某个汉字没有词性,则在词性标注时会出现异常。例如:“这些是永远也没有现成的答桉的”其中“答案”写错了,当对这个有错别字的句子分词时,“桉”字是没有词性的,程序在此时将出现错误。

目前的解决办法是对于这些没有词性的词在最终标注时标注为“字符串”。

2、修改了地名识别的一些问题

这个问题出现在Span类的PlaceRecognize方法中,nStart与nEnd在某些时候会计算错误。在测试版SharpICTCLAS中,句子“明定陵是明十三陵中第十座陵墓”在分词时会因为这个问题导致异常。

3、修改了基于CCID的字符串比较代码

原有代码没有很好考虑对全角、半角混合字符串的比较问题,现在修正过来了。

4、修改了向词库添加词汇的代码

原有代码存在错误,现在改正了过来。

二、仍然有待改进的地方

现在的程序仍然有很多地方有待改进,例如原子分词部分的代码对电子邮件、URL等识别还不是很好,日后可利用正则表达式加以改进;除此之外,对于词性标注以及人名地名识别部分代码 ,我除了修改了部分问题代码外,没有做任何改进和调整,这使得整个代码显得凌乱,有待做一次全面重构。

三、SharpICTCLAS使用时的一些示例代码

为了能够更好的使用SharpICTCLAS,现提供一些示例代码,主要完成的工作包括:1)向词库中添加新词汇;2)对文件的预处理,实现繁体向简体的转换、全角字符向半角字符的转换、利用正则表达式过滤多余HTML标记以及断句等。具体可以访问我的文章《SharpICTCLAS分词系统简介(9)词库扩充》。

目前经过调整后的SharpICTCLAS运行效果还算不错。在对博客园一万五千篇文章进行分词测试过程中,向词库中添加了一千三百多个词汇然后进行分词,效果还不错, 分词异常一共发生了15次,其中有9处是因为存在大量日文字符,另外6处是一句话中单词过多,超出了软件限制(200词)。分词效率也比较令人满意(尽管总体还是比较慢),15000篇文章总用时2.5小时,但这不只是分词的时间,还包括了繁体转简体、利用正则表达式去掉HTML符号,统计词频(这需要进行重复词的判别,我使用了AVL树 ,共统计得到16万词汇)、将分词结果写入SQL Server 2005数据库。如果不考虑这些因素的话,感觉应当和C++程序效率差不多,当然这是没有经过严格测试的结论。

如果大家在使用时发现什么新问题,还请及时告知,我会继续修正这些问题。

 


 

  • ICTCLAS简介:

计算所汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),功能有:中文分词;词性标注;未登录词识别。分词正确率高达97.58%(973专家评测结果),未登录词识别召回率均高于90%,其中中国人名的识别召回率接近98%;处理速度为31.5Kbytes/s。

著作权: Copyright(c)2002-2005中科院计算所 职务著作权人:张华平

遵循协议:自然语言处理开放资源许可证1.0

Email: zhanghp@software.ict.ac.cn

Homepage: http://www.i3s.ac.cn

 

  • SharpICTCLAS:

.net平台下的ICTCLAS,是由河北理工大学经管学院吕震宇根据Free版ICTCLAS改编而成,并对原有代码做了部分重写与调整。

Email: zhenyulu@163.com

Blog: http://www.cnblogs.com/zhenyulu

 

posted on 2007-04-18 15:52 吕震宇 阅读(8074) 评论(66)  编辑 收藏

评论

#1楼  2007-04-18 16:00 补丁      
Good~
  回复  引用  查看    

#2楼  2007-04-18 16:15 try [未注册用户]
very good~
  回复  引用    

#3楼  2007-04-18 16:28 海浪空间      
Good~
  回复  引用  查看    

#4楼  2007-04-18 16:28 无常      
如果有包装成DotLucene分词器的版本就更爽了
  回复  引用  查看    

#5楼  2007-04-18 16:30 zitiger      
Thanks
  回复  引用  查看    

#6楼  2007-04-18 16:34 就喜欢 [未注册用户]
就喜欢这样的压缩包形式,讨厌带安装程序的东西。
  回复  引用    

#7楼  2007-04-18 17:06 zitiger      
能不能提供zip压缩包?公司只能用winzip
  回复  引用  查看    

#8楼  2007-04-18 17:21 嗨嗨 [未注册用户]
楼上能上网居然不去下载真晕-_-
  回复  引用    

#9楼  2007-04-18 17:27 U2U      
qiang
  回复  引用  查看    

#10楼  2007-04-18 17:28 flower.b      
嘻嘻,我也是比较懒的人。要是在做个DotLucene分词类就爽了。
  回复  引用  查看    

#11楼  2007-04-18 20:27 补丁      
@zitiger
.....你们公司牛
  回复  引用  查看    

#12楼  2007-04-18 21:11 工控网 [未注册用户]
下载了,很好用,但是为什么那个测试

“王晓平在1月份滦南大会上说的确实在理” 测成了 “说|的确|实在|理”而不是“说得|确实|在理”????
  回复  引用    

#13楼 [楼主] 2007-04-18 22:14 吕震宇      
@工控网
刚发现这个问题,正在查...
  回复  引用  查看    

#14楼  2007-04-18 23:20 Jeffrey Zhao      
能不能商用?
  回复  引用  查看    

#15楼  2007-04-18 23:38 Wolf Xiao      
“河北理工大学经管学院吕震宇”

为什么不是计算机or软件学院?又不像是学生。。。
  回复  引用  查看    

#16楼  2007-04-19 03:02 ff [未注册用户]
thx................
  回复  引用    

#17楼  2007-04-19 09:13 zitiger      
@补丁
装什么软件公司有规定的,不能随便装的(包括开源软件和免费的),那些商业软件更不用说了。所以像国外的很多下载都是.zip格式的,国内刚好相反。
  回复  引用  查看    

#18楼 [楼主] 2007-04-19 09:32 吕震宇      
@zitiger
目前发现一个问题正在修正,修改好后我会用zip格式发布的。

@Jeffrey Zhao
因为SharpICTCLAS是基于ICTCLAS的,所以根据《自然语言处理开放资源许可证1.0》是不允许商用的。

@工控网
感谢你发现的这个问题,问题出在字符串比较上。为了和ICTCLAS词库兼容,所以不得不在SharpICTCLAS中设计了CCStringCompare方法,但对于汉字与半角字符混排的情况下,比较出了点问题。主要表现在:二元词库检索时词与词之间加了@号,出现了全半角混合,而在词库中“公里/小时”也是全半角混合,程序在对这两种问题的处理上似乎存在问题,我正在做进一步调整。

  回复  引用  查看    

#19楼  2007-04-19 20:35 蛙蛙池塘      
不错,有空用用。
  回复  引用  查看    

#20楼 [楼主] 2007-04-19 22:26 吕震宇      
@工控网
问题出现在CCStringCompare方法中,现在已经解决,请重新下载测试一下。谢谢提出的问题。

@zitiger
我用Zip格式压缩后文件有2.5M,用Rar格式压缩后文件只有1.9M,所以还是选择使用了Rar格式,如果你需要Zip格式的SharpICTCLAS的话,请告诉我你的邮箱,我给你发一个过去。
  回复  引用  查看    

#21楼  2007-04-19 22:45 阿毅 [未注册用户]
@Wolf Xiao
是教师。
  回复  引用    

#22楼  2007-04-23 21:15 jlike [未注册用户]
楼主太棒了!
建议楼主更进一步,增加Lucene.net的接口
  回复  引用    

#23楼  2007-04-24 02:36 朱小牛 [未注册用户]
在测试版中我发现一个问题,WordDictionary.cs的PreProcessing方法有时会抛出异常,抛出异常的时候sWord参数是空的,后来我改了一下,OK了,具体为什么我也不搞不清楚,不知道在1.0版本里有没有修正呢?
if (!string.IsNullOrEmpty(sWord))
{
sWord = sWord.Trim();

//Position for the delimeters
int nType = Utility.charType(sWord.ToCharArray()[0]);

if (sWord.Length != 0)
{
//Chinese word
if (nType == Predefine.CT_CHINESE)
{
//Get the inner code of the first Chinese Char
byte[] byteArray = Utility.String2ByteArray(sWord);
nId = Utility.CC_ID(byteArray[0], byteArray[1]);

//store the word,not store the first Chinese Char
sWordRet = sWord.Substring(1);
return true;
}

//Delimiter
if (nType == Predefine.CT_DELIMITER)
{
nId = 3755;
//Get the inner code of the first Chinese Char
sWordRet = sWord; //store the word, not store the first Chinese Char
return true;
}
}
}

nId = 0;
sWordRet = "";
return false; //other invalid
  回复  引用    

#24楼  2007-04-24 02:43 朱小牛 [未注册用户]
我自己做了一个Lucene.net的接口,以下是代码,大家如果能有更好的实现可不要忘记给我一个email呀!:
我的email是lin2000y@hotmail.com

using System;
using System.Collections.Generic;
using System.Text;
using Lucene.Net.Analysis;

namespace SharpAnalyzer
{
public class SharpAnalyzer : Analyzer
{
private string m_DictPath = "";
private int nKind = 1; //在NShortPath方法中用来决定初步切分时分成几种结果

public string DictPath
{
get
{
return m_DictPath;
}
set
{
m_DictPath = value;
}
}
public int NKind
{
get
{
return nKind;
}
set
{
nKind = value;
}
}
public SharpAnalyzer(string dictpath) : this(dictpath, 5) { }
public SharpAnalyzer(string dictpath, int nkind)
{
this.DictPath = dictpath;
this.NKind = nkind;
}
public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
{
TokenStream result = new SharpTokenizer(DictPath, NKind, reader);
//result = new ShootFilter(result);
return result;
}
}
}
  回复  引用    

#25楼  2007-04-24 02:43 朱小牛 [未注册用户]
using System;
using System.Collections.Generic;
using System.Text;
using Lucene.Net.Analysis;
using System.IO;
using SharpICTCLAS;
namespace SharpAnalyzer
{
public class SharpTokenizer : Tokenizer
{
#region 声明
/// <summary>
/// 静态变量,处理分词,因为加载词库时间教长,所以一次加载就够了
/// </summary>
private static WordSegment wordSegment = null;
/// <summary>
/// 记录分词结果文本
/// </summary>
private string strText = null;
/// <summary>
/// 记录一下处理到第几个词了
/// </summary>
private int iCurrent = -1;
/// <summary>
/// 结束符
/// </summary>
private int iEnd = -1;
/// <summary>
/// 分词结果集
/// </summary>
private List<WordResult[]> resultlist = new List<WordResult[]>();
/// <summary>
/// 开始符
/// </summary>
private int iStart = -1;


private string m_DictPath = "";
private int nKind = 1; //在NShortPath方法中用来决定初步切分时分成几种结果
#endregion
#region 类属性

public int NKind
{
get
{
return nKind;
}
set
{
nKind = value;
}
}
public string DictPath
{
get
{
return m_DictPath;
}
set
{
m_DictPath = value;
}
}

#endregion

#region 构造器
public SharpTokenizer(string dictpath, int nkind)
: this(dictpath, nkind, null)
{
}
public SharpTokenizer(string dictpath, int nkind, TextReader _in)
{
this.DictPath = dictpath;
this.NKind = nkind;

input = _in;
if (wordSegment == null)
{
wordSegment = new WordSegment();
//---------- 订阅分词过程中的事件 ----------
//wordSegment.OnSegmentEvent += new SegmentEventHandler(this.OnSegmentEventHandler);
wordSegment.InitWordSegment(DictPath);
}
strText = input.ReadToEnd();
}
public SharpTokenizer(string dictpath)
: this(dictpath, 1)
{
}
#endregion


public override Token Next()
{
//假如没有开的话就处理一下文本,开始返回词
if (iStart == -1)
{
resultlist = wordSegment.Segment(strText, NKind);
iStart = 0;
iEnd = 0;
iCurrent = 0;
}
//这个返回分词结束的标志null
WordResult[] words = resultlist[0];

if (words.Length == 2 && !string.IsNullOrEmpty(strText.Trim()) && iCurrent == 0)
{
iCurrent++;
string fstr = strText.Trim();
return new Token(fstr, 0, fstr.Length - 1);
}
if (iCurrent >= words.Length - 2) return null;
//记录结束地址

string result = words[iCurrent + 1].sWord;
iEnd = iEnd + result.Length;
//返回一个词
Token token = new Token(result, iStart, iEnd);
//为下一个词做准备
iCurrent++;
iStart = iEnd;
return token;
}
}
}

  回复  引用    

#26楼  2007-04-24 10:30 leo [未注册用户]
为什么我用这个来做分词的时候老是有"索引超出了数组界限"的问题,我把回车都去掉了还这样
  回复  引用    

#27楼  2007-04-25 18:16 jlike [未注册用户]
我碰到了同样的问题。经过vs2005的跟踪,情况出现在WordDictionary.cs的PreProcessing()方法。


int nType = Utility.charType(sWord.ToCharArray()[0]);
if (sWord.Length != 0)

改为
if (sWord.Length != 0)
{
//Position for the delimeters
int nType = Utility.charType(sWord.ToCharArray()[0]);

原因:sWord==""时,如果先调用sWord.ToCharArray()[0]会出现索引异常

不知道sWord.Length!=0和sWord==string.Empty哪个效率更好?


  回复  引用    

#28楼  2007-04-25 21:31 jlike [未注册用户]
简单做了一下测试:分别能达到8K多和9.2K。和《面向大规模信息检索的中文分词技术研究 》一文中的ICTCLAS的测试速度相当,甚至超过。个人认为,在算法方面,C#与C++应该不相上下。

测试环境:IBM笔记本 Intel Core(TM)2 1.83G 内存:1G

测试中内存变化不大。CPU始终在50%~51%
在任务管理器中看到的CPU曲线,一个达到仅100%,另外一个0%~2%。假如双核的两个CPU都能利用起来,速度能快2倍。不知道这样的理解对不对。

看看ICTCLAS3.0的说明:
ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M,是当前世界上最好的汉语词法分析器。

目前SharpICTCLAS应该是基于ICTCLAS1.0版本的吧?
  回复  引用    

#29楼 [楼主] 2007-04-25 21:55 吕震宇      
@朱小牛、@jlike
代码确实存在问题,而且我认为jlike的修改方案更好一些。不过我在分词时还没有遇到类似情况。在提供新版本之前,建议使用jlike的修改方法先“补”一下。

SharpICTCLAS基于FreeICTCLAS,目前除实现N最短路外,还实现了人名、地名识别,但不支持机构名称识别。并且训练用的语料库比较小,好像只使用了1998年1月份的人民日报语料库。ICTCLAS 3.0应当有了很大改观,虽然不提供源码,但相信在效率方面、训练样本集、以及机构名称识别等方面都下了不少功夫。

我手头找到了一份1998年1月份的人民日报语料库,如果按照论文提供的方法,应当可以为SharpICTCLAS也增加机构名称识别功能,不过这需要下很多功夫,最近很忙,暂时没有这方面打算,况且目前SharpICTCLAS中仍有不少代码有待重构。

@leo
不知道你遇到的问题是不是就是上面讨论的问题,可以将出问题的句子贴出来,我好测试一下。
  回复  引用  查看    

#30楼  2007-04-26 09:48 leo [未注册用户]
@吕震宇
具体是哪个字符有问题我也不太清楚,不过基本上有回车都有问题,我一般是拿网页来直接测试,例如www.baidu.com,一般来看是中间的一些style 或是javascript段有问题,去掉它们后部分网页的分词没有问题,但是有些网页即使这样还是会有些问题

如果将标点都事先去掉通常会好些,但是这个我也不十分确定,因为我不知道具体是什么问题造成,仅仅只是通过我的试验给你一些提示,希望能帮助你早日解决问题.^-^



  回复  引用    

我测试了一下www.sowoods.com首页的html源代码,会在span.cs第724行m_nWordPosition[i + 1] = m_nWordPosition[i] + m_sWords[i].Length;

报超出索引的异常。

直接拿网页来测试,首先要经过去html的处理吧。不建议直接对html进行中文分词处理。
  回复  引用    

#32楼  2007-04-27 16:54 leo [未注册用户]
@amber lee zhao
关键是到底是什么原因引起的这种异常,这样才可以决定到底做这样的预处理,我也是做了不少处理后发现情况有所好转,但仍然有不少网页有问题,毕竟html是个不很规范的语言.
  回复  引用    

#33楼  2007-04-27 17:44 amber lee zhao      
@leo
这么多异常,够你处理的了 :)
  回复  引用  查看    

#34楼  2007-05-05 09:53 随风流月      
@吕震宇
成熟后,希望建立开源项目。
  回复  引用  查看    

#35楼  2007-05-07 12:21 jerrywang [未注册用户]
想请教一下吕老师:
我在看生成两两词之间的二叉图表函数BiGraphGenerate的时候
有些地方没能搞清楚,就是dValue的值为什么要那样设置,能推荐点相关资料吗?谢谢

另外,非常感谢你的C#版本的分词系统,最近的有个项目,就用到了这个
希望以后建立开源项目后,能成为你们开发团队的一分子!
  回复  引用    

我想问一下,分词对于文字字数有限制吗?
我使用朱小牛写的分析器在Lucene.net中使用发现,如果将一篇8万多字的word文档文字提出来后进行分词,机子就跟死了一样。我的机子配置是p4 3.66G, 内存2G。如果字数限制,是不是只能把word文档拆成多个文档?那这样用Lucene的话就只能按多个独立的文档对待了吧,比如排序什么的
  回复  引用    

能不能写个 调用 SharpICTCLAS 的 dll 的demo.
现在不想细细去分析,用一下就可以了.
  回复  引用    

#38楼  2007-05-28 23:36 坯子 [未注册用户]
通过spider抓取下来的数据,完全去掉html标记是不太可能的,总是出现 【索引超出了数组界限】 很最痛苦的地方是不清楚是具体哪里出的错误。
还是希望震宇老师在下一版本中提高纠错率,不然一旦一个地方出错,都要重新建立索引,这是很可怕的
  回复  引用    

#39楼  2007-06-13 08:52 阿不      
吕老师,ICTCLAS对噪词如何处理?我看到Data目录中有stopwords.txt,但是好像没有作用呢?
  回复  引用  查看    

#40楼  2007-06-13 12:38 阿不      
又发现一个问题,在处理Word文档时,可能会有一些特殊字符,比如:癳
这个字符在PreProcessing函数处理的时候,返回的nFirstCharId是-60,此时下面的indexTable[nFirstCharId]就会出现IndexOut异常

  回复  引用  查看    

#41楼  2007-06-13 13:49 阿不      
在Span类的
for (i = 1; i < Predefine.MAX_WORDS_PER_SENTENCE && nWordsIndex < pWordItems.Length; i++)
和下面的语句:
m_nWordPosition[i + 1] = m_nWordPosition[i] + m_sWords[i].Length;
有BUG。
Predefine.MAX_WORDS_PER_SENTENCE的值最大为120,那这边i的最大值可以是119,而下面的m_nWordPosition[i + 1] 在i = 119的时候就会有异常。
  回复  引用  查看    

#42楼  2007-06-28 11:51 阿不      
以上两个问题是在文本乱码的情况下出现的。
  回复  引用  查看    

#43楼  2007-07-03 20:43 坯子 [未注册用户]
在Span类里
m_nWordPosition[i + 1] = m_nWordPosition[i] + m_sWords[i].Length;
此处确实存在问题,我发现不仅仅是乱码情况下出现下标越界情况.
明天再努力一天 仔细研究一下Span类 看看是什么地方出的问题.
  回复  引用    

#44楼  2007-07-23 17:04 lovebanyi [未注册用户]
span我是直接把.MAX_WORDS_PER_SENTENCE -1了。条件的地方

sWord.Length!=0 这个net类库里面这样用 它用到判断空类型都是这样用

要是可以在内部就返回 start 和 end 支持 token就好了。。我添加了自己加的结果出问题了
  回复  引用    

#45楼  2007-08-25 02:17 拜博主 [未注册用户]
效率实在不敢恭维。希望前辈继续努力,出一个更加有实际使用价值的分词模块,现在这个速度基本上没有什么用处,速度几乎只有几KB/s,崇敬博主的大无谓的无私精神。
  回复  引用    

#46楼 [楼主] 2007-08-26 10:50 吕震宇      
@拜博主

非常抱歉,效率确实是个问题,我一直没有时间对代码再做什么优化,因为这只是目前我在做的"文本自动分类"项目的一个组成部分而已,而且并没打算把它作成专门分词的组件。最近正准备将“文本自动分类”代码开放用于科研目的,目前基本完成了70%左右的代码工作,待全部完成后再放上来。

在这里还有望各研究ICTCLAS的网友能指出SharpICTCLAS中的效率瓶颈所在,日后有时间再做优化。
  回复  引用  查看    

#47楼 [楼主] 2007-08-26 10:52 吕震宇      
@阿不
@坯子
SPAN类中的东西我几乎没做任何调整,仅仅简单的转换为C#代码而已,所以错误和效率问题肯定不少。
  回复  引用  查看    

#48楼  2007-08-27 04:51 淡淡的 [未注册用户]
支持一下。
  回复  引用    

请问吕老师有无最新的版本推出?
  回复  引用    

#50楼  2007-10-25 15:26 jhtchina      
Good

  回复  引用  查看    

#51楼 [楼主] 2007-10-29 10:03 吕震宇      
@一叶之秋
目前没有新版本,就像上面我说的,只是科研用途而已,将来可能将文本分类代码放上来。
  回复  引用  查看    

#52楼  2007-12-12 12:46 minidxer [未注册用户]
做成CSharp版本的就是你?
  回复  引用    

请教下有没有net1.1版本的?
  回复  引用    

thanks very much
  回复  引用    

从两三年前学设计模式认识到你,希望能够给我个能下载该原代码的地址。。。
orichisonic@hotmail.com
  回复  引用    

#56楼  2008-04-07 16:46 张振东 [未注册用户]
目前在研究搜索引擎的东西
很感谢你改写的东西,支持一下再看
  回复  引用    

出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。

输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。

官方网站 - http://***/yzm_advocr
识别效果怎么样一试就知道 - DEMO下载 http://***/yzm_advocr/advocr.rar

  回复  引用    

#58楼  2008-04-09 08:51 张振东 [未注册用户]
//====================================================================
// 根据汉字的两个字节返回对应的CC_ID
//====================================================================
public static int CC_ID(byte b1, byte b2)
{
//有可能会是乱码 导致汉字的两个字节相减为负数.而负数又会导致使用该值的数组越界.
//所以在这里添加Math.Abs,使求的的绝对值返回给调用的函数
// Peter 20080409
return Math.Abs((Convert.ToInt32(b1) - 176) * 94 + (Convert.ToInt32(b2) - 161));
}
  回复  引用    

删除字典库里面元素的方法好像有问题---WordDictionary 类下面的DelItem()这个方法
  回复  引用    

#60楼  2008-05-25 14:42 missvv [未注册用户]
我发现只有文档中有代码,就肯定会报错,例如:
str='scrollbars,resizable,location,height='+height+',innerHeight='+height+',width='+width+',innerWidth='+width; if(window.screen) var ah=screen.availHeight-30; var aw=screen.availWidth-10; var xc=(aw-width)/2; var yc=(ah-height)/2; str +=',left='+xc+',screenX='+xc; str +=',top='+yc+',screenY='+yc; return window.open(url,name,str);
  回复  引用    

#61楼  2008-05-25 14:42 missvv [未注册用户]
这种问题应该如何解决呢,或者说,怎样过滤这些代码呢?
  回复  引用    

#62楼  2008-05-25 15:08 missvv [未注册用户]
错误我找到了,索引越界的错误大部分和预定义的句子最大长度有关系,只需要把

public const int MAX_WORDS_PER_SENTENCE = 500;

设置的大一点应该就没问题了,不过性能上应该会有损失.

  回复  引用    

#63楼  2008-06-27 16:16 adam0730 [未注册用户]
BiSegment函数中的OnAtomSegment,OnGenSegGraph,OnGenBiSegGraph,OnNShortPath实际作用不大,分词时是不是可以直接注释掉?这样速度要快一些
  回复  引用    

#64楼  2008-06-28 09:13 adam0730 [未注册用户]
吕老师你们文本分类语料库用的哪个?效果如何?
  回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
博客园首页

新闻频道

社区

小组

博问

网摘

闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-04-20 21:33 编辑过
成果网帮您增加网站收入


相关链接: