Seite 1 von 1

Text Analyse - Häufigkeit der Begriffe aus Wörterbuch in Dateien finden

Verfasst: Mittwoch 8. April 2020, 15:13
von RobertPiper
Hallo, ich bin noch nicht mit Python vertraut. Dass Textanalysen mit Python möglich sind, habe ich aber bereits in Erfahrung gebracht.
Allerdings habe ich viele Fragen wie ich die Aufgabe der Text Analyse am besten starten sollte und weiß nicht, ob ich in einigen Bereichen in die falsche Richtung gehe. Ich würde gern herausfinden welche Guidelines für mich wichtig sind.

Ich habe mehrere Dateien und möchte die Häufigkeit von Suchbegriffen herausfinden. Die Suchbegriffe sind mehreren Kategorien zugeordnet. So möchte ich die Kategorien später vergleichen. Die Suchbegriffe bestehen oft aus mehr als einem Wort.
Wie stark die Kategorien in der jeweiligen Datei ist, möchte ich später vergleichen. Jede Datei ist dabei einer bestimmten Beobachtung zugeordnet. Es besteht eine Tabelle (in Stata) in der die Beobachtungen in den Zeilen aufgelistet sind. Eine Variable hat eine bestimmte Bezeichnung, mit der ich die Beobachtungen identifizieren kann. Die Dateien habe ich daher jeweils so benannt. Nun möchte ich also eine Text Analyse mit den Dateien durchführen und die Ergebnisse in die Tabelle als weitere Spalten anfügen. Später werde ich Regressionen vornehmen und die Kategorien analysieren. Ich habe die Vorgabe die Statistik mit Stata durchzuführen.

Ich habe Fragen zum Code, zu Wörterbüchern und wie für mehrere Dateien die Anzahl angezeigt werden kann.

1. Gibt es bestimmte Libraries mit Code für die Text Analyse? Ich habe die Idee, dass ich dort meine Suchbegriffe einsetzen kann.

1.a Ist ein Code möglich bei dem ein Katalog mit Suchbegriffen verknüpft werden kann?

1.b Für mich ist wichtig herauszufinden welcher Wert eine Kategorie insgesamt hat. Es ist nicht relevant wie oft ein einzelner Suchbegriff vorkommt. Kann ich daher einen Wert herausbekommen, der die Gesamtheit der Häufigkeiten aller Wörter einer Kategorie ausgibt? Oder ist ein Zwischenschritt nötig und ich muss für jeden Suchbegriff einzeln die Häufigkeit herausfinden und dann die Häufigkeiten innerhalb der Kategorie addieren?

1.c Die Suchbegriffe sind in den Sprachen Deutsch, Englisch, Französisch, Spanisch. Sind Besonderheiten bei den Deklinationen zu beachten? Müssen zum Beispiel "künstliche Intelligenz" und "künstlicher Intelligenz" als zwei Suchbegriffe gesucht werden oder gibt es andere Lösungen?

1.d Viele Begriffe haben Umlaute, Akzente oder Apostroph. Sind da Besonderheiten zu beachten?

1.e Wie ist es möglich alle Wörter in Kleinbuchstaben umzuwandeln bzw. zu erfassen? So muss im Wörterbuch nur eine Version mit Kleinbuchstaben geführt werden.


2. Gibt es eine Übersicht der Themen für die bereits Wörterbücher existieren? Zum Beispiel zum Thema Digitalisierung und zum Thema Corporate Governance.


3. Kann eine Tabelle ausgeworfen werden, um die Häufigkeit je Kategorie pro Datei anzuzeigen?

3.a Kann eine Spalte ausgeworfen werden, die den jeweiligen Dateinamen anzeigt?

3.b Kann für jede Kategorie eine Spalte erstellt werden, in der der Wert angezeigt wird?

3.c Einige Kategorien können noch zusammengenommen werden. Wie kann ich die Werte in einer übergeordneten Kategorie addieren?

3.d Kann die Tabelle mit Excel ausgeworfen werden?

3.e Gibt es eine maximale Anzahl an Dateien die analysiert werden kann?

3.f Können die Dateien in PDF vorliegen oder müssen es txt Dateien sein?


4.a Wie kann ich die Gesamtanzahl der Wörter in einer Datei herausfinden? Ich denke, dass ich dies herausfinden muss, um die Dateien miteinander vergleichen zu können. Dann kann ich eine Prozentzahl herausfinden: (Anzahl Häufigkeit in einer Kategorie)/(Anzahl aller Wörter)

4.b Gibt es Vorlagen zu stopwords? Ich würde die stopwords zu allen 4 Sprachen (Deutsch, Englisch, Französisch, Spanisch) über alle Dateien gleichermaßen rüberlaufen lassen. So kann dann die Gesamtzahl an relevanten Wörtern die Grundlage bilden.

Vielen Dank,
Robert

Re: Text Analyse - Häufigkeit der Begriffe aus Wörterbuch in Dateien finden

Verfasst: Mittwoch 8. April 2020, 16:22
von __blackjack__
@RobertPiper: Ad 1: Das NLTK-Package ist wahrscheinlich nützlich.

Ad 1.b: Es wird wahrscheinlich ein Zwischenschritt nötig sein. Aber der ist ja nicht wirklich kompliziert.

Ad 1.c: Ich glaube der Begriff den man da sucht ist „stemming“, also dass man ”künstliche” und ”künstlicher” beide auf ”künstlich” zurückführt.

Ad 1.d: Man muss auf die Kodierung achten, damit die Daten richtig eingelesen und ausgegeben werden. Ansonsten kann Python gut mit Unicode umgehen.

Ad 1.e: Da Du Dich sowieso mit Zeichenkettenoperationen vertraut machen musst, schau einfach mal nach dem die in Deinem Lehrmaterial durchgenommen wurden, alle Methoden an die Zeichenketten haben. Da ist auch etwas zum Umwandeln in Gross- oder Kleinbuchstaben dabei.

Ad 3: Was ist eine ”Tabelle”? Aber grundsätzlich ja, man kann CSV-Dateien schreiben, aber auch Excel-Dateien, oder auch HTML mit Tabellen.

Ad 3.a: Ja, warum sollte das nicht gehen?

Ad 3.b: Ebenfalls ja. Wieviele Spalten und mit welchen Werten geschrieben werden, bestimmst doch *Du*. Da ist kein Code in Python der sagt, oh das sieht wie ein Dateiname aus, das darfst Du nicht schreiben. Das wäre ein bisschen schräg. 😉

Ad 3.c: Wenn Du die Kategorien mit den Werten hast, und eine Zuordnung von Kategorie zu übergeordneter Kategorie, dann schreibst Du einfach Code der die Werte entsprechend addiert.

Ad 3.d: Mit Excel oder als Excel-Datei? Also es geht auch mit Excel in dem man das von Python aus fernsteuert, das ist aber umständlich und funktioniert dann nur wenn auf dem Rechner Excel installiert ist.

Ad 3.e: Ja, 42. Mehr geht nicht. 😜 Sorry, aber das ist eine komische Frage. Es gibt grundsätzlich keine Beschränkung wie viele Dateien ein Programm verarbeiten kann, ausgenommen wie viele *gleichzeitig* *offen* sein können, und natürlich ist der Arbeitsspeicher begrenzt.

Ad 3.f: Es gibt Packages um Text aus PDF-Dateien zu extrahieren. Allerdings muss man sich da bewusst sein, PDF nicht dafür gedacht ist, und der Text den man sehen kann, nicht zwingend in der Reihenfolge stehen muss wie man das intuitiv erwartet. Oft ist das kein Problem, aber manchmal eben schon.

Ad 4.a: Du musst den Text in Wörter zerlegen und dann siehst Du ja wie viele das sind. Wie man den Text zerlegt, hängt davon ab welche Werkzeuge man dafür nimmt.

Ad 4.b: Ich denke NLTK hat da etwas, bin mir aber nicht 100% sicher.

Re: Text Analyse - Häufigkeit der Begriffe aus Wörterbuch in Dateien finden

Verfasst: Mittwoch 8. April 2020, 19:29
von nezzcarth
Mal zu 1: Neben NLTK gibt es noch weitere Bibliotheken zur Verarbeitung natürlicher Sprache. Ich nehme auch gerne textblob. Das setzt unter anderem auf NLTK auf, ist aber etwas leichter zu bedienen. Viele der Schritte, die du beschreibst (Stemming, Normalisierung, etc.) sind übliche Schritte im Information Retrieval bzw. in Indexierungs-Pipelines von Volltextsuchen. Auch wenn deine Datenmengen vielleicht nicht so groß sind, schau doch mal, ob dir so etwas weiterhilft und ob das auf deine Aufgabe passt. Eine rein Python basierte Lösung (wenn auch nicht die gängigste) ist zum Beispiel Whoosh. Damit kannst du dir einen Volltextindex, auf dem du suchen kannst, sowie eine Indexierungspipeline bauen. Wenn du es ganz selbst machen möchtest, sind das mehrere kleineEinzelschritte (z.B. Tokenisierung, Stemming (sprachabhängig), Normalisierung, etc., Stopwortfilter). Das ist nicht übermäßig schwierig, aber auch nicht unbedingt ein Einsteigerprojekt.

EDIT:
Stopwortlisten gibt es viele. Zum Beispiel:
https://github.com/postgres/postgres/tr ... /stopwords
https://github.com/apache/lucene-solr/t ... /conf/lang