91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探索AC自動(dòng)機(jī):多關(guān)鍵詞搜索的原理與應(yīng)用案例

京東云 ? 來(lái)源:jf_75140285 ? 作者:jf_75140285 ? 2024-08-26 15:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

目前,大多數(shù)自由文本搜索技術(shù)采用類(lèi)似于Lucene的策略,通過(guò)解析搜索文本為各個(gè)組成部分來(lái)定位關(guān)鍵詞。這種方法在處理少量關(guān)鍵詞時(shí)表現(xiàn)良好。但當(dāng)搜索的關(guān)鍵詞數(shù)量達(dá)到10萬(wàn)個(gè)或更多時(shí),這種方法的效率會(huì)顯著下降,尤其是在需要與詞典進(jìn)行詳盡對(duì)比的場(chǎng)景中。本文將介紹的Aho-Corasick(AC)自動(dòng)機(jī)作為多模式匹配中的經(jīng)典算法,不僅能夠處理大規(guī)模文本數(shù)據(jù),還能確保搜索過(guò)程的實(shí)時(shí)性和準(zhǔn)確性。

AC自動(dòng)機(jī):文本搜索的革命性工具

AC自動(dòng)機(jī)可以被形象地比喻為一個(gè)超級(jí)找詞機(jī)器。想象你手頭有一本內(nèi)容繁多的書(shū)籍和一份包含多個(gè)詞語(yǔ)的列表,你的任務(wù)是快速找出所有這些詞語(yǔ)在書(shū)中出現(xiàn)的位置。如果采用傳統(tǒng)方法,即逐個(gè)詞進(jìn)行查找,工作量將會(huì)非常巨大。而AC自動(dòng)機(jī)通過(guò)構(gòu)建一種特殊的樹(shù)狀結(jié)構(gòu)——前綴樹(shù)或Trie,來(lái)極大地提升搜索效率。

AC自動(dòng)機(jī)構(gòu)建與搜索機(jī)制

構(gòu)建前綴樹(shù)(Trie)

AC自動(dòng)機(jī)首先會(huì)根據(jù)所有關(guān)鍵詞構(gòu)建一個(gè)前綴樹(shù)。這種樹(shù)狀結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)代表一個(gè)字母,并且每個(gè)字母都指向下一個(gè)可能的字母,從而形成一個(gè)連續(xù)的路徑,表示一個(gè)或多個(gè)關(guān)鍵詞的前綴

wKgZombMNQGAe6CtAAJdkzdNHVM646.png

圖片來(lái)源網(wǎng)絡(luò)

失配指針(Fail指針)

在搜索過(guò)程中,如果當(dāng)前路徑上無(wú)法找到匹配的關(guān)鍵詞,AC自動(dòng)機(jī)會(huì)利用失配指針進(jìn)行快速回溯。這些指針預(yù)先設(shè)置在樹(shù)的每個(gè)節(jié)點(diǎn)上,指向其他可能的匹配路徑,從而避免了從頭開(kāi)始搜索的低效性

wKgaombMNQKAf17aAANaRPEVx0o347.png

圖片來(lái)源網(wǎng)絡(luò)

實(shí)時(shí)搜索與高效報(bào)告

AC自動(dòng)機(jī)在讀取文本的同時(shí),能夠快速地遍歷前綴樹(shù)結(jié)構(gòu)。一旦發(fā)現(xiàn)關(guān)鍵詞出現(xiàn)在文本中,它能夠立即報(bào)告這個(gè)詞及其出現(xiàn)的位置。這種能力使得AC自動(dòng)機(jī)能夠一次性高效完成大量關(guān)鍵詞的搜索任務(wù)

wKgZombMNQKAB0zbAAO7POsBhxw862.png

圖片來(lái)源網(wǎng)絡(luò)

算法核心組件與復(fù)雜度

核心組件:

?goto(轉(zhuǎn)跳):每個(gè)遇到的字符都會(huì)被提交給goto結(jié)構(gòu)中的狀態(tài)對(duì)象,以確定新的當(dāng)前狀態(tài)

?fail(失敗轉(zhuǎn)移):如果沒(méi)有找到匹配狀態(tài),算法會(huì)觸發(fā)fail并回溯至深度更淺的狀態(tài),從那里繼續(xù)搜索

?output(輸出):每當(dāng)達(dá)到與整個(gè)關(guān)鍵詞相匹配的狀態(tài)時(shí),該狀態(tài)會(huì)被發(fā)送到輸出集合中,完成掃描后即可讀取這些匹配項(xiàng)

時(shí)間復(fù)雜度:

Aho-Corasick算法的時(shí)間復(fù)雜度為O(n),其中n是文本的長(zhǎng)度。這意味著無(wú)論提供多少關(guān)鍵詞,搜索的性能都將呈線性下降,與關(guān)鍵詞的數(shù)量無(wú)關(guān)。

AC自動(dòng)機(jī)的應(yīng)用

AC自動(dòng)機(jī)在多種場(chǎng)景下都能發(fā)揮重要作用,包括:

?在文本中查找并鏈接或突出顯示關(guān)鍵詞,提高信息的可檢索性

?為純文本添加語(yǔ)義,使文本內(nèi)容更加豐富和有層次

?檢查文本中的語(yǔ)法錯(cuò)誤,通過(guò)與詞典的對(duì)比來(lái)識(shí)別和糾正錯(cuò)誤

應(yīng)用案例:使用Aho-Corasick算法來(lái)識(shí)別和高亮HTML文本中的關(guān)鍵詞

Java程序?qū)⒀菔救绾问褂肁ho-Corasick自動(dòng)機(jī)庫(kù)來(lái)搜索和高亮HTML文本中的關(guān)鍵詞。程序首先構(gòu)建一個(gè)自動(dòng)狀態(tài)機(jī),該狀態(tài)機(jī)被訓(xùn)練識(shí)別一系列中文關(guān)鍵詞。然后,程序?qū)⑻幚鞨TML文檔,查找這些關(guān)鍵詞的出現(xiàn),并用標(biāo)簽將它們包裹起來(lái),以實(shí)現(xiàn)加粗顯示的效果。

第一步:Maven依賴(lài)配置,引入Aho-Corasick自動(dòng)機(jī)庫(kù)


    org.ahocorasick
    ahocorasick
    0.6.3

第二步:代碼實(shí)現(xiàn)

public class HighlightKeywordsInHtml {

   public static void main(String[] args) {
        // 定義HTML內(nèi)容的字符串,包含了南京大學(xué)的介紹
        String htmlContent = createHtmlContentForNanjingUniversity();
        // 創(chuàng)建Aho-Corasick Trie的構(gòu)建器實(shí)例
        Trie trie = buildAhoCorasickTrie();
        // 使用Trie實(shí)例處理HTML文本,獲取匹配的Token集合
        Collection tokens = trie.tokenize(htmlContent);
        // 使用StringBuilder構(gòu)建最終的HTML字符串,用于輸出高亮的關(guān)鍵詞
        StringBuilder html = new StringBuilder();
        html.append("
"); // 遍歷Token集合 for (Token token : tokens) { // 如果Token匹配關(guān)鍵詞,則添加標(biāo)簽以實(shí)現(xiàn)加粗效果 if (token.isMatch()) { html.append(""); } // 添加Token對(duì)應(yīng)的文本片段 html.append(token.getFragment()); // 如果Token匹配關(guān)鍵詞,結(jié)束標(biāo)簽 if (token.isMatch()) { html.append(""); } } // 完成HTML字符串的構(gòu)建 html.append(""); // 打印最終的HTML字符串,其中包含高亮顯示的關(guān)鍵詞 System.out.println(html); } private static String createHtmlContentForNanjingUniversity() { // 此處添加創(chuàng)建南京大學(xué)HTML內(nèi)容的方法實(shí)現(xiàn) String speech = """ 南京大學(xué)簡(jiǎn)介 body { font-family: "微軟雅黑", "宋體", Arial, sans-serif; line-height: 1.6; color: #333; } .university-intro { text-align: justify; margin-bottom: 2em; padding: 1rem; background-color: #f5f5f5; border-radius: 5px; } 南京大學(xué):百年名校,學(xué)術(shù)卓越 南京大學(xué),簡(jiǎn)稱(chēng)“南大”,位于中國(guó)江蘇省南京市,是中國(guó)最頂尖的高等學(xué)府之一,擁有百年的辦學(xué)歷史和深厚的文化底蘊(yùn)。作為中國(guó)教育部直屬的全國(guó)重點(diǎn)大學(xué),南大以其卓越的學(xué)術(shù)成就和教育質(zhì)量聞名于世。 南京大學(xué)以其強(qiáng)大的師資力量和學(xué)術(shù)研究而著稱(chēng),提供多元化的學(xué)科教育,包括自然科學(xué)、人文社會(huì)科學(xué)、工程技術(shù)等多個(gè)領(lǐng)域。學(xué)校注重培養(yǎng)學(xué)生的創(chuàng)新能力和國(guó)際視野,為國(guó)家和社會(huì)培養(yǎng)了大量杰出人才。 南大校園環(huán)境優(yōu)美,歷史與現(xiàn)代交融,是學(xué)術(shù)研究和知識(shí)探索的理想場(chǎng)所。學(xué)校在計(jì)算機(jī)科學(xué)、地球科學(xué)、化學(xué)等學(xué)科領(lǐng)域具有國(guó)際領(lǐng)先水平,并在推動(dòng)科學(xué)技術(shù)進(jìn)步和文化傳承方面發(fā)揮著重要作用。 """; return speech; } private static Trie buildAhoCorasickTrie() { return Trie.builder() .ignoreOverlaps() // 設(shè)置不捕獲重疊的關(guān)鍵詞 .onlyWholeWords() // 僅匹配完整的單詞 .ignoreCase() // 忽略關(guān)鍵詞的大小寫(xiě) .addKeywords(Arrays.asList("南京大學(xué)", "南大", "地球科學(xué)")) .build(); // 構(gòu)建Trie實(shí)例 } }

第三步:運(yùn)行程序,符合預(yù)期

南京大學(xué)簡(jiǎn)介 body { font-family: "微軟雅黑", "宋體", Arial, sans-serif; line-height: 1.6; color: #333; } .university-intro { text-align: justify; margin-bottom: 2em; padding: 1rem; background-color: #f5f5f5; border-radius: 5px; } 南京大學(xué):百年名校,學(xué)術(shù)卓越 南京大學(xué),簡(jiǎn)稱(chēng)“南大”,位于中國(guó)江蘇省南京市,是中國(guó)最頂尖的高等學(xué)府之一,擁有百年的辦學(xué)歷史和深厚的文化底蘊(yùn)。作為中國(guó)教育部直屬的全國(guó)重點(diǎn)大學(xué),南大以其卓越的學(xué)術(shù)成就和教育質(zhì)量聞名于世。 南京大學(xué)以其強(qiáng)大的師資力量和學(xué)術(shù)研究而著稱(chēng),提供多元化的學(xué)科教育,包括自然科學(xué)、人文社會(huì)科學(xué)、工程技術(shù)等多個(gè)領(lǐng)域。學(xué)校注重培養(yǎng)學(xué)生的創(chuàng)新能力和國(guó)際視野,為國(guó)家和社會(huì)培養(yǎng)了大量杰出人才。 南大校園環(huán)境優(yōu)美,歷史與現(xiàn)代交融,是學(xué)術(shù)研究和知識(shí)探索的理想場(chǎng)所。學(xué)校在計(jì)算機(jī)科學(xué)、地球科學(xué)、化學(xué)等學(xué)科領(lǐng)域具有國(guó)際領(lǐng)先水平,并在推動(dòng)科學(xué)技術(shù)進(jìn)步和文化傳承方面發(fā)揮著重要作用。

本文對(duì)Aho-Corasick(AC)自動(dòng)機(jī)算法進(jìn)行了拋磚引玉,揭示了其在處理大規(guī)模文本數(shù)據(jù)方面的卓越性能和應(yīng)用潛力。若你渴望深入挖掘AC算法的精髓,進(jìn)一步探索其高級(jí)應(yīng)用和實(shí)現(xiàn)細(xì)節(jié),建議參考以下的參考資料進(jìn)行進(jìn)一步的學(xué)習(xí)與挖掘。

參考資料

1. http://cr.yp.to/bib/1975/aho.pdf?

2. https://github.com/robert-bor/aho-corasick

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98035
  • 自動(dòng)機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    28

    瀏覽量

    9603
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    [討論]提高網(wǎng)站關(guān)鍵詞排名的28個(gè)SEO小技巧

    提高網(wǎng)站關(guān)鍵詞排名的28個(gè)SEO小技巧關(guān)鍵詞位置、密度、處理 URL中出現(xiàn)關(guān)鍵詞(英文) 網(wǎng)頁(yè)標(biāo)題中出現(xiàn)關(guān)鍵詞(1-3個(gè)) 關(guān)鍵詞標(biāo)簽中出現(xiàn)
    發(fā)表于 12-01 17:08

    亞馬遜代運(yùn)營(yíng) amazon Search term 關(guān)鍵詞填寫(xiě)的“神技”

    恰好包含這些單詞,那么就可以自動(dòng)匹配出這個(gè)關(guān)鍵詞,這樣你產(chǎn)品的搜索排名就不會(huì)差到哪里去,但如果缺少其中一個(gè)單詞,那么搜索排名就有很大變化了。結(jié)論就是:不要只是將短語(yǔ)式的
    發(fā)表于 06-05 15:41

    關(guān)鍵詞優(yōu)化有哪些實(shí)用的方法

    我們?cè)谧?b class='flag-5'>關(guān)鍵詞優(yōu)化排名的時(shí)候,有經(jīng)驗(yàn)的seo人員都會(huì)有自己的一套關(guān)于關(guān)鍵詞應(yīng)該怎么去優(yōu)化排名的方法,但是對(duì)于一些剛接觸seo的新手來(lái)說(shuō)就會(huì)比較迷茫,不知道應(yīng)該怎么去做好關(guān)鍵詞的排名,大部分新手都主要
    發(fā)表于 08-11 01:19

    自動(dòng)機(jī)械設(shè)計(jì)

    自動(dòng)機(jī)械設(shè)計(jì)》以自動(dòng)機(jī)械的四大結(jié)構(gòu)組成部分為主要內(nèi)容展開(kāi),深入闡述了自動(dòng)機(jī)械設(shè)計(jì)中普遍性的理論問(wèn)題。在例舉實(shí)例中側(cè)重現(xiàn)代農(nóng)業(yè)自動(dòng)機(jī)械,力求做到理論聯(lián)系實(shí)際,突出專(zhuān)業(yè)特色和現(xiàn)代科學(xué)技術(shù)
    發(fā)表于 08-02 08:54 ?0次下載

    基于盲GDH簽名的無(wú)記憶模糊關(guān)鍵詞搜索

    在云計(jì)算中,用戶(hù)在計(jì)算過(guò)程中的數(shù)據(jù)安全問(wèn)題已經(jīng)成為制約云計(jì)算發(fā)展的一個(gè)瓶頸。本文針對(duì)云計(jì)算中的加密搜索問(wèn)題,提出一個(gè)有效的加密搜索方案。在搜索過(guò)程中,為保證用戶(hù)的數(shù)據(jù)安全,用戶(hù)需要隱藏搜索
    發(fā)表于 12-14 14:14 ?0次下載

    基于自動(dòng)關(guān)鍵詞抽取方法

    自動(dòng)關(guān)鍵詞抽取是從文本或文本集合中自動(dòng)抽取主題性或重要性的或短語(yǔ),是文本檢索、文本摘要等許多文本挖掘任務(wù)的基礎(chǔ)性和必要性的工作.探討了關(guān)鍵詞
    發(fā)表于 12-26 16:47 ?2次下載
    基于<b class='flag-5'>自動(dòng)</b><b class='flag-5'>關(guān)鍵詞</b>抽取方法

    對(duì)加密電子醫(yī)療記錄的關(guān)鍵詞搜索

    被稱(chēng)為MCKS I的簡(jiǎn)單的多域連接關(guān)鍵詞搜索(MCKS)方案,該方案僅支持連接相等查詢(xún),為了實(shí)現(xiàn)更加靈活而復(fù)雜的多域關(guān)鍵詞連接查詢(xún),例如子集查詢(xún)和范圍查詢(xún),又提出了被稱(chēng)為MCKS II的提高方案.該方案利用了分層屬性的矢量表示
    發(fā)表于 01-14 10:42 ?0次下載

    基于統(tǒng)計(jì)的AC自動(dòng)機(jī)空間優(yōu)化

    針對(duì)高級(jí)Aho-Corasick (AC自動(dòng)機(jī)為提高串匹配速度而造成的空間浪費(fèi)問(wèn)題,研究發(fā)現(xiàn)數(shù)據(jù)流對(duì)自動(dòng)機(jī)節(jié)點(diǎn)的訪問(wèn)規(guī)律,據(jù)此提出基于數(shù)據(jù)訪問(wèn)特征的混合自動(dòng)機(jī)構(gòu)建算法HybridFA
    發(fā)表于 03-13 16:47 ?0次下載
    基于統(tǒng)計(jì)的<b class='flag-5'>AC</b><b class='flag-5'>自動(dòng)機(jī)</b>空間優(yōu)化

    ADI年度關(guān)鍵詞曝光,這些你肯定搜索過(guò)!

    大數(shù)據(jù)時(shí)代,每個(gè)人的搜索框在某種程度上都代表著這個(gè)人的所思所想。如果將時(shí)間放長(zhǎng),樣本量放大,那么 一份年度搜索關(guān)鍵詞就會(huì)呈現(xiàn)出了這個(gè)世界上絕大部分人是如何走過(guò)這一年的 搜索產(chǎn)品型號(hào)與
    的頭像 發(fā)表于 12-30 00:05 ?1743次閱讀

    搜索關(guān)鍵詞獲取商品詳情接口的設(shè)計(jì)與實(shí)現(xiàn)

    ? ??在電商、內(nèi)容平臺(tái)等應(yīng)用中,用戶(hù)經(jīng)常通過(guò)輸入關(guān)鍵詞搜索商品并獲取詳情。設(shè)計(jì)一個(gè)高效、可靠的API接口是核心需求。本文將逐步介紹如何設(shè)計(jì)并實(shí)現(xiàn)一個(gè)“搜索關(guān)鍵詞獲取商品詳情”的接口,
    的頭像 發(fā)表于 10-20 15:37 ?504次閱讀
    <b class='flag-5'>搜索</b><b class='flag-5'>關(guān)鍵詞</b>獲取商品詳情接口的設(shè)計(jì)與實(shí)現(xiàn)

    淺談京東關(guān)鍵詞

    一、京東搜索關(guān)鍵詞的核心特性 支持中文直接搜索 :京東官網(wǎng)支持中文關(guān)鍵詞輸入(如 “筆記本電腦”、“華為手機(jī)”),但在 HTTP 請(qǐng)求中,中文關(guān)鍵詞
    的頭像 發(fā)表于 01-04 10:40 ?634次閱讀

    利用京東搜索關(guān)鍵詞 API 接口賦能電商運(yùn)營(yíng)

    利用京東搜索關(guān)鍵詞 API 接口賦能電商運(yùn)營(yíng):從技術(shù)調(diào)用到業(yè)務(wù)增長(zhǎng)全指南 京東搜索關(guān)鍵詞 API 作為連接平臺(tái)數(shù)據(jù)與電商運(yùn)營(yíng)的核心樞紐,能實(shí)時(shí)抓取關(guān)
    的頭像 發(fā)表于 01-05 09:21 ?295次閱讀

    淘寶搜索API:關(guān)鍵詞優(yōu)化工具,提升曝光率!

    ? ?在電商領(lǐng)域,曝光率是決定商品銷(xiāo)量的關(guān)鍵因素之一。淘寶作為國(guó)內(nèi)領(lǐng)先的電商平臺(tái),提供了強(qiáng)大的搜索API接口,幫助開(kāi)發(fā)者構(gòu)建關(guān)鍵詞優(yōu)化工具,從而提升商品在搜索結(jié)果中的排名和曝光。本文將
    的頭像 發(fā)表于 01-05 15:38 ?182次閱讀
    淘寶<b class='flag-5'>搜索</b>API:<b class='flag-5'>關(guān)鍵詞</b>優(yōu)化工具,提升曝光率!

    京東關(guān)鍵詞的應(yīng)用

    京東關(guān)鍵詞應(yīng)用核心是圍繞搜索匹配與流量獲取,貫穿商品上架、搜索優(yōu)化、付費(fèi)推廣、精細(xì)化運(yùn)營(yíng)等全鏈路,以精準(zhǔn)匹配用戶(hù)需求、提升排名與轉(zhuǎn)化為目標(biāo)。以下是具體應(yīng)用與實(shí)操方法: 一、關(guān)鍵詞分類(lèi)與
    的頭像 發(fā)表于 01-20 09:05 ?501次閱讀

    關(guān)鍵詞搜索京東列表 API 技術(shù)對(duì)接指南

    一、前言 在電商數(shù)據(jù)服務(wù)、代購(gòu)集運(yùn)系統(tǒng)搭建、電商平臺(tái)競(jìng)品分析、自有商城商品同步等業(yè)務(wù)場(chǎng)景中,京東商品列表的精準(zhǔn)、實(shí)時(shí)獲取是核心環(huán)節(jié)之一。 二、接口概述 關(guān)鍵詞搜索京東列表 API,核心是通過(guò)京東開(kāi)放
    的頭像 發(fā)表于 02-05 16:36 ?347次閱讀