ich bin Python-Neuling und stehe vor einem Problem....
Ich habe in einem Verzeichnis 5 txt dateien (welche im folgenden als Posts bezeichne) mit den Namen 01.txt bis 05.txt.
Diese Dateien haben den folgenden Inhalt:
01.txt : This is a toy post about machine learning. Actually, it contains not much interesting stuff.
02.txt: Imaging databases provide storage capabilities.
03.txt: Most imaging databases save images permanently.
04.txt: Imaging databases store data.
05.txt: Imaging databases store data. Imaging databases store data. Imaging databases store data.
Diese 5 Dateien möchte ich nun in Python laden und den Porter Stemmer des nltk drüber laufen lassen bevor ich sie dann weiter verarbeite.
Mit folgendem Code:
Code: Alles auswählen
import os
import numpy as np
import string
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
token=[]
stem_post=[]
#Laden der Dateien
post= [open(os.path.join("C:\\Users\Tobias\\PycharmProjects\\MachineLearing\\toy\\",f)).read()for f in os.listdir("C:\\Users\Tobias\\PycharmProjects\\MachineLearing\\toy")]
#Entfernen der Punctuation
for i in range(0,len(post)):
post[i] = "".join(j for j in post[i] if j not in string.punctuation)
#Tokenize the post
for l in range(len(post)):
token.append(word_tokenize(post[l]))
print(token)
#Stem the code
porter=PorterStemmer()
for w in token:
for k in w:
stem_post.append(porter.stem(k))
print(stem_post)
print(token)
>>> [['This', 'is', 'a', 'toy', 'post', 'about', 'machine', 'learning', 'Actually', 'it', 'contains', 'not', 'much', 'interesting', 'stuff'], ['Imaging', 'databases', 'provide', 'storage', 'capabilities'], ['Most', 'imaging', 'databases', 'save', 'images', 'permanently'], ['Imaging', 'databases', 'store', 'data'], ['Imaging', 'databases', 'store', 'data', 'Imaging', 'databases', 'store', 'data', 'Imaging', 'databases', 'store', 'data']]
Nun möchte ich über eben diese Elemente den PorterStemmer drüber laufen lassen. Tue ich das mit dem oben beschriebenen Code und lasse mir das Ergebnis ausgeben erhalte ich:
print(stem_post)
>>>['thi', 'is', 'a', 'toy', 'post', 'about', 'machin', 'learn', 'actual', 'it', 'contain', 'not', 'much', 'interest', 'stuff', 'imag', 'databas', 'provid', 'storag', 'capabl', 'most', 'imag', 'databas', 'save', 'imag', 'perman', 'imag', 'databas', 'store', 'data', 'imag', 'databas', 'store', 'data', 'imag', 'databas', 'store', 'data', 'imag', 'databas', 'store', 'data']
Soooo. Inhaltlich, d.h. von den Wortstämmen her ist alles i.O. ABER: Ich habe nun alle Worte in EINER Liste und nicht die Worte einer jeden Datei in einer eigenen Liste welche dann zusammen eine 2D Liste ergeben wie sie bei dem Befehl print(token) ausgegeben wurde.
Für mich ist es aber essentiell, dass ich die einzelnen Posts auseinander halten kann (jeden in einer eigenen Liste habe).
Wie kann ich das so einfach wie möglich bewerkstelligen? Bitte wenn möglich mit "Anleitung" da ich ein Anfänger bin aber gerne lernen möchte.
Für Eure Antworten bedanke ich mich im Voraus!