ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5095|回复: 5

[求助] 标题批量分词取词工具

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-3 16:35 | 显示全部楼层 |阅读模式
最近在帮别人做网站时想从标题中批量提取关键词,上网找了好久没有合适的,于是自己动手做了一个, 原理是从标题上第1个字开始每隔1个字截取2个字做为词,然后在词典里查询有没有这个,有就显示;同理截取3字词/4字词,最后把显示出来的词连接起来就得到需要的Tags.但是我这个是用查询做的,如果把所有的2字、3字、4字词全查出来就会显示“查询过于复杂”,这个样品只查了5个词就比较慢了,所以发上来请大侠给改改,算是抛砖引玉了! (为了上传已经把词典删除只剩80行了,原词典是盘古中文分词工具中附带的) 关键词提取.zip (28.68 KB, 下载次数: 151)


TA的精华主题

TA的得分主题

发表于 2013-6-4 12:28 | 显示全部楼层
本帖最后由 wuxiang_123 于 2013-6-4 23:40 编辑

最大支持10个关键字,如需扩展,请在MAX部分进行扩展,隐藏内容,为留给后来者思考,只提供一种思路,非最佳,晚些再取消隐藏。。
  1. SELECT ID,LEFT(合并,LEN(合并)-1) AS 关键字组合 FROM
  2. (SELECT ID,MAX(IIF(次序=1,关键字))&MAX(IIF(次序=2,关键字))&MAX(IIF(次序=3,关键字))&MAX(IIF(次序=4,关键字))&MAX(IIF(次序=5,关键字))&MAX(IIF(次序=6,关键字))&MAX(IIF(次序=7,关键字))&MAX(IIF(次序=8,关键字))&MAX(IIF(次序=9,关键字))&MAX(IIF(次序=10,关键字)) AS 合并 FROM
  3. (SELECT A.ID, A.词典&',' AS 关键字, SUM(1) AS 次序
  4. FROM (SELECT 目标.ID,词典,目标 FROM
  5. 词典, 目标
  6. where instr(目标,词典))  AS A, (SELECT 词典, 目标 FROM
  7. 词典, 目标
  8. where instr(目标,词典))  AS B
  9. WHERE A.目标=B.目标 AND A.词典>=B.词典
  10. GROUP BY A.ID, A.词典, A.目标)
  11. GROUP BY ID)
复制代码
自定义函数的参考咱家是猫版主的帖子:
http://club.excelhome.net/forum.php?mod=viewthread&tid=972291&page=1#pid6657042

完成效果:
未命名.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-4 16:53 | 显示全部楼层
谢谢 wuxiang_123 大侠!
不过你写的查询也很慢,我的电脑配置还不错,可是反应不过来,(i7+8g内存+独显+7500转的硬盘,etc.)
先把附件下下来慢慢学习.
再次感谢!

TA的精华主题

TA的得分主题

发表于 2013-6-4 23:41 | 显示全部楼层
本帖最后由 wuxiang_123 于 2013-6-4 23:47 编辑
53645111 发表于 2013-6-4 16:53
谢谢 wuxiang_123 大侠!
不过你写的查询也很慢,我的电脑配置还不错,可是反应不过来,(i7+8g内存+独显+7500转 ...
  1. SELECT ID,LEFT(合并,LEN(合并)-1) AS 关键字组合 FROM
  2. (SELECT ID,MAX(IIF(次序=1,关键字))&MAX(IIF(次序=2,关键字))&MAX(IIF(次序=3,关键字))&MAX(IIF(次序=4,关键字))&MAX(IIF(次序=5,关键字))&MAX(IIF(次序=6,关键字))&MAX(IIF(次序=7,关键字))&MAX(IIF(次序=8,关键字))&MAX(IIF(次序=9,关键字))&MAX(IIF(次序=10,关键字)) AS 合并 FROM
  3. (SELECT A.ID, A.词典&',' AS 关键字, SUM(1) AS 次序
  4. FROM (SELECT 目标.ID,词典 FROM
  5. 目标,词典
  6. where instr(目标,词典))  AS A,
  7. (SELECT 词典, 目标.ID FROM
  8. 目标, 词典
  9. where instr(目标,词典))  AS B
  10. WHERE A.ID=B.ID AND A.词典>=B.词典
  11. GROUP BY A.ID, A.词典)
  12. GROUP BY ID)
复制代码
将次序换一下试试。你的实际数据有多少。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-5 19:44 | 显示全部楼层
这两天有点忙!
谢谢您的帮助!
字典有14万行,要提取的数据就几拾行.

我想说明几点:
1,做网站的人电脑配置达到我这程度的不太多,
2,真正是做纯采集站的人数据可能都有几拾万条,如果用这种方法再好的电脑也会慢,就如同人工在一本厚书里查几个特定的字,
3,"标题批量分词取词工具"就拿这个标题演示一下我的提词思路
    2字的截9次: 标题/题批/批量/量分/分词/词取/取词/词工/工具  
    3字的截8次:标题批/题批量/批量分/量分词/分词取/词取词/取词工/词工具
    4字的截7次:标题批量/题批量分/批量分词/量分词取/分词取词/词取词工/取词工具
一共24次,像这种取词,然后在词典里查这个词是否存在(词典里的记录根据需要会删除一些无关的词,以保证最终的结果更有用),存在就显示,并连接起来用逗号分隔.
4,是不是用VBA能更好的解决这种问题?(比如数组、遍历等等,目前仅会用access的表、查询、窗体这些基本的东西。)

再次感谢版主的支持!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-7 06:23 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-29 13:55 , Processed in 0.023520 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表