Seit einiger Zeit habe ich versucht, den "relevanten" Text auf intelligente Weise aus einer URL zu extrahieren, indem der Text in Bezug auf Anzeigen und alle anderen Unordnung beseitigt wurde. Nach einigen Monaten der Recherche gab ich ihn als Problem auf das kann nicht genau bestimmt werden. (Ich habe verschiedene Wege ausprobiert, aber keiner war zuverlässig)
Vor einer Woche bin ich auf Readability gestoßen - ein Plugin, das jede URL in lesbaren Text konvertiert. Es sieht für mich ziemlich genau aus. Ich vermute, dass sie irgendwie einen Algorithmus haben, der klug genug ist, um den relevanten Text zu extrahieren.
Weiß jemand, wie sie es machen? Oder wie könnte ich das zuverlässig machen?
javascript
asp.net
extraction
user300981
quelle
quelle
Antworten:
Die Lesbarkeit besteht hauptsächlich aus Heuristiken, die in vielen Fällen "irgendwie gut funktionieren".
Ich habe einige Forschungsarbeiten zu diesem Thema verfasst und möchte den Hintergrund erläutern, warum es einfach ist, eine Lösung zu finden, die gut funktioniert und wenn es schwierig wird, eine 100% ige Genauigkeit zu erreichen.
Es scheint ein Sprachgesetz zu geben, das der menschlichen Sprache zugrunde liegt und das sich auch (aber nicht ausschließlich) im Inhalt von Webseiten manifestiert, das bereits zwei Arten von Text klar voneinander trennt (Volltext vs. Nicht-Volltext oder grob gesagt ". Hauptinhalt "vs." Boilerplate ").
Um den Hauptinhalt aus HTML zu erhalten, ist es in vielen Fällen ausreichend, nur die HTML-Textelemente (dh Textblöcke, die nicht durch Markups unterbrochen werden) mit mehr als 10 Wörtern beizubehalten. Es scheint, dass Menschen aus zwei Arten von Text wählen ("kurz" und "lang", gemessen an der Anzahl der Wörter, die sie emittieren), um zwei verschiedene Motivationen für das Schreiben von Text zu erhalten. Ich würde sie "Navigations" - und "Informations" -Motivationen nennen.
Wenn ein Autor möchte, dass Sie schnell erfahren, was geschrieben steht, verwendet er "Navigationstext", dh einige Wörter (wie "STOP", "Read this", "Click here"). Dies ist die am häufigsten verwendete Textart in Navigationselementen (Menüs usw.).
Wenn ein Autor möchte, dass Sie tief verstehen, was er / sie meint, verwendet er / sie viele Wörter. Auf diese Weise wird die Mehrdeutigkeit auf Kosten einer Erhöhung der Redundanz beseitigt. Artikelähnlicher Inhalt fällt normalerweise in diese Klasse, da er mehr als nur wenige Wörter enthält.
Während diese Trennung in einer Vielzahl von Fällen zu funktionieren scheint, wird es mit Schlagzeilen, kurzen Sätzen, Haftungsausschlüssen, Copyright-Fußzeilen usw. schwierig.
Es gibt ausgefeiltere Strategien und Funktionen, mit denen der Hauptinhalt vom Boilerplate getrennt werden kann. Zum Beispiel die Verbindungsdichte (Anzahl der Wörter in einem Block, die verknüpft sind, im Vergleich zur Gesamtzahl der Wörter im Block), die Merkmale der vorherigen / nächsten Blöcke, die Häufigkeit eines bestimmten Blocktextes im "gesamten" Web, die DOM-Struktur des HTML-Dokuments, das visuelle Bild der Seite usw.
Sie können meinen neuesten Artikel " Boilerplate Detection using Shallow Text Features " lesen , um einen Einblick aus einer theoretischen Perspektive zu erhalten. Sie können sich auch das Video meiner Papierpräsentation auf VideoLectures.net ansehen.
"Lesbarkeit" verwendet einige dieser Funktionen. Wenn Sie sich das SVN-Änderungsprotokoll genau ansehen, werden Sie feststellen, dass sich die Anzahl der Strategien im Laufe der Zeit geändert hat, ebenso wie die Extraktionsqualität der Lesbarkeit. Beispielsweise hat die Einführung der Verbindungsdichte im Dezember 2009 sehr zur Verbesserung beigetragen.
Meiner Meinung nach macht es daher keinen Sinn, "Lesbarkeit macht es so" zu sagen, ohne die genaue Versionsnummer zu erwähnen.
Ich habe eine Open Source-Bibliothek zur Extraktion von HTML-Inhalten namens boilerpipe veröffentlicht , die verschiedene Extraktionsstrategien bietet. Je nach Anwendungsfall funktioniert der eine oder andere Extraktor besser. Sie können diese Extraktoren auf Seiten Ihrer Wahl mit der begleitenden Boilerpipe-Web-App in Google AppEngine testen.
Informationen zum Sprechen von Zahlen finden Sie auf der Seite " Benchmarks " im Boilerpipe-Wiki, auf der einige Extraktionsstrategien verglichen werden, darunter Boilerpipe, Lesbarkeit und Apple Safari.
Ich sollte erwähnen, dass diese Algorithmen davon ausgehen, dass der Hauptinhalt tatsächlich Volltext ist. Es gibt Fälle, in denen der "Hauptinhalt" etwas anderes ist, z. B. ein Bild, eine Tabelle, ein Video usw. Die Algorithmen funktionieren in solchen Fällen nicht gut.
Prost,
Christian
quelle
Die Lesbarkeit ist ein Javascript-Lesezeichen. Dies bedeutet, dass der clientseitige Code das DOM manipuliert. Schauen Sie sich das Javascript an und Sie sollten sehen können, was los ist.
Workflow und Code der Lesbarkeit:
Und wenn Sie den JS- und CSS-Dateien folgen, die der obige Code enthält, erhalten Sie das gesamte Bild:
http://lab.arc90.com/experiments/readability/js/readability.js (dies ist ziemlich gut kommentiert, interessante Lektüre)
http://lab.arc90.com/experiments/readability/css/readability.css
quelle
Natürlich gibt es dafür keine 100% zuverlässige Möglichkeit. Den Quellcode der Lesbarkeit können Sie hier einsehen
Im Grunde versuchen sie, positive und negative Textblöcke zu identifizieren . Positive Bezeichner (dh Div-IDs) wären etwa:
Negative Bezeichner wären:
Und dann haben sie unwahrscheinliche und vielleicht Kandidaten. Was sie tun würden, ist zu bestimmen, was am wahrscheinlichsten der Hauptinhalt der Site ist, siehe Zeile
678
in der Lesbarkeitsquelle. Dazu werden hauptsächlich die Länge der Absätze, ihre Bezeichner (siehe oben), der DOM-Baum (dh wenn der Absatz ein letzter untergeordneter Knoten ist) analysiert, alles Unnötige entfernt, die Formatierung entfernt usw.Der Code hat 1792 Zeilen. Es scheint ein nicht triviales Problem zu sein, also können Sie sich vielleicht von dort inspirieren lassen.
quelle
Interessant. Ich habe ein ähnliches PHP-Skript entwickelt. Grundsätzlich werden Artikel gescannt und Wortteile an den gesamten Text angehängt (Brill Tagger). Dann werden grammatikalisch ungültige Sätze sofort beseitigt. Dann zeigen plötzliche Verschiebungen der Pronomen oder der Vergangenheitsform an, dass der Artikel beendet ist oder noch nicht begonnen hat. Wiederholte Phrasen werden gesucht und entfernt, z. B. "Yahoo News Sports Finance" wird zehnmal auf der Seite angezeigt. Sie können auch Statistiken über den Ton mit einer Vielzahl von Wortbanken erhalten, die sich auf verschiedene Emotionen beziehen. Plötzliche Tonänderungen von aktiv / negativ / finanziell zu passiv / positiv / politisch deuten auf eine Grenze hin. Es ist wirklich endlos, egal wie tief Sie graben möchten.
Die Hauptprobleme sind Links, eingebettete Anomalien, Skriptstile und Aktualisierungen.
quelle