Bereinigt Text aus PDFs

8

Das ist eher eine algorithmische Frage als eine spezifische Sprachfrage, daher freue ich mich über eine Antwort in jeder Sprache - sogar Pseudocode, auch nur eine Idee.

Hier ist mein Problem: Ich muss an einem großen Datensatz arbeiten, der aus Artikeln in PDF stammt und brutal in .txt kopiert / eingefügt wurde. Ich habe nur das Ergebnis dieser Abscheulichkeit, die etwa 16k Papiere ist, für 3,5 GB oder Text (das Korpus, das ich verwende, ist das ACL Antology Network, Ссылка ).

Der "Müll" kommt von Dingen wie Formeln, Bildern, Tabellen und so weiter. Es taucht nur in der Mitte des laufenden Textes auf, daher kann ich keine regulären Ausdrücke verwenden, um es zu bereinigen, und mir fällt auch keine Möglichkeit ein, maschinelles Lernen dafür zu verwenden. Ich habe schon eine Woche damit verbracht, und dann habe ich beschlossen, mit einer schnellen und schmutzigen Reparatur weiterzumachen. Ich kümmere mich nicht mehr darum, es vollständig zu säubern, ich interessiere mich nicht für falsch negative und positive Ergebnisse, solange der Großteil dieser Textbereiche entfernt wird.

Einige Beispiele für den Text: Beachten Sie, dass Formeln Junk-Zeichen enthalten, aber Tabellen und Bildunterschriften nicht (aber sie machen meinen Satz immer noch sehr lang und damit unzerreißbar). Müll in Fettschrift.

Einfach eins:

  

Die Experimente wurden wiederholt, während die Spezialisierung des ersten Schemas mit den meisten Expansionen und dann der zwei am meisten expandierten Schemata gehemmt wurde.   Maßnahmen zur Deckung und Beschleunigung sind wichtig 1 Solange wir an der Erhaltung der den Sätzen zugewiesenen f-Struktur interessiert sind, ist dieser Begriff der Deckung strenger als notwendig.   Dieselbe f-Struktur kann tatsächlich durch mehr als ein Parse zugewiesen werden, so dass in einigen Fällen ein Satz außerhalb der Abdeckung betrachtet wird, selbst wenn die spezialisierte Grammatik ihm die korrekte f-Struktur zuweist.    2'VPv 'und' VPverb [main] 'decken VPs ab, die von einem Hauptverb angeführt werden.   "NPadj" umfasst NPs mit angehängten Adjektiven.   205 Die ursprüngliche Regel: l / Pperfp - + ADVP * SE (t ADJUNKT) ($ ADV_TYPE) = t, padv ~ / r {@ M_Head_Perfp I @ M_Head_Passp} @ (Anaph_Ctrl $) {AD VP + SE ('~ ADJUNCT) ($ ADV_TYPE) = vpadv wird ersetzt durch: ADVP, [. E (~ ADJUNCT) (.l.   ADV_TYPE) = vpadv l / 'Pperfp - + @PPadjunct @PPcase_obl {@M.Head_Pevfp [@ M..Head_Passp} @ (Anaph_Ctrl ~) V {@M_Head_Perfp I @ M_Head_Passp} @ (Anaph_Ctrl ~) Abbildung 1: Das Beschneiden einer Regel aus der eigentlichen französischen Grammatik.   Die Zeichen "*" und "+" haben die übliche Interpretation wie bei regulären Ausdrücken.   Ein in Klammern eingeschlossener Unterausdruck ist optional.   Alternative Unterausdrücke sind in geschweiften Klammern eingeschlossen und durch das "[" - Zeichen getrennt.   Ein "@" gefolgt von einem Bezeichner ist ein Makroexpansionsoperator und wird schließlich durch weitere Funktionsbeschreibungen ersetzt.    Korpus - ..   ,, 0.1 [Disambiguated Treebank Baumbank Mensch Experte Grammatik Spezialisierung Spezialisierte Grammatik Abbildung 2: Die Einstellung für unsere Experimente zur Grammatik Spezialisierung.   Indikatoren dafür, was mit dieser Form des Abschneidens der Grammatik erreicht werden kann.   Sie können jedoch möglicherweise irreführend sein, da die Ausfallzeiten für nicht aufgedeckte Sätze erheblich niedriger sein können als ihre Satzzeiten, wenn sie nicht außerhalb des Erfassungsbereichs waren.

Harte:

  

Tabelle 4 fasst die Präzisionsergebnisse für englische und rumänische Koreferenz zusammen.   Die Ergebnisse zeigen, dass die englische Koreferenz mehr als die rumänische Koreferenz angegeben ist, aber SNIZZLE verbessert die Koreferenzauflösung in beiden Sprachen.   Es gab 64% Fälle, in denen die englische Koreferenz durch eine Heuristik mit höherer Priorität als die entsprechende Heuristik für das rumänische Pendant gelöst wurde.   Dieses Ergebnis erklärt, warum es eine bessere Präzisionsverbesserung für    Englisch Rumänisch SWIZZLE auf Englisch SWIZZLE auf Rumänisch Nominal Pronominal 73% 89% 66% 78% 76% 93% 71 ° / o 82% Tabelle 4: Koreferenzgenauigkeit Gesamt 84% 72% 87% 76% Englisch Rumänisch SWIZZLE on English SWIZZLE auf Rumänisch Nominal 69% 63% 66% 61% Pronominal Insgesamt 89% 78% 83% 72% 87% 77% 80% 70% Tabelle 5: Koreferentückruf die englische Koreferenz. Tabelle 5 zeigt auch die Ergebnisse des Rückrufs.   Der Vorteil der datengesteuerten Koreferenzierung gegenüber anderen Methoden liegt in der besseren Wiedererkennungsleistung.   Dies erklärt sich dadurch, dass diese Methode eine größere Vielfalt von Koreferenzmustern erfasst.   Auch wenn andere Systeme zur Koreferenzierung für bestimmte Systemformen besser funktionieren, werden ihre Ergebnisse durch den Systemansatz übertroffen.   Die mehrsprachige Koreferenz wiederum verbessert die Genauigkeit mehr als der Abruf der einsprachig datengetriebenen Koreferenzsysteme.   Darüber hinaus zeigt Tabelle 5, dass die englische Correspondence zu einem besseren Erinnerungsvermögen führt als die rumänische Correspondence.   Der Aufruf zeigt jedoch für SNIZZLE eine Abnahme für beide Sprachen, da unpräzise Koreferenzverknüpfungen gelöscht werden.Wie es normalerweise der Fall ist, verringert das Löschen von Daten den Rückruf.   Alle Ergebnisse wurden unter Verwendung des für die MUC-Auswertungen entwickelten automatischen Scorer-Programms erhalten.

Beachten Sie, dass die Tabelle keine merkwürdigen Zeichen enthält und genau in der Mitte des Satzes steht: "Dieses Ergebnis erklärt, warum es eine bessere Genauigkeitsverbesserung für die englische Koreferenz -TABLE HERE- gibt." Ich kann nicht wissen, wo der Tisch in Bezug auf den laufenden Text sein wird. Es kann vorkommen, vor einem Satz, danach oder darin wie in diesem Fall. Beachten Sie auch, dass der Tisch Scheiße nicht mit einem Punkt endet (die meisten Untertitel in Zeitungen nicht ...), so kann ich nicht auf Interpunktion verlassen, um es zu erkennen. Ich bin natürlich mit nicht akkuraten Grenzen zufrieden, aber ich muss noch etwas mit diesen Tabellen machen. Einige von ihnen enthalten eher Wörter als Zahlen, und in diesen Fällen habe ich nicht genügend Informationen: keine Junky-Charaktere, nichts. Es ist nur für Menschen offensichtlich: S

    
Tex 02.05.2012, 14:42
quelle

1 Antwort

1

(Ich hasse schlechte Kopien und Pasten.)

Wenige Ideen, die Sie hilfreich finden könnten (Ich habe jeden von ihnen selbst in diesem oder jenem Punkt benutzt)

  1. (Sehr rohe Gewalt): Verwenden Sie einen Tokenizer und ein Wörterbuch (echtes Wörterbuch, nicht die Datenstruktur) - analysieren Sie die Wörter und jedes Wort, das kein Wörterbuchwort ist - entfernen Sie es. Es könnte sich als problematisch erweisen, wenn Ihr Text viele Firmen- / Produktnamen enthält - aber auch das kann mit den richtigen Indizes gelöst werden (es gibt ein paar im Internet - ich benutze einige anständige, damit ich sie nicht teilen kann, Entschuldigung)

  2. Gegeben sei ein Satz sauberer Dokumente (sagen wir 2K), einen tf / idf-Index von ihnen erstellen und diesen als Wörterbuch verwenden - jeden Begriff aus den anderen Dokumenten, der nicht im Index erscheint ( oder erscheint mit einem sehr niedrigen tf / idf) - entfernen Sie es. Dies sollte Ihnen ein ziemlich sauberes Dokument geben.

  3. Verwenden Sie den mechanischen Mechanismus von Amazon: Richten Sie eine Aufgabe ein, bei der die Person, die das Dokument liest, den Absatz markieren muss, der keinen Sinn ergibt. Sollte für die mechanische Turk-Plattform ziemlich einfach sein (16.5K ist nicht so viel) - das wird Sie wahrscheinlich ein paar hundert $ kosten, aber Sie werden wahrscheinlich eine ziemlich nette Säuberung des Textes bekommen (Also, wenn es um Unternehmensgeld geht, das kann dein Ausweg sein - sie müssen für ihre Fehler bezahlen :)).

  4. Wenn Sie bedenken, dass Ihre Dokumente aus derselben Domäne stammen (gleiche Themen, alles in allem) und die Probleme ziemlich gleich sind (gleiche Tabellenüberschriften, ungefähr gleiche Formeln): Brechen Sie alle Dokumente in Sätze und versuchen Sie Clustering die Sätze mit ML. Wenn die Tabellenüberschriften / Formeln relativ ähnlich sind, sollten sie sich gut von den restlichen Sätzen trennen, und dann können Sie die Dokumente Satz für Satz bereinigen (Holen Sie ein Dokument, brechen Sie es für jeden Satz in Sätze, wenn dies der Fall ist Teil des "seltsamen" Clusters, entferne es)

Yossale 14.05.2012, 15:47
quelle