下午用ICTCLAS5.0分词的时候,发现了以前没注意过的问题。
ICTCLAS5.0的库函数比以前的版本少了,参数也发生了一些变化。
以前分词都是照抄demo,调用ICTCLAS_ParagraphProcess,得到分词并标注好词性的结果字符。然后再从结果字符串中将词语一个个抽取出来。
今天才发现库函数中还有ICTCLAS_ParagraphProcessA这个好东西。该函数返回的是词串结构的数组,省去了调用ParagraphProcess后还要逐个抽取单词的过程。该函数唯一的不便就是,词串结构体tagICTCLAS_Result中没有直接存储切分后的词语,而是保存了词语在源串中的起始位置和长度。不过有了位置和长度,提取词串便再容易不过了。
值得注意的是,用ICTCLAS5分词时,空格被作为标点符号处理。比如对于一个英文句子“Hello world !”
调用ICTCLAS_ParagraphProcess分词的结果是 “Hello/x world/x !/wt”,看似没有处理空格。
而调用ICTCLAS_ParagraphProcessA是可以看到“Hello/x /w world/x /w !/wt”。空格是被当做标点符号处理的。
空格并不是一个具有意义的单位,对于分词后的应用是有影响的。因此,要注意规避。