日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文本分類和提取關鍵詞算法

背景

Web應用程序變得越來越智能。 從網站上使用服務的日子已經一去不復返了,用戶不得不填寫一個巨大的表格。 假設您有一個適合書迷的網站。 在Web 2.0之前,像這樣的網站曾經以諸如年齡,閱讀的書籍,喜歡的書籍類型,語言偏好,作者偏好等形式向用戶提出各種問題。如今,要求用戶選擇在自己(個人資料)上寫一個段落。 在本說明中,用戶表達了一些細節,但是挑戰在于,如何從這種自由格式的文本中提取有用的信息,以及如何找到興趣相似的用戶?

這種用例已經變得如此普遍,以至于每個Java開發人員都應該了解一些有關從文本檢索信息的技巧。 在本文中,我將引導您完成一種簡單而有效的方法。

從文本中提取信息的過程

  • 過濾單詞 :逐字閱讀文本內容并刪除不需要的單詞。 作為此過濾狀態的一部分,請刪除所有常用的英語單詞。 人們還可以應用檢查規則,并刪除露骨的露骨言辭或仇恨言論等。
  • 執行詞干: “搜索”或“搜索”或“搜索”之類的詞都表示“搜索”。 將單詞還原為詞根的過程稱為詞干。
  • 計算相似度 :經過前兩個步驟,我們現在有了一組真正代表原始文本的關鍵字(在此示例中為用戶個人資料)。 我們可以將這些關鍵字視為一組唯一的單詞。 為了計算兩個用戶資料之間的相似度,最好用一個數字來表示相似度,該數字代表兩個內容在0(不相似)到1(完全相似)范圍內的相似程度。 一種實現方法是計算Jaccard Index,該索引用于計算集合的相似性或多樣性。
  • Jaccard index J(A,B) = |A∩B|/| A?B|

    其中A和B是集合,而J(A,B)在0到1之間。

    實施細節

    基于以上幾點,可以開發一個庫來提取關鍵字并計算相似度。 但是,Apache Lucene是一個Java庫,具有大量用于執行關鍵字提取的API。 這是此API不同重要區域的簡要說明。

    分詞器

    Tokenizer將您的文本分成多個塊。 有不同的令牌生成器,根據您使用的令牌生成器,您可以獲得不同的輸出令牌流(文本塊序列)。

    詞干

    詞干用于獲取有問題的單詞的基數。 在很大程度上取決于所使用的語言。 諸如“ seaerch”,“ searched”,“ searching”等詞源于詞根“ search”。 在信息檢索領域,如果我們能找到根詞,這將非常有用,因為它可以減少噪聲,并且用更少的詞仍可以承載文檔的意圖。 著名的詞干算法之一是Porter Stemmer算法。

    令牌過濾器

    可以將令牌過濾器應用于令牌生成器的輸出以標準化或過濾令牌。 像LowerCaseFilter一樣,它可以將標記文本規范化為小寫,或者使用stopfilter來抑制最常用和幾乎無用的單詞。 同樣,它在很大程度上取決于語言。 對于英語,這些停用詞是“ a”,“ the”,“ I”,“ be”,“ have”等。

    分析儀

    分析器是使用令牌生成器從輸入生成令牌,使用詞干提取器減少令牌,使用過濾器抑制/標準化令牌的更高級別的類。 這是粘接其他三個主要組件的類。 不同的分析器使用標記器和過濾器的不同組合。 例如,StandardAnalyzer使用StandardTokenizer從字符串中提取令牌,將其傳遞給LowerCaseFilter以將令牌轉換為小寫,然后將令牌流傳遞給StopFilter以除去最常用的英語單詞。 默認情況下,它不執行詞干。 可以通過根據需要混合和匹配標記器和標記過濾器來開發定制分析器。

    代碼遍歷

    可以從https://github.com/shamikm/similarity訪問該示例的源代碼。 以下是這些步驟的重點:

  • 創建一個執行以下步驟的自定義分析器:
    • 根據空格,逗號,句點等對英語單詞進行標記。使用StandardTokenizer可以完成此任務。
    • 使用LowerCaseFilter將標記轉換為小寫
    • 使用StopFilter停止常見的英語單詞
    • 使用Porter Stemmer阻止英語單詞

    從StemmAnalyzer類:

    @Overridepublic TokenStream tokenStream(String fieldName, Reader reader) {(a).. final StandardTokenizer src = new StandardTokenizer(matchVersion, reader);TokenStream tok = new StandardFilter(matchVersion, src);(b).. tok = new LowerCaseFilter(matchVersion, tok);(c).. tok = new StopFilter(matchVersion, tok, getStopWords());(d).. return new PorterStemFilter(tok);}
  • 一旦我們有了一組單詞,就很容易計算出兩個單詞之間的相似度。

    從JaccardIndexBasedSimilarity類:

    public double calculateSimilarity(String oneContent, String otherContet) {Set<String> keyWords1 = keywordGenerator.generateKeyWords(oneContent);Set<String> keyWords2 = keywordGenerator.generateKeyWords(otherContet);Set<String> denominator = Sets.union(keyWords1,keyWords2);Set<String> numerator = Sets.intersection(keyWords1,keyWords2);return denominator.size()>0? (double)numerator.size()/(double)denominator.size() : 0;}
  • 這是一個示例測試案例,以演示代碼如何工作:

    @Testpublic void calculateSim(){SimilarityCalculator calculator = new JaccardIndexBasedSimilarity();Assert.assertEquals(calculator.calculateSimilarity("They Licked the platter clean","Jack Sprat could eat no fat"),0.0);//1(lamb) out of 6(littl,lamb,mari,had,go,sure) words are sameAssert.assertEquals(calculator.calculateSimilarity("Mary had a little lamb", "The lamb was sure to go."), 0.16, 0.02);Assert.assertEquals(calculator.calculateSimilarity("Mary had a little lamb","Mary had a little lamb"),1.0);}

    您可以脫機運行此過程,并找出一個用戶配置文件與數據庫中任何其他用戶的相似之處,并可以根據相似用戶正在閱讀的內容開始推薦用戶。

    結論

    從文本中檢索信息是當今的一種常見用例。 對這個關鍵領域有基本的了解對任何開發人員都有幫助。在本文中,我們研究了如何有效地使用Apache Lucene API來提取關鍵字并計算文本之間的相似度。

    資源:

    • http://en.wikipedia.org/wiki/Jaccard_index
    • http://tartarus.org/martin/PorterStemmer/
    • http://www.manning.com/ingersoll/
    • http://www.amazon.com/Algorithms-Intelligent-Web-Haralambos-Marmanis/dp/1933988665

    翻譯自: https://www.javacodegeeks.com/2014/07/keyword-extraction-and-similarity-calculation-among-textual-content.html

    文本分類和提取關鍵詞算法

    總結

    以上是生活随笔為你收集整理的文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。