¿Cómo encontrar el texto resumido de una URL dada en python / Django?

¿Cómo averiguar el texto resumido de una URL determinada?

¿Qué quiero decir con texto resumido?

Merck $ 41.1 mil millones Schering-Plough Bid busca la ciencia

Descripcion de enlaces

La compra de Schering-Plough Corp. por $ 41.1 mil millones de Merck & Co. agrega medicamentos experimentales para coágulos de sangre, infecciones y esquizofrenia y permite a las compañías acelerar la investigación sobre medicamentos de biotecnología.

Para la URL anterior, las tres líneas siguientes es el texto de resumen.
Una breve descripción de 2 a 3 líneas de la URL que usualmente obtenemos al buscar esa página, examinando el contenido a partir de ese momento, obteniendo una breve descripción de ese marcado html.

¿Hay algún buen algoritmo que haga esto? (o)
¿Hay alguna buena biblioteca en python / django que haga esto?

Tenía la misma necesidad, y lemur, aunque tiene capacidades de resumen, me pareció que tenía muchos problemas hasta el punto de ser inutilizable. Durante el fin de semana usé nltk para codificar un módulo de resumen en python: https://github.com/thavelick/summarize

Tomé el algoritmo de la biblioteca de Java Classifier4J aquí: http://classifier4j.sourceforge.net/ pero usé nltk y un python siempre que sea posible.

Aquí está el uso básico:

>>> import summarize 

Un SimpleSummarizer (actualmente el único resumen) hace un resumen usando oraciones con las palabras más frecuentes:

 >>> ss = summarize.SimpleSummarizer() >>> input = "NLTK is a python library for working human-written text. Summarize is a package that uses NLTK to create summaries." >>> ss.summarize(input, 1) 'NLTK is a python library for working human-written text.' 

Puede especificar cualquier número de sentenecs en el resumen que desee.

 >>> input = "NLTK is a python library for working human-written text. Summarize is a package that uses NLTK to create summaries. A Summariser is really cool. I don't think there are any other python summarisers." >>> ss.summarize(input, 2) "NLTK is a python library for working human-written text. I don't think there are any other python summarisers." 

A diferencia del algoritmo original de Classifier4J, este resumen funciona correctamente con puntuaciones distintas a los puntos:

 >>> input = "NLTK is a python library for working human-written text! Summarize is a package that uses NLTK to create summaries." >>> ss.summarize(input, 1) 'NLTK is a python library for working human-written text!' 

ACTUALIZAR

Ahora (¡finalmente!) Publiqué esto bajo la licencia Apache 2.0, la misma licencia que nltk, y coloqué el módulo en github (ver más arriba). Cualquier contribución o sugerencia son bienvenidas.

El resumen del texto es un tema bastante complicado. Si tiene la necesidad de hacer esto de una manera seria, tal vez desee ver proyectos como Lemur ( http://www.lemurproject.org/ ).

Sin embargo, lo que sospecho que realmente quieres es un resumen de texto aquí. Si sabe qué parte del documento contiene el texto del cuerpo, localícelo utilizando una biblioteca de análisis HTML como BeautifulSoup , y luego elimine el HTML; tome la primera oración, o los primeros N caracteres (lo que mejor se adapte), y úselo. Una especie de generador abstracto de un primo pobre 🙂

Echa un vistazo a las herramientas de lenguaje natural . Es una biblioteca de Python muy útil si estás haciendo cualquier procesamiento de texto.

Entonces mira este artículo de HP Luhn (1958). Describe un método ingenuo pero efectivo de generar resúmenes de texto.

Utilice el objeto nltk.probability.FreqDist para hacer un seguimiento de la frecuencia con que aparecen las palabras en el texto y luego califique las oraciones de acuerdo con la cantidad de palabras más frecuentes que aparecen en ellas. Luego, seleccione las oraciones con las mejores puntuaciones y listo, tiene un resumen del documento.

Sospecho que el NLTK debería tener un medio para cargar documentos de la web y sacar todas las tags HTML del camino. No he hecho ese tipo de cosas por mi cuenta, pero si busca en los lectores del corpus, puede encontrar algo útil.

Su mejor opción en este caso sería utilizar una biblioteca de análisis HTML como BeautifulSoup ( http://www.crummy.com/software/BeautifulSoup/ )

A partir de ahí, puede obtener, por ejemplo, todas las tags p las páginas:

importar urllib2

desde BeautifulSoup import BeautifulSoup

page = urllib2.urlopen (” http://www.bloomberg.com/apps/newspid=20601103&sid=a8p0FQHnw.Yo&refer=us “)

sopa = BeautifulSoup (página)

soup.findAll (‘p’)

Y luego, hacer algunos análisis alrededor. Depende completamente de la página, ya que cada sitio está estructurado de manera diferente. Puede tener suerte en algunos sitios como lo hacen y simplemente busque una etiqueta p con el resumen de ID # en ella, mientras que otros (como Blooberg) pueden requerir un poco más de tiempo para jugar.