Ich benutze jetzt Python, um aufeinanderfolgende großgeschriebene Wörter (mindestens zwei) in einem Text zu extrahieren.Funktionale Programmierung mit Python zum Extrahieren aufeinanderfolgender großgeschriebener Wörter
Zum Beispiel gibt es einen Satz
Hollywood ist ein Viertel in der zentralen Region von Los Angeles.
Dann wird die erwartete Ausgabe sollte
Los Angeles sein
Ich versuche, diese Sache in einer funktionalen Programmierung Art und Weise zu tun.
import itertools
import string
import operator
text = "Take any tram, U-bahn or bus which stops at Düsseldorf Hauptbahnhof (HBF). Leave the station via the main exit Konrad Adenauer Platz, you will see trams and buses in front of the station. Walk up Friedrich Ebert Straße turning right into the third street which is the Oststraße."
def fold(it):
def fold_impl(x, y):
return itertools.starmap(operator.and_, zip(x, itertools.islice(y, 1, None)))
return fold_impl(*itertools.tee(it))
def unfold(it):
def unfold_impl(x, y):
return itertools.starmap(operator.or_, zip(itertools.chain(x, [False]), itertools.chain([False], y)))
return unfold_impl(*itertools.tee(it))
def ngrams(it, n):
return it if n <= 1 else unfold(ngrams(fold(it), n - 1))
def ngrams_idx(it, n):
return (sorted(x[0] for x in g) for k, g in itertools.groupby(enumerate(ngrams(it, n)), key=lambda x: x[1]) if k)
def booleanize(text_vec):
return map(lambda x: x[0] in string.ascii_uppercase, text_vec)
def ngrams_phrase(text_vec, n):
def word(text_vec, idx):
return ' '.join(map(lambda i: text_vec[i], idx))
return [word(text_vec, idx) for idx in ngrams_idx(booleanize(text_vec), n)]
Aber ich denke, ich es ein bisschen zu kompliziert mache, gibt es eine einfachere Möglichkeit, sich mit dieser Frage zu beschäftigen mit funktionalen Programmierung?
Wie verwenden Sie diese Funktionen? Sie rufen keines von ihnen mit 'Text' an. –
@LutzHorn rufen Sie die letzte Funktion ngrams_phrase, und der Parameter sollte der Text nach der Aufspaltung und die Mindestanzahl von aufeinanderfolgenden Großbuchstaben Wörter, BTW, thx für die Bearbeitung :) – hui