Seite 1 von 1

Substantive mit Python filtern

Verfasst: Samstag 18. April 2026, 17:59
von Vesemir
Gibt es einen einfachen Weg deutsche Substabtive aus einem Datensatz zu filtern. Gerne mit nltk oder so simpel wie möglich. Ich will mir die 200 häufigsten anzeigen lassen

Re: Substantive mit Python filtern

Verfasst: Samstag 18. April 2026, 20:48
von nezzcarth
Du kannst mit einem Part-of-Speech-Tagger die Wortarten in einem Text bestimmen und anschließend dann nach Substantiven filtern. POS-Tagger gibt es als Teil größerer Frameworks (spaCy, nltk, textblob) oder standalone.

Re: Substantive mit Python filtern

Verfasst: Samstag 18. April 2026, 23:22
von Pedroski55
Nichts einfacher wie das! Probieren wir mit diesem Text:
"""Ein neues Jahr besteht aus insgesamt vier Jahreszeiten.
Frühling, Sommer, Herbst und Winter folgen nacheinander.
Das Jahr beginnt im Januar.
Im Januar und Februar ist es draußen noch sehr kalt und man muss sich warm anziehen, um nicht zu frieren und krank zu werden.
Der Frühling beginnt im März.
Dann steigen die Temperaturen und es wird wieder wärmer.
In den Monaten März, April und Mai ist Frühling.
Von Juni bis September findet der Sommer statt.
Der Sommer ist die heißeste Jahreszeit in Deutschland.
Viele Menschen fahren in dieser Zeit in den Urlaub.
Ab Mitte September bis November gibt es in Deutschland den Herbst.
Dann wird es draußen langsam kälter und man muss sich wieder wärmer anziehen.
Der November und Dezember sind die letzten Monate des Jahres.
Dann stellt sich der Winter ein.
Wenn es besonders kalt ist, kann es im Winter schneien."""

Code: Alles auswählen

import regex as re

# alle gesuchte Worter
worter = ['Jahr',  'Frühling', 'Sommer', 'Herbst', 'Winter']
# Dict um Zahlen zu speichern
wortzahl = {wort: 0 for wort in worter}

# speicher die Datei als Textdatei um sich das Leben bequem zu machen
dtext = '/home/peterr/temp/Deutschetexte/Dtext1.txt'

# falls der Text sehr gross ist benutze einen Generator
def zeilen_holen(text):
    with open(text) as f:
        for line in f:
            yield line

# finde alle Buchstaben und nur Buchstaben
e = re.compile(r'\w+')

# entferne was nicht Buchstabe ist ,.; Leertaste usw
def entferne_zeichen(text):
    res = e.findall(text)
    return res
    
for l in zeilen_holen(dtext):
    print(l)
    linie_list = entferne_zeichen(l)
    for wort in linie_list:
        if wort in worter:
            wortzahl[wort] +=1
wortzahl =
{'Jahr': 2, 'Frühling': 3, 'Sommer': 3, 'Herbst': 2, 'Winter': 3}

Re: Substantive mit Python filtern

Verfasst: Sonntag 19. April 2026, 01:36
von Pedroski55
Fiel mir grad ein:

Nun müsste man die obige Liste worter mit einer Liste aller Substantive. Die Internetseite hier hat eine solche Liste.

Bißchen webscraping und könnte man sich die holen.

Dann das Resultat nach Haufigkeit der Worter sortieren:

Code: Alles auswählen

sortiert_dict = {key: value for key, value in sorted(wortzahl.items(), reverse=True, key=lambda item: item[1])}
Dann einfach die ersten 200 von sortiert_dict abzweigen!

Code: Alles auswählen

häufige_worter = {}
if len(sortiert_dict) < 200:
    häufige_worter = sortiert_dict
else:
    count = 1
    for key in sortiert_dict.keys():
        häufige_worter[key] = sortiert_dict[key]
        count +=1
        if count > 200:
            break