2016-12-04 19 views
1

使用Python的NLTK,我設法從博客文章中提取unigrams,bigrams,trigrams和quadgram。我對整個網站的內容進行了透視,以找到在給定的博客文章中討論的正確話題。如何從Python中的關鍵字中找到一組相似的主題?

我最終的結果如article_topic = [「狗繁殖」]

現在,什麼是使用「狗繁殖」一詞,找到相似的長度相關條款的權利或最佳方式例如,狗繁殖計劃,繁殖犬,犬科繁殖等。

有沒有API或圖書館可以幫助解決這個問題?

回答

0

那麼如果你想根據一個主題對文檔進行分類,那麼進一步移動的一種方法是使用聚類。

所以我給了一個類似的問題,幾百個文件的數據集。 另外我給了所有主題來創建羣集。

工作 - 完成集羣后,對於任何集羣,由於集羣是根據在其中找到的主題完成的,因此該集羣中的所有文檔都彼此緊密相關。

如何 -
所以我也跟着指示是:
1)使用TF-IDF符號 Link
2)使用你上面有運行K均值矢量形式表示矢量形式每個文檔聚類算法
3)最後你得到的任何新文件只是不斷地將它添加到羣集中。
4)現在您可以知道集羣中的主題密切相關,因此您的新文檔可以分爲一個/多個主題。

欲瞭解更多信息 - Link

0

可以使用非常流行的語義向量(或word2vec)。使用此模型,您可以輕鬆進行推理,以根據訓練集獲得最相似的單詞(或主題)。您可以獲得帶有10億英文單詞的谷歌預訓練模型。但是,您也可以使用博客的標籤來培訓您自己的模型(這對我來說很有意義)。

你可以使用Gensin庫。 https://radimrehurek.com/gensim/models/word2vec.html

0

如果我正確地理解了你的問題,你有每篇文章的主題,現在你想選擇更接近相應的文章主題的其他關鍵字。

您可以分兩步實現:

  • 第1步:選擇基於tf-idf重量從文章頂部k而言,他們應該更加貼近文章的主題。

  • 步驟2:將所有共享相同主題的文章聚類在一起,然後執行步驟1中介紹的相同內容。

由於您已經知道您的文章的主題,所以沒有使用主題建模方法的要點。也許,你可以使用單詞嵌入技術,但是你必須重新設計你的主題推理部分。如果您沒有足夠的關於CBOW或skip-gram模型等詞嵌入技術的知識,這將會很困難。 (我不想爲你的目標任務推薦這個)

我寧願推薦你用一些基於聚類的方法來使用好的特徵提取技術,我相信你會得到相當不錯的結果。您可以考慮一些很好的指標,如mutual information,它可以告訴您兩個關鍵字是否共享某些信息並應該組合在一起。

最後,您還可以使用一些基於字典的方法來計算關鍵字之間的語義相關性。例如,您可以使用WordNet,然後根據WordNet層次結構根據它們的關係對關鍵字對進行評分。 WordNet是結構化知識的非常好的資源。有關詳細信息,請參閱此example。您可以使用Java API for WordNet SearchingWordNet NLTK Interface,它們都非常易於使用(我之前使用過)。

您可以計算WordNet相似度(成對),以便每個詞/主題都表示爲一個距離向量,然後可以將其離散化,因此每個向量將具有如下形式:[0,2,3,1,0,0,2,1,3,...]。然後可以使用NLTK cluster packagescikit-learn cluster package中的一種方法對這些載體進行聚類。

我相信你會得到足夠好的結果與這些建議的方法。

相關問題