Seite 1 von 1

Automatische Texterstellung mit Python

Verfasst: Montag 11. September 2017, 17:43
von hoxplot
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()

Re: Automatische Texterstellung mit Python

Verfasst: Montag 11. September 2017, 18:30
von noisefloor
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