Permalink
Browse files

add greek examples

  • Loading branch information...
aurelberra committed Feb 20, 2018
1 parent 2d8814c commit 724c029d97fde62b382ba5f94b13229cffbf7922
0 1 CLTK Setup.ipynb 100644 → 100755
No changes.
15 2 Import corpora.ipynb 100644 → 100755
@@ -20,7 +20,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -31,7 +31,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -44,7 +44,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"outputs": [
{
@@ -67,7 +67,7 @@
" 'latin_text_poeti_ditalia']"
]
},
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@@ -85,7 +85,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
@@ -102,7 +102,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 6,
"metadata": {},
"outputs": [
{
@@ -122,7 +122,7 @@
" 'greek_text_first1kgreek']"
]
},
"execution_count": 2,
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
@@ -131,6 +131,7 @@
"# Let's get some Greek corpora, too\n",
"\n",
"my_greek_downloader = CorpusImporter('greek')\n",
"my_greek_downloader.import_corpus('greek_models_cltk')\n",
"my_greek_downloader.list_corpora"
]
},
404 3 Basic NLP.ipynb 100644 → 100755

Large diffs are not rendered by default.

Oops, something went wrong.
129 4 Lemmatization.ipynb 100644 → 100755
@@ -11,6 +11,13 @@
"Note: You may have heard of stemming, which is similar in purpose, however it does not convert a word to a dictionary form, but only reduces commonly related forms into a new, unambiguous string (e.g., 'amicitia' --> 'amiciti'). This is not what we need for Greek and Latin."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Latin"
]
},
{
"cell_type": "code",
"execution_count": 1,
@@ -152,6 +159,128 @@
"\n",
"print(len(set(lemmata)) / len(lemmata))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Greek"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"athenaeus_incipit = \"Ἀθήναιος μὲν ὁ τῆς βίβλου πατήρ· ποιεῖται δὲ τὸν λόγον πρὸς Τιμοκράτην· Δειπνοσοφιστὴς δὲ ταύτῃ τὸ ὄνομα. Ὑπόκειται δὲ τῷ λόγῳ Λαρήνσιος Ῥωμαῖος, ἀνὴρ τῇ τύχῃ περιφανής, τοὺς κατὰ πᾶσαν παιδείαν ἐμπειροτάτους ἐν αὑτοῦ δαιτυμόνας ποιούμενος· ἐν οἷς οὐκ ἔσθ᾽ οὗτινος τῶν καλλίστων οὐκ ἐμνημόνευσεν. Ἰχθῦς τε γὰρ τῇ βίβλῳ ἐνέθετο καὶ τὰς τούτων χρείας καὶ τὰς τῶν ὀνομάτων ἀναπτύξεις καὶ λαχάνων γένη παντοῖα καὶ ζῴων παντοδαπῶν καὶ ἄνδρας ἱστορίας συγγεγραφότας καὶ ποιητὰς καὶ φιλοσόφους καὶ ὄργανα μουσικὰ καὶ σκωμμάτων εἴδη μυρία καὶ ἐκπωμάτων διαφορὰς καὶ πλούτους βασιλέων διηγήσατο καὶ νηῶν μεγέθη καὶ ὅσα ἄλλα οὐδ᾽ ἂν εὐχερῶς ἀπομνημονεύσαιμι, ἢ ἐπιλίποι μ᾽ ἂν ἡ ἡμέρα κατ᾽ εἶδος διεξερχόμενον. Καί ἐστιν ἡ τοῦ λόγου οἰκονομία μίμημα τῆς τοῦ δείπνου πολυτελείας καὶ ἡ τῆς βίβλου διασκευὴ τῆς ἐν τῷ δείπνῳ παρασκευῆς. Τοιοῦτον ὁ θαυμαστὸς οὗτος τοῦ λόγου οἰκονόμος Ἀθήναιος ἥδιστον λογόδειπνον εἰσηγεῖται κρείττων τε αὐτὸς ἑαυτοῦ γινόμενος, ὥσπερ οἱ Ἀθήνησι ῥήτορες, ὑπὸ τῆς ἐν τῷ λέγειν θερμότητος πρὸς τὰ ἑπόμενα τῆς βίβλου βαθμηδὸν ὑπεράλλεται.\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from cltk.corpus.utils.importer import CorpusImporter\n",
"corpus_importer = CorpusImporter('greek')\n",
"corpus_importer.import_corpus('greek_models_cltk')\n",
"\n",
"from cltk.tokenize.word import WordTokenizer\n",
"word_tokenizer = WordTokenizer('greek')\n",
"athenaeus_word_tokens = word_tokenizer.tokenize(athenaeus_incipit.lower())\n",
"athenaeus_word_tokens = [token for token in athenaeus_word_tokens if token not in ['.', ',', ':', ';']]\n",
"\n",
"from cltk.stem.lemma import LemmaReplacer\n",
"lemmatizer = LemmaReplacer('greek')\n",
"lemmata = lemmatizer.lemmatize(athenaeus_word_tokens)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['ἀθήναιος', 'μὲν', 'ὁ', 'ὁ', 'βίβλος', 'πατήρ·', 'ποιέω', 'δὲ', 'τὸν', 'λόγος', 'πρὸς', 'τιμοκράτην·', 'δειπνοσοφιστὴς', 'δὲ', 'οὗτος', 'τὸ', 'ὄνομα', 'ὑπόκειμαι', 'δὲ', 'ὁ', 'λόγος', 'λαρήνσιος', 'ῥωμαῖος', 'ἀνὴρ', 'ὁ', 'τυγχάνω', 'περιφανής', 'τοὺς', 'κατὰ', 'πᾶς', 'παιδεία', 'ἔμπειρος', 'ἐν', 'ἑαυτοῦ', 'δαιτυμών', 'ποιούμενος·', 'ἐν', 'ὅς', 'οὐ', 'ἔσθ᾽', 'ὅστις', 'ὁ', 'καλός', 'οὐ', 'μνημονεύω', 'ἰχθύς', 'τε', 'γὰρ', 'ὁ', 'βίβλος', 'ἐντίθημι', 'καὶ', 'τὰς', 'οὗτος', 'χρεία', 'καὶ', 'τὰς', 'ὁ', 'ὄνομα', 'ἀναπτύσσω', 'καὶ', 'λάχανον', 'γένος', 'παντοῖος', 'καὶ', 'ζωιόω', 'παντοδαπός', 'καὶ', 'ἀνήρ', 'ἱστορία', 'συγγράφω', 'καὶ', 'ποιητὰς', 'καὶ', 'φιλόσοφος', 'καὶ', 'ὀργαίνω', 'μουσικὰ', 'καὶ', 'σκῶμμα', 'εἶδος', 'μυρίος', 'καὶ', 'ἔκπωμα', 'διαφορὰς', 'καὶ', 'πλοῦτος', 'βασιλίς', 'διηγέομαι', 'καὶ', 'ναῦς', 'μέγεθος', 'καὶ', 'ὅσος', 'ἄλλος', 'οὐδ᾽', 'ἂν', 'εὐχερής', 'ἀπομνημονεύω', 'ἢ', 'ἐπιλείπω', 'μ᾽', 'ἂν', 'ὁ', 'ἥμερος', 'κατ᾽', 'εἶδος', 'διεξέρχομαι', 'καί', 'εἰμί', 'ὁ', 'ὁ', 'λογόω', 'οἰκονομία', 'μίμημα', 'ὁ', 'ὁ', 'δεῖπνος', 'πολυτέλεια', 'καὶ', 'ὁ', 'ὁ', 'βίβλος', 'διασκευὴ', 'ὁ', 'ἐν', 'ὁ', 'δεῖπνος', 'παρασκευάζω', 'τοιοῦτος', 'ὁ', 'θαυμαστὸς', 'οὗτος', 'ὁ', 'λογόω', 'οἰκονόμος', 'ἀθήναιος', 'ἡδύς', 'λογόδειπνον', 'εἰσηγέομαι', 'κρείσσων', 'τε', 'αὐτὸς', 'ἑαυτοῦ', 'γίγνομαι', 'ὥσπερ', 'ὁ', 'ἀθήνευς', 'ῥήτωρ', 'ὑπὸ', 'ὁ', 'ἐν', 'ὁ', 'λέγω1', 'θερμότης', 'πρὸς', 'τὰ', 'ἕπομαι', 'ὁ', 'βίβλος', 'βαθμηδὸν', 'ὑπεράλλομαι']\n"
]
}
],
"source": [
"print(lemmata)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['ἀθήναιος/ἀθήναιος', 'μὲν/μὲν', 'ὁ/ὁ', 'τῆς/ὁ', 'βίβλου/βίβλος', 'πατήρ·/πατήρ·', 'ποιεῖται/ποιέω', 'δὲ/δὲ', 'τὸν/τὸν', 'λόγον/λόγος', 'πρὸς/πρὸς', 'τιμοκράτην·/τιμοκράτην·', 'δειπνοσοφιστὴς/δειπνοσοφιστὴς', 'δὲ/δὲ', 'ταύτῃ/οὗτος', 'τὸ/τὸ', 'ὄνομα/ὄνομα', 'ὑπόκειται/ὑπόκειμαι', 'δὲ/δὲ', 'τῷ/ὁ', 'λόγῳ/λόγος', 'λαρήνσιος/λαρήνσιος', 'ῥωμαῖος/ῥωμαῖος', 'ἀνὴρ/ἀνὴρ', 'τῇ/ὁ', 'τύχῃ/τυγχάνω', 'περιφανής/περιφανής', 'τοὺς/τοὺς', 'κατὰ/κατὰ', 'πᾶσαν/πᾶς', 'παιδείαν/παιδεία', 'ἐμπειροτάτους/ἔμπειρος', 'ἐν/ἐν', 'αὑτοῦ/ἑαυτοῦ', 'δαιτυμόνας/δαιτυμών', 'ποιούμενος·/ποιούμενος·', 'ἐν/ἐν', 'οἷς/ὅς', 'οὐκ/οὐ', 'ἔσθ᾽/ἔσθ᾽', 'οὗτινος/ὅστις', 'τῶν/ὁ', 'καλλίστων/καλός', 'οὐκ/οὐ', 'ἐμνημόνευσεν/μνημονεύω', 'ἰχθῦς/ἰχθύς', 'τε/τε', 'γὰρ/γὰρ', 'τῇ/ὁ', 'βίβλῳ/βίβλος', 'ἐνέθετο/ἐντίθημι', 'καὶ/καὶ', 'τὰς/τὰς', 'τούτων/οὗτος', 'χρείας/χρεία', 'καὶ/καὶ', 'τὰς/τὰς', 'τῶν/ὁ', 'ὀνομάτων/ὄνομα', 'ἀναπτύξεις/ἀναπτύσσω', 'καὶ/καὶ', 'λαχάνων/λάχανον', 'γένη/γένος', 'παντοῖα/παντοῖος', 'καὶ/καὶ', 'ζῴων/ζωιόω', 'παντοδαπῶν/παντοδαπός', 'καὶ/καὶ', 'ἄνδρας/ἀνήρ', 'ἱστορίας/ἱστορία', 'συγγεγραφότας/συγγράφω', 'καὶ/καὶ', 'ποιητὰς/ποιητὰς', 'καὶ/καὶ', 'φιλοσόφους/φιλόσοφος', 'καὶ/καὶ', 'ὄργανα/ὀργαίνω', 'μουσικὰ/μουσικὰ', 'καὶ/καὶ', 'σκωμμάτων/σκῶμμα', 'εἴδη/εἶδος', 'μυρία/μυρίος', 'καὶ/καὶ', 'ἐκπωμάτων/ἔκπωμα', 'διαφορὰς/διαφορὰς', 'καὶ/καὶ', 'πλούτους/πλοῦτος', 'βασιλέων/βασιλίς', 'διηγήσατο/διηγέομαι', 'καὶ/καὶ', 'νηῶν/ναῦς', 'μεγέθη/μέγεθος', 'καὶ/καὶ', 'ὅσα/ὅσος', 'ἄλλα/ἄλλος', 'οὐδ᾽/οὐδ᾽', 'ἂν/ἂν', 'εὐχερῶς/εὐχερής', 'ἀπομνημονεύσαιμι/ἀπομνημονεύω', 'ἢ/ἢ', 'ἐπιλίποι/ἐπιλείπω', 'μ᾽/μ᾽', 'ἂν/ἂν', 'ἡ/ὁ', 'ἡμέρα/ἥμερος', 'κατ᾽/κατ᾽', 'εἶδος/εἶδος', 'διεξερχόμενον/διεξέρχομαι', 'καί/καί', 'ἐστιν/εἰμί', 'ἡ/ὁ', 'τοῦ/ὁ', 'λόγου/λογόω', 'οἰκονομία/οἰκονομία', 'μίμημα/μίμημα', 'τῆς/ὁ', 'τοῦ/ὁ', 'δείπνου/δεῖπνος', 'πολυτελείας/πολυτέλεια', 'καὶ/καὶ', 'ἡ/ὁ', 'τῆς/ὁ', 'βίβλου/βίβλος', 'διασκευὴ/διασκευὴ', 'τῆς/ὁ', 'ἐν/ἐν', 'τῷ/ὁ', 'δείπνῳ/δεῖπνος', 'παρασκευῆς/παρασκευάζω', 'τοιοῦτον/τοιοῦτος', 'ὁ/ὁ', 'θαυμαστὸς/θαυμαστὸς', 'οὗτος/οὗτος', 'τοῦ/ὁ', 'λόγου/λογόω', 'οἰκονόμος/οἰκονόμος', 'ἀθήναιος/ἀθήναιος', 'ἥδιστον/ἡδύς', 'λογόδειπνον/λογόδειπνον', 'εἰσηγεῖται/εἰσηγέομαι', 'κρείττων/κρείσσων', 'τε/τε', 'αὐτὸς/αὐτὸς', 'ἑαυτοῦ/ἑαυτοῦ', 'γινόμενος/γίγνομαι', 'ὥσπερ/ὥσπερ', 'οἱ/ὁ', 'ἀθήνησι/ἀθήνευς', 'ῥήτορες/ῥήτωρ', 'ὑπὸ/ὑπὸ', 'τῆς/ὁ', 'ἐν/ἐν', 'τῷ/ὁ', 'λέγειν/λέγω1', 'θερμότητος/θερμότης', 'πρὸς/πρὸς', 'τὰ/τὰ', 'ἑπόμενα/ἕπομαι', 'τῆς/ὁ', 'βίβλου/βίβλος', 'βαθμηδὸν/βαθμηδὸν', 'ὑπεράλλεται/ὑπεράλλομαι']\n"
]
}
],
"source": [
"lemmata_orig = lemmatizer.lemmatize(athenaeus_word_tokens, return_raw=True)\n",
"print(lemmata_orig)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"162\n"
]
}
],
"source": [
"print(len(lemmata))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"106\n"
]
}
],
"source": [
"print(len(set(lemmata)))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.654320987654321\n"
]
}
],
"source": [
"print(len(set(lemmata)) / len(lemmata))"
]
}
],
"metadata": {
116 5 Text reuse.ipynb 100644 → 100755
@@ -1,5 +1,12 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Latin"
]
},
{
"cell_type": "code",
"execution_count": 1,
@@ -157,6 +164,115 @@
"\n",
"print(minhash(ap, div1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Greek"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For Greek, we'll use the two books of Plutarch's De esu carnium."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ΠΕΡΙ ΣΑΡΚΟΦΑΓΙΑΣ\\n\\t\\nΛΟΓΟΣ Α´\\n\\t\\n\\n\\n(993)\\n1\\n\\nἈλλὰ σὺ μὲν ἐρῶτᾷς τίνι λόγῳ Πυθαγόρας ἀπείχετο σαρκοφαγίας; ἐγὼ δὲ θαυμάζω καὶ τίνι πάθει καὶ ποίᾳ ψυχῇ ἢ λόγῳ Bὁ πρῶτος ἄνθρωπος ἥψατο φόνου στόματι καὶ τεθνηκότος ζῴου χείλεσι προσήψατο σαρκὸς καὶ νεκρῶν σωμάτων καὶ ἐώλων1 προθέμενος τραπέζας ὄψα καὶ τροφὰς2 προσεῖπεν3 τὰ μικρὸν ἔμπροσθεν βρυχώμενα μέρη καὶ φθεγγόμενα καὶ κινούμενα καὶ βλέποντα. πῶς ἡ ὄψις ὑπέμεινε τὸν φόνον σφαζομένων δερομένων διαμελιζομένων, πῶς ἡ ὄσφρησις ἤνεγκε τὴν ἀποφοράν, πῶς τὴν γεῦσιν οὐκ ἀπέτρεψεν ὁ μολυσμὸς ἑλκῶν ψαύουσαν ἀλλοτρίων καὶ τραυμάτων θανασίμων χυμοὺς καὶ ἰχῶρας ἀπολαμβάνουσαν;4\\n\\n\\n\\n\\nCεἷρπον μὲν ῥινοί, κρέα δ᾽ ἀμφ᾽ ὀβελοῖς ἐμεμύκει\\n\\t\\t\\t\\nὀπταλέα τε καὶ ὠμά, βοῶν δ᾽ ὡς γίγνετο φωνή·\\n\\t\\t\\n\\n\\n\\nτοῦτο μὲν5 πλάσμα καὶ μῦθός ἐστι, τὸ δέ γε δεῖπνον ἀληθῶς τερατῶδες, πεινῆν τινα τῶν μυκωμένων\\n\\n\\n\\np542ἔτι6 διδάσκοντα ὑφ᾽ ὧν δεῖ τρέφεσθαι ζώντων ἔτι καὶ λαλούντων καὶ7 διαταττόμενον ἀρτύσεις τινὰς καὶ ὀπτήσεις καὶ παραθέσεις· τούτων8 ἔδει ζητεῖν τὸν πρῶτον ἀρξάμενον οὐ τὸν ὀψὲ παυσάμενον.\\n\\n\\t\\n2\\n\\nἪ τοῖς μὲν πρώτοις ἐκείνοις ἐπιχειρήσασι σαρκοφαγεῖν τὴν αἰτίαν εἴποι'"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import os\n",
"\n",
"carn1_fp = os.path.expanduser('~/cltk_data/greek/text/greek_text_lacus_curtius/plain/Plutarch/De_esu_carnium/1.txt')\n",
"carn2_fp = os.path.expanduser('~/cltk_data/greek/text/greek_text_lacus_curtius/plain/Plutarch/De_esu_carnium/2.txt')\n",
"\n",
"with open(carn1_fp) as fo:\n",
" carn1 = fo.read()\n",
"\n",
"with open(carn2_fp) as fo:\n",
" carn2 = fo.read()\n",
"\n",
"carn1[908:2001]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.46"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from cltk.text_reuse.levenshtein import Levenshtein\n",
"lev_dist = Levenshtein()\n",
"lev_dist.ratio(carn1, carn2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.43631915182819087\n"
]
}
],
"source": [
"from cltk.text_reuse.comparison import minhash\n",
"print(minhash(carn1,carn2))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.2874497799885211\n"
]
}
],
"source": [
"# Compare with Book 1 of Oppian's Cynegetica\n",
"# We're comparing prose with verse: the difference is clear\n",
"\n",
"cyn_fp = os.path.expanduser('~/cltk_data/greek/text/greek_text_lacus_curtius/plain/Oppian/Cynegetica/1*.txt')\n",
"with open(cyn_fp) as fo:\n",
" cyn = fo.read()\n",
"\n",
"print(minhash(cyn, carn1))"
]
}
],
"metadata": {
0 6 N-grams.ipynb 100644 → 100755
No changes.
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# Syllables"
"# Latin syllables"
]
},
{
@@ -176,7 +176,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# Prosody\n",
"# Latin prosody\n",
"\n",
"This is a two-step process: first find the long vowels, then scan the actual meter."
]
@@ -222,6 +222,37 @@
"prose_text = macronizer.macronize_tags(scanned_text)\n",
"print(prose_text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Greek scansion"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['˘¯¯¯˘¯¯˘¯˘¯˘˘x', '¯¯˘¯x']"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from cltk.prosody.greek.scanner import Scansion\n",
"\n",
"scanner = Scansion()\n",
"\n",
"scanner.scan_text('νέος μὲν καὶ ἄπειρος, δικῶν ἔγωγε ἔτι. μὲν καὶ ἄπειρος.')"
]
}
],
"metadata": {
Oops, something went wrong.

0 comments on commit 724c029

Please sign in to comment.