示例#1
0
def datum(metadata: dict, parser: str):
    
    pfad = next(iter(metadata))
    datei = next(iter(metadata[pfad]))    
    inhalt = metadata[pfad][datei]['inhalt']
    
    if inhalt == '':
        inhalt = extractText.getTextContent(metadata, parser)
        
    datenDateiAll = extractDatum.getDates(inhalt)
    daten = helpers.convertDate(datenDateiAll)
    
    return daten
示例#2
0
def relateObjnr(metadata: dict, parser: str = 'tika'):

    pfad = next(iter(metadata))
    datei = next(iter(metadata[pfad]))
    inhalt = metadata[pfad][datei]['inhalt']
    adressen = metadata[pfad][datei]['adrDict']

    if adressen == {}:
        adressen, adresse, adrName = relateAdresse.findAddress(
            metadata, parser)

    if inhalt == '':
        inhalt = extractText.getTextContent(metadata, parser)

    objnr, behoerde, objnrMethode = getObjnr.getObjnr(adressen, inhalt)
    return objnr, behoerde, objnrMethode
示例#3
0
def findAddress(metadata: dict, parser: str):

    pfad = next(iter(metadata))
    datei = next(iter(metadata[pfad]))
    inhalt = metadata[pfad][datei]['inhalt']

    # Pfad
    adressen, adresse, adrName = extractAdresse.getAddress(pfad)
    # Dateiname
    if not adressen:
        adressen, adresse, adrName = extractAdresse.getAddress(datei)
    # Inhalt
    if not adressen:
        if inhalt == '':
            inhalt = extractText.getTextContent(metadata, parser)

        adressen, adresse, adrName = extractAdresse.getAddress(
            inhalt)  #inhalt = inhalt.split('§')[0]
    return adressen, adresse, adrName
示例#4
0
def vorhaben(metadata, directories, ordnerStruktur, methode):

    target_dir = next(iter(metadata))
    datei = next(iter(metadata[target_dir]))
    dateidir = metadata[target_dir][datei]['pfadAktuell']

    inhalt = metadata[target_dir][datei]['inhalt']
    adressenDict = metadata[target_dir][datei]['adrDict']
    datenStr = metadata[target_dir][datei]['daten']

    if adressenDict == {}:
        adressenDict, adresse, adrName = relateAdresse.findAddress(
            metadata, methode)

    if inhalt == '':
        inhalt = extractText.getTextContent(metadata, methode)

    if datenStr == []:
        datenStr = relateDatum.datum(metadata, methode)

    daten = [helpers.convertstring2date(i) for i in datenStr]

    if ordnerStruktur == []:
        vorhVars = initVorhaben(directories, methode)
    else:
        outermost_dir = directories[0]
        vorhVars = initVorhaben_OROS(ordnerStruktur, dateidir, directories,
                                     methode)

    moeglVorhList, moeglOrtList = getVorhabenListFuerDirectory(
        target_dir, vorhVars.vorhDict, vorhVars.subdirs)

    try:
        vorhabenBestMatch, score = getVorhabenBestMatch(inhalt.split('§')[0], adressenDict, daten, moeglVorhList, \
                                                                      moeglOrtList, vorhVars.vorhDict[target_dir], vorhVars.vorhOntologie, \
                                                                      vorhVars.vorhDict_dir, datei)
    except:
        vorhabenBestMatch = []
        score = 9999

    return vorhabenBestMatch, score
示例#5
0
def objnrByFileName(root: str,
                    file: str,
                    pfadDictFile,
                    parser: str,
                    docxVorhanden,
                    deutsch,
                    denkmale,
                    denkmalStrasse,
                    denkmaleAdresse,
                    denkmalHausnr,
                    denkmaleObjNr,
                    denkmalSachbegriff,
                    denkmalName,
                    behoerden,
                    foundObjnrPfad,
                    countDateiname,
                    countInhalt,
                    considerPfadundName=True):

    dictObjnr = {}

    foundObjnrDatei = False  # Diese Angabe wird für die entsprechende Datei geändert, sobald eine Adresse mit
    # Objektnummer (durch Dateiname, Pfad, oder Inhalt erkannt wird)
    inhaltVorhanden = True  # Annahme. Wenn die Datei keinen lesbaren Inhalt hat, wird diese Angabe im folgenden korrigiert

    inhalt = extractText.getTextContent(root, file, parser, docxVorhanden)

    if inhalt == None or inhalt == '':
        inhaltVorhanden = False
        inhalt = ''

    dirstr = ''
    for elem in pfadDictFile['pfad']:
        dirstr = dirstr + ' ' + elem

    inhaltMitPfad = root + ' ' + file + ' ' + inhalt + ' ' + dirstr

    if foundObjnrPfad == True:
        foundObjnrDatei = True

    else:
        if considerPfadundName:
            # Versuch 2: Adresse aus Dateiname entnehmen, da Infos aus Pfad nicht ausreichend
            dictObjnr, countDateiname, foundObjnrDatei = objnrDurchAdresseInDateiname(
                file, deutsch, denkmalStrasse, denkmaleAdresse, denkmalHausnr,
                denkmaleObjNr, denkmalSachbegriff, denkmalName, behoerden,
                countDateiname, foundObjnrDatei)

    if (foundObjnrDatei == False) and (inhaltVorhanden == True):
        # Versuch 3: Adresse bzw. Objektnummer aus Inhalt entnehmen, da Infos aus Pfad und Dateiname nicht ausreichend
        # Versuch 3.1.: Objektnummer aus Datei extrahieren
        dictObjnr, countInhalt, foundObjnrDatei = objnrImInhalt(
            inhalt, denkmale, countInhalt, foundObjnrDatei)

    if (foundObjnrDatei == False) and (inhaltVorhanden == True):
        # Versuch 3.2.: Adresse(n) aus Datei-Inhalt extrahieren
        dictObjnr, countInhalt, foundObjnrDatei = objnrDurchAdresseImInhalt(
            inhalt, deutsch, behoerden, denkmalStrasse, denkmaleAdresse,
            denkmalHausnr, denkmaleObjNr, denkmalSachbegriff, denkmalName,
            countInhalt, foundObjnrDatei)

    try:
        saveObjnr(root, dictObjnr, file)
    except:
        return dictObjnr, inhaltMitPfad, countDateiname, countInhalt, foundObjnrDatei, inhaltVorhanden

    return dictObjnr, inhaltMitPfad, countDateiname, countInhalt, foundObjnrDatei, inhaltVorhanden
示例#6
0
def extrahierenAlleVorhaben_OROS(files, directory, directoryOrdnerStruktur, ontologie, methode):

    listeVorhaben = []
    dateienVorhaben = []
    preprocessedVorhaben = []
    listeOrt = []
    vorhabenDict = {}
        
    adresseVorhabenDict = {}

    for i in range(0, len(files)):
        
        if not os.path.isfile(directory + '\\' + files[i]):
            #print(files[i] + ' --> not in directory')
            continue
        
        pfadDatei = [files[i], directory]

        inhalt = extractText.getTextContent(pfadDatei, methode)

        if (inhalt == None) or (inhalt == ""):
            continue  

        inhalt = inhalt.split('§')[0]

        vorhaben, delimit = getVorhaben(inhalt)

        if vorhaben == '':
            continue

        preprocVorhabenInit, [], [] = extractText.preprocessText(vorhaben)
        preprocVorhabenAdresse = [c for c in preprocVorhabenInit if c not in rex.getRegex(' '.join(preprocVorhabenInit)).adresseUnvollstaendig]

        preprocVorhaben = entfernenWennFürVorhabenGleichhueltig(preprocVorhabenAdresse)

        vorhOberbegriffe = []
        for item in preprocVorhaben:
            if item in ontologie['words'].keys():
                itemsList = [itemUpper.lower() for itemUpper in ontologie['words'][item]]
                vorhOberbegriffe.extend(itemsList)


        start_grundstück = inhalt.find("Grundstück")            

        if start_grundstück != -1: 
            index = len('Grundstück') + 1
        else:
            start_grundstück = inhalt.find("Grundstücke")  
            index =  len('Grundstücke') + 1


        delimLine = 0
        adresseVorhaben = ''

        while len(adresseVorhaben) <= 1:
            adresseVorhaben = inhalt[start_grundstück+index:].split(delimit)[delimLine]
            delimLine += 1
            # Es gab einen Delimiter vor dem eigentlichen Adresse
            #adresseVorhaben = inhalt[start_grundstück+index:].split(delimit)[onefurther]
            #if len(adresseVorhaben) <= 1:
            #    # Es gab einen weiteren Delimiter vor dem eigentlichen Adresse
            #    adresseVorhaben = inhalt[start_grundstück+index:].split(delimit)[1]

        adressenDict, dummy1, dummy2 = extractAdresse.getAddress(adresseVorhaben) #rex.getRegex(adresseVorhaben).adresseUnvollstaendig

        textCleanSpace = re.sub(' +', ' ', inhalt.replace('\n', ' ').replace('\t', ' ').replace('\r', ' ').rstrip())
        datesList = helpers.convertDate(extractDatum.getDates(textCleanSpace))

        adresseVorhabenDict = mergeVorhabenDicts(adressenDict, adresseVorhabenDict, vorhaben, preprocVorhaben, vorhOberbegriffe, files[i], datesList)

    vorhabenDict[directoryOrdnerStruktur] = adresseVorhabenDict

    return vorhabenDict # dateienVorhaben, listeVorhaben, preprocessedVorhaben, listeOrt
示例#7
0
vorhabenScore = ''
vorgang = ''
inhalt = ''
daten = []
adrDict = {}

metadata = {pfad: {datei: {'objnr': objnr, 'adresse': adresse, 'denkmalname': denkmalname, 'sachbegriff': sachbegriff, \
                                'objnrMethode': objnrMethode, 'behoerde': behoerde, 'vorhaben': vorhaben, 'vorhabenScore': vorhabenScore, \
                                'vorgang': vorgang, 'daten': daten, 'inhalt': inhalt, 'adrDict': adrDict, 'pfadAktuell': dateidir}}}

parser = 'tika'  # 'docx'
for item in metadataToExtract:
    print(item)
    if item == 'inhalt':
        # Inhalt extrahieren
        content: any = extractText.getTextContent(metadata, parser)
        metadata[pfad][datei]['inhalt'] = content
    if item == 'adresse':
        # Adresse identifizieren
        metadata[pfad][datei]['adrDict'], \
        metadata[pfad][datei]['adresse'], adrName = relateAdresse.findAddress(metadata, parser)

    if item == 'objnr':
        # Objektnummer identifizieren
        metadata[pfad][datei]['objnr'], \
        metadata[pfad][datei]['behoerde'], \
        metadata[pfad][datei]['objnrMethode'] = relateObjnr.relateObjnr(metadata, parser)

    if item == 'daten':
        # Daten identifizieren
        metadata[pfad][datei]['daten'] = relateDatum.datum(metadata, parser)