Ich versuche Satzlisten in Strings aufgeteilt zu schneiden:Python :: Schneidene Listen von Zeichenketten schiefgegangen
user = ['The', 'Macbeth', 'Tragedie'] #this list
plays = []
hamlet = gutenberg.sents('shakespeare-hamlet.txt')
macbeth = gutenberg.sents('shakespeare-macbeth.txt')
caesar = gutenberg.sents('shakespeare-caesar.txt')
plays.append(hamlet)
plays.append(macbeth)
plays.append(caesar)
shakespeare = list(chain.from_iterable(plays)) # with this list
'shakespeare' druckt wie folgt:
[['[', 'The', 'Tragedie', 'of', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']'], ['Actus', 'Primus', '.'], ['Scoena', 'Prima', '.'], ['Enter', 'Barnardo', 'and', 'Francisco', 'two', 'Centinels', '.']...['FINIS', '.'], ['THE', 'TRAGEDIE', 'OF', 'IVLIVS', 'CaeSAR', '.']]
bestCount = 0
for sent in shakespeare:
currentCount = len(set(user).intersection(sent))
if currentCount > bestCount:
bestCount = currentCount
answer = ' '.join(sent)
return ''.join(answer).lower(), bestCount
return
jedoch schneidet nicht richtig, das heißt, "Weiler" schneidet mit "Macbeth" ...
('the tragedie of hamlet , prince of denmarke .', 3)
wo ist der Fehler?
Diese Shakespeare-Struktur sieht furchtbar seltsam und schlecht gebaut aus. Eine Liste von Listen mit Mitgliedern in der inneren Liste wie "['' ?? Was ist falsch mit einem einfacheren Ansatz, wo Sie einen Satz haben, der nur eine Folge von Wörtern ist, teilen Sie es mit 'split' (vielleicht Interpunktion ausfiltern) und rufen' set (that_list) .intersect (set (other_list_like_it)) '? –
@ Two-BitAlchemist 'sent()' ist eine NLTK-Methode - ein Toolkit für die Computerlinguistik, das markierte Wörter usw. abruft. In diesem Fall ruft der send-Befehl Sätze durch Strings ab. Ich möchte jedoch das Korpus nach Autor und nicht nach Theaterstücken sortieren. –
Was ist das eigentliche Problem, das Sie versuchen zu lösen? Sätze finden, die jedem Spiel gemeinsam sind? Vorkommen bestimmter Wörter finden? –