• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 如何高效的判断一段文本中是否包含一个字典中的某个词?

如何高效的判断一段文本中是否包含一个字典中的某个词?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了高效字典,大数判断素数高效算法,字典文本,英语字典文本,判断文本框是否为空等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何高效的判断一段文本中是否包含一个字典中的某个词?
描述:

已经有一个关键词的字典(很大),找出任意一段文本中存在的字典中的关键词


解决方案1:

AC自动机比较靠谱吧……

解决方案2:

如果字典非常大,遍历字典匹配是不行的,hashset花费的空间也非常大。

  1. 字典保存上,lz可以选择用trie树。这是建立在分词的基础上的,分完词之后,看词是否在trie树中即可(和hashset类似的方法)。

  2. 直接用AC自动机之类的算法做多串匹配。这样的缺陷是某些不是词的相邻字会被匹配上呢。

trie一般只是对前缀作了压缩。如果lz要求高的话,可以尝试最小化该自动机(trie是一个无环自动机)。

解决方案3:

  • 遍历字典,把每个关键词都拿到文本中查一下,看是否存在,可以用一些高效的文本匹配算法,如KR, KMP, BM, FastSearch

  • 字典用HashSet存储,对要检查的文本切词,比如已知关键词字典最短的是两个中文字,最长的是四个字,那就按2字、3字、4字各做一遍切词得到三套切词结果(为降低复杂度,不必考虑语义和词性)。然后遍历切词结果,把每个切出来的词拿到HashSet里查找一下在不在

  • 上述两种方案的合体:按方案2的描述,对待检查文本切词,切词结果做成HashSet(就是三套切词结果的HashSet再求个并集,是不是有点像倒排索引),然后遍历关键词字典,对每个关键词,在HashSet中查找是否存在

根据字典和文本的数据规模确定采用哪种方案,比方说:

  • 10万个关键词,最短的2个字,最长的3个字,待检查文本是140字的微博,方案2合适
  • 1万个关键词,最短1个字,最长5个字,待检查文本是2万字的论文,方案3或者1合适


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何高效的判断一段文本中是否包含一个字典中的某个词?

相关文章

  • 2017-06-07 sublimectrl+B执行python后怎么关闭?
  • 2017-06-07 《flaskweb开发》一书,数据库中多对多关系的实现问题?
  • 2017-06-07 python安装模块树莓派3B安装Python-dev安装不了
  • 2017-06-07 (python)pyqtdeploy部署多文件项目时,产生的exe运行错误。
  • 2017-06-07 python中文正则表达式如何过滤不适合文件夹命名的字符
  • 2017-06-07 if==是什么意思啊?
  • 2017-06-07 Jboss控制台总是出现下面错误,程序提交数据有时提交不上去
  • 2017-06-07 python爬虫Python死循环处理不断输出的日志
  • 2017-06-07 JBPM入门问题Helloworld失败
  • 2017-06-07 pythonflaskblueprint这个问题该怎么解决

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 我想学习Python谁能给我一份KomodoIDE的汉化吗,很急
    • 继承字典类,实例初始化自动将str转换成了list
    • C++正则匹配中文乱码
    • (python)关于leetcode刷题的顺序与资源?
    • 深圳市安居型商品房建设和管理暂行办法求个商家和商品对应关系的算法
    • 邀请用户注册送流量还管用吗?为什么我邀请人注册了但在后台看还是0个人?
    • (python)怎么通过公司公用wifi,获取女同事的QQ号;回答!通过wifi入侵?公网IP挂到学校的QQ公众号的IP段里去
    • 北京创业团队诚寻pythoner入伙,帝都三环内SOHO办公,打造现金牛产品
    • Request.Cookies(python)requestspost问题
    • 求大神解释下面的汇编语言是什么意思

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有