2016-03-26 18 views
0

Ich arbeite einige NLP-Experimente in Python und wollte diese Funktion in Python 3.x implementieren, obwohl die Lambda-Erweiterung hier mir eine harte Zeit gibt und ich nicht bin sicher, wie es in 3.x implementiert wäre; irgendwelche Vorschläge?Python 2.x Unterlist Parameter entspricht in 3.x

candidates = [' '.join(word for word, pos, chunk in group).lower() 
       for key, group in itertools.groupby(all_chunks, lambda (word,pos,chunk): chunk != 'O') if key] 

Der Fehler, den ich auf diesem Stück erhalten, da sublist Parameter in 3.x nicht

lambda (word,pos,chunk) 

unterstützt werden Die ursprüngliche Quelle ist die extract_candidate_words funktionieren hier: http://bdewilde.github.io/blog/2014/09/23/intro-to-automatic-keyphrase-extraction/

Antwort

1

Die Syntax in Python3 wäre:

lambda word__pos__chunk: word__pos__chunk[2] != 'O' 

A lambda Funktion mit einem Drei-Element-Tupel (word, pos, chunk) wird in word__pos__chunk mit Positionsargumenten umgewandelt, word__pos__chunk[2] Zugriff auf das dritte Element zum Beispiel.

weitere Informationen: pep-3113

+0

Dies scheint zu implizieren, dass die doppelten Unterstrichen besondere Bedeutung haben, aber in der Tat tut es nicht; 'word__pos__chunk' ist nur ein normales Tupel und' word__pos__chunk [2] 'greift auf das dritte Element zu. –

+0

Ich habe nicht versucht, zu verwirren, ich habe den Weg aktualisiert, um es auszudrücken verzeihen Sie mein Englisch. –

+0

Ich bin mir nicht sicher, warum das einen Downvote bekommen hat - vielleicht fehlt mir etwas. Die Syntax selbst war genau das, was ich brauchte, danke. – iivel

Verwandte Themen