File size: 2,067 Bytes
84e78bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Imports --------------------------------------------------------------------------------------------------
# https://huggingface.co/tasks/table-question-answering

from transformers import pipeline
import pandas as pd
import time
import math
import os

# Small snippet to retrieve coordinates from a geojson file
import requests
import json


#Working Directory setzen
os.chdir('C:/Users/Jens_/Documents/Unterlagen/Studium Dresden/2. Semester/GIT06/GID-Project') #muss angepasst werden



# GADM Deutschland Beispielpolygone --------------------------------------------------------------------
# Vorbereitung
# Daten laden
with open('Daten/GeoJSON/gadm41_DEU_1.json', 'r', encoding='utf-8') as json_datei:
    daten = json.load(json_datei)
    os.close('Daten/GeoJSON/gadm41_DEU_1.json')
table = pd.DataFrame.from_dict(daten["features"])


# Daten in passendes Format bringen (Pandas Data-Frame)
prop = table['properties'] #Properties in die Tabelle integrieren
prop = pd.DataFrame(list(prop))
del table['properties']
table = pd.concat([table, prop], axis = 1)

geom = table["geometry"] # Koordinatenzeilen abspeichern und durch Indexe ersetzen (Berechnungsdauer)
table["geometry"] = [str(i) for i in range(table.shape[0])]
print(table)


# Modell 
tqa = pipeline(task="table-question-answering", model="google/tapas-large-finetuned-wtq")


# Frage
question = 'give me the geometry of england'


# Berechnung
t = round(time.time()) # Berechnungszeit messen
i = tqa(table=table, query=question)['cells'][0]

try:
  i = int(i)
  answer = geom[i]
except:
  InterruptedError ('Falsche Spalte (Es wurde kein Index ausgegeben)')
  answer = 'answer: ' + i

t = round(time.time())-t
t = str(math.floor(t) // 3600) + "::" + str((t-(math.floor(t) // 360)*360) // 60) + "::" + str((t-(math.floor(t) // 60)*60))


# Überprüfung
print(answer)
table.iloc[i]
print(t) # ~2 sec





#Ziel der Frage, Orte der Frage

# Wie kann man verschiedene BL ausgegeben bekommen (in der Frage angegeben)
# Wie kann man verschiedene "Operationen" (Zwischen, alle, ect.) in der Frage erkennen