北京门户网站制作费用,wordpress边栏插件,designer怎么做网站,为传销做网站Friso是使用C语言开发的一款高性能中文分词器#xff0c;使用流行的mmseg算法实现。完全基于模块化设计和实现#xff0c;可以很方便的植入到其他程序中#xff0c;例如#xff1a;MySQL#xff0c;PHP等。同时支持对UTF-8/GBK编码的切分。
官方地址#xff1a;https://…Friso是使用C语言开发的一款高性能中文分词器使用流行的mmseg算法实现。完全基于模块化设计和实现可以很方便的植入到其他程序中例如MySQLPHP等。同时支持对UTF-8/GBK编码的切分。
官方地址https://code.google.com/p/friso/
Demo
#include src/friso.h
//#include src/friso_API.h //加不加都不影响该demo
//#include src/friso_ctype.h//加不加都不影响该demo
int main()
{/* 第一步申明三个对象 */friso_t friso; /* Friso 分词对象 */friso_config_t config; /* Friso 配置对象 */friso_task_t task; /* Friso 任务对象 *//* 第二步初始化相应的对象 */friso friso_new();config friso_new_config();task friso_new_task();/* 从friso.ini配置文件中初始化 friso */if (friso_init_from_ifile(friso, config, friso.ini) ! 1){puts(friso 初始化失败);}/** 切分模式默认来自friso.ini中的设置* 可以通过friso_set_mode函数自定义切分模式(简易复杂检测模式)* 简易模式__FRISO_SIMPLE_MODE__* 复杂模式__FRISO_COMPLEX_MODE__* 检测模式__FRISO_DETECT_MODE__* 例如这里设置为使用复杂模式分词*/friso_set_mode(config, __FRISO_COMPLEX_MODE__);/* 第三步设置分词内容 */char *s 本人英文名Eric,自从16岁开始我学习各种编程语言目前已经初步掌握了C语言和C另外还学习了python语言和JavaScript。\
我喜欢的电影有《肖生克的救赎》 、《西红柿首富》。我喜欢的书籍有《三国演义》、《平凡的世界》还有《人性的弱点》。我有个小目标就是3年内赚到1000万。;friso_set_text(task, s);/* 第四步获取分词内容 */while ((friso_next(friso, config, task)) ! NULL){/*task存储了分词的结果task-hits-word: 词条内容task-hits-offset: 词条在原始文本的offsettask-hits-length: 词条的长度(字节数)task-hits-rlen: 词条的真正字节数(Friso转换后的长度-字节数)*/printf(%s [%d, %d]\n, task-hits-word,task-hits-offset, task-hits-length);}/* 第五步释放对象 */friso_free_task(task);friso_free_config(config); // 添加这行后面的代码将不再执行编译时没问题运行时出错原因还没找到friso_free(friso);/*备注第三步和第四步可以反复调用使用friso_set_setx重置分词内容即可。对于多线程环境不同线程共享friso和config对象需要分别初始化task使用对象*/puts(end\n);getchar();
}
问题
程序问题
friso_set_mode(config, FRISO_COMPLEX_MODE); 报错结构 “” 没有字段 “FRISO_COMPLEX_MODE”
解决办法按住ctrl点击鼠标左键定位到该函数
#define friso_set_mode( friso, mode )\
do {\friso-mode mode;\
} while (0)明显这里写错了成员变量名和参数名相同肯定不对。在friso.ini配置文件中friso.mode 2 这个成员变量名mode是固定值。
修改参数名解决问题
#define friso_set_mode( friso, mode_param)\
do {\friso-mode mode_param ;\
} while (0)
中文分词不正确
打开配置文件 friso.inifriso.charset值改为 1friso.lex_dir值改为 D:/friso/dict/GBK/
文件编译
我把项目放在 D:\friso上面的代码放在项目目录下的test.c文件打开D:\friso\lib\win32\vs把friso.dll也放在项目目录下。 用vs的32位编译器编译开始菜单找到 Visual Studio 2022 文件夹点击 x86 Native Tools Command Prompt for VS 2022 定位命令cd /d D:\friso 编译命令cl /I lib\win32\vs test.c lib\win32\vs\friso.lib
相关资料
Friso分词接口一个完整的demoC语言调用friso库实现中文分词器