中文文档如何去掉停用词
已经进行过分词,却卡在去掉停用词上…哪位大神有c代码或者方法,希望能指教。万分感谢!
我只是搜到曾经有人说去停用词方法可以采用:
1.我们要有一个停用词表,可以网上下一个
2.把停用词表读入一个字符串数组string stop[100];
3.把要处理的字符串,以单个字符的形式读到一个char*指向的空间里,当读到不是字母的就停止,这样这个char*指向的空间里就存下了一个单词
4.把这个char *指针赋给一个string str变量,让这个str与每一个stop[i]比较。
5.如果不是停用词就把这个单词追加到另一个字符串string str1里,
6.如果是停用词就不管它了
7.把刚才读到的字符追加到str1里
……
……
奈何自己编码能力太次,望求教!
------解决思路----------------------
一个简易的例子:
int main(void)
{
int i, n;
FILE *fstop, *fs, *fd;
if (NULL == (fstop = fopen("stop.txt", "r"))) return 1;
if (NULL == (fs = fopen("src.txt", "r"))) return 1;
if (NULL == (fd = fopen("des.txt", "w"))) return 1;
char stop[100][30]; //100个停用词,够吗?
char buf[256]; //一行255个字符,够吗?
//读入停词表
n = 0;
while (1)
{
if (NULL == fgets(buf, 256, fstop)) break;
if ('\n' == buf[0]) continue; //空行
buf[strlen(buf) - 1] = 0; //去掉'\n'
strcpy(stop[n++], buf);
}
fclose(fstop);
while (1)
{
if (NULL == fgets(buf, 256, fs)) break;
if ('\n' == buf[0]) continue; //空行
buf[strlen(buf) - 1] = 0; //去掉'\n'
for (i = 0; i
{
char *p = buf;
int len = strlen(stop[i]);
while (p = strstr(p, stop[i]))
{
memmove(p, p + len, strlen(p + len) + 1);
}
}
fprintf(fd, "%s\n", buf);
}
fclose(fs);
fclose(fd);
return 0;
}
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。