Skip to content

Instantly share code, notes, and snippets.

@fhardison
Created August 12, 2021 01:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fhardison/e1e292854dfa7d95810adfaa9fefc222 to your computer and use it in GitHub Desktop.
Save fhardison/e1e292854dfa7d95810adfaa9fefc222 to your computer and use it in GitHub Desktop.

This is a literate doctest. Run python -m doctest -v examples.rst to test.

>>> from vocab_utils import group_tokens_by >>> from gnt_data import ChunkType, TokenType

Get sentences grouped by pericopes and show data for first 5.

>>> list(group_tokens_by(TokenType.lemma, ChunkType.sentence, ChunkType.pericope).items())[0:5] [('01§01', [['βίβλος', 'γένεσις', 'Ἰησοῦς', 'Χριστός', 'υἱός', 'Δαυίδ', 'υἱός', 'Ἀβραάμ'], ['Ἀβραάμ', 'γεννάω', 'ὁ', 'Ἰσαάκ', 'Ἰσαάκ', 'δέ', 'γεννάω', 'ὁ', 'Ἰακώβ', 'Ἰακώβ', 'δέ', 'γεννάω', 'ὁ', 'Ἰούδας', 'καί', 'ὁ', 'ἀδελφός', 'αὐτός', 'Ἰούδας', 'δέ', 'γεννάω', 'ὁ', 'Φαρές', 'καί', 'ὁ', 'Ζάρα', 'ἐκ', 'ὁ', 'Θαμάρ', 'Φαρές', 'δέ', 'γεννάω', 'ὁ', 'Ἑσρώμ', 'Ἑσρώμ', 'δέ', 'γεννάω', 'ὁ', 'Ἀράμ', 'Ἀράμ', 'δέ', 'γεννάω', 'ὁ', 'Ἀμιναδάβ', 'Ἀμιναδάβ', 'δέ', 'γεννάω', 'ὁ', 'Ναασσών', 'Ναασσών', 'δέ', 'γεννάω', 'ὁ', 'Σαλμών', 'Σαλμών', 'δέ', 'γεννάω', 'ὁ', 'Βόες', 'ἐκ', 'ὁ', 'Ῥαχάβ', 'Βόες', 'δέ', 'γεννάω', 'ὁ', 'Ἰωβήδ', 'ἐκ', 'ὁ', 'Ῥούθ', 'Ἰωβήδ', 'δέ', 'γεννάω', 'ὁ', 'Ἰεσσαί', 'Ἰεσσαί', 'δέ', 'γεννάω', 'ὁ', 'Δαυίδ', 'ὁ', 'βασιλεύς'], ['Δαυίδ', 'δέ', 'γεννάω', 'ὁ', 'Σολομών', 'ἐκ', 'ὁ', 'ὁ', 'Οὐρίας', 'Σολομών', 'δέ', 'γεννάω', 'ὁ', 'Ῥοβοάμ', 'Ῥοβοάμ', 'δέ', 'γεννάω', 'ὁ', 'Ἀβιά', 'Ἀβιά', 'δέ', 'γεννάω', 'ὁ', 'Ἀσάφ', 'Ἀσάφ', 'δέ', 'γεννάω', 'ὁ', 'Ἰωσαφάτ', 'Ἰωσαφάτ', 'δέ', 'γεννάω', 'ὁ', 'Ἰωράμ', 'Ἰωράμ', 'δέ', 'γεννάω', 'ὁ', 'Ὀζίας', 'Ὀζίας', 'δέ', 'γεννάω', 'ὁ', 'Ἰωαθάμ', 'Ἰωαθάμ', 'δέ', 'γεννάω', 'ὁ', 'Ἀχάζ', 'Ἀχάζ', 'δέ', 'γεννάω', 'ὁ', 'Ἑζεκίας', 'Ἑζεκίας', 'δέ', 'γεννάω', 'ὁ', 'Μανασσῆς', 'Μανασσῆς', 'δέ', 'γεννάω', 'ὁ', 'Ἀμώς', 'Ἀμώς', 'δέ', 'γεννάω', 'ὁ', 'Ἰωσίας', 'Ἰωσίας', 'δέ', 'γεννάω', 'ὁ', 'Ἰεχονίας', 'καί', 'ὁ', 'ἀδελφός', 'αὐτός', 'ἐπί', 'ὁ', 'μετοικεσία', 'Βαβυλών'], ['μετά', 'δέ', 'ὁ', 'μετοικεσία', 'Βαβυλών', 'Ἰεχονίας', 'γεννάω', 'ὁ', 'Σαλαθιήλ', 'Σαλαθιήλ', 'δέ', 'γεννάω', 'ὁ', 'Ζοροβαβέλ', 'Ζοροβαβέλ', 'δέ', 'γεννάω', 'ὁ', 'Ἀβιούδ', 'Ἀβιούδ', 'δέ', 'γεννάω', 'ὁ', 'Ἐλιακίμ', 'Ἐλιακίμ', 'δέ', 'γεννάω', 'ὁ', 'Ἀζώρ', 'Ἀζώρ', 'δέ', 'γεννάω', 'ὁ', 'Σαδώκ', 'Σαδώκ', 'δέ', 'γεννάω', 'ὁ', 'Ἀχίμ', 'Ἀχίμ', 'δέ', 'γεννάω', 'ὁ', 'Ἐλιούδ', 'Ἐλιούδ', 'δέ', 'γεννάω', 'ὁ', 'Ἐλεάζαρ', 'Ἐλεάζαρ', 'δέ', 'γεννάω', 'ὁ', 'Ματθάν', 'Ματθάν', 'δέ', 'γεννάω', 'ὁ', 'Ἰακώβ', 'Ἰακώβ', 'δέ', 'γεννάω', 'ὁ', 'Ἰωσήφ', 'ὁ', 'ἀνήρ', 'Μαρία', 'ἐκ', 'ὅς', 'γεννάω', 'Ἰησοῦς', 'ὁ', 'λέγω', 'Χριστός'], ['πᾶς', 'οὖν', 'ὁ', 'γενεά', 'ἀπό', 'Ἀβραάμ', 'ἕως', 'Δαυίδ', 'γενεά', 'δεκατέσσαρες', 'καί', 'ἀπό', 'Δαυίδ', 'ἕως', 'ὁ', 'μετοικεσία', 'Βαβυλών', 'γενεά', 'δεκατέσσαρες', 'καί', 'ἀπό', 'ὁ', 'μετοικεσία', 'Βαβυλών', 'ἕως', 'ὁ', 'Χριστός', 'γενεά', 'δεκατέσσαρες']]), ('01§02', [['ὁ', 'δέ', 'Ἰησοῦς', 'Χριστός', 'ὁ', 'γένεσις', 'οὕτω(ς)', 'εἰμί'], ['μνηστεύομαι', 'ὁ', 'μήτηρ', 'αὐτός', 'Μαρία', 'ὁ', 'Ἰωσήφ', 'πρίν', 'ἤ', 'συνέρχομαι', 'αὐτός', 'εὑρίσκω', 'ἐν', 'γαστήρ', 'ἔχω', 'ἐκ', 'πνεῦμα', 'ἅγιος'], ['Ἰωσήφ', 'δέ', 'ὁ', 'ἀνήρ', 'αὐτός', 'δίκαιος', 'εἰμί', 'καί', 'μή', 'θέλω', 'αὐτός', 'δειγματίζω', 'βούλομαι', 'λάθρᾳ', 'ἀπολύω', 'αὐτός'], ['οὗτος', 'δέ', 'αὐτός', 'ἐνθυμέομαι', 'ἰδού', 'ἄγγελος', 'κύριος', 'κατά', 'ὄναρ', 'φαίνω', 'αὐτός', 'λέγω', 'Ἰωσήφ', 'υἱός', 'Δαυίδ', 'μή', 'φοβέομαι', 'παραλαμβάνω', 'Μαρία', 'ὁ', 'γυνή', 'σύ', 'ὁ', 'γάρ', 'ἐν', 'αὐτός', 'γεννάω', 'ἐκ', 'πνεῦμα', 'εἰμί', 'ἅγιος', 'τίκτω', 'δέ', 'υἱός', 'καί', 'καλέω', 'ὁ', 'ὄνομα', 'αὐτός', 'Ἰησοῦς', 'αὐτός', 'γάρ', 'σῴζω', 'ὁ', 'λαός', 'αὐτός', 'ἀπό', 'ὁ', 'ἁμαρτία', 'αὐτός'], ['οὗτος', 'δέ', 'ὅλος', 'γίνομαι', 'ἵνα', 'πληρόω', 'ὁ', 'λέγω', 'ὑπό', 'κύριος', 'διά', 'ὁ', 'προφήτης', 'λέγω', 'ἰδού', 'ὁ', 'παρθένος', 'ἐν', 'γαστήρ', 'ἔχω', 'καί', 'τίκτω', 'υἱός', 'καί', 'καλέω', 'ὁ', 'ὄνομα', 'αὐτός', 'Ἐμμανουήλ', 'ὅς', 'εἰμί', 'μεθερμηνεύω', 'μετά', 'ἐγώ', 'ὁ', 'θεός'], ['ἐγείρω', 'δέ', 'ὁ', 'Ἰωσήφ', 'ἀπό', 'ὁ', 'ὕπνος', 'ποιέω', 'ὡς', 'προστάσσω', 'αὐτός', 'ὁ', 'ἄγγελος', 'κύριος', 'καί', 'παραλαμβάνω', 'ὁ', 'γυνή', 'αὐτός', 'καί', 'οὐ', 'γινώσκω', 'αὐτός', 'ἕως', 'ὅς', 'τίκτω', 'υἱός', 'καί', 'καλέω', 'ὁ', 'ὄνομα', 'αὐτός', 'Ἰησοῦς']]), ('01§03', [['ὁ', 'δέ', 'Ἰησοῦς', 'γεννάω', 'ἐν', 'Βηθλέεμ', 'ὁ', 'Ἰουδαία', 'ἐν', 'ἡμέρα', 'Ἡρῴδης', 'ὁ', 'βασιλεύς', 'ἰδού', 'μάγος', 'ἀπό', 'ἀνατολή', 'παραγίνομαι', 'εἰς', 'Ἱεροσόλυμα', 'λέγω', 'ποῦ', 'εἰμί', 'ὁ', 'τίκτω', 'βασιλεύς', 'ὁ', 'Ἰουδαῖος', 'ὁράω', 'γάρ', 'αὐτός', 'ὁ', 'ἀστήρ', 'ἐν', 'ὁ', 'ἀνατολή', 'καί', 'ἔρχομαι', 'προσκυνέω', 'αὐτός'], ['ἀκούω', 'δέ', 'ὁ', 'βασιλεύς', 'Ἡρῴδης', 'ταράσσω', 'καί', 'πᾶς', 'Ἱεροσόλυμα', 'μετά', 'αὐτός', 'καί', 'συνάγω', 'πᾶς', 'ὁ', 'ἀρχιερεύς', 'καί', 'γραμματεύς', 'ὁ', 'λαός', 'πυνθάνομαι', 'παρά', 'αὐτός', 'ποῦ', 'ὁ', 'Χριστός', 'γεννάω'], ['ὁ', 'δέ', 'λέγω', 'αὐτός', 'ἐν', 'Βηθλέεμ', 'ὁ', 'Ἰουδαία', 'οὕτω(ς)', 'γάρ', 'γράφω', 'διά', 'ὁ', 'προφήτης', 'καί', 'σύ', 'Βηθλέεμ', 'γῆ', 'Ἰούδας', 'οὐδαμῶς', 'ἐλάχιστος', 'εἰμί', 'ἐν', 'ὁ', 'ἡγεμών', 'Ἰούδας', 'ἐκ', 'σύ', 'γάρ', 'ἐξέρχομαι', 'ἡγέομαι', 'ὅστις', 'ποιμαίνω', 'ὁ', 'λαός', 'ἐγώ', 'ὁ', 'Ἰσραήλ'], ['τότε', 'Ἡρῴδης', 'λάθρᾳ', 'καλέω', 'ὁ', 'μάγος', 'ἀκριβόω', 'παρά', 'αὐτός', 'ὁ', 'χρόνος', 'ὁ', 'φαίνω', 'ἀστήρ', 'καί', 'πέμπω', 'αὐτός', 'εἰς', 'Βηθλέεμ', 'λέγω', 'πορεύομαι', 'ἐξετάζω', 'ἀκριβῶς', 'περί', 'ὁ', 'παιδίον', 'ἐπάν', 'δέ', 'εὑρίσκω', 'ἀπαγγέλλω', 'ἐγώ', 'ὅπως', 'κἀγώ', 'ἔρχομαι', 'προσκυνέω', 'αὐτός'], ['ὁ', 'δέ', 'ἀκούω', 'ὁ', 'βασιλεύς', 'πορεύομαι', 'καί', 'ἰδού', 'ὁ', 'ἀστήρ', 'ὅς', 'ὁράω', 'ἐν', 'ὁ', 'ἀνατολή', 'προάγω', 'αὐτός', 'ἕως', 'ἔρχομαι', 'ἵστημι', 'ἐπάνω', 'οὗ', 'εἰμί', 'ὁ', 'παιδίον'], ['ὁράω', 'δέ', 'ὁ', 'ἀστήρ', 'χαίρω', 'χαρά', 'μέγας', 'σφόδρα'], ['καί', 'ἔρχομαι', 'εἰς', 'ὁ', 'οἰκία', 'ὁράω', 'ὁ', 'παιδίον', 'μετά', 'Μαρία', 'ὁ', 'μήτηρ', 'αὐτός', 'καί', 'πίπτω', 'προσκυνέω', 'αὐτός', 'καί', 'ἀνοίγω', 'ὁ', 'θησαυρός', 'αὐτός', 'προσφέρω', 'αὐτός', 'δῶρον', 'χρυσός', 'καί', 'λίβανος', 'καί', 'σμύρνα'], ['καί', 'χρηματίζω', 'κατά', 'ὄναρ', 'μή', 'ἀνακάμπτω', 'πρός', 'Ἡρῴδης', 'διά', 'ἄλλος', 'ὁδός', 'ἀναχωρέω', 'εἰς', 'ὁ', 'χώρα', 'αὐτός']]), ('01§04', [['ἀναχωρέω', 'δέ', 'αὐτός', 'ἰδού', 'ἄγγελος', 'κύριος', 'φαίνω', 'κατά', 'ὄναρ', 'ὁ', 'Ἰωσήφ', 'λέγω', 'ἐγείρω', 'παραλαμβάνω', 'ὁ', 'παιδίον', 'καί', 'ὁ', 'μήτηρ', 'αὐτός', 'καί', 'φεύγω', 'εἰς', 'Αἴγυπτος', 'καί', 'εἰμί', 'ἐκεῖ', 'ἕως', 'ἄν', 'λέγω', 'σύ', 'μέλλω', 'γάρ', 'Ἡρῴδης', 'ζητέω', 'ὁ', 'παιδίον', 'ὁ', 'ἀπόλλυμι', 'αὐτός'], ['ὁ', 'δέ', 'ἐγείρω', 'παραλαμβάνω', 'ὁ', 'παιδίον', 'καί', 'ὁ', 'μήτηρ', 'αὐτός', 'νύξ', 'καί', 'ἀναχωρέω', 'εἰς', 'Αἴγυπτος', 'καί', 'εἰμί', 'ἐκεῖ', 'ἕως', 'ὁ', 'τελευτή', 'Ἡρῴδης', 'ἵνα', 'πληρόω', 'ὁ', 'λέγω', 'ὑπό', 'κύριος', 'διά', 'ὁ', 'προφήτης', 'λέγω', 'ἐκ', 'Αἴγυπτος', 'καλέω', 'ὁ', 'υἱός', 'ἐγώ'], ['τότε', 'Ἡρῴδης', 'ὁράω', 'ὅτι', 'ἐμπαίζω', 'ὑπό', 'ὁ', 'μάγος', 'θυμόομαι', 'λίαν', 'καί', 'ἀποστέλλω', 'ἀναιρέω', 'πᾶς', 'ὁ', 'παῖς', 'ὁ', 'ἐν', 'Βηθλέεμ', 'καί', 'ἐν', 'πᾶς', 'ὁ', 'ὅριον', 'αὐτός', 'ἀπό', 'διετής', 'καί', 'κατωτέρω', 'κατά', 'ὁ', 'χρόνος', 'ὅς', 'ἀκριβόω', 'παρά', 'ὁ', 'μάγος'], ['τότε', 'πληρόω', 'ὁ', 'λέγω', 'διά', 'Ἰερεμίας', 'ὁ', 'προφήτης', 'λέγω', 'φωνή', 'ἐν', 'Ῥαμά', 'ἀκούω', 'κλαυθμός', 'καί', 'ὀδυρμός', 'πολύς', 'Ῥαχήλ', 'κλαίω', 'ὁ', 'τέκνον', 'αὐτός', 'καί', 'οὐ', 'θέλω', 'παρακαλέω', 'ὅτι', 'οὐ', 'εἰμί'], ['τελευτάω', 'δέ', 'ὁ', 'Ἡρῴδης', 'ἰδού', 'ἄγγελος', 'κύριος', 'φαίνω', 'κατά', 'ὄναρ', 'ὁ', 'Ἰωσήφ', 'ἐν', 'Αἴγυπτος', 'λέγω', 'ἐγείρω', 'παραλαμβάνω', 'ὁ', 'παιδίον', 'καί', 'ὁ', 'μήτηρ', 'αὐτός', 'καί', 'πορεύομαι', 'εἰς', 'γῆ', 'Ἰσραήλ', 'θνῄσκω', 'γάρ', 'ὁ', 'ζητέω', 'ὁ', 'ψυχή', 'ὁ', 'παιδίον'], ['ὁ', 'δέ', 'ἐγείρω', 'παραλαμβάνω', 'ὁ', 'παιδίον', 'καί', 'ὁ', 'μήτηρ', 'αὐτός', 'καί', 'εἰσέρχομαι', 'εἰς', 'γῆ', 'Ἰσραήλ'], ['ἀκούω', 'δέ', 'ὅτι', 'Ἀρχέλαος', 'βασιλεύω', 'ὁ', 'Ἰουδαία', 'ἀντί', 'ὁ', 'πατήρ', 'αὐτός', 'Ἡρῴδης', 'φοβέομαι', 'ἐκεῖ', 'ἀπέρχομαι'], ['χρηματίζω', 'δέ', 'κατά', 'ὄναρ', 'ἀναχωρέω', 'εἰς', 'ὁ', 'μέρος', 'ὁ', 'Γαλιλαία', 'καί', 'ἔρχομαι', 'κατοικέω', 'εἰς', 'πόλις', 'λέγω', 'Ναζαρέτ', 'ὅπως', 'πληρόω', 'ὁ', 'λέγω', 'διά', 'ὁ', 'προφήτης', 'ὅτι', 'Ναζωραῖος', 'καλέω']]), ('01§05', [['ἐν', 'δέ', 'ὁ', 'ἡμέρα', 'ἐκεῖνος', 'παραγίνομαι', 'Ἰωάννης', 'ὁ', 'βαπτιστής', 'κηρύσσω', 'ἐν', 'ὁ', 'ἔρημος', 'ὁ', 'Ἰουδαία', 'καί', 'λέγω', 'μετανοέω', 'ἐγγίζω', 'γάρ', 'ὁ', 'βασιλεία', 'ὁ', 'οὐρανός'], ['οὗτος', 'γάρ', 'εἰμί', 'ὁ', 'λέγω', 'διά', 'Ἠσαΐας', 'ὁ', 'προφήτης', 'λέγω', 'φωνή', 'βοάω', 'ἐν', 'ὁ', 'ἔρημος', 'ἑτοιμάζω', 'ὁ', 'ὁδός', 'κύριος', 'εὐθύς', 'ποιέω', 'ὁ', 'τρίβος', 'αὐτός'], ['αὐτός', 'δέ', 'ὁ', 'Ἰωάννης', 'ἔχω', 'ὁ', 'ἔνδυμα', 'αὐτός', 'ἀπό', 'θρίξ', 'κάμηλος', 'καί', 'ζώνη', 'δερμάτινος', 'περί', 'ὁ', 'ὀσφύς', 'αὐτός', 'ὁ', 'δέ', 'τροφή', 'εἰμί', 'αὐτός', 'ἀκρίς', 'καί', 'μέλι', 'ἄγριος'], ['τότε', 'ἐκπορεύομαι', 'πρός', 'αὐτός', 'Ἱεροσόλυμα', 'καί', 'πᾶς', 'ὁ', 'Ἰουδαία', 'καί', 'πᾶς', 'ὁ', 'περίχωρος', 'ὁ', 'Ἰορδάνης', 'καί', 'βαπτίζω', 'ἐν', 'ὁ', 'Ἰορδάνης', 'ποταμός', 'ὑπό', 'αὐτός', 'ἐξομολογέω', 'ὁ', 'ἁμαρτία', 'αὐτός'], ['ὁράω', 'δέ', 'πολύς', 'ὁ', 'Φαρισαῖος', 'καί', 'Σαδδουκαῖος', 'ἔρχομαι', 'ἐπί', 'ὁ', 'βάπτισμα', 'αὐτός', 'λέγω', 'αὐτός', 'γέννημα', 'ἔχιδνα', 'τίς', 'ὑποδείκνυμι', 'σύ', 'φεύγω', 'ἀπό', 'ὁ', 'μέλλω', 'ὀργή'], ['ποιέω', 'οὖν', 'καρπός', 'ἄξιος', 'ὁ', 'μετάνοια'], ['καί', 'μή', 'δοκέω', 'λέγω', 'ἐν', 'ἑαυτοῦ', 'πατήρ', 'ἔχω', 'ὁ', 'Ἀβραάμ', 'λέγω', 'γάρ', 'σύ', 'ὅτι', 'δύναμαι', 'ὁ', 'θεός', 'ἐκ', 'ὁ', 'λίθος', 'οὗτος', 'ἐγείρω', 'τέκνον', 'ὁ', 'Ἀβραάμ'], ['ἤδη', 'δέ', 'ὁ', 'ἀξίνη', 'πρός', 'ὁ', 'ῥίζα', 'ὁ', 'δένδρον', 'κεῖμαι'], ['πᾶς', 'οὖν', 'δένδρον', 'μή', 'ποιέω', 'καρπός', 'καλός', 'ἐκκόπτω', 'καί', 'εἰς', 'πῦρ', 'βάλλω'], ['ἐγώ', 'μέν', 'σύ', 'βαπτίζω', 'ἐν', 'ὕδωρ', 'εἰς', 'μετάνοια', 'ὁ', 'δέ', 'ὀπίσω', 'ἐγώ', 'ἔρχομαι', 'ἰσχυρός', 'ἐγώ', 'εἰμί', 'ὅς', 'οὐ', 'εἰμί', 'ἱκανός', 'ὁ', 'ὑπόδημα', 'βαστάζω'], ['αὐτός', 'σύ', 'βαπτίζω', 'ἐν', 'πνεῦμα', 'ἅγιος', 'καί', 'πῦρ'], ['ὅς', 'ὁ', 'πτύον', 'ἐν', 'ὁ', 'χείρ', 'αὐτός', 'καί', 'διακαθαρίζω', 'ὁ', 'ἅλων', 'αὐτός', 'καί', 'συνάγω', 'ὁ', 'σῖτος', 'αὐτός', 'εἰς', 'ὁ', 'ἀποθήκη', 'ὁ', 'δέ', 'ἄχυρον', 'κατακαίω', 'πῦρ', 'ἄσβεστος']])]

Now just return the ids of the sentences in each pericope

>>> list(group_tokens_by(TokenType.lemma, ChunkType.sentence, ChunkType.pericope, return_ids=True).items())[0:5] [('01§01', ['610001', '610002', '610003', '610004', '610005']), ('01§02', ['610006', '610007', '610008', '610009', '610010', '610011']), ('01§03', ['610012', '610013', '610014', '610015', '610016', '610017', '610018', '610019']), ('01§04', ['610020', '610021', '610022', '610023', '610024', '610025', '610026', '610027']), ('01§05', ['610028', '610029', '610030', '610031', '610032', '610033', '610034', '610035', '610036', '610037', '610038', '610039'])]

from gnt_data import get_tokens, get_tokens_by_chunk, TokenType, ChunkType
import os.path
# Load required data to be able to group by chunk.
# The following is copied verbatim from James Tauber's vocab_tools
chunk_data_filename = {
ChunkType.book: "books.txt",
ChunkType.chapter: "chapters.txt",
ChunkType.verse: "verses.txt",
ChunkType.sentence: "sentences.txt",
ChunkType.paragraph: "paragraphs.txt",
ChunkType.pericope: "pericopes.txt",
}
chunk_ids = {}
chunk_data = {}
def load_chunk_data():
for chunk_type, filename in chunk_data_filename.items():
chunk_ids[chunk_type] = []
with open(os.path.join(os.path.dirname(__file__), "gnt_data", filename), encoding="UTF-8") as f:
for line in f:
chunk_id, token_start, token_end = line.strip().split()
chunk_data[(chunk_type, chunk_id)] = (
int(token_start), int(token_end)
)
chunk_ids[chunk_type].append(chunk_id)
load_chunk_data()
# My code starts
def group_tokens_by(token_type, chunk_type, group_type, return_ids=False):
#tokens = get_tokens_by_chunk(token_type, chunk_type)
group_ids = chunk_ids[group_type]
group_data = {}
for group_id in group_ids:
group_data[group_id] = chunk_data[(group_type, group_id)]
chunks = chunk_ids[chunk_type]
chunk_info = {}
for chunk_id in chunks:
chunk_info[chunk_id] = chunk_data[(chunk_type, chunk_id)]
out = {}
for group_id, (start, end) in group_data.items():
out[group_id] = []
for chunk_id, (cstart, cend) in chunk_info.items():
if cstart >= start and cend <= end:
out[group_id].append(chunk_id)
elif cend > end:
continue
if out[group_id] == []:
del out[group_id]
if return_ids:
return out
output = {}
for group, chunks in out.items():
output[group] = []
for chunk_id in chunks:
output[group].append(get_tokens(token_type, chunk_type, chunk_id))
return output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment