import os import json import re import html as cleaner import ebooklib from ebooklib import epub def create_corpus(borders, gold): for ean in list(borders.keys()): print(ean) path = 'epubs/'+str(ean)+'.epub' book = epub.read_epub(path) html = "" for doc in book.get_items_of_type(ebooklib.ITEM_DOCUMENT): if borders[ean][3] == False: txt = re.sub("<[^>]+>","",doc.content.decode("utf8")) else: txt = re.sub("<[^>]+>","",cleaner.unescape(doc.content.decode("utf8"))) txt = re.sub("\t","",txt) html+=txt print(len(html)) thtml = html[borders[ean][0]:borders[ean][1]] if borders[ean][4] == True: p = re.sub("\&[^\;]+\;"," ",thtml) else: p = thtml p = re.sub("\n"," ",p) p = re.sub("\s+"," ",p) p = re.sub("\t+","",p) if borders[ean][2] == None: pass else: for replacment in borders[ean][2]: p = re.sub(replacment[0], replacment[1], p) output = {} print(gold[str(ean)]) output["text"] = p output["scenes"] = gold[str(ean)]["scenes"] output["sentences"] = gold[str(ean)]["sentences"] with open('scene-dataset/'+str(ean)+".json", 'w') as outfile: json.dump(output, outfile) borders = { 9783732535200:[1232,196089,[["\*"," "],["»Graben\?«","» Graben?«"]],True,False], 9783732517695:[829,193211,[["von O. S. Winterfield ",""],["Die Schwarzen Perlen ",""], [" noch an diesem Abend gefunden", "noch an diesem Abend gefunden."], [" Der so schnell gealterte und müde gewordene Mann schämte sich für die Sehnsucht nach seinem Sohn","Der so schnell gealterte und müde gewordene Mann schämte sich für die Sehnsucht nach seinem Sohn."], [" Sie freute sich, mit Stella die Freiheit genießen zu können","Sie freute sich, mit Stella die Freiheit genießen zu können."]],True,False], 9783732502929:[861,201195,[ [" Hier saß sie in tiefes Sinnen verloren und starrte traurig vor sich hin","Hier saß sie in tiefes Sinnen verloren und starrte traurig vor sich hin."], [" und lachend und glückselig schritten sie in den Saal zurück","und lachend und glückselig schritten sie in den Saal zurück."], [" Schwarzburgs waren wieder abgereist und andere Verwandte hatten sie abgelöst","Schwarzburgs waren wieder abgereist und andere Verwandte hatten sie abgelöst."] ],True,False], 9783732591732:[747,150218,None,True,False], 9783838713625:[1050,162290,[["Prophet der Apokalypse ",""]],True,False], 9783845397535:[4742,168971,[["[0-9]\. [0-9]\.","1."]],True,False], 9783740965716:[758,171243,[["\* ", ""],["\.\.", ". ."],["Luft. Denn G","Luft. Denn G"],[" \»Er heiratet sie\:","»Er heiratet sie:"]],True,False], 9783740950484:[882,195539,[["\* ", ""]],True,False], 9783732597314:[1246,150983,None,True,False], 9783732557905:[831,170777,[["… Andrea Bergen ", "… "]],True,False], 9783740941093:[879,157354,None,True,False], 9783838727868:[1049,159415,[["\*", "" ]],True,False], 9783732596249:[1468,230821,None,True,False], 9783732591725:[691,148327,[["\*"," "],["Schläge … ","Schläge … "],["nachdenklich weiter.","nachdenklich weiter. "]],True,False], 9783838721675:[6177,406653,[["sagte Andara verzweifelt","s agte Andara verzweifelt"], ["schrie Andara. Verzweifelt","s chrie Andara. Verzweifelt"], ["sagte Roderick beschwörend.","s agte Roderick beschwörend."], ["Handvoll","Hand voll"], ["schrie Necron","s chrie Necron"]],True,False], 9783732596546:[1318,175088,[["\*",""],["Kapitel [0-9]+",""],["\s+"," "]],True,False], 9783732596881:[1322,163577,[["\☆",""],["Kapitel [0-9]+",""],["\s+"," "]],True,False], 9783732522033:[850,209956,[["\*",""],["Kapitel [0-9]+",""],["\s+"," "]],True,False], 9783732584017:[4091,170756,[["\*",""],["Kapitel [0-9]+",""],["\s+"," "],[" Deus ex machina",""],["Rückblick Aticus","Aticus"]],True,False], 9783732586875:[1114,134192,[["\♥",""],["Kapitel [0-9]+",""],["\s+"," "],["\n+"," "],["sondern angesehen ist; ","sondern angesehen ist; "]],True,False] } if not os.path.isdir('scene-dataset'): os.makedirs('scene-dataset') gold = json.loads(open("gold_stss_training.json","r").read()) create_corpus(borders, gold)