Effiziente Methode zum Erstellen einer Term-Density-Matrix aus Pandas DataFrame

7

Ich versuche, eine Term-Density-Matrix aus einem Pandas-Datenrahmen zu erstellen, damit ich die im Datenrahmen erscheinenden Terme bewerten kann. Ich möchte auch den 'räumlichen' Aspekt meiner Daten behalten können (siehe Kommentar am Ende des Posts für ein Beispiel dessen, was ich meine).

Ich bin neu in Pandas und NLTK, also erwarte ich, dass mein Problem mit einigen existierenden Werkzeugen lösbar ist.

Ich habe einen Datenrahmen, der zwei interessante Spalten enthält: Sagen Sie "Titel" und "Seite"

%Vor%

Mein Ziel ist es, den Text zu bereinigen und interessante Begriffe an einen TDM-Datenrahmen weiterzugeben. Ich benutze zwei Funktionen, um mir beim Säubern der Strings zu helfen.

%Vor%

Und eine Funktion, die die Manipulation des Datenrahmens durchführt

%Vor%

Dies gibt

zurück %Vor%

Aber es ist schmerzhaft langsam, wenn große Mengen analysiert werden (Ausgabe von hunderttausend Zeilen, tausende von Spalten). Meine zwei Fragen:

Kann ich diese Implementierung beschleunigen?

Gibt es ein anderes Tool, mit dem ich das schaffen könnte?

Ich möchte den 'räumlichen' Aspekt meiner Daten behalten können, zum Beispiel, wenn 'Ei' sehr oft auf den Seiten 1-10 erscheint und dann oft auf den Seiten 500-520 wieder erscheint, möchte ich das wissen.

    
nikosd 05.03.2014, 18:13
quelle

2 Antworten

20

Sie können scikit-learns CountVectorizer verwenden:

%Vor%

Es gibt den Begriff Dokumentmatrix in spärlicher Darstellung zurück, weil diese Matrix normalerweise riesig und, naja, spärlich ist.

Für ein bestimmtes Beispiel würde ich sagen, dass die Konvertierung in einen DataFrame immer noch funktioniert:

%Vor%     
herrfz 05.03.2014, 18:40
quelle
0

herrfz bietet eine Möglichkeit, damit umzugehen, aber ich wollte nur darauf hinweisen, dass das Erstellen einer Term-Density-Datenstruktur mit einem Python-Set kontraproduktiv ist, da ein Set eine Sammlung einzigartiger Objekte ist. Sie werden nicht in der Lage sein, die Anzahl für jedes Wort zu erfassen, sondern nur das Vorhandensein eines Wortes für eine bestimmte Zeile.

%Vor%

Um die Stoppwörter zu entfernen, könnten Sie etwas wie

tun %Vor%

nach Tokenisierung.

    
Jeremy Jordan 26.07.2016 21:57
quelle

Tags und Links