关键词查找,正向匹配和for循环比较

原创 2013年12月04日 14:41:29

需求:从给定字符串中查询出是否含有关键词


正向匹配:

public boolean matches(String str)
    {
        if (StringUtils.isBlank(str)||wordSet.size()==0) {//wordSet:关键词集合
            return false;
        }
        //wordMaxLength:关键词中最长一个的长度
        for (int pos = 0,size=str.length(); pos < size; pos++) 
        {
            String strFrag=str.substring(pos, size);
            
            int sizeNeedToMatch=wordMaxLength<=
                             strFrag.length()?wordMaxLength:strFrag.length();
            for (int i = 1; i <= sizeNeedToMatch; i++) 
            {
                String strToMatch=strFrag.substring(0, i);
                
                if (wordSet.contains(strToMatch)) {
                    return true;
                }
            }
        }
        
        return false;
    }

for 

for (String k : kws){
    	if(str.contains(k))return true;
 }

关键词在最后测试结果:

关键词数量:219
最大正向匹配:1945580ns
for indexof:193557ns


关键词在最前测试结果:

关键词数量:219
最大正向匹配:32504ns
for indexof:183582ns


考虑到在很多文档中过滤,关键词又少,还是使用for循环吧。

用正向和逆向最大匹配算法进行中文分词(续)

本文是用正向和逆向最大匹配算法进行中文分词
  • u010189459
  • u010189459
  • 2014年07月15日 23:02
  • 1266

python 实现机械分词(1)-正向最大匹配算法

词语是自然语言处理中重要的知识载体和基本操作单元, 但是中文里词与词之间没有很明显的标记,它们都是连续的字符串,所以文本处理的第一步是怎样进行中文分词。分词是添加合适的显性的词语边界标志使得所形成的词...
  • lalalawxt
  • lalalawxt
  • 2017年07月20日 09:43
  • 1087

中文分词——正向最大匹配法

中文分词应用很广泛,网上也有很多开源项目。我在这里主要讲一下中文分词里面算法的简单实现,废话不多说了,现在先上代码 package com; import java.util.ArrayList...
  • xiaoyeyopulei
  • xiaoyeyopulei
  • 2014年05月07日 11:04
  • 6876

分词算法的python实现(正向最大匹配法)

正向最大匹配法又称MM法,其基本思想是: 假设分词词典中的最长词由i个汉字字符组成,则 用被处理文档的当前字符串中前i个字作为匹配 字段查找词典。若词典中存在这样一个字词,则 匹配成功,匹配字段作为一...
  • AimeeLee01
  • AimeeLee01
  • 2015年10月03日 22:29
  • 939

python 中文分词:正向最大匹配

python版正向最大匹配
  • qq_32872433
  • qq_32872433
  • 2017年07月15日 11:21
  • 363

DNS的配置与正向查找的简单操作

大家好,这里介绍的是在虚拟机上的windows server  2003的DNS服务器的配置 第一步:确保自己的电脑能够连接到网络,在虚拟机上面可以先自动获取IP地址 ...
  • Tech_monkey
  • Tech_monkey
  • 2015年05月24日 11:18
  • 1689

Python实现基于最大长度的正向最大值匹配算法

正向最大值匹配算法不能处理数字和字母问题,这里添加对数字和字母的处理,连续的数字和字母作为一个词进行处理,但是还会出现一些问题,例如出现英文连接符的问题,例如有些手术名字为英文和中文的组合(手部V-Y...
  • baidu_15113429
  • baidu_15113429
  • 2017年11月28日 10:39
  • 90

循环有序数组的查找笔记

一个循环有序数组(如:3,4,5,6,7,8,9,0,1,2),不知道其最小值的位置,要查找任一数值的位置。要求算法时间复杂度为log2(n)。 循环有序数组的性质: 1.将一个循环有序数组...
  • philosophyatmath
  • philosophyatmath
  • 2016年02月22日 22:03
  • 1428

js处理文章内容匹配关键词,关键词高亮显示效果的实现

js处理富文本框中关键词高亮效果展示 最近在处理舆情文章的数据,提及的需求中涉及舆情要素以及公司名称需要在文章内容中高亮显示,以下方法使用js处理文章实现关键词的高亮显示 1、展示实现效果 ...
  • bjlf_1989
  • bjlf_1989
  • 2015年08月31日 15:56
  • 3064

中文分词基础原则及正向最大匹配法、逆向最大匹配法、双向最大匹配法的分析

分词算法设计中的几个基本原则: 1、颗粒度越大越好:用于进行语义分析的文本分词,要求分词结果的颗粒度越大,即单词的字数越多,所能表示的含义越确切,如:“公安局长”可以分为“公安局长”、“公安局长”、...
  • jusang486
  • jusang486
  • 2014年07月08日 11:15
  • 2275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关键词查找,正向匹配和for循环比较
举报原因:
原因补充:

(最多只允许输入30个字)