[bug] 获取统计词时的词性过滤处理有问题

在 demo 中测试 v,n 结果只有 n 的,测试~v,n,vn 结果还是会出现包含这些词性的。

这。。。似乎完全有BUG,稍后查。

[bug] 获取统计词时的词性过滤处理有问题》上有1条评论

  1. hightman

    [quote=’hightman’ pid=’6629′ dateline=’1312967825′]
    在 demo 中测试 v,n 结果只有 n 的,测试~v,n,vn 结果还是会出现包含这些词性的。

    这。。。似乎完全有BUG,稍后查。
    [/quote]

    感谢 magike 网友再度来信指出,目前已经在CVS中作了修正,预计在下一版本同时发布。

    看了一下确实是宏定义的问题

    diff -c -r1.28 -r1.29
    *** libscws/scws.c 5 Aug 2011 04:39:33 -0000 1.28
    — libscws/scws.c 26 Oct 2011 08:41:44 -0000 1.29
    ***************
    *** 1278,1284 ****
    memset(at, 0, cnt); \
    cnt = 0; \
    for (cnt = 0; (word = strchr(xattr, ‘,’)); cnt++) { \
    ! strncpy(at[cnt], xattr, 2); \
    xattr = word + 1; \
    } \
    strncpy(at[cnt], xattr, 2); \
    — 1278,1285 —-
    memset(at, 0, cnt); \
    cnt = 0; \
    for (cnt = 0; (word = strchr(xattr, ‘,’)); cnt++) { \
    ! at[cnt][0] = *xattr++; \
    ! at[cnt][1] = xattr == word ? ‘\0’ : *xattr; \
    xattr = word + 1; \
    } \
    strncpy(at[cnt], xattr, 2); \

    这里是改法,把 strncpy 那句替换成 后面的2行分开扶植就可以了。最后一个 strncpy 不需要替换,因为即便只有一个字节也会有\0结尾。

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注