Versuchen einen inversen Index bauen, und dann können Sie wählen, je nachdem, welche Keywords, die Sie mögen. Dieser Ansatz ignoriert Wortfolge:
index = {}
for sentence in sentence_list:
for word in set(sentence.split()):
index.setdefault(word, set()).add(sentence)
Oder Dieser Ansatz, der Schlüssel der Index von allen möglichen Vollwortphrase Präfixe:
index = {}
for sentence in sentence_list:
number_of_words = length(sentence.split())
for i in xrange(1, number_of_words):
key_phrase = sentence.rsplit(maxsplit=i)[0]
index.setdefault(key_phrase, set()).add(sentence)
Und dann, wenn Sie alle Sätze finden möchten, die enthalten ein Schlüsselwort (oder mit einem Satz beginnen, wenn das Ihr Index ist):
match_sentences = index[key_term]
oder eine bestimmte Gruppe von Keywords:
matching_sentences = reduce(list_of_keywords[1:], lambda x, y: x & index[y], initializer = index[list_of_keywords[0]])
Jetzt können Sie eine Liste nach fast jeder Kombination von Begriffen oder Wortgruppen gruppieren, indem Sie ein Listenverständnis erstellen, indem Sie diese Indizes verwenden, um Sätze zu generieren. Zum Beispiel, wenn Sie den Satz Präfix Index und wollen alles durch die ersten beiden Wortphrase gruppiert gebaut:
return [list(index[k]) for k in index if len(k.split()) == 2]
Was haben Sie schon versucht? Irgendein Startcode, damit andere wissen, was du bereits versucht hast und wo du stecken geblieben bist, ist hilfreich bei der Gestaltung von Antworten. – TheF1rstPancake
['itertools groupby'] (https://docs.python.org/2/library/itertools.html#itertools.groupby) wird hilfreich sein. – RoadRunner
Wie definieren Sie eine teilweise Übereinstimmung? – wwii