2011-10-06 87 views
6

我有存儲在python字符串中的文本。識別文本中的重要單詞和短語

我想要的東西

  1. 要識別該文本的關鍵詞。
  2. 在該文本中識別N-gram(理想情況下不僅僅是雙克和三克)。

記住...

  • 文字可能很小(如鳴叫大小)
  • 文本可能是中間(如新聞文章尺寸)
  • 文本可能大(如書籍或章節大小)

我有什麼

我已經使用nltk打破語料庫爲標記,並刪除停用詞:

# split across any non-word character 
    tokenizer = nltk.tokenize.RegexpTokenizer('[^\w\']+', gaps=True) 

    # tokenize 
    tokens = tokenizer.tokenize(text) 

    # remove stopwords 
    tokens = [w for w in tokens if not w in nltk.corpus.stopwords.words('english')] 

我知道了BigramCollocationFinder和TrigramCollectionFinder什麼,我找了這兩個案件做exaclty。

問題

我需要的n-gram更高階的建議,提高了種是來自BCF和TCF和建議的最佳方式,找出最獨特的個體關鍵詞的結果。

非常感謝!

回答

1

至於確定最獨特的個人關鍵詞的最佳方式,tfidf是總量度。因此,您可以通過某種方式集成搜索引擎(或者創建一個簡單的自定義倒排索引,該索引是動態的,並保存詞頻,文檔頻率),以便高效且實時地計算tfidf。

至於N-gram,爲什麼不使用「窗口」方法(窗口長度爲N)來創建自定義分析器,以識別最頻繁的窗口? (只是把每一個N-gram作爲一個關鍵字保存在一個字典中,其值可以是頻率或分數(基於單個項的tfidf))

+0

我希望在可能的情況下不要重新發明輪子(tf-idf I只能假設在nltk的某個地方完成,但我在計算鉤子時遇到了一些麻煩)。與N-grams類似,儘管我很快意識到如果我想要三克以上的車輪,那麼車輪並不一定能實現(並且,老實說,超過三克可能沒有用)。 – slifty

+0

我相信這是根本。在處理語料庫時,計算tf,df可以快速完成,而數據庫可以幫助存儲倒排索引。更好的是,實現一個位置倒排索引。 N-gram已棄用:)。 – hymloth

相關問題