java使用ac算法实现高性能关键词高亮
2021-03-29 09:25
标签:amp pre rdma lda 位置 ext pac ast util 标记出一句话中所有关键词 难点:需要考虑单词重叠问题(overlap),例如“苹果手机”同时包含两个关键词,只标记一次。 pom文件引入hanlp,使用其中ac算法 java使用ac算法实现高性能关键词高亮 标签:amp pre rdma lda 位置 ext pac ast util 原文地址:https://www.cnblogs.com/bincoding/p/13613492.html需求背景
inpu:我想买苹果手机,请问哪里可以买苹果手机
keyword:"苹果", "苹果手机", "哪里"
result:我想买[[苹果手机]],请问[[哪里]]可以买[[苹果手机]]
10w条耗时:41ms思路
3.1 如果前一个为1,后一个为0,则插入“]]”;
3.2 如果前一个为0,后一个为1,则插入“[[”;代码
package com.bincoder.StringUtils;
import com.hankcs.hanlp.collection.AhoCorasick.AhoCorasickDoubleArrayTrie;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.TreeMap;
public class KeywordMatch {
/**
* 构建ac自动机
*/
public static AhoCorasickDoubleArrayTrie
上一篇:Python基础
文章标题:java使用ac算法实现高性能关键词高亮
文章链接:http://soscw.com/index.php/essay/69451.html