umd-mith / mishnah

Digital Mishnah

Home Page:http://www.digitalmishnah.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Not an issue but a request

johnlockejrr opened this issue · comments

Sorry to put this as an issue because is not but I didn't know how to get to you other way.
Do you have the mishnah texts transcribed in raw format or text, json etc. I have a hard time extracting them from the TEI format, I can do that with python but I lose the deletion marks or additions and so on. Or can you, kindly, provide a script to do that? Python or whatever...?
Thank you so much!

Thank you so much for your reply. Any raw or txt data would do.
My final target data is something like:

insert into mishna_kaufmann (seder_id, book_id, chapter, verse, content) values ('1', '1', '1', '1', '[א] מֵאֵמָּתַי קוֹרִין אֶת שְׁמַע בַּעֲרָבִים מִשָּׁעָה שֶׁהַכֹּהֲנִים נִכְנָסִים לֹאכַל בִּתְרוּמָתָן עַד סוֹף הָאַשְׁמוֹרֶת הָרִאשׁוֹנָה דִּבְ׳ רֶ׳ אֱלִיעֶזֶר וַחֲכָ׳ אוֹמְ׳ עַד חֲצוֹת רַבָּן גַּמְלִיאֵל אוֹמֵ׳ עַד שֶׁיַּעֲלֶה עַמּוּד הַשַּׁחַר [ב] מַעֲשֶׂה שֶׁבָּאוּ בָנָיו מִבֵּית הַמִּשְׁתֶּה אָמְרוּ לוֹ לֹא קָרִינוּ אֶת שְׁמַע אָמַר לָהֶם אִם לֹא עָלָה עַמּוּד הַשַּׁחַר מוּתָּרִין אַתֵּם לִיקְרוֹת [ג] וְלֹא זוֹ בִלְבַד אֶלָּא כָל שֶׁאָמְרוּ חֲכָמִ׳ עַד חֲצוֹת מִצְוָתָן עַד שֶׁיַּעֲלֶה עַמּוּד הַשַּׁחַר [ד] הֶקְטֵר חֲלָבִים וְאֵבָרִים (ואכילת פסחים) מִצְוָותָן עַד שֶׁיַּעֲלֶה עַמּוּד הַשַּׁחַר [ה] כָּל הַנֶּאֱכָלִים לְיוֹם אֶחָד מִצְוָותָן עַד שֶׁיַּעֲלֶה עַמּוּד הַשַּׁחַר [ו] אִם כֵּן לָמָּה אָמְרוּ חֲכָמִ׳ עַד חֲצוֹת אֶלָּא לְהַרְחִיק אֶת הָאָדָם מִן הָעֲבֵירָה');
insert into mishna_kaufmann (seder_id, book_id, chapter, verse, content) values ('1', '1', '1', '2', '[ז] מֵאֵמָּתַי קוֹרִין אֶת שְׁמַע בַּשְּׁחָרִים מִשֶּׁיַכִּירוּ בֵין תְּכֵלֶת לַלָּבָן רְ׳ אֱלִיעֶ׳ אוֹמֵ׳ בֵּין תְּכֶלֶת לַכָּרַתָּן עַד הֶנֶץ הַחַמָּה רְ׳ יְהוֹשֻׁעַ אוֹמֵר עַד שָׁלֹשׁ שָׁעוֹת שֶׁכֵּן דֶּרֶךְ בְּנֵי מְלָכִין לַעֲמוֹד בְּשָׁלוֹשׁ שָׁעוֹת הַקּוֹרֵא מִכָּן וְאֶיּלַּךְ לֹא הִפְסִיד כְּאָדָם שֶׁהוּא קוֹרֵא בַּתּוֹרָה');
insert into mishna_kaufmann (seder_id, book_id, chapter, verse, content) values ('1', '1', '1', '3', '[ח] בֵּית שַׁמַּיִ אוֹמְ׳ בָּעֶרֶב [כָּל אָדָם] יַיטּוּ וְיִקְרוּ וּבַבֹּקֶר יַעַמֹדוּ שֶׁנֶּ׳ בְּשָׁכְבְּךָ וּבְקוּמֶךָ  בֵּית הֵלֵּל אוֹמְ׳ כָּל אָדָ[ם](ן) קוֹרִין כְּדַרְכָּן שנ׳ וּבְלֶכְתְּךָ בַדֶּרֶךְ  אִם כֵּן לָמָּה נֶאֱמַר בְּשָׁכְבְּךָ וּבְקוּמֶךָ אֶלָּא בְּשָׁעָה שֶׁדֶּרֶךְ (ש)בְּנֵי אָדָם שׁוֹכְבִים וּבְשָׁעָה שֶׁדֶּרֶךְ (ש)בְּנֵי אָדָם עוֹמְדִין [ט] אָמַ׳ רֶ׳ טַרְפוֹן אֲנִי הָיִיתִי בָא בַדֶּרֶךְ וְהִטֵּיתִי לִקְרוֹת כְּדִבְרֵי בֵית שַׁמַּיִ וְסִכַּנְתִּי בְעַצְמִי מִפְּנֵי הַלֵּסְטִים אָמְרוּ לוֹ כְּדַיִי הָיִיתָה לָחוֹב בְּעַצְמָךְ שֶׁעָבַרְתָּה עַל דִּבְרֵי בֵית הֶילֵּל');
insert into mishna_kaufmann (seder_id, book_id, chapter, verse, content) values ('1', '1', '1', '4', '[י] בַּשַּׁחַר מְבָרֵךְ שְׁתַּיִם לְפָנֶיהָ וְאַחַת לְאַחֲרֶיהָ [וּ]בָעֶרֶב מְבָרֵךְ שְׁתַּיִם לְפָנֶיהָ וּשְׁתַּיִם לְאַחֲרֶיהָ אַחַת אֲרוּכָּה וְאַחַת קְצָרָה מָקוֹם שֶׁאָמְרוּ לְהַאֲרִיךְ אֵינוּ רַשַּׁיִי לְקַצֵּר לְקַצֵּר אֵינוּ רַשַּׁיִי לְהַאֲרִיךְ לַחְתּוֹם אֵינוּ רַשַּׁיִי שֶׁלֹּא לַחְתּוֹם [וְ]שֶׁלֹּא לַחְתֹּם אֵינוּ רַשַּׁיַיִ לַחְתּוֹם');
insert into mishna_kaufmann (seder_id, book_id, chapter, verse, content) values ('1', '1', '1', '5', '[יא] מַזְכִּירִין יְצִיאַת מִצְרַיִם בַּלֵּילוֹת אָמַ׳ רְ׳ אֶלְעָזָר בֶּן עֲזַרְיָה הֲרֵי אֲנִי כְבֶן שִׁבְעִים שָׁנָה וְלֹא זָכִיתִי שֶׁתֵּאָמֵר יְצִיאַת מִצְרַיִם בַּלֵּילוֹת עַד שֶׁדְּרָשָׁהּ בֶּן זוֹמָה שֶׁנֶּ׳ לְמַעַן תִּזְכּוֹר אֶת יוֹם צֵאתְךָ מֵאֶרֶץ מִצְרַ׳ כֹּל יְמֵי חַיֶּיךָ  יְמֵי חַיֶּיךָ הַיָּמִים כֹּל יְמֵי חַיֶּיךָ הַלֵּילוֹת וַחֲכָמִים אוֹמְ׳ יְמֵי חַיֶּיךָ הָעוֹלָם הַזֶּה כֹּל יְמֵי חַיֶּיךָ לְהָבִיא אֶת יְמוֹת הַמָּשִׁיחַ');

The alpha project I work on right now is looking like this:
image

I know some python, so a script in python (or any other language in command line) that handles and can convert the TEI format of the mishna-data transcriptions would be ok with me. Thank you!

Or the format in mishna-data/txt would do (better would be some scripts that can handle this to extract from TEI format so I can extract all the witnesses):


                  1.1.1.1 מאימתי קורין את שמע בערבית משעה שהכהנים נכנסים לאכול בתרומתן עד סוף האשמורה הראשונה דברי ר׳ אליעזר וחכמים אומרים עד חצות רבן גמליאל אומר עד שיעלה עמוד השחר מעשה שבאו בניו מבית המשתה אמרו לו לא קרינו את שמע אמר להם אם לא עלה עמוד השחר חייבין אתם לקרות ולא זו בלבד אלא כל מה שאמרו חכמים עד חצות מצותן עד שיעלה עמוד השחר הקטר חלבים ואברים מצותן עד שיעלה עמוד השחר וכל הנאכלין ליום אחד מצותן עד שיעלה עמוד השחר אם כן למה אמרו חכמים עד חצות כדי להרחיק אדם מן העבירה
                  1.1.1.2 מאימתי קורין את שמע בשחרית משיכיר בין תכלת ללבן רבי אליעזר אומר בין תכלת לכרתי וגומרה עד הנץ החמה רבי יהושע אומר עד שלש שעות שכן דרךaz בני מלכים לעמוד בשלש שעות הקורא מכאן ואילך לא הפסיד כאדם הקורא בתורה
                  1.1.1.3 בית שמאי אומרים בערב כל אדם יטו ויקראו ובבוקר יעמדו שנאמר ובשכבך ובקומך ובית הלל אומרים כל אדם קורא כדרכו שנאמר ובלכתך בדרך אם כן למה נאמר ובשכבך ובקומך בשעה שבני אדם שוכבים ובשעה שבני אדם עומדים אמר ר׳ טרפון אני הייתי בא בדרך והטיתי לקרות כדברי בית שמאי וסכנתי בעצמי מפני הלסטים אמרו לו כדי היית לחוב בעצמך שעברת על דברי בית הלל
                  1.1.1.4 בשחר מברך שתים לפניה ואחת לאחריה ובערב שתי׳ לפניה ושתי׳ לאחריה אחת ארוכה ואחת קצרה מקום שאמרו להאריך אינו רשאי לקצר לקצר אינו רשאי להאריך לחתום אינו רשאי שלא לחתום ושלא לחתום אינו רשאי לחתום
                  1.1.1.5 מזכירין יציאת מצרים בלילות אמר ר׳ אלעזר בן עזריה הרי אני כבן שבעים שנה ולא זכיתי שתאמר יציאת מצרים בלילות עד שדרשה בן זומא שנאמר למען תזכור את יום צאתך מארץ מצרים כל ימי חייך ימי חייך הימים כל ימי חייך הלילות וחכמים אומרים ימי חייך העולם הזה כל ימי חייך להביא לימות המשיח
             

What I tried so far:

from lxml import etree

parser = etree.XMLParser()

tree = etree.parse('S00483.xml', parser)

parma = tree.getroot()

nsmap={'tei': 'http://www.tei-c.org/ns/1.0'}

to_find = set(['abbr', 'add', 'addSpan', 'am', 'anchor', 'c', 'cb', 'choice', 'damage', 'damageSpan', 'del', 'expan', 'fw', 'gap', 'label', 'lb', 'metamark', 'milestone', 'note', 'orig', 'pb', 'pc', 'ptr', 'reg', 'space', 'surplus', 'unclear', 'w'])

for line in parma.findall(".//tei:div", namespaces=nsmap):
    for ab in line.findall(".//tei:ab", namespaces=nsmap):
        verse_id = ab.attrib['{http://www.w3.org/XML/1998/namespace}id']
        verse = []
        for tag in ab.iter():
            if not len(tag):
                if not tag.text is None and (not hasattr(tag, '{http://www.tei-c.org/ns/1.0}label') and not hasattr(tag, '{http://www.tei-c.org/ns/1.0}am')):
                    verse.append(tag.text.strip())
        print(f"{verse_id} {' '.join(verse)}")

Still having problems with subtags of the text like correction, line breaks, damage, addition etc.

S00483.1.1.1.1 מאמתי קורין את שמע בערבים משעה שהכהנים נכנסין לאכל בתרומתן עד סוף האשמורת הראשנה דברי רבי אליעזר וחכמין אומרין עד חצות רבן גמליאל אומר עד שיעלה עמוד השחר ׳ מעשה שבאו בניו מבית המשתה אמרו לו לא קרינו את שמע אמר להם אם לא עלה עמוד השחר מותרין אתם לקרות ׳ ולא זו בלבד אלא כל שאמרו חכמים עד חצות ׳ מצותן עד שיעלה עמוד השחר ׳ הקטר חלבים ואיברין ואכילת פסחים מצותן עד שיעלה עמוד השחר ׳ וכל הנאכלין ליום אחד מצותן עד שיעלה עמוד השחר אם כן למה אמרו חכמים עד חצות אלא להרחיק את האדם מן העבירה
S00483.1.1.1.2 ׳ מאמתי קורין את שמע בשחרים משיכירו בין תכלת ללבן רבי אליעזר אומר בין תכלת לכרתן וגומרה עד הנץ החמה ׳ ורבי יהושע ׳ אומר עד שלש שעות שכן דרך בני מלכים לעמוד בשלש שעות הקורא מיכן והלך לא הפסיד כאדם שהוא קורא בתורה
S00483.1.1.1.3 ׳ בית שמי אומרין בערב כל אדם יטו ויקרו ובבקר יעמודו ׳ שנאמר ובשכבך ובקומך ו ובית הלל ׳ אומרים כל אדם קורין כדרכן ׳ שנאמר ובלכתך בדרך אם כן למה נאמר בשכבך ובקומך ׳ אלא בשעה שדרך בני אדם שוכבין ובשעה שדרך בני אדם עומדין ׳ אמר ׳ רבי טרפון אני הייתי בא בדרך והטיתי לקרות כדברי בית שמי וסיכנתי בעצמי מפני הלסטים אמרו לו כדיי הייתה לחוב בעצמך שעברתה על דברי בית הלל

Would TEIGarage https://teigarage.tei-c.org/# be helpful in this case? https://teigarage.tei-c.org/# KEN M. PENNER (he/him) PROFESSOR & CHAIR, RELIGIOUS STUDIES St. Francis Xavier University Antigonish, Nova Scotia · Canada t 902 867 2265 · c 902 870 0697 www.stfx.ca<http://www.stfx.ca/> [Text Description automatically generated] I acknowledge that StFX is located in Mi’kma’ki, the ancestral and unceded territory of the Mi’kmaq People.

Unfortunately no, it extracts text but all text critical stuff vanishes (deletions, additions etc.)

I have failed to divert us to email...
Sorry, I did not pay enough attention to the output you pointed to, but here is a preliminary dump of Kaufmann.
out.txt
I can send the xslt script that produced it too, but gh does not allow me to upload files of that type.

Here you go. One thing I noticed is that you will need to insert a space at the line breaks (<lb/>). I can make these and other simple updates if you need me to.
Full disclosure: I have never actually run Saxon/XSLT on the command line, but only either in an IDE or in a webapp.

toPlainText.zip

Sure, mail will be better. Yes, I think I may be reinventing the wheel, just found out about your project a week ago when trying to find a transcription of De Rossi 138.

Can you send me an email to my gmail: johnlockejrr?
I want to ask you about some things and don't want to prolong the discussion here.
Anyway, I presume you use kraken or eScriptorium for automated transcriptions of Hebrew texts, do you have
any good recognition and segmentation models you can share? Thank you!

Yes, johnlockejrr [ at ] gmail.com