2011-10-06 21 views
6

Tengo el texto almacenado en una cadena de python.Identificación de palabras y frases importantes en el texto

lo que quiero

  1. para identificar las palabras clave en el texto.
  2. para identificar N-grams en ese texto (idealmente más que solo bi y tri gramos).

Tenga en cuenta ...

  • El texto puede ser pequeña (por ejemplo Tweet calibrado)
  • El texto podría ser media (por ejemplo, el artículo de noticias de tamaño)
  • El texto podría ser grande (por ejemplo, el libro o capítulo de tamaño)

What I Have

ya estoy usando nltk para romper el corpus en tokens y quitar palabras vacías:

# 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')] 

Soy consciente de la BigramCollocationFinder y TrigramCollectionFinder cual hace exaclty lo que estoy buscando para esos dos casos.

La pregunta

necesito consejos de n-gramas de orden superior, la mejora de los tipos de resultados que provienen de FBC y TCF, y asesoramiento sobre la mejor manera de identificar las más singulares palabras clave individuales.

¡Muchas gracias!

Respuesta

1

En cuanto a la mejor manera de identificar las palabras clave individuales más singulares, tfidf es la medida total. Por lo tanto, tiene que integrar de alguna manera un motor de búsqueda (o crear un índice invertido personalizado simple que sea dinámico y mantenga frecuencias de términos, frecuencias de documentos) para calcular tfidf de manera eficiente y sobre la marcha.

En cuanto a sus N-grams, ¿por qué no crea un analizador personalizado usando un enfoque de "ventana" (la ventana es de longitud N) que identifica, por ejemplo, el más frecuente de ellos? (simplemente mantenga cada N-gram como una clave en un diccionario con valor ya sea la frecuencia o una puntuación (basado en tfidf de términos individuales))

+0

Espero no reinventar las ruedas cuando sea posible (tf-idf I solo puedo suponer que se hace en algún lugar de nltk pero estoy teniendo algunos problemas para descifrar los enganches). Similar para N-grams, aunque me estoy dando cuenta rápidamente de que si quiero más de tres gramos, la rueda no se ha implementado necesariamente (y, sinceramente, más de tres gramos probablemente no sean útiles) – slifty

+0

Creo que es fundamental . A medida que procesa su corpus, el cálculo de tf, df se puede hacer rápidamente y un DB puede ayudar a almacenar el índice invertido. Aún mejor, implemente un índice posicional invertido. N-grams están en desuso :). – hymloth

Cuestiones relacionadas