503 Star 2.2K Fork 625

GVP狮子的魂 / jcseg

 / 详情

请问能否根据自定义词库提取关键字

已完成
创建于  
2017-09-14 02:15

假设我有一个 Tag 标签列表 (10000+)

我想查询一篇文章是否存在标签列表中的某些标签 (只要有匹配就输出)

请问能否将标签列表定义为词库,然后匹配出来所有的存在的标签;这个功能主要用于文章的分类。

例如一篇文章同时有 Linux,CentOS,Linux运维,MySQL等关键字,那么他的标签就是:Linux,CentOS,Linux运维,MySQL

如果大家有相似的,高性能的开源扩展库,也可以推荐一下。主要用于提取指定标签列表的标签 (这个标签列表有点多)。

我的想法是先进行文章分词,然后高速检索分词的结果是否在标签列表中,我想看看大家的想法。

评论 (6)

zhangtianjie 创建了任务
zhangtianjie 更新了任务
zhangtianjie 更新了任务
  1. 将你的标签按照jcseg词库的规则弄成词库,使用CJK_WORD分类。
  2. 将jcseg自带的词库移除。
  3. 使用jcseg的检测模式切分,切分出来的词条全部是你自定义词库中的,否则不会分出任何结果。

jcseg检测模式只会切分出词库中存在的词条。

@狮子的魂 谢谢,我先用实例研究研究;因为我的分析中可能无法同时切分出来 Linux & Linux运维;如以下句子:《Shell 是 Linux运维 必不可少的脚本语言》,这篇文章同时需要:Linux,Shell,Linux运维 三个标签;而且因为有大小写和空格问题,如《Shell 是 linux 运维 必不可少的脚本语言》。

@狮子的魂 我今天上午使用了 jcseg-server-2.1.1.jar (以前下载的) 进行了测试

第一步:修改了配置
将 jcseg_tokenizer master algorithm 定义为 3

第二步:定义了词库

CJK_WORD
linux/n/linux/null
centos/n/centos/null
linux运维/n/linux yun wei/null
mysql/n/mysql/null
shell/n/shell/null
脚本语言/n/jiao ben yu yan/null
操作系统/n/cao zuo xi tong/null

第三步:测试了短语
Shell是Linux运维中必不可少的脚本语言,CentOS是一款伟大的操作系统

返回结果:
shell, linux运维, 脚本语言, centos, 操作系统

经过测试,发现:

  1. 英文大小写一律返回的是小写
  2. 文本【linux运维】无法二次切分
  3. 如果存在 【linux 运维】 无法有效识别

以上问题我来处理方案极其差劲,性能极差,您有更好的处理方案吗?(我的方案是在处理前和处理后进行模糊匹配,合并,分割等)

1,Jcseg会把英文全部转换成小写,也就意味着原文的大小写不影响切分。

2,jcseg只对输入流进行分词,遇到空白那肯定是词的自然分隔符,如果你要识别“linux 运维”这种,你可以想将原文的空白替换掉,这在于标签提取的场景是合理的。

3,jcseg的检测模式不会做二次切分,对于组合词条你可以二次把中文和英文分开即可。

@狮子的魂 跟我的想法一样,我原来就是想处理前处理和处理后在处理。谢谢了

zhangtianjie 关闭了任务

只能这么处理了,丢在分词器里面处理,也不属于一个分词器该做的事儿!

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
5187 lionsoul 1578914315
Java
1
https://gitee.com/lionsoul/jcseg.git
git@gitee.com:lionsoul/jcseg.git
lionsoul
jcseg
jcseg

搜索帮助