...cws_get_tops(s,1000,NULL); 而下面判断却没有包含这个词 if( scws_has_word(s,"*")) //"*"用NULL代替也不行 另外我用函数scws_set_ignore(s,1),怎么去不掉文本中的空格等特殊字符[hr] 我用的版本是scws-1.1.2
你可以正常分词试试,然后打印一下词的 attr 属性到底是不是* 号 我估计是不是你自定义词典先于默认词典加载,导致attr属性被覆盖了?
[quote='hightman' pid='3651' dateline='1280386137'] 关于has_word, 不是很明白你的意思, has_word 用于检测当前文本中是否包含这些属性的词。 scws_get_words 是按词性返回分词结果,标点的词应该默认应该是 un 或 # 之类可以自行排除。 [/quote] ...
... [/quote] 但是这跟文档的描述有出入啊。 [quote] ·int scws_has_word(scws_t s, char *xattr); 描述:判断text中是包括指定的词性的词汇。参数 xattr 用来描述要排除或参与的统计词汇词性, 多个词性之间用逗号隔开。当以~开头时表...
[quote]int scws_has_word(scws_t s, char *xattr) { int off, cnt, xmode = SCWS_NA; scws_res_t res, cur; char *word; word_attr *at = NULL; if (!s || !s->txt) return 0; __PARSE_XATTR__; // save the offset. (cnt -> return_value) off = s->off; ...
[quote='backluck' pid='3650' dateline='1280380226'] [quote]int scws_has_word(scws_t s, char *xattr) { int off, cnt, xmode = SCWS_NA; scws_res_t res, cur; char *word; word_attr *at = NULL; if (!s || !s->txt) return 0; __PARSE_XATTR__; // save th...
...,查看了一下源代码,的确有一个地方没有free。在 scws.c/scws_has_word()函数中: __PARSE_XATTR__; // 这个宏里有一个内存申请:at = (word_attr *) malloc(cnt); 申请的内存没有释放。应该在scws_has_word()函数最后添加一句:free(at); 即可。 ...
正如之前的帖子描述,scws_has_word这个函数可以用来检测非法词。当前我的项目中禁止词是放在数据库里面(为了方便增删改),如果每次加载词典都要把禁止词写到临时文件,然后添加,觉得有点过于麻烦。是否可以提供添加...
...backluck' pid='3647' dateline='1280312360'] 正如之前的帖子描述,scws_has_word这个函数可以用来检测非法词。当前我的项目中禁止词是放在数据库里面(为了方便增删改),如果每次加载词典都要把禁止词写到临时文件,然后添加,觉得...
..._test.php, 精选了一些岐义较多的语句进行测试。 4) 修正 scws_has_word() 的一处内存汇露 (感谢lauxinz) 5) 修改调试模式的编译选项,去除-O2避免源码和代码无法对应。 (感谢lauxinz)