Skip to content
Snippets Groups Projects
Commit 0991a44c authored by Simon Will's avatar Simon Will
Browse files

Generate numeric distances as symbols, but correctly parse both symbol & literal

parent a7153728
No related branches found
No related tags found
No related merge requests found
......@@ -250,7 +250,7 @@ def generate_tag_query_features(thing_table, areas, pois, around=None,
features['maxdist'] = choose(
[Symbol('DIST_INTOWN'), Symbol('DIST_OUTTOWN'),
Symbol('WALKING_DIST'), Symbol('DIST_DAYTRIP'),
str(random.randint(1, 100)) + '000'],
Symbol(str(random.randint(1, 100)) + '000')],
[0.3, 0.25, 0.2, 0.1, 0.15]
)
......@@ -367,8 +367,8 @@ def main(areas, pois, count=100, escape=False, nl_suffix='en', noise=False,
else:
nl_file = mrl_file = sys.stdout
special_phrases_file = (Path(os.path.dirname(os.path.abspath(__file__)))
/ 'special_phrases.txt')
special_phrases_file = (Path(__file__)
/ '../data/special_phrases.txt').resolve()
thing_table = special_phrases_table(special_phrases_file)
for _ in range(count):
......
......@@ -22,9 +22,9 @@
{% set within_or_less_than = choose(['within', 'less than']) %}
{{ within_or_less_than }}
{% if choose(['km', '']) %}{# kilometers #}
{{ int(features['maxdist']) // 1000 }}{{ choose(['km', ' km', ' kilometers', ' kilometres'], [0.25, 0.25, 0.25, 0.25]) }}
{{ int(features['maxdist'].string) // 1000 }}{{ choose(['km', ' km', ' kilometers', ' kilometres'], [0.25, 0.25, 0.25, 0.25]) }}
{% else %}{# meters #}
{{ features['maxdist'] }}{{ choose(['m', ' m', ' meters', ' metres'], [0.25, 0.25, 0.25, 0.25]) }}
{{ features['maxdist'].string }}{{ choose(['m', ' m', ' meters', ' metres'], [0.25, 0.25, 0.25, 0.25]) }}
{% endif %}
{{ 'away' if within_or_less_than == 'less than' else '' }}
{{ choose(['of', 'from'], [0.4, 0.6]) }}
......
......@@ -13,9 +13,9 @@
{% set within_or_less_than = choose(['within', 'less than']) %}
{{ within_or_less_than }}
{% if choose(['km', '']) %}{# kilometers #}
{{ int(features['maxdist']) // 1000 }}{{ choose(['km', ' km', ' kilometers', ' kilometres'], [0.25, 0.25, 0.25, 0.25]) }}
{{ int(features['maxdist'].string) // 1000 }}{{ choose(['km', ' km', ' kilometers', ' kilometres'], [0.25, 0.25, 0.25, 0.25]) }}
{% else %}{# meters #}
{{ features['maxdist'] }}{{ choose(['m', ' m', ' meters', ' metres'], [0.25, 0.25, 0.25, 0.25]) }}
{{ features['maxdist'].string }}{{ choose(['m', ' m', ' meters', ' metres'], [0.25, 0.25, 0.25, 0.25]) }}
{% endif %}
{{ 'away' if within_or_less_than == 'less than' else '' }}
{% endif %}
......@@ -130,7 +130,10 @@ class MrlGrammar:
).setParseAction(self.makeSymbol)
integer = pp.Word(pp.nums).setParseAction(self.makeSymbol)
integer = (
pp.Word(pp.nums)
^ (pp.Suppress("'") + pp.Word(pp.nums) + pp.Suppress("'"))
).setParseAction(self.makeSymbol)
distance_term = distance_symbol ^ integer
......@@ -364,6 +367,7 @@ def filetest():
import sys
grammar = MrlGrammar()
testfile = '/media/data/Dauerhaft/Studium/Computerlinguistik/Master-Arbeit/data/nlmaps_v2.1/split_1_train_dev_test/nlmaps.v2.train.mrl'
#testfile = '/media/data/Dauerhaft/Studium/Computerlinguistik/Master-Arbeit/data/nlmaps_v3delta/v3delta.normal/nlmaps.v3delta.train.mrl'
mrl_to_features = {}
max_fails = 10
......@@ -412,6 +416,7 @@ def test():
"dist(query(around(center(area(keyval('name','Edinburgh')),nwr(keyval('name','Palace of Holyroodhouse'))),search(nwr(keyval('name','Edinburgh Waverley'),keyval('railway','station'))),maxdist(DIST_INTOWN)),qtype(latlong)))",
"dist(query(area(keyval('name','Heidelberg')),nwr(keyval('name','Heidelberger Schloss')),qtype(latlong)),query(area(keyval('name','Heidelberg')),nwr(keyval('name','Heidelberg Hbf')),qtype(least(topx(1)))),for('walk'))",
"query(nwr(keyval('amenity','restaurant')),qtype(latlong))",
"query(around(center(area(keyval('name','Heidelberg')),nwr(keyval('name','INF 325'))),search(nwr(keyval('shop','supermarket'),or(keyval('organic','only'),keyval('organic','yes')))),maxdist('5000')),qtype(latlong))",
]
for mrl in test_mrls:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment