Necesito obtener los ngrams más populares del texto. La longitud de los ngrams debe ser de 1 a 5 palabras.Python Lista de Ngrams con frecuencias
Sé cómo obtener bigramas y trigramas. Por ejemplo:
bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = nltk.collocations.BigramCollocationFinder.from_words(words)
finder.apply_freq_filter(3)
finder.apply_word_filter(filter_stops)
matches1 = finder.nbest(bigram_measures.pmi, 20)
Sin embargo, descubrí que scikit-learn puede obtener ngrams con varias longitudes. Por ejemplo, yo puedo conseguir N-gramas con una longitud de 1 a 5.
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=5))
Pero WordNGramAnalyzer ahora es obsoleto. Mi pregunta es: ¿Cómo puedo obtener N las mejores colocaciones de palabras de mi texto, con una longitud de las colocaciones de 1 a 5. También necesito obtener FreqList de estas colocaciones/ngramas.
¿Puedo hacer eso con nltk/scikit? Necesito obtener combinaciones de ngrams con varias longitudes a partir de un texto?
Por ejemplo, usando bigramas y trigramas NLTK donde muchas situaciones en las que mis trigramas incluyen mis bitgramos, o mis trigramas son parte de 4 gramos más grandes. Por ejemplo:
bitgrams: hola mis trigramas: hola mi nombre
Sé cómo excluir Bigramas de trigramas, pero necesito mejores soluciones.
Si no desea TF-IDF normalización solo use: 'CountVectorizer (min_n = 1, max_n = 5) .fit_transform (list_of_strings)'. – ogrisel
, pero ¿qué debo hacer ahora? ¿cómo obtengo las frecuencias de ngrams? – twoface88
@ twoface88: 'v = CountVectorizer (min_n = 1, max_n = 5); X = v.fit_transform (["una manzana al día mantiene alejado al médico"]); zip (v.inversión_inversión (X) [0], X.A [0]) '. Tenga en cuenta que las palabras vacías y los tokens de un carácter se eliminarán de forma predeterminada. –