Automatische Texterstellung mit Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hoxplot
User
Beiträge: 1
Registriert: Montag 11. September 2017, 17:33

Hallo Forum,

ich habe eine Sammlung unterschiedlicher Daten, die ich gerne in Textform bringen würde. Also im Grunde sowas wie automatische Texterstellung, wobei das befüllen von Templates mit Unterscheidung von Singular und Plural erstmal reichen würde. Gibt es denn irgendeinen Fachbegriff dazu, nach welchem ich suchen könnte oder gibt es sogar schon irgendwelche Python-Module, die sich mit sowas beschäftigen? Einen kleinen Anfang habe ich bereits erarbeitet:

Code: Alles auswählen

import random

CONJUNCTIONS = ["und", "sowie"]

class Phrase:

    def __init__(self, singular, plural, subsequent=True):
        self.singular = singular
        self.plural = plural
        self.subsequent = subsequent

    def create_phrase(self, listing):
        if self.subsequent:
            if len(listing) == 1:
                return listing[0] + self.singular
            else:
                return create_listing_phrase(listing) + self.plural
        else:
            if len(listing) == 1:
                return self.singular + listing[0] + "."
            else:
                return self.plural + create_listing_phrase(listing) + "."


def create_listing_phrase(words, cunjunctions=CONJUNCTIONS):
    last_word = words.pop()
    comma = ", "
    comma_separeted_part = comma.join(words)
    random_conjunction = random.choice(cunjunctions)
    return comma_separeted_part + " " + random_conjunction + " "+ last_word


def main():

    singular = " ist ein leckeres Getränk."
    plural = " sind leckere Getränke."
    drinks = ["Limo", "Cola", "Wein", "Apfelschorle"]
    print(Phrase(singular, plural).create_phrase(drinks))
    drinks = ["Limo"]
    print(Phrase(singular, plural).create_phrase(drinks))

    singular = "Ich rede von einem Getränk wie zum Beispiel "
    plural = "Ich rede von Getränken wie zum Beispiel "
    drinks = ["Limo", "Cola", "Wein", "Apfelschorle"]
    print(Phrase(singular, plural, subsequent=False).create_phrase(drinks))
    drinks = ["Apfelschorle"]
    print(Phrase(singular, plural, subsequent=False).create_phrase(drinks))

if __name__ == '__main__':
    main()
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich verstehe dein Anliegen nicht richtig. Wenn das, was das Beispiel zeigt, alles ist, hast du es doch fast. Du musst die Daten dann halt nur nicht im Qulltext hardcoden, sondern aus einer Datei oder so lesen.

Unter Python ist zum Arbeiten mit / zur Analyse von Sprache das NLTK-Modul (NLTK = natural language toolkit) ziemlich populär.

Gruß, noisefloor
Antworten