使用Python的NLTK,我設法從博客文章中提取unigrams,bigrams,trigrams和quadgram。我對整個網站的內容進行了透視,以找到在給定的博客文章中討論的正確話題。如何從Python中的關鍵字中找到一組相似的主題?
我最終的結果如article_topic = [「狗繁殖」]
現在,什麼是使用「狗繁殖」一詞,找到相似的長度相關條款的權利或最佳方式例如,狗繁殖計劃,繁殖犬,犬科繁殖等。
有沒有API或圖書館可以幫助解決這個問題?
使用Python的NLTK,我設法從博客文章中提取unigrams,bigrams,trigrams和quadgram。我對整個網站的內容進行了透視,以找到在給定的博客文章中討論的正確話題。如何從Python中的關鍵字中找到一組相似的主題?
我最終的結果如article_topic = [「狗繁殖」]
現在,什麼是使用「狗繁殖」一詞,找到相似的長度相關條款的權利或最佳方式例如,狗繁殖計劃,繁殖犬,犬科繁殖等。
有沒有API或圖書館可以幫助解決這個問題?
可以使用非常流行的語義向量(或word2vec)。使用此模型,您可以輕鬆進行推理,以根據訓練集獲得最相似的單詞(或主題)。您可以獲得帶有10億英文單詞的谷歌預訓練模型。但是,您也可以使用博客的標籤來培訓您自己的模型(這對我來說很有意義)。
你可以使用Gensin庫。 https://radimrehurek.com/gensim/models/word2vec.html
如果我正確地理解了你的問題,你有每篇文章的主題,現在你想選擇更接近相應的文章主題的其他關鍵字。
您可以分兩步實現:
第1步:選擇基於tf-idf
重量從文章頂部k
而言,他們應該更加貼近文章的主題。
步驟2:將所有共享相同主題的文章聚類在一起,然後執行步驟1中介紹的相同內容。
由於您已經知道您的文章的主題,所以沒有使用主題建模方法的要點。也許,你可以使用單詞嵌入技術,但是你必須重新設計你的主題推理部分。如果您沒有足夠的關於CBOW或skip-gram模型等詞嵌入技術的知識,這將會很困難。 (我不想爲你的目標任務推薦這個)
我寧願推薦你用一些基於聚類的方法來使用好的特徵提取技術,我相信你會得到相當不錯的結果。您可以考慮一些很好的指標,如mutual information,它可以告訴您兩個關鍵字是否共享某些信息並應該組合在一起。
最後,您還可以使用一些基於字典的方法來計算關鍵字之間的語義相關性。例如,您可以使用WordNet,然後根據WordNet層次結構根據它們的關係對關鍵字對進行評分。 WordNet是結構化知識的非常好的資源。有關詳細信息,請參閱此example。您可以使用Java API for WordNet Searching或WordNet NLTK Interface,它們都非常易於使用(我之前使用過)。
您可以計算WordNet相似度(成對),以便每個詞/主題都表示爲一個距離向量,然後可以將其離散化,因此每個向量將具有如下形式:[0,2,3,1,0,0,2,1,3,...]
。然後可以使用NLTK cluster package或scikit-learn cluster package中的一種方法對這些載體進行聚類。
我相信你會得到足夠好的結果與這些建議的方法。