Heim >Backend-Entwicklung >Python-Tutorial >[PYTHON-Tutorial] Artikelzusammenfassungen extrahieren

[PYTHON-Tutorial] Artikelzusammenfassungen extrahieren

黄舟
黄舟Original
2017-02-07 16:11:181743Durchsuche

Um den Artikelinhalt effektiver darzustellen und den Lesern eine gezieltere Leseauswahl zu ermöglichen, werden in der Artikelliste des Blogsystems in der Regel gleichzeitig Titel und Zusammenfassung des Artikels angegeben.

Der Inhalt eines Artikels kann im Nur-Text-Format vorliegen, aber heutzutage, mit der Popularität des Internets, liegt er eher im HTML-Format vor. Unabhängig vom Format stellt die Zusammenfassung im Allgemeinen den Inhalt am Anfang des Artikels dar und kann entsprechend der angegebenen Wortanzahl extrahiert werden.

Nur-Text-Zusammenfassung

Zuerst extrahieren wir die Nur-Text-Zusammenfassung. Das Nur-Text-Dokument ist eine lange Zeichenfolge und es ist einfach, seine Zusammenfassung zu extrahieren:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Get a summary of the TEXT-format document"""

def get_summary(text, count):
u"""Get the first `count` characters from `text`

>>> text = u'Welcome 这是一篇关于Python的文章'
>>> get_summary(text, 12) == u'Welcome 这是一篇'
True
"""
assert(isinstance(text, unicode))
return text[0:count]

if __name__ == '__main__':
import doctest
doctest.testmod()

HTML-Zusammenfassung

HTML-Dokumente enthalten eine große Anzahl von Tags (wie 4a249f0d628e2318394fd9b75b4636b1, e388a4556c0f65e1904146cc1a846bee, 3499910bf9dac5ae3c52d5ede7383485 usw.). Diese Zeichen sind Tag-Anweisungen und erscheinen normalerweise paarweise. Durch einfaches Abfangen von Text wird die Dokumentstruktur von HTML zerstört, was dazu führt, dass die Zusammenfassung im Browser nicht ordnungsgemäß angezeigt wird.

Um den Inhalt abzufangen und dabei der Struktur des HTML-Dokuments zu folgen, müssen Sie das HTML-Dokument analysieren. In Python kann dies mit Hilfe der Standardbibliothek HTMLParser erfolgen.

Eine der einfachsten Snippet-Extraktionsfunktionen besteht darin, HTML-Tags zu ignorieren und nur den nativen Text innerhalb der Tags zu extrahieren. Das Folgende ist eine Python-Implementierung, die dieser Funktion ähnelt:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Get a raw summary of the HTML-format document"""

from HTMLParser import HTMLParser

class SummaryHTMLParser(HTMLParser):
"""Parse HTML text to get a summary

>>> text = u&#39;<p>Hi guys:</p><p>This is a example using SummaryHTMLParser.</p>&#39;
>>> parser = SummaryHTMLParser(10)
>>> parser.feed(text)
>>> parser.get_summary(u&#39;...&#39;)
u&#39;<p>Higuys:Thi...</p>&#39;
"""
def __init__(self, count):
HTMLParser.__init__(self)
self.count = count
self.summary = u&#39;&#39;

def feed(self, data):
"""Only accept unicode `data`"""
assert(isinstance(data, unicode))
HTMLParser.feed(self, data)

def handle_data(self, data):
more = self.count - len(self.summary)
if more > 0:
# Remove possible whitespaces in `data`
data_without_whitespace = u&#39;&#39;.join(data.split())

self.summary += data_without_whitespace[0:more]

def get_summary(self, suffix=u&#39;&#39;, wrapper=u&#39;p&#39;):
return u&#39;<{0}>{1}{2}</{0}>&#39;.format(wrapper, self.summary, suffix)

if __name__ == &#39;__main__&#39;:
import doctest
doctest.testmod()

Das Obige ist der Inhalt des [PYTHON-Tutorials] zum Extrahieren von Artikelzusammenfassungen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). .php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn