Ich suche Ratschläge, wie man Elemente aus mehreren Textdateien abliest, um ein Wörterbuch zu erstellen.Python analysiert Text aus mehreren TXT-Dateien
Diese Textdatei: https://pastebin.com/Npcp3HCM
wurde manuell in diese transformierte Datenstruktur erforderlich: https://drive.google.com/file/d/0B2AJ7rliSQubV0J2Z0d0eXF3bW8/view
Es gibt Tausende solcher Textdateien und sie unterschiedliche Abschnittsüberschriften haben können wie in diesen Beispielen gezeigt:
begann ich durch das Lesen der Dateien
from glob import glob
txtPth = '../tr-txt/*.txt'
txtFiles = glob(txtPth)
with open(txtFiles[0],'r') as tf:
allLines = [line.rstrip() for line in tf]
sectionHeading = ['Corporate Participants',
'Conference Call Participiants',
'Presentation',
'Questions and Answers']
for lineNum, line in enumerate(allLines):
if line in sectionHeading:
print(lineNum,allLines[lineNum])
Meine Idee war, suchen die Zeilennummern in dem Abschnittsüberschriften existiert und versuchen zu extrahieren den Inhalt zwischen diesen Zeilennummern, dann Streifen aus Separatoren wie Striche aus . Das hat nicht funktioniert, und ich bin bei dem Versuch, ein Wörterbuch dieser Art zu erstellen, steckengeblieben, damit ich später verschiedene Verarbeitungsalgorithmen für natürliche Sprache auf Bruchstücken ausführen kann.
{file-name1:{
{date-time:[string]},
{corporate-name:[string]},
{corporate-participants:[name1,name2,name3]},
{call-participants:[name4,name5]},
{section-headings:{
{heading1:[
{name1:[speechOrderNum, text-content]},
{name2:[speechOrderNum, text-content]},
{name3:[speechOrderNum, text-content]}],
{heading2:[
{name1:[speechOrderNum, text-content]},
{name2:[speechOrderNum, text-content]},
{name3:[speechOrderNum, text-content]},
{name2:[speechOrderNum, text-content]},
{name1:[speechOrderNum, text-content]},
{name4:[speechOrderNum, text-content]}],
{heading3:[text-content]},
{heading4:[text-content]}
}
}
}
Die Herausforderung besteht darin, dass verschiedene Dateien unterschiedliche Überschriften und Überschriften haben können. Aber es wird immer einen Abschnitt namens "Präsentation" geben, der sehr wahrscheinlich "Frage und Antwort" enthält. Diese Abschnittsüberschriften sind immer durch eine Zeichenkette mit Gleichheitszeichen getrennt. Der Inhalt verschiedener Sprecher wird immer durch Bindestriche getrennt. Die "Sprachreihenfolge" für Q & Ein Abschnitt ist mit einer Zahl in eckigen Klammern gekennzeichnet. Die Teilnehmer sind immer am Anfang des Dokuments mit einem Sternchen vor ihrem Namen gekennzeichnet und ihre Kachel befindet sich immer in der nächsten Zeile.
Jeder Vorschlag zum Parsen der Textdateien ist willkommen. Die ideale Hilfe wäre, eine Anleitung zu geben, wie ein solches Wörterbuch (oder eine andere geeignete Datenstruktur) für jede Datei erstellt wird, die dann in eine Datenbank geschrieben werden kann.
Dank
--EDIT--
Eine der Dateien wie folgt aussieht: https://pastebin.com/MSvmHb2e
, in dem die „Frage & Antwort“ Abschnitt als „Präsentation“ falsch beschriftet ist und es gibt keine andere "Frage & Antwort" Abschnitt.
Und letzte Beispieltext: https://pastebin.com/jr9WfpV8
Ich werde nicht vorschlagen, dass Sie in einem einzigen 'dict' Objekt alle Textdaten zu speichern, wie Sie erwähnt haben, dass Es könnte eine große Anzahl von zu analysierenden Textdateien geben. In der Laufzeit würde der Python-Prozess mehr Zeit benötigen, um das 'dict'-Objekt zu aktualisieren, wenn die Größe des' dict' -Objekts zunimmt, und könnte OutOfMemory erhalten einige sehr große Dateien zu verarbeiten, würde ich auf einige "DBMS" setzen, um diese Art von Daten zu speichern. – ZdaR
@ZdaR danke für den Rat. Nachdem ich Ihren Kommentar gelesen hatte, entschied ich mich, mit der Datenbank zu arbeiten. Ich bin derzeit auf der Suche in sqlalchemy – samkhan13
Mislabeling wird nicht so einfach zu lösen sein. Sie müssen einen Klassifikator mit ML-Techniken erstellen, der einen Abschnitt als "Präsentation" oder "Frage & Antwort" kategorisiert, da es keine garantierten Hinweise gibt (es wird keine Menge an Mustererkennung mit handgemachten Regeln erhalten) richtig 100%) im Text vorhanden. – entrophy