Angenommen, ich habe eine Wortfolge: 'a b c d e f'
. Ich möchte eine Liste von Wörtern mit mehreren Wörtern aus dieser Zeichenfolge generieren.Wie erzeuge ich Mehrwortbegriffe rekursiv?
Wortfolge ist wichtig. Der Begriff 'f e d'
sollte nicht aus dem obigen Beispiel generiert werden.
Edit: Auch Wörter sollten nicht übersprungen werden. 'a c'
oder 'b d f'
sollte nicht generiert werden.
Was ich habe jetzt:
doc = 'a b c d e f'
terms= []
one_before = None
two_before = None
for word in doc.split(None):
terms.append(word)
if one_before:
terms.append(' '.join([one_before, word]))
if two_before:
terms.append(' '.join([two_before, one_before, word]))
two_before = one_before
one_before = word
for term in terms:
print term
Drucke:
a
b
a b
c
b c
a b c
d
c d
b c d
e
d e
c d e
f
e f
d e f
Wie würde ich dies machen eine rekursive Funktion, so dass ich es eine variable maximale Anzahl von Wörtern passieren kann pro Semester?
Anwendung:
Ich werde dies unter Verwendung von Mehrwortbegriffe aus lesbarem Text in HTML-Dokumenten zu erzeugen. Das Gesamtziel ist eine latente semantische Analyse eines großen Korpus (etwa zwei Millionen Dokumente). Dies ist der Grund, warum es wichtig ist, die Reihenfolge der Wörter zu beachten (Natural Language Processing und so weiter).
Der Einfachheit halber ersetzte ich einzelne Buchstaben für Wörter. – tgray
meinst du "variable maximale Anzahl von Begriffen pro Wort"? weil es mir in der jetzigen Form keinen Sinn macht. – SilentGhost
Ich denke, die wirkliche Frage ist, muss es rekursiv sein, um den Job zu machen? Gibt es hier eine Rekursionsanforderung? –