How to extract common / significant phrases from a series of text entries

前端 未结 4 946
迷失自我
迷失自我 2020-12-07 07:09

I have a series of text items- raw HTML from a MySQL database. I want to find the most common phrases in these entries (not the single most common phrase, and ideally, not e

4条回答
  •  臣服心动
    2020-12-07 07:24

    I suspect you don't just want the most common phrases, but rather you want the most interesting collocations. Otherwise, you could end up with an overrepresentation of phrases made up of common words and fewer interesting and informative phrases.

    To do this, you'll essentially want to extract n-grams from your data and then find the ones that have the highest point wise mutual information (PMI). That is, you want to find the words that co-occur together much more than you would expect them to by chance.

    The NLTK collocations how-to covers how to do this in a about 7 lines of code, e.g.:

    import nltk
    from nltk.collocations import *
    bigram_measures = nltk.collocations.BigramAssocMeasures()
    trigram_measures = nltk.collocations.TrigramAssocMeasures()
    
    # change this to read in your data
    finder = BigramCollocationFinder.from_words(
        nltk.corpus.genesis.words('english-web.txt'))
    
    # only bigrams that appear 3+ times
    finder.apply_freq_filter(3)
    
    # return the 10 n-grams with the highest PMI
    finder.nbest(bigram_measures.pmi, 10)
    

提交回复
热议问题