[
  {
    "path": ".codecov.yml",
    "content": "comment: off\n"
  },
  {
    "path": ".editorconfig",
    "content": "# http://editorconfig.org\n\nroot = true\n\n[*]\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\ninsert_final_newline = true\ncharset = utf-8\nend_of_line = lf\n\n[*.bat]\nindent_style = tab\nend_of_line = crlf\n\n[LICENSE]\ninsert_final_newline = false\n\n[Makefile]\nindent_style = tab\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "* ctparse - Parse natural language time expressions in pytho version:\n* Python version:\n* Operating System:\n\n### Description\n\nDescribe what you were trying to get done.\nTell us what happened, what went wrong, and what you expected to happen.\n\n### What I Did\n\n```\nPaste the command(s) you ran and the output.\nIf there was a crash, please include the traceback here.\n```\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\n.idea/\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# dotenv\n.env\n\n# virtualenv\n.venv\nvenv/\nENV/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n\n# pytest\n.pytest_cache/\n\n# system\n.DS_Store\n\n# vscode\n.vscode\n"
  },
  {
    "path": ".pyup.yml",
    "content": "# autogenerated pyup.io config file \n# see https://pyup.io/docs/configuration/ for all available options\n\nupdate: insecure\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: python\nsudo: required\ndist: xenial\npython:\n  - 3.8\n  - 3.7\n  - 3.6\ninstall: pip install -U tox-travis codecov\nscript: tox\nafter_success:\n  codecov\n"
  },
  {
    "path": "AUTHORS.rst",
    "content": "=======\nCredits\n=======\n\nDevelopment Lead\n----------------\n\n* Sebastian Mika <sebastian.mika@comtravo.com>\n\nContributors\n------------\n\n* Gabriele Lanaro <gabriele.lanaro@comtravo.com>\n"
  },
  {
    "path": "CONTRIBUTING.rst",
    "content": "============\nContributing\n============\n\nContributions are welcome, and they are greatly appreciated! Every little bit\nhelps, and credit will always be given.\n\nYou can contribute in many ways:\n\n\nAdd Rules & Increase Coverage\n-----------------------------\n\nIf you find an expressions that ``ctparse`` can not resolve correctly\nbut you feel it should do, you can adjust the existing rules or add a\nnew one.\n\nThe following steps are probably a helpful guideline.\n\n* Add your case to the ``corpus.py`` file and run the corpus tests\n  using ``py.test tests/test_run_corpus.py``. Now basically two things can happen:\n\n  #. **The tests pass**, which means ``ctparse`` can correctly resolve\n     the expression. It might not score it highest. To check this,\n     rebuild the model and try parsing the expression again:\n\n     .. code:: bash\n\n            make train\n\n     To avoid issues with reloading, please restart the python\n     interpreter after regenerating the model.\n\n     If this fixes the issue please commit the updated ``corpus.py``\n     and the updated model as a pull request (PR) on GitHub, see this guide for\n     more information on what pull requests are and how to create them\n     https://help.github.com/articles/creating-a-pull-request/.\n\n     The scoring can be influenced by\n     adding more structurally identical examples to the corpus. Seeing\n     more samples where a specific sequence of rule applications leads\n     to the correct ranking will drive the model to favor these. This\n     comes, however, at the potential price of downranking certain\n     other production sequences. Although it would generally be\n     considered more favorable to add varying test cases (e.g. in\n     different languages, slight variation) to the corpus, the same\n     string can also just be duplicated to achive this *implict\n     up-weightning* effect. The examples that are intended to influence the scoring,\n     as opposed to the ones used to develop new rules, are usually appended\n     to the file ``auto_corpus.py```.\n\n  #. **The tests fail**: if this is because not all tests in the\n     corpus pass, i.e. you get an error message like the following::\n\n       ctparse.py 527 WARNING  failure: target \"Time[]{2019-X-X X:X (X/X)}\" never produced in \"2019\"\n       ctparse.py 532 WARNING  failure: \"Time[]{2019-X-X X:X (X/X)}\" not always produced\n\n* If the tests fail, run ``ctparse`` in debug mode to see what goes wrong:\n\n  .. code:: python\n\n     import logging\n     from ctparse import ctparse\n     from ctparse.ctparse import logger\n     from datetime import datetime\n\n     logger.addHandler(logging.StreamHandler())\n     logger.setLevel(logging.DEBUG)\n\n     # Set reference time\n     ts = datetime(2018, 3, 12, 14, 30)\n     r = list(ctparse('May 5th', ts=ts, debug=True))\n\n\n  This gives you plenty of debugging output. First you will see\n  the individual regular expressions that were matched (and the time\n  this took)::\n\n    ================================================================================\n    -> matching regular expressions\n    regex: RegexMatch[0-3]{114:May}\n    regex: RegexMatch[4-5]{133:5}\n    regex: RegexMatch[4-7]{135:5th}\n    regex: RegexMatch[4-5]{134:5}\n    regex: RegexMatch[4-5]{148:5}\n    time in _match_regex: 1ms\n    ================================================================================\n\n  Each line has the form ``regex: RegexMatch[0-3]{114:May}`` and describes\n  the matched span in the text ``[0-3]``, the ID of the matching expression\n  ``114`` and the surface string that the expression matched ``May``.\n\n  If relevant parts of your expression were not picked up, this is an\n  indicator that you should either modify an existing regular\n  expression or need to add a new rule (see below).\n\n  Next you see the unique sub-sequences constructed based on these\n  regular expressions (plus again the time used to build them)::\n\n    ================================================================================\n    -> building initial stack\n    regex stack (RegexMatch[0-3]{114:May}, RegexMatch[4-7]{135:5th})\n    regex stack (RegexMatch[0-3]{114:May}, RegexMatch[4-5]{148:5})\n    regex stack (RegexMatch[0-3]{114:May}, RegexMatch[4-5]{134:5})\n    regex stack (RegexMatch[0-3]{114:May}, RegexMatch[4-5]{133:5})\n    time in _regex_stack: 0ms\n    initial stack length: 4\n    stack length after relative match length: 1\n    stack length after max stack depth limit: 1\n    ================================================================================\n\n  This is followed by a summary of how many applicable rules there are\n  per initial stack element::\n\n    ================================================================================\n    -> checking rule applicability\n    of 75 total rules 20 are applicable in (RegexMatch[0-3]{114:May}, RegexMatch[4-7]{135:5th})\n    time in _filter_rules: 0ms\n    ================================================================================\n    ================================================================================\n    -> checking rule applicability\n    of 75 total rules 20 are applicable in (RegexMatch[0-3]{114:May}, RegexMatch[4-5]{148:5})\n    time in _filter_rules: 0ms\n    ================================================================================\n    ...\n\n  Again, if you do not see any sequence that captures all relevant\n  parts of your input, you may need to modify the regular expressions\n  or add new ones via rules.\n\n  Finally you see a list of productions that are applied to stack\n  elements, where for each applicable rule the rule name and the new\n  stack sequence are printed, e.g.::\n\n    --------------------------------------------------------------------------------\n    producing on (RegexMatch[0-3]{114:May}, RegexMatch[4-7]{135:5th}), score=-0.13\n      ruleMonthMay -> (Time[0-3]{X-05-X X:X (X/X)}, RegexMatch[4-7]{135:5th}), score=1.41\n      ruleDOM2 -> (RegexMatch[0-3]{114:May}, Time[4-7]{X-X-05 X:X (X/X)}), score=1.38\n    added 2 new stack elements, depth after trunc: 2\n    --------------------------------------------------------------------------------\n\n  If no productions could be applied to a stack element the emitted\n  results are printed::\n\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    no rules applicable: emitting\n    => Time[0-7]{2018-05-05 X:X (X/X)}, score=15.91,\n    --------------------------------------------------------------------------------\n\n  If the desired production does not show up, but the regular\n  expressions look fine and the initial stack elements as well, try\n  increasing the ``max_stack_depth`` parameter, i.e. run\n  ``ctparse(..., max_stack_depth=0)``. Also make sure that the\n  ``timeout`` parameter is not set. Maybe ``ctparse`` is able to\n  generate the resolution but it is too deep in the stack.\n\n\nAdding a rule\n~~~~~~~~~~~~~\n\nWhen adding rules try to follow these guidelines:\n\n1. Be as general as possible: instead of writing one long regular\n   expression that matches only a specific case, check whether you can\n   rather divide your pattern in production parts + some regular\n   expressions. For example, if you have a very specific way to\n   speficy the year of a date in mind, it might do no harm to just\n   allow anything that with ``predicate('hasDate')`` plus your\n   specific year expression, i.e.\n\n   .. code:: python\n\n      @rule(predicate('hasDate'), r'your funky year')\n\n2. Keep your regex as general as possible, but avoid regular\n   expressions that are likely to generate many \"false positives\". Often\n   that can be prevented by using positive or negative lookaheads and\n   lookbehinds to keep the context sane (see `Lookaround\n   <https://www.regular-expressions.info/lookaround.html>`_ on the\n   excellent regular-expression.info site).\n\n3. Make sure your production covers corner cases and matches the\n   ``ctparse`` opinion to resolve to times in the near future but -\n   unless explicit -- never in the past (relative to the reference\n   time). Also make sure it favors the close future over the further\n   future.\n\n\nOther Types of Contributions\n----------------------------\n\nReport Bugs\n~~~~~~~~~~~\n\nReport bugs at https://github.com/comtravo/ctparse/issues.\n\nIf you are reporting a bug, please include:\n\n* Your operating system name and version.\n* Any details about your local setup that might be helpful in troubleshooting.\n* Detailed steps to reproduce the bug.\n\nFix Bugs\n~~~~~~~~\n\nLook through the GitHub issues for bugs. Anything tagged with \"bug\" and \"help\nwanted\" is open to whoever wants to implement it.\n\nImplement Features\n~~~~~~~~~~~~~~~~~~\n\nLook through the GitHub issues for features. Anything tagged with \"enhancement\"\nand \"help wanted\" is open to whoever wants to implement it.\n\nWrite Documentation\n~~~~~~~~~~~~~~~~~~~\n\nctparse - Parse natural language time expressions in pytho could always use more documentation, whether as part of the\nofficial ctparse - Parse natural language time expressions in pytho docs, in docstrings, or even on the web in blog posts,\narticles, and such.\n\nSubmit Feedback\n~~~~~~~~~~~~~~~\n\nThe best way to send feedback is to file an issue at https://github.com/comtravo/ctparse/issues.\n\nIf you are proposing a feature:\n\n* Explain in detail how it would work.\n* Keep the scope as narrow as possible, to make it easier to implement.\n* Remember that this is a volunteer-driven project, and that contributions\n  are welcome :)\n\nGet Started!\n------------\n\nReady to contribute? Here's how to set up `ctparse` for local development.\n\n1. Fork the `ctparse` repo on GitHub.\n2. Clone your fork locally::\n\n    $ git clone git@github.com:your_name_here/ctparse.git\n\n3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::\n\n    $ mkvirtualenv ctparse\n    $ cd ctparse/\n    $ python setup.py develop\n\n4. Create a branch for local development::\n\n    $ git checkout -b name-of-your-bugfix-or-feature\n\n   Now you can make your changes locally.\n\n5. When you're done making changes, check that your changes pass flake8 and the\n   tests, including testing other Python versions with tox::\n\n    $ flake8 ctparse tests\n    $ python setup.py test or py.test\n    $ tox\n\n   To get flake8 and tox, just pip install them into your virtualenv.\n\n6. Commit your changes and push your branch to GitHub::\n\n    $ git add .\n    $ git commit -m \"Your detailed description of your changes.\"\n    $ git push origin name-of-your-bugfix-or-feature\n\n7. Submit a pull request through the GitHub website.\n\nPull Request Guidelines\n-----------------------\n\nBefore you submit a pull request, check that it meets these guidelines:\n\n1. The pull request should include tests.\n2. If the pull request adds functionality, the docs should be updated. Put\n   your new functionality into a function with a docstring, and add the\n   feature to the list in README.rst.\n3. The pull request should work for Python 3.6., 3.7. and 3.8. Check\n   https://travis-ci.org/comtravo/ctparse/pull_requests\n   and make sure that the tests pass for all supported Python versions.\n\nTips\n----\n\nTo run a subset of tests::\n\n$ py.test tests.test_ctparse\n\n\nDeploying\n---------\n\nA reminder for the maintainers on how to deploy.\nMake sure all your changes are committed (including an entry in HISTORY.rst).\nThen run on the ``master`` branch::\n\n$ bumpversion patch # possible: major / minor / patch\n$ git push\n$ git push --tags\n$ make release\n\nYou will need a username and password to upload to pypi (might be\nautomated on Travis).\n"
  },
  {
    "path": "HISTORY.rst",
    "content": "=======\nHistory\n=======\n\n\n0.3.0 (2021-02-01)\n------------------\n\n* Removed latent rules regarding times (latent rules regarding dates are still present)\n* Added latent_time option to customize the new behavior, defauld behavior is backwards-compatible\n\n0.2.1 (2020-05-27)\n------------------\n\n* Update development dependencies\n* Add flake8-bugbear and fixed issues\n\n0.2.0 (2020-04-23)\n------------------\n\n* Implemented new type `Duration`, to handle lengths of time\n* Adapted the dataset to include `Duration`\n* Implemented basic rule to merge `Duration`, `Time` and `Interval` in simple cases.\n* Created a make target to train the model `make train`\n\n0.1.0 (2020-03-20)\n------------------\n\n* Major refactor of code underlying predictive model\n* Based on a contribution from @bharathi-srini: replace naive bayes from sklearn by own implementation\n* Thus remove dependencies on numpy, scipy, scikit-learn\n* Predictions are much faster: 97/s in the old vs. 239/s in the new code base\n* Performance identical\n* Deprecate support for python 3.5, add 3.8\n* Add more strict type checking rules (mypy.ini)\n* Force black code formatting, make this a linter step, \"black\" all code\n\n0.0.47 (2020-02-28)\n-------------------\n\n* Allow overlapping matches of regular expression when generating inital stack of \"tokens\"\n\n0.0.46 (2020-02-26)\n-------------------\n\n* Implemented heuristics to detect (albeit imperfectly) military times\n\n0.0.44 (2019-11-05)\n-------------------\n\n* Released time corpus\n* Implemented training model using ctparse corpus\n\n0.0.43 (2019-11-01)\n-------------------\n\n* Added slash as a general separator\n* Added ruleTODTOD (to support expression like afternoon/evening)\n\n0.0.42 (2019-10-30)\n-------------------\n\n* Removed nb module\n* Fix for two digit years\n* Freshly retrained model binary file\n\n0.0.41 (2019-10-29)\n-------------------\n\n* Fix run_corpus refactoring bug\n* Implemented retraining utilities\n\n0.0.40 (2019-10-25)\n-------------------\n\n* update develop dependencies\n* remove unused Protocol import from typing_extensions\n\n0.0.39 (2019-10-24)\n-------------------\n\n* split ctparse file into several different modules\n* added types to public interface\n* introduced the Scorer abstraction to implement richer scoring strategies\n\n0.0.38 (2018-11-05)\n-------------------\n\n* Added python 3.7 to supported versions (fix on travis available)\n\n0.0.8 (2018-06-07)\n------------------\n\n* First release on PyPI.\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018, Sebastian Mika, Comtravo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "include AUTHORS.rst\ninclude CONTRIBUTING.rst\ninclude HISTORY.rst\ninclude LICENSE\ninclude README.rst\ninclude requirements.txt\n\nrecursive-include tests *\nrecursive-exclude * __pycache__\nrecursive-exclude * *.py[co]\n\nrecursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif\n"
  },
  {
    "path": "Makefile",
    "content": ".PHONY: clean clean-test clean-pyc clean-build docs help\n.DEFAULT_GOAL := help\n\ndefine BROWSER_PYSCRIPT\nimport os, webbrowser, sys\n\ntry:\n\tfrom urllib import pathname2url\nexcept:\n\tfrom urllib.request import pathname2url\n\nwebbrowser.open(\"file://\" + pathname2url(os.path.abspath(sys.argv[1])))\nendef\nexport BROWSER_PYSCRIPT\n\ndefine PRINT_HELP_PYSCRIPT\nimport re, sys\n\nfor line in sys.stdin:\n\tmatch = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)\n\tif match:\n\t\ttarget, help = match.groups()\n\t\tprint(\"%-20s %s\" % (target, help))\nendef\nexport PRINT_HELP_PYSCRIPT\n\nBROWSER := python -c \"$$BROWSER_PYSCRIPT\"\n\nhelp:\n\t@python -c \"$$PRINT_HELP_PYSCRIPT\" < $(MAKEFILE_LIST)\n\nclean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts\n\nclean-build: ## remove build artifacts\n\trm -fr build/\n\trm -fr dist/\n\trm -fr .eggs/\n\tfind . -name '*.egg-info' -exec rm -fr {} +\n\tfind . -name '*.egg' -exec rm -f {} +\n\nclean-pyc: ## remove Python file artifacts\n\tfind . -name '*.pyc' -exec rm -f {} +\n\tfind . -name '*.pyo' -exec rm -f {} +\n\tfind . -name '*~' -exec rm -f {} +\n\tfind . -name '__pycache__' -exec rm -fr {} +\n\nclean-test: ## remove test and coverage artifacts\n\trm -fr .tox/\n\trm -f .coverage\n\trm -fr htmlcov/\n\trm -fr .pytest_cache\n\nlint: ## check style with flake8\n\tblack --check ctparse tests\n\tflake8 ctparse tests\n\tmypy -p ctparse -p tests\n\ntest: ## run tests quickly with the default Python\n\tpy.test\n\ntest-all: ## run tests on every Python version with tox\n\ttox\n\ntrain:\n\tpython scripts/train_default_model.py --legacy --dataset datasets/timeparse_corpus.json\n\ncoverage: ## check code coverage quickly with the default Python\n\tcoverage run --source ctparse -m pytest\n\tcoverage report -m\n\tcoverage html\n\t$(BROWSER) htmlcov/index.html\n\ndocs: ## generate Sphinx HTML documentation, including API docs\n\trm -f docs/ctparse.rst\n\trm -f docs/modules.rst\n\tsphinx-apidoc -o docs/ ctparse\n\t$(MAKE) -C docs clean\n\t$(MAKE) -C docs html\n\t$(BROWSER) docs/_build/html/index.html\n\nservedocs: docs ## compile the docs watching for changes\n\twatchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .\n\nrelease: dist ## package and upload a release\n\ttwine upload dist/*\n\ndist: clean ## builds source and wheel package\n\tpython setup.py sdist\n\tpython setup.py bdist_wheel\n\tls -l dist\n\ninstall: clean ## install the package to the active Python's site-packages\n\tpython setup.py install\n"
  },
  {
    "path": "README.rst",
    "content": "===========================================================\nquickadd\n===========================================================\n\nquickadd is a natural language date & time parser written in python. It builds on top of ctparse_ and is an actively maintained fork by Martin Antos.\n\nInstallation\n----------\n\nWith ``pip install -e git+https://github.com/Acreom/quickadd.git#egg=quickadd``\n\n\nor run ``python setup.py install`` in the root directory after forking.\n\n\nMain upgrades include:\n----------\n\n**Recurring events**\n\n\n.. code:: python\n\n    r = ctparse(\"beer daily 4pm\")\n    r.resolution\n    Recurring[5-14]{daily 1 2021-05-09 16:00 (X/X) 2021-05-09 16:00 (X/X)}\n    \n    r = ctparse(\"beer every thursday 4\")\n    r.resolution\n    Recurring[5-21]{weekly 1 2021-04-15 16:00 (X/X) 2021-04-15 16:00 (X/X)}\n    \n    r = ctparse(\"beer every friday 9-5\")\n    r.resolution\n    Recurring[5-21]{weekly 1 2021-05-14 09:00 (X/X) 2021-05-14 17:00 (X/X)}\n    \n    r = ctparse(\"beer september 24 / beer every 24.9\")\n    r.resolution\n    Recurring[5-21]{YEARLY 1 2021-09-24 (X/X) 2021-09-24 (X/X)}\n\n    r = ctparse(\"beer thursdays 3pm and wednesdays 4pm\")\n    r.resolution\n    RecurringArray[5-37]{\n    Recurring instance: weekly 1 2021-05-13 15:00 (X/X) 2021-05-13 15:00 (X/X) \n    Recurring instance: weekly 1 2021-05-12 16:00 (X/X) 2021-05-12 16:00 (X/X)\n    }\n    \n    r = ctparse(\"beer 9pm weekdays\")\n    r.resolution\n    RecurringArray[5-17]{\n    Recurring instance: weekly 1 2021-05-10 21:00 (X/X) 2021-05-10 21:00 (X/X) \n    Recurring instance: weekly 1 2021-05-11 21:00 (X/X) 2021-05-11 21:00 (X/X) \n    Recurring instance: weekly 1 2021-05-12 21:00 (X/X) 2021-05-12 21:00 (X/X) \n    Recurring instance: weekly 1 2021-05-13 21:00 (X/X) 2021-05-13 21:00 (X/X) \n    Recurring instance: weekly 1 2021-05-14 21:00 (X/X) 2021-05-14 21:00 (X/X)}    \n\n\n**More rules**\n\nruleNextFrequency\n\n.. code:: python\n    \n    #reference date = Dec 13th 2022\n    r = ctparse(\"code next week 4pm\")\n    r.resolution\n    Time[5-18]{2022-12-20 16:00\n    \n    r = ctparse(\"code next month\")\n    r.resolution\n    Time[5-15]{2023-01-13 X:X (X/X)}\n\n\nruleLastDOM\n\n.. code:: python\n    \n    #reference date = Dec 13th 2022\n    r = ctparse(\"code last monday of the month\")\n    r.resolution\n    Time[5-17]{2022-12-26 X:X (X/X)}\n\n\nrrule_ **support**\n\n.. code:: python\n\n    r.resolution.to_rrule()\n    Out[4]: 'RRULE:FREQ=DAILY;COUNT=1'\n    \n\n**Subject extraction**\n\n\n.. code:: python\n\n    r = ctparse(\"beers and burgers friday 8pm-9pm\")\n    r.subject\n    Out[2]: 'beers and burgers'\n    \n    \n**PM bias**\n\n\n.. code:: python\n\n    r = ctparse(\"fix the issue tmrw 2\")\n    r.resolution\n    Time[14-20]{2022-11-23 14:00 (X/X)}\n    \n    r = ctparse(\"fix the issue tmrw 2\", pm_bias=False)\n    r.resolution\n    Time[14-20]{2022-11-23 02:00 (X/X)}\n\n\n**Rules for ambigious natural language expressions** \n\n.. code:: python\n\n    r = ctparse(\"code 9-5\")\n    r.resolution\n    Interval[0-0]{2022-11-23 09:00 (X/X) - 2022-11-23 17:00 (X/X)}\n\n\n**US/EU date format**\n\n\n.. code:: python\n\n    r = ctparse(\"fix the issue 5.3\")\n    r.resolution\n    Time[14-17]{2023-03-05 X:X (X/X)}\n    \n    r = ctparse(\"fix the issue 5.3\", date_format=\"US\")\n    r.resolution\n    Time[14-17]{2023-05-03 X:X (X/X)}\n\n\n**Rule combinations** \n\n.. code:: python\n\n    r = ctparse(\"beer in 3 days 4pm\")\n    r.resolution\n    Time[5-18]{2021-05-12 16:00 (X/X)}\n    \n    \n    r = ctparse(\"beer in 3 days 4pm every week\")\n    r.resolution\n    Recurring[5-29]{weekly 1 2021-05-12 16:00 (X/X) 2021-05-12 16:00 (X/X)}\n\n\n    r = ctparse(\"beer every friday 4-6:30pm\")\n    r.resolution\n    Recurring[5-26]{WEEKLY 1 2022-11-25 16:00 (X/X) 2022-11-25 18:30 (X/X)}\n\n\n``+`` **performance improvements**\n\n\nBase Capabilities\n----------\n| **Time** \n\n.. code:: python\n\n    \"beer thursday 4\"\n    Time[5-15]{2021-05-13 16:00 (X/X)}\n\n\n| **Interval** \n\n.. code:: python\n\n    \"beer 4-6\"\n    Interval[0-0]{2021-05-09 16:00 (X/X) - 2021-05-09 18:00 (X/X)}\n\n\n| **Duration** \n\n.. code:: python\n\n    \"beer in 4 hours\"\n    Duration[5-15]{4 hours}\n\n\nCtparse\n----------\n\nThe package ``ctparse`` is a pure python package to parse time\nexpressions from natural language (i.e. strings). In many ways it builds\non similar concepts as Facebook’s ``duckling`` package\n(https://github.com/facebook/duckling). However, for the time being it\nonly targets times and only German and English text.\n\nIn principle ``ctparse`` can be used to **detect** time expressions in a\ntext, however its main use case is the semantic interpretation of such\nexpressions. Detecting time expressions in the first place can - to our\nexperience - be done more efficiently (and precisely) using e.g. CRFs or\nother models targeted at this specific task.\n\n``ctparse`` is designed with the use case in mind where interpretation\nof time expressions is done under the following assumptions:\n\n-  All expressions are relative to some pre-defined reference times\n-  Unless explicitly specified in the time expression, valid resolutions\n   are in the future relative to the reference time (i.e. ``12.5.`` will\n   be the next 12th of May, but ``12.5.2012`` should correctly resolve\n   to the 12th of May 2012).\n-  If in doubt, resolutions in the near future are more likely than\n   resolutions in the far future (not implemented yet, but any\n   resolution more than i.e. 3 month in the future is extremely\n   unlikely).\n\nThe specific comtravo use-case is resolving time expressions in booking\nrequests which almost always refer to some point in time within the next\n4-8 weeks.\n\n``ctparse`` currently is language agnostic and supports German and\nEnglish expressions. This might get an extension in the future. The main\nreason is that in real world communication more often than not people\nwrite in one language (their business language) but use constructs to\nexpress times that are based on their mother tongue and/or what they\nbelieve to be the way to express dates in the target language. This\nleads to text in German with English time expressions and vice-versa.\nUsing a language detection upfront on the complete original text is for\nobvious no solution - rather it would make the problem worse.\n\nExample\n-------\n\n.. code:: python\n\n   from ctparse import ctparse\n   from datetime import datetime\n\n   # Set reference time\n   ts = datetime(2018, 3, 12, 14, 30)\n   ctparse('May 5th 2:30 in the afternoon', ts=ts)\n\nThis should return a ``Time`` object represented as\n``Time[0-29]{2018-05-05 14:30 (X/X)}``, indicating that characters\n``0-29`` were used in the resolution, that the resolved date time is the\n5th of May 2018 at 14:30 and that this resolution is neither based on a\nday of week (first ``X``) nor a part of day (second ``X``).\n\n\nLatent time\n~~~~~~~~~~~\n\nNormally, ``ctparse`` will anchor time expressions to the reference time. \nFor example, when parsing the time expression ``8:00 pm``, ctparse will\nresolve the expression to 8 pm after the reference time as follows\n\n.. code:: python\n\n   parse = ctparse(\"8:00 pm\", ts=datetime(2020, 1, 1, 7, 0), latent_time=True) # default\n   # parse.resolution -> Time(2020, 1, 1, 20, 00)\n\nThis behavior can be customized using the option ``latent_time=False``, which will\nreturn a time resolution not anchored to a particular date\n\n.. code:: python\n\n   parse = ctparse(\"8:00 pm\", ts=datetime(2020, 1, 1, 7, 0), latent_time=False)\n   # parse.resolution -> Time(None, None, None, 20, 00)\n\nImplementation\n--------------\n\n``ctparse`` - as ``duckling`` - is a mixture of a rule and regular\nexpression based system + some probabilistic modeling. In this sense it\nresembles a PCFG.\n\nRules\n~~~~~\n\nAt the core ``ctparse`` is a collection of production rules over\nsequences of regular expressions and (intermediate) productions.\n\nProductions are either of type ``Time``, ``Interval``, ``Duration`` or ``Recurring`` and can\nhave certain predicates (e.g. whether a ``Time`` is a part of day like\n``'afternoon'``).\n\nA typical rule than looks like this:\n\n.. code:: python\n\n   @rule(predicate('isDate'), dimension(Interval))\n\nI.e. this rule is applicable when the intermediate production resulted\nin something that has a date, followed by something that is in interval\n(like e.g. in ``'May 5th 9-10'``).\n\nThe actual production is a python function with the following signature:\n\n.. code:: python\n\n   @rule(predicate('isDate'), dimension(Interval))\n   def ruleDateInterval(ts, d, i):\n     \"\"\"\n     param ts: datetime - the current refenrence time\n     d: Time - a time that contains at least a full date\n     i: Interval - some Interval\n     \"\"\"\n     if not (i.t_from.isTOD and i.t_to.isTOD):\n       return None\n     return Interval(\n       t_from=Time(year=d.year, month=d.month, day=d.day,\n                   hour=i.t_from.hour, minute=i.t_from.minute),\n       t_to=Time(year=d.year, month=d.month, day=d.day,\n                 hour=i.t_to.hour, minute=i.t_to.minute))\n\nThis production will return a new interval at the date of\n``predicate('isDate')`` spanning the time coded in\n``dimension(Interval)``. If the latter does code for something else than\na time of day (TOD), no production is returned, e.g. the rule matched\nbut failed.\n\n\nTechnical Background\n~~~~~~~~~~~~~~~~~~~~\n\nSome observations on the problem:\n\n-  Each rule is a combination of regular expressions and productions.\n-  Consequently, each production must originate in a sequence of regular\n   expressions that must have matched (parts of) the text.\n-  Hence, only subsequence of **all** regular expressions in **all**\n   rules can lead to a successful production.\n\nTo this end the algorithm proceeds as follows:\n\n1. Input a string and a reference time\n2. Find all matches of all regular expressions from all rules in the\n   input strings. Each regular expression is assigned an identifier.\n3. Find all distinct sequences of these matches where two matches do not\n   overlap nor have a gap inbetween\n4. To each such subsequence apply all rules at all possible positions\n   until no further rules can be applied - in which case one solution is\n   produced\n\nObviously, not all sequences of matching expressions and not all\nsequences of rules applied on top lead to meaningful results. Here the\n**P**\\ CFG kicks in:\n\n-  Based on example data (``corpus.py``) a model is calibrated to\n   predict how likely a production is to lead to a/the correct result.\n   Instead of doing a breadth first search, the most promising\n   productions are applied first.\n-  Resolutions are produced until there are no more resolutions or a\n   timeout is hit.\n-  Based on the same model from all resolutions the highest scoring is\n   returned.\n\n\n.. _ctparse: https://github.com/comtravo/ctparse\n.. _rrule: https://dateutil.readthedocs.io/en/stable/rrule.html\n\nCredits\n-------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n"
  },
  {
    "path": "ctparse/__init__.py",
    "content": "\"\"\"ctparse - parse time expressions in strings\n\n.. moduleauthor:: Comtravo\n\n\"\"\"\n__author__ = \"\"\"Sebastian Mika\"\"\"\n__email__ = \"sebastian.mika@comtravo.com\"\n__version__ = \"__version__ = '0.3.0'\"\n\nfrom .ctparse import ctparse, ctparse_gen  # noqa\n"
  },
  {
    "path": "ctparse/corpus.py",
    "content": "import json\nimport logging\nfrom datetime import datetime\nfrom typing import Callable, Iterable, List, NamedTuple, Sequence, Tuple, TypeVar, Union\n\nfrom tqdm import tqdm\n\nfrom .ctparse import ctparse_gen\nfrom .scorer import DummyScorer, Scorer\nfrom .types import Artifact, Duration, Interval, Time\n\nlogger = logging.getLogger(__name__)\n\n# A triplet of text, reference timestamp and correct parse.\n# It can be used as raw data to build datasets for ctparse.\nTimeParseEntry = NamedTuple(\n    \"TimeParseEntry\", [(\"text\", str), (\"ts\", datetime), (\"gold\", Artifact)],\n)\n\nT = TypeVar(\"T\")\n\n\ndef make_partial_rule_dataset(\n    entries: Sequence[TimeParseEntry],\n    scorer: Scorer,\n    timeout: Union[float, int],\n    max_stack_depth: int,\n    relative_match_len: float = 1.0,\n    progress: bool = False,\n) -> Iterable[Tuple[List[str], bool]]:\n    \"\"\"Build a data set from an iterable of TimeParseEntry.\n\n    The text is run through ctparse and all parses (within the specified timeout,\n    max_stack_depth and scorer) are obtained. Each parse contains a sequence\n    of rules (see ``CTParse.rules``) used to produce that parse.\n\n    A dataset is generated by taking every possible partial rule and assigning to it\n    a boolean indicating if that partial sequence did lead to a successful parse.\n\n    If `progress` is ``True``, display a progress bar.\n\n    Example:\n\n    rule sequence: [r1, r2, r3]\n    parse_is_correct: True\n\n    [r1] -> True\n    [r1, r2] -> True\n    [r1, r2, r3] -> True\n    \"\"\"\n    # If we look at the signature for a scorer, the score is obtained from:\n    # (text, reference_time, partial_parse) and optionally a production for a\n    # partial parse.\n    # Clearly, if we were to make a general scorer for the dataset, we would need\n    # all of these features. It is possible to achieve that by tracking the list of\n    # partial parses that led to a correct parse. Unfortunately we don't have the\n    # full history with the current implementation, however we can obtain a dataset\n    # of (text, reference_time, rule_ids) quite easily, because the rule is a linear\n    # list.\n\n    if progress:\n        entries_it = _progress_bar(\n            entries,\n            total=len(entries),\n            status_text=lambda entry: \"  {: <70}\".format(entry.text),\n        )\n    else:\n        entries_it = entries\n\n    for entry in entries_it:\n        for parse in ctparse_gen(\n            entry.text,\n            entry.ts,\n            relative_match_len=relative_match_len,\n            timeout=timeout,\n            max_stack_depth=max_stack_depth,\n            scorer=scorer,\n            latent_time=False,\n        ):\n            # TODO: we should make sure ctparse_gen never returns None. If there is no\n            # result it should return an empty list\n            if parse is None:\n                continue\n\n            y = parse.resolution == entry.gold\n            # Build data set, one sample for each applied rule in\n            # the sequence of rules applied in this production\n            # *after* the matched regular expressions\n            for i in range(1, len(parse.production) + 1):\n                X = [str(p) for p in parse.production[:i]]\n                yield X, y\n\n\ndef _progress_bar(\n    it: Iterable[T], total: int, status_text: Callable[[T], str]\n) -> Iterable[T]:\n    # Progress bar that can update text\n    pbar = tqdm(it, total=total)\n    for val in pbar:\n        pbar.set_description(status_text(val))\n        yield val\n\n\ndef load_timeparse_corpus(fname: str) -> Sequence[TimeParseEntry]:\n    \"\"\"Load a corpus from disk.\n\n    For more information about the format of the time parse corpus,\n    refer to the documentation.\n    \"\"\"\n    with open(fname, \"r\", encoding=\"utf-8\") as fd:\n        entries = json.load(fd)\n\n    return [\n        TimeParseEntry(\n            text=e[\"text\"],\n            ts=datetime.strptime(e[\"ref_time\"], \"%Y-%m-%dT%H:%M:%S\"),\n            gold=parse_nb_string(e[\"gold_parse\"]),\n        )\n        for e in entries\n    ]\n\n\ndef parse_nb_string(gold_parse: str) -> Union[Time, Interval, Duration]:\n    \"\"\"Parse a Time, Interval or Duration from their no-bound string representation.\n\n    The no-bound string representations are generated from ``Artifact.nb_str``.\n    \"\"\"\n    if gold_parse.startswith(\"Time\"):\n        return Time.from_str(gold_parse[7:-1])\n    if gold_parse.startswith(\"Interval\"):\n        return Interval.from_str(gold_parse[11:-1])\n    if gold_parse.startswith(\"Duration\"):\n        return Duration.from_str(gold_parse[11:-1])\n    else:\n        raise ValueError(\"'{}' has an invalid format\".format(gold_parse))\n\n\ndef run_corpus(\n    corpus: Sequence[Tuple[str, str, Sequence[str]]]\n) -> Tuple[List[List[str]], List[bool]]:\n    \"\"\"Load the corpus (currently hard coded), run it through ctparse with\n    no timeout and no limit on the stack depth.\n\n    The corpus passes if ctparse generates the desired solution for\n    each test at least once. Otherwise it fails.\n\n    While testing this, a labeled data set (X, y) is generated based\n    on *all* productions. Given a final production p, based on initial\n    regular expression matches r_0, ..., r_n, which are then\n    subsequently transformed using production rules p_0, ..., p_m,\n    will result in the samples\n\n    [r_0, ..., r_n, p_0, 'step_0']\n    [r_0, ..., r_n, p_0, p_1, 'step_1']\n    ...\n    [r_0, ..., r_n, p_0, ..., p_m, 'step_m']\n\n    All samples from one production are given the same label which indicates if\n    the production was correct.\n\n    To build a similar datasets without the strict checking, use\n    `make_partial_rule_dataset`\n    \"\"\"\n    at_least_one_failed = False\n    # pos_parses: number of parses that are correct\n    # neg_parses: number of parses that are wrong\n    # pos_first_parses: number of first parses generated that are correct\n    # pos_best_scored: number of correct parses that have the best score\n    pos_parses = neg_parses = pos_first_parses = pos_best_scored = 0\n    total_tests = 0\n    Xs = []\n    ys = []\n    for target, ts, tests in tqdm(corpus):\n        ts = datetime.strptime(ts, \"%Y-%m-%dT%H:%M\")\n        all_tests_pass = True\n        for test in tests:\n            one_prod_passes = False\n            first_prod = True\n            y_score = []\n            for parse in ctparse_gen(\n                test,\n                ts,\n                relative_match_len=1.0,\n                timeout=0,\n                max_stack_depth=0,\n                scorer=DummyScorer(),\n                latent_time=False,\n            ):\n                assert parse is not None\n\n                y = parse.resolution.nb_str() == target\n                # Build data set, one sample for each applied rule in\n                # the sequence of rules applied in this production\n                # *after* the matched regular expressions\n                for i in range(1, len(parse.production) + 1):\n                    Xs.append([str(p) for p in parse.production[:i]])\n                    ys.append(y)\n\n                one_prod_passes |= y\n                pos_parses += int(y)\n                neg_parses += int(not y)\n                pos_first_parses += int(y and first_prod)\n                first_prod = False\n                y_score.append((parse.score, y))\n            if not one_prod_passes:\n                logger.warning(\n                    'failure: target \"{}\" never produced in \"{}\"'.format(target, test)\n                )\n            pos_best_scored += int(max(y_score, key=lambda x: x[0])[1])\n            total_tests += len(tests)\n            all_tests_pass &= one_prod_passes\n        if not all_tests_pass:\n            logger.warning('failure: \"{}\" not always produced'.format(target))\n            at_least_one_failed = True\n    logger.info(\n        \"run {} tests on {} targets with a total of \"\n        \"{} positive and {} negative parses (={})\".format(\n            total_tests, len(corpus), pos_parses, neg_parses, pos_parses + neg_parses\n        )\n    )\n    logger.info(\n        \"share of correct parses in all parses: {:.2%}\".format(\n            pos_parses / (pos_parses + neg_parses)\n        )\n    )\n    logger.info(\n        \"share of correct parses being produced first: {:.2%}\".format(\n            pos_first_parses / (pos_parses + neg_parses)\n        )\n    )\n    logger.info(\n        \"share of correct parses being scored highest: {:.2%}\".format(\n            pos_best_scored / total_tests\n        )\n    )\n    if at_least_one_failed:\n        raise Exception(\"ctparse corpus has errors\")\n    return Xs, ys\n"
  },
  {
    "path": "ctparse/count_vectorizer.py",
    "content": "from collections import defaultdict\nfrom typing import Dict, Sequence, Tuple, Optional\n\n\nclass CountVectorizer:\n    def __init__(self, ngram_range: Tuple[int, int]):\n        \"\"\"Create new count vectorizer that also counts n-grams.\n\n        A count vectorizer builds an internal vocabulary and embeds each input\n        by counting for each term in the document how often it appearsin the vocabulary.\n        Here also n-grams are considered to be part of the vocabulary and the document\n        terms, respectively\n\n        Parameters\n        ----------\n        ngram_range : Tuple[int, int]\n            n-gram range to consider\n        \"\"\"\n        self.ngram_range = ngram_range\n        self.vocabulary: Optional[Dict[str, int]] = None\n\n    @staticmethod\n    def _create_ngrams(\n        ngram_range: Tuple[int, int], documents: Sequence[Sequence[str]]\n    ) -> Sequence[Sequence[str]]:\n        \"\"\"For each document in documents, replace original tokens by a list of\n        all min_n:max_n = self.ngram_range ngrams in that document.\n\n        Parameters\n        ----------\n        ngram_range : Tuple[int, int]\n            Min and max number of ngrams to generate\n\n        documents : Sequence[Sequence[str]]\n            A sequence of already tokenized documents\n\n        Returns\n        -------\n        Sequence[Sequence[str]]\n            For each document all ngrams of tokens in the desired range\n        \"\"\"\n        min_n, max_n = ngram_range\n        space_join = \" \".join\n\n        def _create(document: Sequence[str]) -> Sequence[str]:\n            doc_len = len(document)\n            doc_max_n = min(max_n, doc_len) + 1\n            if min_n == 1:\n                ngrams = list(document)\n                min_nn = min_n + 1\n            else:\n                ngrams = []\n                min_nn = min_n\n\n            for n in range(min_nn, doc_max_n):\n                for i in range(0, doc_len - n + 1):\n                    ngrams.append(space_join(document[i : i + n]))\n            return ngrams\n\n        return [_create(d) for d in documents]\n\n    @staticmethod\n    def _get_feature_counts(\n        ngram_range: Tuple[int, int], documents: Sequence[Sequence[str]]\n    ) -> Sequence[Dict[str, int]]:\n        \"\"\"Count (ngram) features appearing in each document\n\n        Parameters\n        ----------\n        ngram_range : Tuple[int, int]\n            Min and max number of ngrams to generate\n\n        documents : Sequence[Sequence[str]]\n            Sequence of documents tokenized as sequence of string\n\n        Returns\n        -------\n        Tuple[Sequence[Dict[str, int]], Set[str]]\n            For each document a dictionary counting how often which feature appeared and\n            a set of all features in all documents. Features are according to this\n            vectorizers n-gram settings.\n        \"\"\"\n        documents = CountVectorizer._create_ngrams(ngram_range, documents)\n        count_matrix = []\n\n        for document in documents:\n            # This is 5x faster than using a build in Counter\n            feature_counts: Dict[str, int] = defaultdict(int)\n            for feature in document:\n                feature_counts[feature] += 1\n            count_matrix.append(feature_counts)\n        return count_matrix\n\n    @staticmethod\n    def _build_vocabulary(count_matrix: Sequence[Dict[str, int]]) -> Dict[str, int]:\n        \"\"\"Build the vocabulary from feature counts\n\n        Parameters\n        ----------\n        count_matrix : Sequence[Dict[str, int]]\n            Sequence of dicts with counts (values) per feature (keys)\n\n        Returns\n        -------\n        Dict[str, int]\n            The vocabulary as {feature: index} pairs\n        \"\"\"\n        all_features = set()\n        for feature_counts in count_matrix:\n            for feature in feature_counts.keys():\n                all_features.add(feature)\n        return {word: idx for idx, word in enumerate(sorted(all_features))}\n\n    @staticmethod\n    def _create_feature_matrix(\n        vocabulary: Dict[str, int], count_matrix: Sequence[Dict[str, int]]\n    ) -> Sequence[Dict[int, int]]:\n        \"\"\"Map counts of string features to numerical data (sparse maps of\n        `{feature_index: count}`). Here `feature_index` is relative to the vocabulary of\n        this vectorizer.\n\n        Parameters\n        ----------\n        vocabulary : Dict[str, int]\n            Vocabulary with {feature: index} mappings\n\n        count_matrix : Sequence[Dict[str, int]]\n            Sequence of dictionaries with feature counts\n\n        Returns\n        -------\n        Sequence[Dict[int, int]]\n            For each document a mapping of `feature_index` to a count how often this\n            feature appeared in the document.\n        \"\"\"\n        len_vocab = len(vocabulary)\n        count_vectors_matrix = []\n        # Build document frequency matrix\n        for count_dict in count_matrix:\n            doc_vector: Dict[int, int] = defaultdict(int)\n            for word, cnt in count_dict.items():\n                idx = vocabulary.get(word, None)\n                if idx is not None:\n                    doc_vector[idx] = cnt\n            count_vectors_matrix.append(doc_vector)\n        # add vocab length in first element\n        count_vectors_matrix[0][len_vocab - 1] = count_vectors_matrix[0][len_vocab - 1]\n        return count_vectors_matrix\n\n    def fit(self, documents: Sequence[Sequence[str]]) -> \"CountVectorizer\":\n        \"\"\"Learn a vocabulary dictionary of all tokens in the raw documents.\n\n        Parameters\n        ----------\n        documents : Sequence[Sequence[str]]\n            Sequence of documents, each as a sequence of tokens\n\n        Returns\n        -------\n        CountVectorizer\n            The updated vectorizer, i.e. this updates the internal vocabulary\n        \"\"\"\n        self.fit_transform(documents)\n        return self\n\n    def fit_transform(\n        self, documents: Sequence[Sequence[str]]\n    ) -> Sequence[Dict[int, int]]:\n        \"\"\"Learn the vocabulary dictionary and return a term-document matrix. Updates\n        the internal vocabulary state of the vectorizer.\n\n        Parameters\n        ----------\n        documents : Sequence[Sequence[str]\n            Sequence of documents, each as a sequence of tokens\n\n        Returns\n        -------\n        Sequence[Dict[int, int]]\n            Document-term matrix.\n        \"\"\"\n        count_matrix = CountVectorizer._get_feature_counts(self.ngram_range, documents)\n        self.vocabulary = CountVectorizer._build_vocabulary(count_matrix)\n        return CountVectorizer._create_feature_matrix(self.vocabulary, count_matrix)\n\n    def transform(self, documents: Sequence[Sequence[str]]) -> Sequence[Dict[int, int]]:\n        \"\"\"Create term-document matrix based on pre-generated vocabulary. Does *not*\n        update the internal state of the vocabulary.\n\n        Parameters\n        ----------\n        documents : Sequence[Sequence[str]]\n            Sequence of documents, each as a sequence of tokens\n\n        Returns\n        -------\n        Sequence[Dict[int, int]]\n            Document-term matrix.\n        \"\"\"\n        if not self.vocabulary:\n            raise ValueError(\"no vocabulary - vectorizer not fitted?\")\n        count_matrix = CountVectorizer._get_feature_counts(self.ngram_range, documents)\n        return CountVectorizer._create_feature_matrix(self.vocabulary, count_matrix)\n"
  },
  {
    "path": "ctparse/ctparse.py",
    "content": "from ctparse.time.postprocess_latent import apply_postprocessing_rules\nimport logging\nfrom datetime import datetime\nfrom typing import (\n    cast,\n    Callable,\n    Dict,\n    Iterator,\n    List,\n    Optional,\n    Sequence,\n    Tuple,\n    Union,\n)\n\nimport re\n\nimport regex\nfrom itertools import chain\n\nfrom .partial_parse import PartialParse\nfrom .rule import _regex as global_regex, eu_regex, us_regex\nfrom .scorer import Scorer\nfrom .timers import CTParseTimeoutError, timeit\n\n# Avoid collision with variable \"timeout\"\nfrom .timers import timeout as timeout_\nfrom .types import Artifact, RegexMatch\nfrom .loader import load_default_scorer\n\nlogger = logging.getLogger(__name__)\n\n_DEFAULT_SCORER = load_default_scorer()\n\n\nclass CTParse:\n    def __init__(\n        self,\n        resolution: Artifact,\n        production: Tuple[Union[int, str], ...],\n        score: float,\n        subject: str,\n        # labels: str,\n    ) -> None:\n        \"\"\"A possible parse returned by ctparse.\n\n        :param resolution: the parsed `Time`, `Interval` or `Duration`\n        :param production: the sequence of rules (productions) used to arrive\n          at the parse\n        :param score: a numerical score used to rank parses. A high score means\n          a more likely parse\n        \"\"\"\n        self.resolution = resolution\n        self.production = production\n        self.score = score\n        self.subject = subject\n        # self.labels = labels\n\n    def __repr__(self) -> str:\n        return \"CTParse({}, {}, {}, {})\".format(\n            self.resolution, self.production, self.score, self.subject) #self.labels\n\n    def __str__(self) -> str:\n        return \"{} s={:.3f} p={} sb={}\".format(self.resolution, self.score, self.production, self.subject)\n                                                       #self.labels)\n\n\ndef ctparse(\n    txt: str,\n    ts: Optional[datetime] = None,\n    pm_bias: Optional[bool] = True,\n    date_format: Optional[str] = None,\n    fallback: Optional[bool] = False,\n    timeout: Union[int, float] = 1.0,\n    debug: bool = False,\n    relative_match_len: float = 1.0,\n    max_stack_depth: int = 10,\n    scorer: Optional[Scorer] = None,\n    latent_time: bool = True,\n) -> Optional[CTParse]:\n    \"\"\"Parse a string *txt* into a time expression\n\n    :param ts: reference time\n    :type ts: datetime.datetime\n    :param pm_bias: pm bias on or off / 24h or 12h format\n    :param date_format: us / eu date format\n    :param fallback: fallback option if default date format is not parsed\n    :param timeout: timeout for parsing in seconds; timeout=0\n                    indicates no timeout\n    :type timeout: float\n    :param debug: if True do return iterator over all resolution, else\n                  return highest scoring one (default=False)\n    :param relative_match_len: relative minimum share of\n                               characters an initial regex match sequence must\n                               cover compared to the longest such sequence found\n                               to be considered for productions (default=1.0)\n    :type relative_match_len: float\n    :param max_stack_depth: limit the maximal number of highest scored candidate\n                            productions considered for future productions\n                            (default=10); set to 0 to not limit\n    :type max_stack_depth: int\n    :param latent_time: if True, resolve expressions that contain only a time\n                        (e.g. 8:00 pm) to be the next matching time after\n                        reference time *ts*\n    :returns: Optional[CTParse]\n    \"\"\"\n    parsed = ctparse_gen(\n        txt,\n        ts,\n        pm_bias,\n        date_format,\n        fallback,\n        timeout=timeout,\n        relative_match_len=relative_match_len,\n        max_stack_depth=max_stack_depth,\n        scorer=scorer,\n        latent_time=latent_time,\n    )\n\n    # TODO: keep debug for back-compatibility, but remove it later\n    if debug:\n        return parsed  # type: ignore\n    else:\n        parsed_list = list(parsed)\n        # TODO: this way of testing a failure to find a match is a bit clunky with types\n        if len(parsed_list) == 0 or (len(parsed_list) == 1 and parsed_list[0] is None):\n            # logger.warning('Failed to produce result for \"{}\"'.format(txt))\n            # labels = _get_labels(txt)\n            txt = re.sub('#[a-zA-Z0-9\\-_:/.]+', '', txt).strip()\n            subject = txt\n            return CTParse(None, None, None, subject)# labels)\n        parsed_list.sort(key=lambda p: p.score)  # type: ignore\n        return parsed_list[-1]\n\n\ndef ctparse_gen(\n    txt: str,\n    ts: Optional[datetime] = None,\n    pm_bias: Optional[bool] = True,\n    date_format: Optional[str] = None,\n    fallback: Optional[bool] = False,\n    timeout: Union[int, float] = 1.0,\n    relative_match_len: float = 1.0,\n    max_stack_depth: int = 10,\n    scorer: Optional[Scorer] = None,\n    latent_time: bool = True,\n) -> Iterator[Optional[CTParse]]:\n    \"\"\"Generate parses for the string *txt*.\n\n    This function is equivalent to ctparse, with the exception that it returns an\n    iterator over the matches as soon as they are produced.\n    \"\"\"\n    if scorer is None:\n        scorer = _DEFAULT_SCORER\n    if ts is None:\n        ts = datetime.now()\n\n\n    generated_parse = list(_ctparse(\n        _preprocess_string(txt),\n        ts,\n        pm_bias,\n        date_format,\n        timeout=timeout,\n        relative_match_len=relative_match_len,\n        max_stack_depth=max_stack_depth,\n        scorer=scorer,\n    ))\n\n    if fallback and not generated_parse:\n        if date_format == \"US\":\n            fallback_date_format = \"EU\"\n        else:\n            fallback_date_format = \"US\"\n\n        for parse in _ctparse(\n            _preprocess_string(txt),\n            ts,\n            pm_bias,\n            date_format=fallback_date_format,\n            timeout=timeout,\n            relative_match_len=relative_match_len,\n            max_stack_depth=max_stack_depth,\n            scorer=scorer,\n        ):\n            if parse and latent_time:\n                # NOTE: we post-process after scoring because the model has been trained\n                # without using the latent time. This means also that the post processing\n                # step won't be added to the rules\n                prod = apply_postprocessing_rules(ts, parse.resolution)\n                parse.resolution = prod\n\n            yield parse\n\n    else:\n        for parse in generated_parse:\n            if parse and latent_time:\n                # NOTE: we post-process after scoring because the model has been trained\n                # without using the latent time. This means also that the post processing\n                # step won't be added to the rules\n                prod = apply_postprocessing_rules(ts, parse.resolution)\n                parse.resolution = prod\n\n            yield parse\n\n    # for parse in _ctparse(\n    #     _preprocess_string(txt),\n    #     ts,\n    #     pm_bias,\n    #     date_format,\n    #     timeout=timeout,\n    #     relative_match_len=relative_match_len,\n    #     max_stack_depth=max_stack_depth,\n    #     scorer=scorer,\n    # ):\n    #     if parse and latent_time:\n    #         # NOTE: we post-process after scoring because the model has been trained\n    #         # without using the latent time. This means also that the post processing\n    #         # step won't be added to the rules\n    #         prod = apply_postprocessing_rules(ts, parse.resolution)\n    #         parse.resolution = prod\n    #\n    #     yield parse\n\n\ndef _ctparse(\n    txt: str,\n    ts: datetime,\n    pm_bias: bool,\n    date_format: str,\n    timeout: float,\n    relative_match_len: float,\n    max_stack_depth: int,\n    scorer: Scorer,\n) -> Iterator[Optional[CTParse]]:\n    t_fun = timeout_(timeout)\n\n    try:\n        # =========== Label extraction ===========\n        # labels = _get_labels(txt)\n        # clear raw text of labels so what follows works properly\n        # txt = re.sub('#[a-zA-Z0-9\\-_:/.]+','', txt).strip()\n\n        logger.debug(\"=\" * 80)\n        logger.debug(\"-> matching regular expressions\")\n\n        scope_regex = {**global_regex, **us_regex} if date_format == 'US' else {**global_regex, **eu_regex}\n        p, _tp = timeit(_match_regex)(txt, scope_regex)\n        logger.debug(\"time in _match_regex: {:.0f}ms\".format(1000 * _tp))\n\n        logger.debug(\"=\" * 80)\n        logger.debug(\"-> building initial stack\")\n        regex_stack, _ts = timeit(_regex_stack)(txt, p, t_fun)\n        logger.debug(\"time in _regex_stack: {:.0f}ms\".format(1000 * _ts))\n\n        # add empty production path + counter of contained regex\n        stack = [PartialParse.from_regex_matches(s) for s in regex_stack]\n        # TODO: the score should be kept separate from the partial parse\n        # because it depends also on the text and the ts. A good idea is\n        # to create a namedtuple of kind StackElement(partial_parse, score)\n        for pp in stack:\n            pp.score = scorer.score(txt, ts, pp)\n\n        logger.debug(\"initial stack length: {}\".format(len(stack)))\n        # sort stack by length of covered string and - if that is equal - score\n        # --> last element is longest coverage and highest scored\n        stack.sort()\n        # only keep initial stack elements that cover at least\n        # relative_match_len characters of what the highest\n        # scored/covering stack element does cover\n        stack = [\n            s\n            for s in stack\n            if s.max_covered_chars >= stack[-1].max_covered_chars * relative_match_len\n        ]\n\n        logger.debug(\"stack length after relative match length: {}\".format(len(stack)))\n        # limit depth of stack\n        stack = stack[-max_stack_depth:]\n        logger.debug(\"stack length after max stack depth limit: {}\".format(len(stack)))\n\n        # ======================== SUBJECT-EXTRACTION ========================\n        # get subject by extracting regex stack from raw text\n        regex_matches = [match.prod for match in stack]\n        regex_matches = [product.match.captures() for tuple in regex_matches for product in tuple]\n        regex_matches = [match.split() for i in regex_matches for match in i]\n        regex_matches = list(chain.from_iterable(regex_matches))\n\n        # \"acr-11\" edge case\n        s = re.search(r'\\b[A-Za-z]+\\b-\\d+[A-Za-z]*', txt)\n        if s:\n            raw = re.split(r'[\\s]+', txt)\n        else:\n            raw = re.split(r'[\\s-]+', txt)\n\n        # subject = list(set(raw) - set(matches)) # doesn't preserve order, but more efficient\n        subject = [i for i in raw if i not in regex_matches]\n        subject = ' '.join(subject)\n\n        # remove subject from txt so there's no FP parse\n        if subject and subject in txt:\n            txt = subject.replace(txt, '')\n\n            # reset stack if txt is 0\n            if len(txt) == 0:\n                stack = []\n        # ===========================================================\n\n        # track what has been added to the stack and do not add again\n        # if the score is not better\n        stack_prod = {}  # type: Dict[Tuple[Artifact, ...], float]\n        # track what has been emitted and do not emit again\n        parse_prod = {}  # type: Dict[Artifact, float]\n        while stack:\n            t_fun()\n            s = stack.pop()\n            logger.debug(\"-\" * 80)\n            logger.debug(\"producing on {}, score={:.2f}\".format(s.prod, s.score))\n            new_stack_elements = []\n            for r_name, r in s.applicable_rules.items():\n                for r_match in _match_rule(s.prod, r[1]):\n                    # apply production part of rule\n                    new_s = s.apply_rule(ts, pm_bias, date_format, r[0], r_name, r_match)\n\n                    # TODO: We should store scores separately from the production itself\n                    # because the score may depend on the text and the ts\n                    if new_s is not None:\n                        new_s.score = scorer.score(txt, ts, new_s)\n\n                    if (\n                        new_s\n                        and stack_prod.get(new_s.prod, new_s.score - 1) < new_s.score\n                    ):\n                        # either new_s.prod has never been produced\n                        # before or the score of new_s is higher than\n                        # a previous identical production\n                        new_stack_elements.append(new_s)\n                        logger.debug(\n                            \"  {} -> {}, score={:.2f}\".format(\n                                r_name, new_s.prod, new_s.score\n                            )\n                        )\n                        stack_prod[new_s.prod] = new_s.score\n            if not new_stack_elements:\n                logger.debug(\"~\" * 80)\n                logger.debug(\"no rules applicable: emitting\")\n                # no new productions were generated from this stack element.\n                # emit all (probably partial) production\n                for x in s.prod:\n                    if not isinstance(x, RegexMatch):\n                        # TODO: why do we have a different method for scoring\n                        # final productions? This is because you may have non-reducible\n                        # parses of the kind [Time, RegexMatch, Interval] or\n                        # [Time, Time] etc. In this case we want to emit those Time,\n                        # Interval parses separately and score them appropriately\n                        # (the default Scorer.score function only operates on the\n                        # whole PartialParse).\n                        score_x = scorer.score_final(txt, ts, s, x)\n                        # only emit productions not emitted before or\n                        # productions emitted before but scored higher\n                        if parse_prod.get(x, score_x - 1) < score_x:\n                            parse_prod[x] = score_x\n                            logger.debug(\n                                \" => {}, score={:.2f}, \".format(x.__repr__(), score_x)\n                            )\n                            yield CTParse(x, s.rules, score_x, subject)#, labels)\n            else:\n                # new productions generated, put on stack and sort\n                # stack by highst score\n                stack.extend(new_stack_elements)\n                stack.sort()\n                stack = stack[-max_stack_depth:]\n                logger.debug(\n                    \"added {} new stack elements, depth after trunc: {}\".format(\n                        len(new_stack_elements), len(stack)\n                    )\n                )\n    except CTParseTimeoutError:\n        logger.debug('Timeout on \"{}\"'.format(txt))\n        return\n\n\n# replace all comma, semicolon, whitespace, invisible control, opening and\n# closing brackets\n# _repl1 = regex.compile(r\"[,;\\pZ\\pC\\p{Ps}\\p{Pe}]+\", regex.VERSION1) # original regex\n_repl1 = regex.compile(r\"[\\pZ\\pC]+\", regex.VERSION1) # allow brackets\n_repl2 = regex.compile(r\"(\\p{Pd}|[\\u2010-\\u2015]|\\u2043)+\", regex.VERSION1)\n\n\ndef _get_labels(txt: str) -> str:\n    labels = re.findall('#[a-zA-Z0-9\\-_:/.]+', txt)\n    labels = [label.replace(\"#\", \"\") for label in labels]\n    return labels\n\n\ndef _preprocess_string(txt: str) -> str:\n    return cast(\n        str, _repl2.sub(\"-\", _repl1.sub(\" \", txt, concurrent=True).strip()).strip()\n    )\n\n\ndef _match_rule(\n    seq: Sequence[Artifact], rule: Sequence[Callable[[Artifact], bool]]\n) -> Iterator[Tuple[int, int]]:\n    if not seq:\n        return\n    if not rule:\n        return\n    i_r = 0\n    i_s = 0\n    r_len = len(rule)\n    s_len = len(seq)\n    while i_s < s_len:\n        if rule[0](seq[i_s]):\n            i_start = i_s + 1\n            i_r = 1\n            while i_start < s_len and i_r < r_len and rule[i_r](seq[i_start]):\n                i_r += 1\n                i_start += 1\n            if i_r == r_len:\n                yield i_s, i_start\n        i_s += 1\n\n\ndef _match_regex(txt: str, regexes: Dict[int, regex.Regex]) -> List[RegexMatch]:\n    # Match a collection of regexes in *txt*\n    #\n    # The returned RegexMatch objects are sorted by the start of the match\n    # :param txt: the text to match against\n    # :param regexes: a collection of regexes name->pattern\n    # :return: a list of RegexMatch objects ordered my RegexMatch.mstart\n    matches = {\n        RegexMatch(name, m)\n        for name, re in regexes.items()\n        for m in re.finditer(txt, overlapped=True, concurrent=True)\n    }\n    for m in matches:\n        logger.debug(\"regex: {}\".format(m.__repr__()))\n    return sorted(matches, key=lambda x: (x.mstart, x.mend))\n\n\ndef _regex_stack(\n    txt: str,\n    regex_matches: List[RegexMatch],\n    on_do_iter: Callable[[], None] = lambda: None,\n) -> List[Tuple[RegexMatch, ...]]:\n    # Group contiguous RegexMatch objects together.\n    #\n    # Assumes that regex_matches are sorted by increasing start index. on_do_iter\n    # is a callback that will be invoked every time the algorithm performs a loop.\n    #\n    # Example:\n    # Say you have the following text, where the regex matches are the\n    # words between square brackets.\n    #\n    # [Tomorrow] I want to go to the movies between [2] [pm] and [5] [pm].\n    #\n    # This function will return the matches that are contiguous (excluding space\n    # characters)\n    # [Tomorrow]\n    # [2], [pm]\n    # [5], [pm]\n    #\n    # This also works with overlapping matches.\n    #\n    # Algo:\n    # * initialize an empty stack\n    #\n    # * add all sequences of one expression to the stack, excluding\n    #   expressions which can be reached from \"earlier\" expression\n    #   (i.e. there is no gap between them):\n    #\n    #   - say A and B have no gap in between and all sequences starting\n    #     at A have already been produced. These by definition(which?: -) include as\n    #     sub-sequences all sequences starting at B. Any other sequences starting\n    #     at B directly will not add valid variations, as each of them could be\n    #     prefixed with a sequence starting at A\n    #\n    # * while the stack is not empty:\n    #\n    #   * get top sequence s from stack\n    #\n    #   * generate all possible continuations for this sequence,\n    #     i.e. sequences where expression can be appended to the last\n    #     element s[-1] in s and put these extended sequences on the stack\n    #\n    #   * if no new continuation could be generated for s, this sequence of\n    #     RegexMatch is appended to the list of results.\n\n    prods = []\n    n_rm = len(regex_matches)\n    # Calculate the upper triangle of an n_rm x n_rm matrix M where\n    # M[i, j] == 1 (for i<j) iff the expressions i and j are\n    # consecutive (i.e. there is no gap and they can be put together\n    # in one sequence).\n\n    # import numpy as np\n    # M = np.zeros(shape=(n_rm, n_rm), dtype=int)\n\n    # --> avoid use of numpy here; since we need column sums below,\n    # --> the representation of M is columns major, i.e. M[i] is the i-th\n    # --> column; M[i, j] then basically becomes M[j][i]\n    M = [[0 for _ in range(n_rm)] for _ in range(n_rm)]\n\n    _separator_regex = regex.compile(r\"\\s*\", regex.VERSION1)\n\n    def get_m_dist(m1: RegexMatch, m2: RegexMatch) -> int:\n        # 1 if there is no relevant gap between m1 and m2, 0 otherwise\n        # assumes that m1 and m2 are sorted be their start index\n        if m2.mstart < m1.mend:\n            return 0  # Overlap\n        gap_match = _separator_regex.fullmatch(txt[m1.mend : m2.mstart])\n        if gap_match:\n            return 1  # No Gap\n        else:\n            return 0  # Gap\n\n    for i in range(n_rm):\n        for j in range(i + 1, n_rm):\n            M[j][i] = get_m_dist(regex_matches[i], regex_matches[j])\n\n    # NOTE(glanaro): I believe this means that this is a beginning node.\n    # why reversed?\n    stack = [\n        (i,) for i in reversed(range(n_rm)) if sum(M[i]) == 0\n    ]  # type: List[Tuple[int, ...]]\n    while stack:\n        on_do_iter()\n        s = stack.pop()\n        i = s[-1]\n        new_prod = False\n        for j in range(i + 1, n_rm):\n            if M[j][i] == 1:\n                stack.append(s + (j,))\n                new_prod = True\n        if not new_prod:\n            prod = tuple(regex_matches[i] for i in s)\n            logger.debug(\"regex stack {}\".format(prod))\n            prods.append(prod)\n    return prods\n"
  },
  {
    "path": "ctparse/loader.py",
    "content": "\"\"\"Utility to load default model in ctparse\"\"\"\n\nimport bz2\nimport logging\nimport os\nimport pickle\nfrom .scorer import Scorer, DummyScorer\nfrom .nb_scorer import NaiveBayesScorer\n\nlogger = logging.getLogger(__name__)\n\n# Location of the default model, included with ctparse\nDEFAULT_MODEL_FILE = os.path.join(os.path.dirname(__file__), \"models\", \"model.pbz\")\n\n\ndef load_default_scorer() -> Scorer:\n    resource = 'model.pbz'\n\n    path = os.path.join(os.path.dirname(__file__), resource)\n\n    # logger.warning(path)\n    # debug\n    # logger.warning([x.name for x in pkgutil.walk_packages()])\n\n    # for exec usage\n    if os.access(path, mode=os.F_OK):\n        # d = os.path.dirname(sys.modules[package].__file__)\n        # logger.warning(os.path.join(d, resource))\n        with bz2.open(path, 'rb') as f:\n            # logger.warning(str(f))\n            mdl = pickle.load(f)\n        return NaiveBayesScorer(mdl)\n    # for non-exec usage\n    elif os.path.exists(DEFAULT_MODEL_FILE):\n        logger.info(\"Loading model from {} for non-exec usage\".format(DEFAULT_MODEL_FILE))\n        with bz2.open(DEFAULT_MODEL_FILE, \"rb\") as fd:\n            mdl = pickle.load(fd)\n        return NaiveBayesScorer(mdl)\n    else:\n        logger.warning(\"No model found, initializing empty scorer\")\n        return DummyScorer()\n"
  },
  {
    "path": "ctparse/models/__init__.py",
    "content": "from .dummy import model_package_init\n"
  },
  {
    "path": "ctparse/models/dummy.py",
    "content": "def model_package_init():\n    return 1 == 1\n"
  },
  {
    "path": "ctparse/nb_estimator.py",
    "content": "from typing import Sequence, Dict, Tuple, List\nfrom math import log, exp\n\n\ndef _log_sum_exp(x: Sequence[float]) -> float:\n    max_value = max(x)\n    sum_of_exp = sum(exp(x_i - max_value) for x_i in x)\n    return max_value + log(sum_of_exp)\n\n\nclass MultinomialNaiveBayes:\n    \"\"\"Implements a multinomial naive Bayes classifier. For background information\n    (and what has inspired this, see e.g. https://scikit-learn.org/stable/...\n        ...modules/generated/sklearn.naive_bayes.MultinomialNB.html)\n    \"\"\"\n\n    def __init__(self, alpha: float = 1.0):\n        \"\"\"Create new un-trained model\n\n        Parameters\n        ----------\n        alpha : Optional[float]\n            Additive (Laplace/Lidstone) smoothing parameter (0 for no smoothing),\n            defaults to 1.0\n        \"\"\"\n        self.alpha = alpha\n        self.class_prior = (0.0, 0.0)\n        self.log_likelihood: Dict[str, List[float]] = {}\n\n    @staticmethod\n    def _construct_log_class_prior(y: Sequence[int]) -> Tuple[float, float]:\n        # Input classes are -1 and 1\n        neg_class_count = sum(1 if y_i == -1 else 0 for y_i in y)\n        pos_class_count = len(y) - neg_class_count\n\n        neg_log_prior = log(neg_class_count / (pos_class_count + neg_class_count))\n        pos_log_prior = log(pos_class_count / (pos_class_count + neg_class_count))\n        return (neg_log_prior, pos_log_prior)\n\n    @staticmethod\n    def _construct_log_likelihood(\n        X: Sequence[Dict[int, int]], y: Sequence[int], alpha: float\n    ) -> Dict[str, List[float]]:\n        # Token counts\n        # implicit assumption from vectorizer: first element has count for #vocab\n        # size set\n        vocabulary_len = max(X[0].keys()) + 1\n        token_counts_negative = [alpha] * vocabulary_len\n        token_counts_positive = [alpha] * vocabulary_len\n        for x, y_ in zip(X, y):\n            for idx, cnt in x.items():\n                if y_ == 1:\n                    token_counts_positive[idx] += cnt\n                else:\n                    token_counts_negative[idx] += cnt\n\n        token_pos_class_sum = sum(token_counts_positive)\n        token_neg_class_sum = sum(token_counts_negative)\n\n        log_likelihood_negative = []\n        log_likelihood_positive = []\n        for token_ind in range(vocabulary_len):\n            log_likelihood_positive.append(\n                log(token_counts_positive[token_ind]) - log(token_pos_class_sum)\n            )\n\n            log_likelihood_negative.append(\n                log(token_counts_negative[token_ind]) - log(token_neg_class_sum)\n            )\n        return {\n            \"negative_class\": log_likelihood_negative,\n            \"positive_class\": log_likelihood_positive,\n        }\n\n    def fit(\n        self, X: Sequence[Dict[int, int]], y: Sequence[int]\n    ) -> \"MultinomialNaiveBayes\":\n        \"\"\"Fit a naive Bayes model from a count of feature matrix\n\n        Parameters\n        ----------\n        X : Sequence[Dict[int, int]]\n            Sequence of sparse {feature_index: count} dictionaries\n        y : Sequence[int]\n            Labels +1/-1\n\n        Returns\n        -------\n        MultinomialNaiveBayes\n            The fitted model\n        \"\"\"\n        self.class_prior = self._construct_log_class_prior(y)\n        self.log_likelihood = self._construct_log_likelihood(X, y, self.alpha)\n        return self\n\n    def predict_log_probability(\n        self, X: Sequence[Dict[int, int]]\n    ) -> Sequence[Tuple[float, float]]:\n        \"\"\"Calculate the posterior log probability of new sample X\n\n        Parameters\n        ----------\n        X : Sequence[Dict[int, int]]\n            Sequence of data to predict on as sparse {feature_index: count} dictionarie\n\n        Returns\n        -------\n        Sequence[Tuple[float, float]]\n            Tuple of (negative-class, positive-class) log likelihoods\n        \"\"\"\n        scores = []\n        for x in X:\n            # Initialise the scores with priors of positive and negative class\n            neg_score = self.class_prior[0]\n            pos_score = self.class_prior[1]\n            for idx, cnt in x.items():\n                pos_score += self.log_likelihood[\"positive_class\"][idx] * cnt\n                neg_score += self.log_likelihood[\"negative_class\"][idx] * cnt\n            joint_log_likelihood = [neg_score, pos_score]\n            # Normalize the scores\n            log_prob_x = _log_sum_exp(joint_log_likelihood)\n            scores.append((neg_score - log_prob_x, pos_score - log_prob_x))\n        return scores\n"
  },
  {
    "path": "ctparse/nb_scorer.py",
    "content": "\"\"\"This module cointains the implementation of the scorer based on naive bayes.\"\"\"\nimport bz2\nimport math\nimport pickle\nfrom datetime import datetime\nfrom typing import Sequence\n\nfrom ctparse.nb_estimator import MultinomialNaiveBayes\nfrom ctparse.count_vectorizer import CountVectorizer\nfrom ctparse.pipeline import CTParsePipeline\nfrom .scorer import Scorer\nfrom .partial_parse import PartialParse\nfrom .types import Artifact\n\n\nclass NaiveBayesScorer(Scorer):\n    def __init__(self, nb_model: CTParsePipeline) -> None:\n        \"\"\"Scorer based on a naive bayes estimator.\n\n        This scorer models the probability of having a correct parse, conditioned\n        on the sequence of rules (expressed as a categorical feature) that led to\n        that parse.\n\n        The score is also modified by a \"length\" factor that penalizes parses that\n        cover a smaller part of the text string.\n\n        :param nb_model:\n            A scikit-learn style Estimator that was trained on a corpus that takes\n            a Sequence[Sequence[str]] as X (each entry is a sequence of rule\n            identifiers) and a Sequence[int] in the set {-1, 1} that indicates if\n            the parse was correct or incorrect.\n        \"\"\"\n        self._model = nb_model\n\n    @classmethod\n    def from_model_file(cls, fname: str) -> \"NaiveBayesScorer\":\n        with bz2.open(fname, \"rb\") as fd:\n            return cls(pickle.load(fd))\n\n    def score(self, txt: str, ts: datetime, partial_parse: PartialParse) -> float:\n        # Penalty for partial matches\n        max_covered_chars = partial_parse.prod[-1].mend - partial_parse.prod[0].mstart\n        len_score = math.log(max_covered_chars / len(txt))\n\n        X = _feature_extractor(txt, ts, partial_parse)\n        pred = self._model.predict_log_proba([X])\n\n        # NOTE: the prediction is log-odds, or logit\n        model_score = pred[0][1] - pred[0][0]\n\n        return model_score + len_score\n\n    def score_final(\n        self, txt: str, ts: datetime, partial_parse: PartialParse, prod: Artifact\n    ) -> float:\n        # The difference between the original score and final score is that in the\n        # final score, the len_score is calculated based on the length of the final\n        # production\n        len_score = math.log(len(prod) / len(txt))\n\n        X = _feature_extractor(txt, ts, partial_parse)\n        pred = self._model.predict_log_proba([X])\n\n        # NOTE: the prediction is log-odds, or logit\n        model_score = pred[0][1] - pred[0][0]\n\n        # We want the len_score to always take precedence. I believe a logit won't go up\n        # more than 1000. A better way would be to return an ordering tuple instead,\n        # but then we would need to change many interfaces.\n        return model_score + 1000 * len_score\n\n\ndef _feature_extractor(\n    txt: str, ts: datetime, partial_parse: PartialParse\n) -> Sequence[str]:\n    return [str(r) for r in partial_parse.rules]\n\n\ndef train_naive_bayes(X: Sequence[Sequence[str]], y: Sequence[bool]) -> CTParsePipeline:\n    \"\"\"Train a naive bayes model for NaiveBayesScorer\"\"\"\n    y_binary = [1 if y_i else -1 for y_i in y]\n    # Create and train the pipeline\n    pipeline = CTParsePipeline(\n        CountVectorizer(ngram_range=(1, 3)), MultinomialNaiveBayes(alpha=1.0)\n    )\n    model = pipeline.fit(X, y_binary)\n    return model\n\n\ndef save_naive_bayes(model: CTParsePipeline, fname: str) -> None:\n    \"\"\"Save a naive bayes model for NaiveBayesScorer\"\"\"\n    # TODO: version this model and dump metadata with lots of information\n    with bz2.open(fname, \"wb\") as fd:\n        pickle.dump(model, fd)\n"
  },
  {
    "path": "ctparse/partial_parse.py",
    "content": "import logging\nfrom datetime import datetime\nfrom typing import (\n    Callable,\n    Optional,\n    Sequence,\n    Tuple,\n    TypeVar,\n    Union,\n    Dict,\n    List,\n    Generator,\n)\n\nfrom .rule import rules as global_rules, ProductionRule, Predicate\nfrom .timers import timeit\nfrom .types import Artifact, RegexMatch\n\nlogger = logging.getLogger(__name__)\n\nT = TypeVar(\"T\")\n\n\nclass PartialParse:\n    def __init__(\n        self, prod: Tuple[Artifact, ...], rules: Tuple[Union[int, str], ...]\n    ) -> None:\n        \"\"\"A data structure representing a partial parse.\n\n\n        * prod: the current partial production\n        * rules: the sequence of regular expressions and rules used/applied to produce\n                 prod\n        * score: the score assigned to this production\n        \"\"\"\n        if len(prod) < 1:\n            raise ValueError(\"prod should have at least one element\")\n\n        self.prod = prod\n        self.rules = rules\n        self.applicable_rules = global_rules\n        self.max_covered_chars = self.prod[-1].mend - self.prod[0].mstart\n        self.score = 0.0\n\n    @classmethod\n    def from_regex_matches(\n        cls, regex_matches: Tuple[RegexMatch, ...]\n    ) -> \"PartialParse\":\n        \"\"\"Create partial production from a series of RegexMatch\n\n        This usually is called when no production rules (with the exception of\n        regex matches) have been applied.\n\n        \"\"\"\n        se = cls(prod=regex_matches, rules=tuple(r.id for r in regex_matches))\n\n        logger.debug(\"=\" * 80)\n        logger.debug(\"-> checking rule applicability\")\n        # Reducing rules to only those applicable has no effect for\n        # small stacks, but on larger there is a 10-20% speed\n        # improvement\n        se.applicable_rules, _ts = timeit(se._filter_rules)(global_rules)\n        logger.debug(\n            \"of {} total rules {} are applicable in {}\".format(\n                len(global_rules), len(se.applicable_rules), se.prod\n            )\n        )\n        logger.debug(\"time in _filter_rules: {:.0f}ms\".format(1000 * _ts))\n        logger.debug(\"=\" * 80)\n\n        return se\n\n    def apply_rule(\n        self,\n        ts: datetime,\n        pm_bias: bool,\n        date_format: str,\n        rule: ProductionRule,\n        rule_name: Union[str, int],\n        match: Tuple[int, int],\n    ) -> Optional[\"PartialParse\"]:\n        \"\"\"Check whether the production in rule can be applied to this stack\n        element.\n\n        If yes, return a copy where this update is\n        incorporated in the production, the record of applied rules\n        and the score.\n\n        :param ts: reference time\n        :param pm_bias: bias option bool\n        :param date_format: us / eu date format\n        :param rule: a tuple where the first element is the production rule to apply\n        :param rule_name: the name of the rule\n        :param match: the start and end index of the parameters that the rule needs.\n        \"\"\"\n        prod = rule(ts, pm_bias, date_format, *self.prod[match[0]: match[1]])\n\n        if prod is not None:\n            pp = PartialParse(\n                prod=self.prod[: match[0]] + (prod,) + self.prod[match[1] :],\n                rules=self.rules + (rule_name,),\n            )\n\n            pp.applicable_rules = self.applicable_rules\n            return pp\n        else:\n            return None\n\n    def __lt__(self, other: \"PartialParse\") -> bool:\n        \"\"\"Sort stack elements by (a) the length of text they can\n        (potentially) cover and (b) the score assigned to the\n        production.\n\n        a < b <=> a.max_covered_chars < b.max_covered_chars or\n                  (a.max_covered_chars <= b.max_covered_chars and a.score < b.score)\n        \"\"\"\n        return (self.max_covered_chars < other.max_covered_chars) or (\n            self.max_covered_chars == other.max_covered_chars\n            and self.score < other.score\n        )\n\n    def __repr__(self) -> str:\n        return \"PartialParse(prod={}, rules={}, score={})\".format(\n            repr(self.prod), repr(self.rules), repr(self.score)\n        )\n\n    def _filter_rules(\n        self, rules: Dict[str, Tuple[ProductionRule, List[Predicate]]]\n    ) -> Dict[str, Tuple[ProductionRule, List[Predicate]]]:\n        # find all rules that can be applied to the current prod sequence\n        def _hasNext(it: Generator[List[int], None, None]) -> bool:\n            try:\n                next(it)\n                return True\n            except StopIteration:\n                return False\n\n        return {\n            rule_name: r\n            for rule_name, r in rules.items()\n            if _hasNext(_seq_match(self.prod, r[1]))\n        }\n\n\ndef _seq_match(\n    seq: Sequence[T], pat: Sequence[Callable[[T], bool]], offset: int = 0\n) -> Generator[List[int], None, None]:\n    # :param seq: a list of intermediate productions, either of type\n    # RegexMatch or some other Artifact\n    #\n    # :param pat: a list of rule patterns to be matched, i.e. either a\n    # RegexMatch or a callable\n    #\n    # Determine whether the pattern pat matches the sequence seq and\n    # return a list of lists, where each sub-list contains those\n    # indices where the RegexMatch objects in pat are located in seq.\n    #\n    # A pattern pat only matches seq, iff each RegexMatch in pat is in\n    # seq in the same order and iff between two RegexMatches aligned\n    # to seq there is at least one additional element in seq. Reason:\n    #\n    # * Rule patterns never have two consequitive RegexMatch objects.\n    #\n    # * Hence there must be some predicate/dimension between two\n    # * RegexMatch objects.\n    #\n    # * For the whole pat to match there must then be at least one\n    #  element in seq that can product this intermediate bit\n    #\n    # If pat does not start with a RegexMatch then there must be at\n    # least one element in seq before the first RegexMatch in pat that\n    # is alignes on seq. Likewise, if pat does not end with a\n    # RegexMatch, then there must be at least one additional element\n    # in seq to match the last non-RegexMatch element in pat.\n    #\n    # STRONG ASSUMPTIONS ON ARGUMENTS: seq and pat do not contain\n    # consequiteve elements which are both of type RegexMatch! Callers\n    # obligation to ensure this!\n\n    if not pat:\n        # if pat is empty yield the empty match\n        yield []\n    elif not seq or not pat:\n        # if either seq or pat is empty there will be no match\n        return\n    elif pat[-1].__name__ != \"_regex_match\":\n        # there must be at least one additional element in seq at the\n        # end\n        yield from _seq_match(seq[:-1], pat[:-1], offset)\n    elif len(pat) > len(seq):\n        # if pat is longer than seq it cannot match\n        return\n    else:\n        p1 = pat[0]\n        # if p1 is not a RegexMatch, then continue on next pat and\n        # advance sequence by one\n        if p1.__name__ != \"_regex_match\":\n            yield from _seq_match(seq[1:], pat[1:], offset + 1)\n        else:\n            # Get number of RegexMatch in p\n            n_regex = sum(1 for p in pat if p.__name__ == \"_regex_match\")\n            # For each occurance of RegexMatch pat[0] in seq\n            for iseq, s in enumerate(seq):\n                # apply _regex_match check\n                if p1(s):\n                    # for each match of pat[1:] in seq[iseq+1:], yield a result\n                    for subm in _seq_match(seq[iseq + 1 :], pat[1:], offset + iseq + 1):\n                        if len(subm) == n_regex - 1:\n                            # only yield if all subsequent RegexMatch\n                            # have been aligned!\n                            yield [iseq + offset] + subm\n"
  },
  {
    "path": "ctparse/pipeline.py",
    "content": "from typing import Sequence, Tuple\n\nfrom .nb_estimator import MultinomialNaiveBayes\nfrom .count_vectorizer import CountVectorizer\n\n\nclass CTParsePipeline:\n    def __init__(self, transformer: CountVectorizer, estimator: MultinomialNaiveBayes):\n        \"\"\"Setup a pipeline of feature extraction and naive bayes. Overkill for what it\n        does but leaves room to use different models/features in the future\n\n        Parameters\n        ----------\n        transformer : CountVectorizer\n            feature extraction step\n        estimator : MultinomialNaiveBayes\n            naive bayes model\n        \"\"\"\n        self.transformer = transformer\n        self.estimator = estimator\n\n    def fit(self, X: Sequence[Sequence[str]], y: Sequence[int]) -> \"CTParsePipeline\":\n        \"\"\"Fit the transformer and then fit the Naive Bayes model on the transformed\n        data\n\n        Returns\n        -------\n        CTParsePipeline\n            Returns the fitted pipeline\n        \"\"\"\n        X_transformed = self.transformer.fit_transform(X)\n        self.estimator = self.estimator.fit(X_transformed, y)\n        return self\n\n    def predict_log_proba(\n        self, X: Sequence[Sequence[str]]\n    ) -> Sequence[Tuple[float, float]]:\n        \"\"\"Apply the transforms and get probability predictions from the estimator\n\n        Parameters\n        ----------\n        X : Sequence[Sequence[str]]\n            Sequence of documents, each as sequence of tokens. In ctparse case there are\n            just the names of the regex matches and rules applied\n\n        Returns\n        -------\n        Sequence[Tuple[float, float]]\n            For each document the tuple of negative/positive log probability from the\n            naive bayes model\n        \"\"\"\n        X_transformed = self.transformer.transform(X)\n        return self.estimator.predict_log_probability(X_transformed)\n"
  },
  {
    "path": "ctparse/py.typed",
    "content": "# Marker file for PEP 561."
  },
  {
    "path": "ctparse/rule.py",
    "content": "# flake8: noqa F405\nimport logging\n\nfrom datetime import datetime\nfrom typing import Any, Callable, Dict, List, Optional, Tuple, Union, Type\n\nimport regex\n\nfrom .types import Artifact, RegexMatch\n\nlogger = logging.getLogger(__name__)\n\n\n# A predicate is a callable that returns True if the predicate\n# applies to the artifact\nPredicate = Callable[[Artifact], bool]\n\n# ProductionRule is a function used to generate an artifact given other\n# artifacts.\nProductionRule = Callable[..., Optional[Artifact]]\n\n\nrules = {}  # type: Dict[str, Tuple[ProductionRule, List[Predicate]]]\n\n_regex_cnt = 150  # leave this much space for ids of production types\n_regex = {}  # compiled regex\n_regex_str = {}  # map regex id to original string\n_str_regex = {}  # type: Dict[str, int] # map regex raw str to regex id\neu_regex = {}\nus_regex = {}\n\n_regex_hour = r\"(?:[01]?\\d)|(?:2[0-3])\"\n_regex_minute = r\"[0-5]\\d\"\n_regex_day = r\"[012]?[1-9]|10|20|30|31\"\n_regex_month = r\"10|11|12|0?[1-9]\"\n_regex_year = r\"(?:19\\d\\d)|(?:20[0-2]\\d)|(?:\\d\\d)\"\n\n# used in many places in rules\n_regex_to_join = (\n    r\"(\\-|to( the)?|(un)?til|bis( zum)?|zum|auf( den)?|und|\"\n    \"no later than|spätestens?|at latest( at)?|and)\"\n)\n\n_defines = (\n    r\"(?(DEFINE)(?<_hour>{regex_hour})(?P<_minute>{regex_minute})\"\n    \"(?P<_day>{regex_day})(?P<_month>{regex_month})\"\n    \"(?P<_year>{regex_year}))\"\n).format(\n    regex_hour=_regex_hour,\n    regex_minute=_regex_minute,\n    regex_day=_regex_day,\n    regex_month=_regex_month,\n    regex_year=_regex_year,\n)\n\n\ndef rule(*patterns: Union[str, Predicate], **kwargs) -> Callable[[Any], ProductionRule]:\n    def _map(p: Union[str, Predicate]) -> Predicate:\n        if isinstance(p, str):\n            # its a regex\n            global _regex_cnt\n            if p in _str_regex:\n                # have seen this regex before - recycle\n                return regex_match(_str_regex[p])\n            # test the regex first\n            re = r\"{defines}(?i)(?P<R{re_key}>{re})\".format(\n                defines=_defines, re=p, re_key=_regex_cnt\n            )\n            new_rr = regex.compile(\n                # Removed the separator here - leads to more matches,\n                # as now each rule can also match if it is not followed\n                # or preceeded by a separator character\n                # r'(?i)(?:{sep})(?P<{re_key}>{re})(?:{sep})'.format(\n                re,\n                regex.VERSION1,\n            )\n            if new_rr.match(\"\"):\n                raise ValueError(\"expression {} matches empty strings\".format(p))\n\n            if kwargs and \"date_format\" in kwargs:\n                if kwargs['date_format'] == 'US':\n                    us_regex[_regex_cnt] = new_rr\n                else:\n                    eu_regex[_regex_cnt] = new_rr\n            else:\n                _regex[_regex_cnt] = new_rr\n            _regex_str[_regex_cnt] = p\n            _str_regex[p] = _regex_cnt\n            _regex_cnt += 1\n            return regex_match(_regex_cnt - 1)\n        else:\n            return p\n\n    # check that in rules we never have a regex followed by a regex -\n    # that must be merged into one regex\n    def _has_consequtive_regex(\n        ps: Tuple[Union[str, Callable[[Artifact], bool]], ...]\n    ) -> bool:\n        for p0, p1 in zip(ps[:-1], ps[1:]):\n            if isinstance(p0, str) and isinstance(p1, str):\n                return True\n        return False\n\n    if _has_consequtive_regex(patterns):\n        raise ValueError(\"rule which contains consequtive regular expressions found\")\n\n    mapped_patterns = [_map(p) for p in patterns]\n\n    def fwrapper(f: ProductionRule) -> ProductionRule:\n        def wrapper(ts: datetime, *args: Artifact) -> Optional[Artifact]:\n            res = f(ts, *args)\n            if res is not None:\n                # upon a successful production, update the span\n                # information by expanding it to that of all args\n                res.update_span(*args)\n            return res\n\n        rules[f.__name__] = (wrapper, mapped_patterns)\n        return wrapper\n\n    return fwrapper\n\n\ndef regex_match(r_id: int) -> Predicate:\n    def _regex_match(r: Artifact) -> bool:\n        return type(r) == RegexMatch and r.id == r_id  # type: ignore\n\n    return _regex_match\n\n\ndef dimension(dim: Type[Artifact]) -> Predicate:\n    def _dimension(d: Artifact) -> bool:\n        return isinstance(d, dim)\n\n    return _dimension\n\n\ndef predicate(pred: str) -> Predicate:\n    def _predicate(d: Artifact) -> Any:\n        return getattr(d, pred, False)\n\n    return _predicate\n\n\nfrom .time.rules import *  # noqa\n"
  },
  {
    "path": "ctparse/scorer.py",
    "content": "\"\"\"This module contains the Scorer abstraction that can be used to\nimplement scoring strategies for ctparse.\n\"\"\"\n\nfrom abc import ABCMeta, abstractmethod\nfrom datetime import datetime\nfrom random import Random\nfrom typing import Optional\n\nfrom .partial_parse import PartialParse\nfrom .types import Artifact\n\n\nclass Scorer(metaclass=ABCMeta):\n    \"\"\"Interface for scoring parses generated by ctparse\"\"\"\n\n    @abstractmethod\n    def score(self, txt: str, ts: datetime, partial_parse: PartialParse) -> float:\n        \"\"\"Produce a score for a partial production.\n\n        :param txt:  the text that is being parsed\n        :param ts: the reference time\n        :param partial_parse: the partial parse that needs to be scored\n        \"\"\"\n\n    @abstractmethod\n    def score_final(\n        self, txt: str, ts: datetime, partial_parse: PartialParse, prod: Artifact\n    ) -> float:\n        \"\"\"Produce the final score for a production.\n\n        :param txt: the text that is being parsed\n        :param ts: the reference time\n        :param partial_parse: the PartialParse object that generated the production\n        :param prod: the production\n        \"\"\"\n\n\nclass DummyScorer(Scorer):\n    \"\"\"A scorer that always return a 0.0 score.\"\"\"\n\n    def score(self, txt: str, ts: datetime, partial_parse: PartialParse) -> float:\n        return 0.0\n\n    def score_final(\n        self, txt: str, ts: datetime, partial_parse: PartialParse, prod: Artifact\n    ) -> float:\n        return 0.0\n\n\nclass RandomScorer(Scorer):\n    def __init__(self, rng: Optional[Random] = None) -> None:\n        \"\"\"A score that returns a random number between 0 and 1.\n\n        :param rng:\n            the random number generator to use\n        \"\"\"\n        self.rng = rng if rng is not None else Random()\n\n    def score(self, txt: str, ts: datetime, partial_parse: PartialParse) -> float:\n        return self.rng.random()\n\n    def score_final(\n        self, txt: str, ts: datetime, partial_parse: PartialParse, prod: Artifact\n    ) -> float:\n        return self.rng.random()\n"
  },
  {
    "path": "ctparse/time/__init__.py",
    "content": ""
  },
  {
    "path": "ctparse/time/auto_corpus.py",
    "content": "corpus = [  # pragma: no cover\n    [\n        \"Time[]{2018-01-04 X:X (X/X)}\",\n        \"2017-12-20T20:34\",\n        [\n            \"THURSDAY 4th JANUARY 2018\",\n            \"04. Januar 2018\",\n            \"THURSDAY 4th JANUARY 2018\",\n            \"THURSDAY 4th JANUARY 2018\",\n            \"04. Januar 2018\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-03-12 18:40 (X/X) - 2017-03-12 19:45 (X/X)}\",\n        \"2017-02-10T10:59\",\n        [\"Am 12.03.2017 18:40 - 19:45\", \"Am 12.03.2017 18:40 - 19:45\"],\n    ],\n    [\n        \"Interval[]{X-X-X 10:00 (X/X) - X-X-X 15:00 (X/X)}\",\n        \"2022-12-12T09:59\",\n        [\"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", \"10-15\", ],\n    ],\n    [\n        \"Interval[]{2022-12-16 10:00 (X/X) - 2022-12-16 15:00 (X/X)}\",\n        \"2022-12-13T09:59\",\n        [\"friday 10-15\", \"friday 10-15\", \"friday 10-15\", \"friday 10-15\", \"friday 10-15\", \"friday 10-15\", \"friday 10-15\", \"friday 10-15\", \"friday 10-15\", ],\n    ],\n    [\n        \"Time[]{2017-05-11 X:X (X/X)}\",\n        \"2017-05-09T06:47\",\n        [\"Thu 11. may 2017\", \"am 11.\", \"Thursday 11.05.17\", \"Thu 11. may 2017\"],\n    ],\n    [\n        \"Interval[]{2016-05-04 20:00 (X/X) - 2016-05-04 21:00 (X/X)}\",\n        \"2016-04-06T15:25\",\n        [\"Mi., 04.05.2016 ca. 08:00 Uhr bis ca. 09:00 Uhr\"],\n    ],\n    [\n        \"Interval[]{2018-02-05 X:X (X/X) - 2018-02-15 X:X (X/X)}\",\n        \"2018-01-26T09:32\",\n        [\"Feb 5-15\"],\n    ],\n    [\n        \"Time[]{2016-05-27 14:00 (X/X)}\",\n        \"2016-05-24T04:39\",\n        [\"Fri 5/27 2:00pm\", \"Fri 5/27 2:00pm\"],\n    ],\n    [\"Time[]{2016-05-27 17:20 (X/X)}\", \"2016-05-24T04:39\", [\"Fri 5/27 5:20pm\"]],\n    [\n        \"Time[]{2016-06-24 12:40 (X/X)}\",\n        \"2016-06-22T09:08\",\n        [\"Fri 6/24 12:40pm\", \"Fri 6/24 12:40pm\"],\n    ],\n    [\n        \"Time[]{2016-09-23 20:00 (X/X)}\",\n        \"2016-09-06T05:05\",\n        [\"Fri 9/23 8pm\", \"Fri 9/23 8pm\"],\n    ],\n    [\n        \"Time[]{2016-10-26 06:30 (X/X)}\",\n        \"2016-10-11T08:25\",\n        [\"Oct 26 morning 6:30am\", \"Oct 26 morning 6:30am\"],\n    ],\n    [\n        \"Time[]{2018-02-28 X:X (X/X)}\",\n        \"2017-12-12T09:33\",\n        [\"Feb 28, 2018\", \"Feb 28, 2018\", \"Feb 28, 2018\"],\n    ],\n    [\n        \"Interval[]{2017-03-01 X:X (X/X) - 2017-03-03 X:X (X/X)}\",\n        \"2017-02-24T12:30\",\n        [\"Vom 01.03. bis 03.03\"],\n    ],\n    [\n        \"Time[]{2017-10-20 X:X (X/X)}\",\n        \"2017-09-19T09:42\",\n        [\"Fri 20th Oct 2017\", \"Fri 20th Oct 2017\", \"Fri 20th Oct 2017\"],\n    ],\n    [\n        \"Time[]{2017-02-03 X:X (X/X)}\",\n        \"2017-02-01T11:43\",\n        [\n            \"Februar 3, 2017\",\n            \"am 3. Februar 2017\",\n            \"Februar 3, 2017\",\n            \"Februar 3, 2017\",\n            \"Freitag 03.02\",\n            \"am 3. Februar 2017\",\n        ],\n    ],\n    [\n        \"Time[]{2017-11-02 X:X (X/X)}\",\n        \"2017-09-03T11:45\",\n        [\n            \"November 2, 2017\",\n            \"November 2, 2017\",\n            \"November 2, 2017\",\n            \"Thursday 02.11.\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-04-03 X:X (X/X) - 2017-04-04 X:X (X/X)}\",\n        \"2017-03-14T08:31\",\n        [\"April 3-4\"],\n    ],\n    [\"Time[]{2016-06-05 X:X (X/X)}\", \"2016-06-02T07:52\", [\"Sunday 6/5\", \"Sunday 6/5\"]],\n    [\"Time[]{2018-04-27 X:X (X/X)}\", \"2017-12-14T23:57\", [\"Friday 27\"]],\n    [\n        \"Interval[]{2017-08-21 X:X (X/X) - 2017-08-25 X:X (X/X)}\",\n        \"2017-08-08T09:40\",\n        [\"August 21-25\"],\n    ],\n    [\n        \"Time[]{2018-02-16 X:X (X/X)}\",\n        \"2018-01-10T11:14\",\n        [\"Freitag 16.\", \"Freitag 16.\"],\n    ],\n    [\n        \"Time[]{2017-07-13 X:X (X/X)}\",\n        \"2017-07-06T08:05\",\n        [\"Donnerstag 13. Juli 2017\", \"Donnerstag 13. Juli 2017\"],\n    ],\n    [\n        \"Time[]{2017-11-10 X:X (X/X)}\",\n        \"2017-08-02T06:57\",\n        [\"Freitag 10.November 2017\", \"Freitag 10.November 2017\"],\n    ],\n    # [\n    #     \"Time[]{2016-01-26 X:X (X/morning)}\",\n    #     \"2016-01-13T12:05\",\n    #     [\"Dienstagmorgen 26.1.\"],\n    # ],\n    [\n        \"Time[]{2017-08-17 13:55 (X/X)}\",\n        \"2017-08-10T09:11\",\n        [\"Donnerstag 17.8. 13:55\", \"Donnerstag 17.8. 13:55\", \"Donnerstag 17.8. 13:55\"],\n    ],\n    # [\n    #     \"Time[]{2017-12-01 X:X (X/afternoon)}\",\n    #     \"2017-11-07T16:48\",\n    #     [\"Freitagnachmittag 01.12.\"],\n    # ],\n    # [\n    #     \"Time[]{2016-03-08 X:X (X/evening)}\",\n    #     \"2015-11-19T08:54\",\n    #     [\"Dienstagabend 08.03.16\"],\n    # ],\n    # [\n    #     \"Time[]{2017-02-07 X:X (X/morning)}\",\n    #     \"2017-01-13T10:30\",\n    #     [\"Dienstagmorgen 07.02.17\"],\n    # ],\n    [\"Time[]{2016-04-17 X:X (X/X)}\", \"2016-04-08T11:42\", [\"Sunday 17th\"]],\n    [\n        \"Time[]{2018-03-24 X:X (X/X)}\",\n        \"2018-03-09T15:21\",\n        [\n            \"Saturday 24th March 2018\",\n            \"Saturday 24th March 2018\",\n            \"Saturday 24th March 2018\",\n        ],\n    ],\n    # [\n    #     \"Time[]{2016-05-26 X:X (X/evening)}\",\n    #     \"2016-05-23T07:31\",\n    #     [\"Thursday 26th in the evening\"],\n    # ],\n    # [\n    #     \"Time[]{2016-10-19 X:X (X/evening)}\",\n    #     \"2016-10-11T17:10\",\n    #     [\"Wednesday 19th evening\"],\n    # ],\n    # [\n    #     \"Time[]{2017-05-12 X:X (X/last)}\",\n    #     \"2017-05-04T07:31\",\n    #     [\"Friday 12th last flight\"],\n    # ],\n    [\"Time[]{2017-05-08 X:X (X/X)}\", \"2017-04-27T14:52\", [\"Monday 8th\"]],\n    [\n        \"Time[]{2018-03-09 X:X (X/X)}\",\n        \"2018-02-15T12:21\",\n        [\n            \"Friday 9th March 2018\",\n            \"Friday 9th March 2018\",\n            \"Friday 9th March 2018\",\n            \"am Freitag 09.03\",\n        ],\n    ],\n    [\n        \"Time[]{2017-09-13 X:X (X/X)}\",\n        \"2017-09-11T14:17\",\n        [\"Mittwoch den 13.\", \"Mittwoch den 13.\"],\n    ],\n    [\n        \"Interval[]{2017-08-08 20:05 (X/X) - 2017-08-08 21:00 (X/X)}\",\n        \"2017-08-03T11:10\",\n        [\n            \"Dienstag den 08.08.2017 20:05 - 21:00 Uhr\",\n            \"Dienstag den 08.08.2017 20:05 - 21:00 Uhr\",\n            \"Dienstag den 08.08.2017 20:05 - 21:00 Uhr\",\n        ],\n    ],\n    [\n        \"Time[]{2016-12-22 X:X (X/X)}\",\n        \"2016-12-19T21:12\",\n        [\"Donnerstag diese Woche\", \"Donnerstag diese Woche\", \"Donnerstag diese Woche\"],\n    ],\n    # [\n    #     \"Time[]{2018-03-26 X:X (X/evening)}\",\n    #     \"2017-12-15T11:14\",\n    #     [\"Monday evening 26th March\"],\n    # ],\n    # [\n    #     \"Time[]{2017-06-19 X:X (X/morning)}\",\n    #     \"2017-05-18T06:53\",\n    #     [\"Monday morning, 19.6.17\"],\n    # ],\n    [\n        \"Time[]{2018-03-01 X:X (X/X)}\",\n        \"2018-01-10T12:18\",\n        [\n            \"Donnerstag, 1. M\\u00e4rz 2018\",\n            \"Donnerstag, den 01. M\\u00e4rz 2018\",\n            \"1/3/2018\",\n            \"Donnerstag 01.03.2018\",\n            \"Donnerstag, 1. M\\u00e4rz 2018\",\n            \"Donnerstag, den 01. M\\u00e4rz 2018\",\n        ],\n    ],\n    [\n        \"Time[]{2016-04-06 20:20 (X/X)}\",\n        \"2016-03-11T11:04\",\n        [\"Mittwoch, 6.4. 8:20\", \"Mittwoch, 6.4. 8:20\", \"Mittwoch, 6.4. 8:20\"],\n    ],\n    [\n        \"Time[]{2016-04-07 15:35 (X/X)}\",\n        \"2016-03-11T11:04\",\n        [\"Donnerstag, 7.4. 15:35\", \"Donnerstag, 7.4. 15:35\", \"Donnerstag, 7.4. 15:35\"],\n    ],\n    [\n        \"Time[]{2017-08-08 14:31 (X/X)}\",\n        \"2017-08-08T08:28\",\n        [\"Dienstag, 8.8. 14:31h\", \"Dienstag, 8.8. 14:31h\", \"Dienstag, 8.8. 14:31h\"],\n    ],\n    [\n        \"Time[]{2017-06-30 X:X (X/X)}\",\n        \"2017-06-23T09:53\",\n        [\"Freitag, 30. Juni 2017\", \"Freitag, 30. Juni 2017\"],\n    ],\n    [\n        \"Time[]{2016-11-17 X:X (X/X)}\",\n        \"2016-10-20T14:34\",\n        [\"Donnerstag, 17. November 2016\", \"Donnerstag, 17. November 2016\"],\n    ],\n    [\n        \"Time[]{2017-11-13 X:X (X/X)}\",\n        \"2017-10-24T13:35\",\n        [\"Montag, 13.11. 2017\", \"Montag, 13.11. 2017\", \"Montag, 13.11. 2017\"],\n    ],\n    [\n        \"Interval[]{2016-12-13 17:06 (X/X) - 2016-12-13 20:44 (X/X)}\",\n        \"2016-12-08T15:30\",\n        [\n            \"Dienstag, 13.12.2016 um  05:06 - 08:44 Uhr\",\n            \"Dienstag, 13.12.2016 um  05:06 - 08:44 Uhr\",\n            \"Dienstag, 13.12.2016 um  05:06 - 08:44 Uhr\",\n        ],\n    ],\n    [\n        \"Time[]{2017-12-15 X:X (X/X)}\",\n        \"2017-11-15T21:11\",\n        [\"Friday 15th\"],\n    ],\n    [\n        \"Time[]{2018-03-12 X:X (X/X)}\",\n        \"2018-03-02T10:05\",\n        [\"Monday, 12th of March 2018\", \"Monday, 12th of March 2018\"],\n    ],\n    # [\n    #     \"Time[]{2018-04-03 X:X (X/afternoon)}\",\n    #     \"2018-03-22T11:25\",\n    #     [\"Dienstag, den 3. April 2018 nachmittags\"],\n    # ],\n    [\n        \"Interval[]{2017-10-05 21:00 (X/X) - 2017-10-05 22:00 (X/X)}\",\n        \"2017-09-28T07:55\",\n        [\n            \"Donnerstag, den 5.10.2017 09:00 - 10:00 Uhr\",\n            \"Donnerstag, den 5.10.2017 09:00 - 10:00 Uhr\",\n            \"Donnerstag, den 5.10.2017 09:00 - 10:00 Uhr\",\n        ],\n    ],\n    [\n        \"Time[]{2017-10-10 X:X (X/X)}\",\n        \"2017-10-08T16:08\",\n        [\"Tuesday 10.\", \"vom 10.\", \"Tuesday 10.\"],\n    ],\n    [\n        \"Time[]{2017-05-22 16:13 (X/X)}\",\n        \"2017-05-22T12:32\",\n        [\"Morgen, den 22. Mai 2017 16:13\"],\n    ],\n    [\n        \"Time[]{2017-10-03 X:X (X/X)}\",\n        \"2017-08-28T14:31\",\n        [\"3 Oct 2017\", \"3. Oktober 2017\", \"3 Oct 2017\", \"3. Oktober 2017\"],\n    ],\n    [\n        \"Time[]{2018-04-06 X:X (X/X)}\",\n        \"2018-01-08T07:52\",\n        [\n            \"6 April 2018\",\n            \"06.04.2018 17:40 Uhr\",\n            \"6 April 2018\",\n            \"06.04.2018 17:40 Uhr\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-06-04 X:X (X/X) - 2017-06-06 X:X (X/X)}\",\n        \"2017-05-25T18:08\",\n        [\"4-6.6.\", \"4-6.6.\", \"4-6.6.\"],\n    ],\n    [\"Time[]{2017-07-02 X:X (X/X)}\", \"2017-06-29T06:15\", [\"2.\"]],\n    [\n        \"Time[]{2017-07-04 X:X (X/X)}\",\n        \"2017-06-29T06:15\",\n        [\"4. Juli 2017\", \"4. Juli 2017\"],\n    ],\n    [\"Time[]{2017-08-06 23:05 (X/X)}\", \"2017-07-26T09:21\", [\"6. August 11:05\"]],\n    [\n        \"Time[]{2016-11-02 X:X (X/X)}\",\n        \"2016-10-04T11:39\",\n        [\"2. November 2016\", \"2. November 2016\"],\n    ],\n    [\n        \"Time[]{2016-04-03 X:X (X/X)}\",\n        \"2015-11-02T11:37\",\n        [\"3. April 2016\", \"3. April 2016\"],\n    ],\n    [\n        \"Time[]{2016-11-04 X:X (X/X)}\",\n        \"2016-10-04T11:39\",\n        [\"4. November 2016\", \"4. November 2016\"],\n    ],\n    [\n        \"Time[]{2017-10-05 X:X (X/X)}\",\n        \"2017-07-17T07:46\",\n        [\"5. Oktober 2017\", \"5. Oktober 2017\"],\n    ],\n    [\n        \"Time[]{2018-01-06 X:X (X/X)}\",\n        \"2017-12-19T09:24\",\n        [\"6. Januar 2018\", \"6. Januar 2018\"],\n    ],\n    [\n        \"Interval[]{2017-07-03 21:00 (X/X) - 2017-07-03 22:00 (X/X)}\",\n        \"2017-06-26T13:05\",\n        [\n            \"3.7.2017 gegen 9-10 Uhr\",\n            \"3.7.2017 gegen 9-10 Uhr\",\n            \"3.7.2017 gegen 9-10 Uhr\",\n        ],\n    ],\n    [\n        \"Time[]{2018-10-07 18:10 (X/X)}\",\n        \"2018-02-07T13:05\",\n        [\"5.03. - 07.10. 18:10\", \"5.03. - 07.10. 18:10\"],\n    ],\n    [\n        \"Time[]{2017-07-01 22:00 (X/X)}\",\n        \"2017-06-02T09:41\",\n        [\"1.07.2017 ca. 10Uhr\", \"1.07.2017 ca. 10Uhr\"],\n    ],\n    [\"Time[]{2017-03-17 X:X (X/X)}\", \"2017-03-03T13:30\", [\"3/17\"]],\n    [\"Time[]{2017-02-11 X:X (X/X)}\", \"2017-01-31T10:12\", [\"11\"]],\n    [\"Time[]{2017-01-14 X:X (X/X)}\", \"2017-01-05T08:07\", [\"14\"]],\n    [\"Time[]{2017-11-15 X:X (X/X)}\", \"2017-11-08T16:14\", [\"15\"]],\n    [\"Time[]{2016-09-19 X:X (X/X)}\", \"2016-08-19T11:23\", [\"19\"]],\n    [\"Time[]{2017-04-20 X:X (X/X)}\", \"2017-04-18T11:04\", [\"20\"]],\n    [\n        \"Time[]{2017-09-25 X:X (X/X)}\",\n        \"2017-09-10T15:46\",\n        [\"25 SEP 2017,\", \"25 SEP 2017,\"],\n    ],\n    [\n        \"Time[]{2016-05-17 X:X (X/X)}\",\n        \"2016-05-10T10:31\",\n        [\"17 May 2016\", \"17 May 2016\"],\n    ],\n    [\n        \"Time[]{2018-02-21 X:X (X/X)}\",\n        \"2018-01-17T14:12\",\n        [\"21 Feb 2018\", \"21 Feb 2018\"],\n    ],\n    [\n        \"Time[]{2017-10-24 X:X (X/X)}\",\n        \"2017-10-17T18:14\",\n        [\"24 Oct 2017\", \"24 Oct 2017\"],\n    ],\n    [\n        \"Time[]{2017-04-24 X:X (X/X)}\",\n        \"2017-03-09T09:35\",\n        [\"24 April 17\", \"24 April 17\"],\n    ],\n    [\n        \"Time[]{2018-01-10 X:X (X/X)}\",\n        \"2017-10-03T03:36\",\n        [\"10 January 2018\", \"10/01/2018\", \"10 January 2018\", \"10.01.2018 15:37\"],\n    ],\n    [\n        \"Time[]{2017-09-10 X:X (X/X)}\",\n        \"2017-07-31T07:05\",\n        [\"10 September 2017\", \"10 September 2017\"],\n    ],\n    [\n        \"Time[]{2018-04-11 X:X (X/X)}\",\n        \"2018-01-08T07:52\",\n        [\"11 April 2018\", \"11 April 2018\"],\n    ],\n    [\n        \"Time[]{2017-08-14 X:X (X/X)}\",\n        \"2017-07-31T07:05\",\n        [\"14 August 2017\", \"14 August 2017\"],\n    ],\n    [\n        \"Time[]{2018-02-15 X:X (X/X)}\",\n        \"2018-01-15T08:26\",\n        [\n            \"15 February 2018\",\n            \"Thursday 15.02.\",\n            \"Do. 15.\",\n            \"15 February 2018\",\n            \"Thursday 15.02.\",\n        ],\n    ],\n    [\n        \"Time[]{2016-12-21 X:X (X/X)}\",\n        \"2016-12-09T12:58\",\n        [\"21 December 2016\", \"21 December 2016\"],\n    ],\n    [\n        \"Time[]{2017-12-22 X:X (X/X)}\",\n        \"2017-10-03T03:36\",\n        [\"22 December 2017\", \"22 December 2017\"],\n    ],\n    [\n        \"Time[]{2016-06-16 06:40 (X/X)}\",\n        \"2016-06-16T13:14\",\n        [\"16 june 6:40 am\", \"16 june 6:40 am\", \"16 june 6:40 am\"],\n    ],\n    [\n        \"Interval[]{2017-09-15 15:00 (X/X) - None}\",\n        \"2017-09-07T13:55\",\n        [\"15 after 15:00\"],\n    ],\n    [\"Time[]{2017-02-21 X:X (X/X)}\", \"2017-02-06T08:28\", [\"21-2-2017\"]],\n    [\"Time[]{2017-02-22 X:X (X/X)}\", \"2017-02-06T08:28\", [\"22-2-2017\"]],\n    [\"Time[]{2017-02-23 X:X (X/X)}\", \"2017-02-06T08:28\", [\"23-2-2017\"]],\n\n    # 19-20 should be hour interval not date\n    # [\n    #     \"Interval[]{2018-03-19 X:X (X/X) - 2018-03-20 X:X (X/X)}\",\n    #     \"2018-03-06T09:46\",\n    #     [\"19-20\"],\n    # ],\n\n    # [\"Time[]{2016-05-28 09:00 (X/X)}\", \"2016-05-26T06:48\", [\"28-05 09:00\"]],\n    [\n        \"Interval[]{2017-11-12 X:X (X/X) - 2017-11-13 X:X (X/X)}\",\n        \"2017-10-03T08:32\",\n        [\"12-13 november\"],\n    ],\n    [\n        \"Time[]{2016-10-09 X:X (X/X)}\",\n        \"2016-10-07T09:38\",\n        [\"09-10-16\", \"09-10-16\", \"09-10-16\"],\n    ],\n    [\n        \"Time[]{2015-10-25 X:X (X/X)}\",\n        \"2015-10-13T12:11\",\n        [\"15-10-25\", \"15-10-25\", \"15-10-25\"],\n    ],\n    [\n        \"Time[]{2016-04-19 X:X (X/X)}\",\n        \"2016-04-12T14:27\",\n        [\"16-04-19\", \"16-04-19\", \"Dienstag 19.4.\", \"16-04-19\"],\n    ],\n    [\"Time[]{2016-05-31 X:X (X/X)}\", \"2016-05-26T14:38\", [\"16-05-31\", \"16-05-31\"]],\n    [\"Time[]{2017-08-04 X:X (X/X)}\", \"2017-07-24T09:18\", [\"04-08-2017\"]],\n    [\"Time[]{2016-10-04 X:X (X/X)}\", \"2016-09-26T13:20\", [\"04-10-2016\"]],\n    [\"Time[]{2017-11-05 X:X (X/X)}\", \"2017-10-18T18:45\", [\"05-11-2017\"]],\n    [\n        \"Time[]{2018-05-07 X:X (X/X)}\",\n        \"2018-03-21T13:20\",\n        [\"07/05/2018\", \"on Monday 7th May\", \"on Monday 7th May\"],\n    ],\n    [\"Time[]{2016-10-07 X:X (X/X)}\", \"2016-09-26T13:20\", [\"07.10.2016\"]],\n    [\"Time[]{2016-03-08 X:X (X/X)}\", \"2016-03-07T08:46\", [\"08/03/2016\"]],\n    [\"Time[]{2018-05-09 X:X (X/X)}\", \"2018-03-21T13:20\", [\"09/05/2018\"]],\n    [\"Time[]{2017-11-09 X:X (X/X)}\", \"2017-10-18T18:45\", [\"09.11.2017\"]],\n    [\"Time[]{2016-03-10 X:X (X/X)}\", \"2016-03-07T08:46\", [\"10.03.2016\"]],\n    [\"Time[]{2016-12-11 X:X (X/X)}\", \"2016-12-01T08:24\", [\"11.12.2016\"]],\n    [\n        \"Time[]{2017-12-11 X:X (X/X)}\",\n        \"2017-11-22T13:00\",\n        [\"11-12-2017\", \"Montag 11.12\"],\n    ],\n    [\n        \"Time[]{2017-11-12 X:X (X/X)}\",\n        \"2017-10-18T18:45\",\n        [\"12-11-2017\", \"Sunday 12th November 2017\"],\n    ],\n    [\"Time[]{2017-01-13 X:X (X/X)}\", \"2017-11-30T13:54\", [\"13.01.2017\"]],\n    [\"Time[]{2017-03-13 X:X (X/X)}\", \"2017-03-02T13:17\", [\"13.03.2017\"]],\n    [\"Time[]{2016-06-01 22:16 (X/X)}\", \"2016-05-25T09:14\", [\"01.06.2016 10:16\"]],\n    [\"Time[]{2016-06-01 16:00 (X/X)}\", \"2016-05-25T09:14\", [\"01.06.2016 16:00\"]],\n    [\"Time[]{2017-11-06 17:00 (X/X)}\", \"2017-10-23T14:23\", [\"06.11.2017 17:00\"]],\n    [\"Time[]{2017-11-08 17:55 (X/X)}\", \"2017-10-23T14:23\", [\"08/11/2017 17:55\"]],\n    [\"Time[]{2018-03-10 19:30 (X/X)}\", \"2018-02-15T15:23\", [\"10/03/2018 19:30\"]],\n    [\"Time[]{2018-03-14 14:35 (X/X)}\", \"2018-02-15T15:23\", [\"14/03/2018 14:35\"]],\n    [\n        \"Interval[]{2017-09-11 X:X (X/X) - 2017-09-13 X:X (X/X)}\",\n        \"2017-08-21T15:07\",\n        [\"11-13. September\"],\n    ],\n    [\n        \"Interval[]{2018-04-02 X:X (X/X) - 2018-04-05 X:X (X/X)}\",\n        \"2018-03-18T12:16\",\n        [\"02-05.4\", \"02-05.4\", \"02-05.4\"],\n    ],\n    [\n        \"Interval[]{2018-01-10 X:X (X/X) - 2018-01-11 X:X (X/X)}\",\n        \"2017-12-30T15:14\",\n        [\"10-11.1.\", \"10-11.1.\", \"10-11.1.\"],\n    ],\n    [\"Time[]{2015-12-02 X:X (X/X)}\", \"2015-11-16T10:37\", [\"02.\"]],\n    [\"Time[]{2017-04-03 X:X (X/X)}\", \"2017-03-08T14:38\", [\"03.\", \"03.04. 2017\"]],\n    [\"Time[]{2017-02-06 X:X (X/X)}\", \"2017-01-31T19:27\", [\"06.\"]],\n    [\"Time[]{2017-02-08 X:X (X/X)}\", \"2017-01-16T15:44\", [\"08.\"]],\n    [\"Time[]{2010-11-11 X:X (X/X)}\", \"2017-08-04T15:22\", [\"11. Nov 2010\"]],\n    [\n        \"Time[]{2017-05-12 X:X (X/X)}\",\n        \"2017-05-03T13:19\",\n        [\"12. Mai 2017\", \"12. Mai 2017\"],\n    ],\n    [\"Time[]{2008-02-15 X:X (X/X)}\", \"2017-08-04T15:22\", [\"15. Feb 2008\"]],\n    [\n        \"Time[]{2017-05-16 X:X (X/X)}\",\n        \"2017-05-08T14:03\",\n        [\"16. Mai 2017\", \"16. Mai 2017\"],\n    ],\n    [\"Time[]{2014-08-17 X:X (X/X)}\", \"2017-08-04T15:22\", [\"17. Aug 2014\"]],\n    [\n        \"Time[]{2018-02-26 X:X (X/X)}\",\n        \"2018-01-10T12:02\",\n        [\"26. Feb. 2018\", \"26. Feb. 2018\"],\n    ],\n    [\n        \"Time[]{2016-07-13 X:X (X/X)}\",\n        \"2016-06-20T10:03\",\n        [\"13. Juli 16\", \"13. Juli 16\"],\n    ],\n    [\n        \"Time[]{2016-07-18 X:X (X/X)}\",\n        \"2016-06-28T09:21\",\n        [\"18. Juli 18:25\", \"18. Juli 18:25\"],\n    ],\n    [\n        \"Time[]{2017-06-09 X:X (X/X)}\",\n        \"2017-05-23T05:56\",\n        [\"09. Juni 2017\", \"09. Juni 2017\"],\n    ],\n    [\n        \"Time[]{2017-03-10 X:X (X/X)}\",\n        \"2017-01-30T12:26\",\n        [\"10. M\\u00e4rz 2017\", \"10. M\\u00e4rz 2017\"],\n    ],\n    [\n        \"Time[]{2018-03-10 X:X (X/X)}\",\n        \"2017-12-18T07:30\",\n        [\"10. M\\u00e4rz 2018\", \"10. M\\u00e4rz 2018\"],\n    ],\n    [\n        \"Time[]{2017-03-11 X:X (X/X)}\",\n        \"2017-01-30T12:26\",\n        [\"11. M\\u00e4rz 2017\", \"11. M\\u00e4rz 2017\"],\n    ],\n    [\n        \"Time[]{2018-06-12 X:X (X/X)}\",\n        \"2018-03-22T10:04\",\n        [\"12. Juni 2018\", \"12. Juni 2018\"],\n    ],\n    [\n        \"Time[]{2017-06-14 X:X (X/X)}\",\n        \"2017-06-02T07:23\",\n        [\"14. Juni 2017\", \"14. Juni 2017\"],\n    ],\n    [\n        \"Time[]{2018-03-10 14:30 (X/X)}\",\n        \"2018-03-05T11:52\",\n        [\"10. March Saturday 14:30\"],\n    ],\n    [\n        \"Time[]{2018-04-09 X:X (X/X)}\",\n        \"2018-03-13T11:59\",\n        [\"09. April 2018\", \"09. April 2018\"],\n    ],\n    [\n        \"Time[]{2016-12-09 X:X (X/X)}\",\n        \"2016-11-14T12:23\",\n        [\"09. Dezember 2016\", \"09. Dezember 2016\"],\n    ],\n    [\n        \"Time[]{2016-11-12 X:X (X/X)}\",\n        \"2016-04-07T07:45\",\n        [\"12. November 2016\", \"12. November 2016\"],\n    ],\n    [\n        \"Time[]{2017-10-12 X:X (X/X)}\",\n        \"2017-10-05T16:59\",\n        [\n            \"12. Oktober 2017\",\n            \"Donnerstag 12.10.2017\",\n            \"Thursday (12.)\",\n            \"12. Oktober 2017\",\n        ],\n    ],\n    [\n        \"Time[]{2017-09-12 X:X (X/X)}\",\n        \"2017-08-11T07:25\",\n        [\n            \"12. September 2017\",\n            \"Tuesday 12.9.\",\n            \"12. September 2017\",\n            \"Tuesday 12.9.\",\n        ],\n    ],\n    [\n        \"Time[]{2018-04-13 X:X (X/X)}\",\n        \"2018-03-16T12:34\",\n        [\"13. April 2018\", \"13. April 2018\"],\n    ],\n    [\n        \"Time[]{2018-02-13 X:X (X/X)}\",\n        \"2017-12-19T09:24\",\n        [\"13. Februar 2018\", \"13. Februar 2018\"],\n    ],\n    [\n        \"Time[]{2018-04-14 X:X (X/X)}\",\n        \"2018-04-08T17:07\",\n        [\"14. April 2018\", \"14. April 2018\"],\n    ],\n    [\n        \"Time[]{2018-03-13 X:X (X/X)}\",\n        \"2018-03-12T16:48\",\n        [\"13. 03.\", \"13. 03.\", \"13. 03.\"],\n    ],\n    [\n        \"Interval[]{2017-07-11 X:X (X/X) - 2017-07-12 X:X (X/X)}\",\n        \"2017-06-28T15:41\",\n        [\"11. auf 12.\"],\n    ],\n    [\n        \"Time[]{2018-03-03 X:X (X/evening)}\",\n        \"2018-02-02T15:44\",\n        [\"23.-02.-03.03. abends\"],\n    ],\n    [\n        \"Time[]{2017-01-16 X:X (X/X)}\",\n        \"2017-01-13T07:58\",\n        [\"16.Januar 2017\", \"am Montag 16.01.17\", \"16.Januar 2017\"],\n    ],\n    [\n        \"Time[]{2016-05-19 X:X (X/X)}\",\n        \"2016-04-12T12:42\",\n        [\"19.5 08:05\", \"19.5 08:05\", \"19.5 08:05\"],\n    ],\n    [\"Time[]{2017-01-16 20:10 (X/X)}\", \"2016-11-18T06:43\", [\"16.1 8:10\"]],\n    [\n        \"Time[]{2018-03-15 16:01 (X/X)}\",\n        \"2018-02-28T10:19\",\n        [\"12.03 - 15.03. 16:01\", \"12.03 - 15.03. 16:01\"],\n    ],\n    [\n        \"Time[]{2017-10-21 X:X (X/X)}\",\n        \"2017-10-10T12:06\",\n        [\"21.10 Samstag\", \"21.10 Samstag\", \"21.10 Samstag\"],\n    ],\n    [\"Time[]{2016-11-21 20:10 (X/X)}\", \"2016-09-19T08:44\", [\"21.11 8:10\"]],\n    [\"Time[]{2016-11-14 20:10 (X/X)}\", \"2016-08-31T13:16\", [\"14.11 um 8:10\"]],\n    [\n        \"Interval[]{2017-11-24 11:00 (X/X) - 2017-11-24 13:00 (X/X)}\",\n        \"2017-11-17T09:47\",\n        [\"24.11 ca. 11-13 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-05-04 X:X (X/X) - 2017-05-05 X:X (X/X)}\",\n        \"2017-04-28T15:09\",\n        [\"04.05 bis 05.05\"],\n    ],\n    [\n        \"Interval[]{2017-10-04 X:X (X/X) - 2017-10-06 X:X (X/X)}\",\n        \"2017-09-29T14:29\",\n        [\"04.10 bis 06.10\"],\n    ],\n    [\n        \"Interval[]{2016-11-09 X:X (X/X) - 2016-11-10 X:X (X/X)}\",\n        \"2016-11-08T20:42\",\n        [\"09.11 bis 10.11\", \"vom 09.11 bis 10.11\"],\n    ],\n    [\n        \"Interval[]{2017-10-12 X:X (X/X) - 2017-10-13 X:X (X/X)}\",\n        \"2017-08-18T06:05\",\n        [\"12.10 bis 13.10\"],\n    ],\n    [\n        \"Interval[]{2018-03-13 X:X (X/X) - 2018-03-16 X:X (X/X)}\",\n        \"2018-03-05T12:12\",\n        [\"13.03 bis 16.03\"],\n    ],\n    [\n        \"Time[]{2017-06-13 X:X (X/X)}\",\n        \"2017-05-19T13:40\",\n        [\"13.06 morning\", \"the 13.\", \"13.06 morning\", \"13.06 morning\"],\n    ],\n    [\n        \"Time[]{2016-03-03 17:00 (X/X)}\",\n        \"2016-02-05T08:25\",\n        [\"03.03 nachmittags ca. 5 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-01-31 X:X (X/X)}\",\n        \"2017-01-23T18:56\",\n        [\"31.01. Tuesday\", \"31.01. Tuesday\", \"31.01. Tuesday\"],\n    ],\n    [\"Time[]{2017-09-20 22:10 (X/X)}\", \"2017-09-13T08:14\", [\"20.09. 22:10\"]],\n    [\n        \"Time[]{2017-09-15 X:X (X/X)}\",\n        \"2017-09-07T10:19\",\n        [\"15.09. 14:21 Uhr\", \"15.09. 14:21 Uhr\", \"15.09. 14:21 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-07-05 20:00 (X/X) - None}\",\n        \"2017-06-13T12:03\",\n        [\"05.07. 2017 ab 08:00 Uhr\"],\n    ],\n    [\n        \"Interval[]{2018-01-20 07:38 (X/X) - 2018-01-20 10:52 (X/X)}\",\n        \"2018-01-15T14:40\",\n        [\"20.01. um 7:38 - 10:52am\"],\n    ],\n    [\n        \"Interval[]{2017-06-12 13:15 (X/X) - 2017-06-12 14:15 (X/X)}\",\n        \"2017-06-08T08:12\",\n        [\"12.06. um 13:15-14:15\"],\n    ],\n    [\n        \"Interval[]{2016-11-03 20:15 (X/X) - None}\",\n        \"2016-11-02T09:46\",\n        [\"03.11. ab 08:15 Uhr\", \"03.11. ab 08:15 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-06-13 21:55 (X/X) - 2017-06-13 22:45 (X/X)}\",\n        \"2017-06-08T08:12\",\n        [\"13.06. um 21:55-22:45\"],\n    ],\n    [\n        \"Interval[]{2018-01-02 X:X (X/X) - 2018-01-05 X:X (X/X)}\",\n        \"2017-12-14T08:14\",\n        [\"02.01.-05.01.2018 3 \\u00dcN\", \"02.01.-05.01.2018 3 \\u00dcN\"],\n    ],\n    [\n        \"Interval[]{2017-09-14 18:00 (X/X) - 2017-09-14 20:00 (X/X)}\",\n        \"2017-08-11T11:31\",\n        [\"12.09.17 - 14.09.17 18:00 - 20:00\"],\n    ],\n    [\n        \"Interval[]{2017-02-10 23:49 (X/X) - None}\",\n        \"2017-02-09T16:00\",\n        [\"10.02.17 ab 11:49\", \"10.02.17 ab 11:49\"],\n    ],\n    [\n        \"Interval[]{2017-02-15 20:35 (X/X) - None}\",\n        \"2017-02-14T13:20\",\n        [\"15.02.17 ab 08:35\"],\n    ],\n    [\n        \"Interval[]{2017-12-07 12:50 (X/X) - 2017-12-07 14:10 (X/X)}\",\n        \"2017-11-20T13:30\",\n        [\n            \"07.12.17 um 12:50 - 14:10 Uhr\",\n            \"07.12.17 um 12:50 - 14:10 Uhr\",\n            \"07.12.17 um 12:50 - 14:10 Uhr\",\n        ],\n    ],\n    [\n        \"Time[]{2017-06-01 X:X (X/X)}\",\n        \"2017-03-13T08:29\",\n        [\n            \"01.06.2017 19:35\",\n            \"am 01. Juni 2017\",\n            \"01.06.2017 19:35\",\n            \"01.06.2017 19:35\",\n            \"am 01. Juni 2017\",\n        ],\n    ],\n    [\n        \"Time[]{2017-10-02 X:X (X/X)}\",\n        \"2017-08-25T05:49\",\n        [\"02.10.2017 10:30\", \"02.10.2017 10:30\", \"02.10.2017 10:30\"],\n    ],\n    [\n        \"Time[]{2018-03-06 X:X (X/X)}\",\n        \"2018-02-26T13:53\",\n        [\n            \"06.03.2018 06:30 Uhr\",\n            \"06.03.2018 18:55 Uhr\",\n            \"6th March 2018\",\n            \"06.03.2018 06:30 Uhr\",\n            \"06.03.2018 18:55 Uhr\",\n            \"6th March 2018\",\n            \"06.03.2018 06:30 Uhr\",\n            \"06.03.2018 18:55 Uhr\",\n            \"6th March 2018\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-03-13 16:48 (X/X) - 2017-03-13 20:08 (X/X)}\",\n        \"2017-03-07T09:47\",\n        [\n            \"13.03.2017 um 16:48 - 20:08\",\n            \"13.03.2017 um 16:48 - 20:08\",\n            \"13.03.2017 um 16:48 - 20:08\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-04-07 21:00 (X/X) - 2017-04-07 22:00 (X/X)}\",\n        \"2017-03-20T18:46\",\n        [\n            \"07.04.2017 ca. 9-10 Uhr\",\n            \"07.04.2017 ca. 9-10 Uhr\",\n            \"07.04.2017 ca. 9-10 Uhr\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-04-03 22:00 (X/X) - 2017-04-03 23:00 (X/X)}\",\n        \"2017-03-20T18:46\",\n        [\n            \"03.04.2017 ca. 10 - 11 Uhr\",\n            \"03.04.2017 ca. 10 - 11 Uhr\",\n            \"03.04.2017 ca. 10 - 11 Uhr\",\n        ],\n    ],\n    [\n        \"Interval[]{2018-03-05 22:00 (X/X) - 2018-03-05 23:00 (X/X)}\",\n        \"2018-02-20T09:37\",\n        [\n            \"05.03.2018 ca. 10-11 Uhr\",\n            \"05.03.2018 ca. 10-11 Uhr\",\n            \"05.03.2018 ca. 10-11 Uhr\",\n        ],\n    ],\n    # int-int\n    [\n        \"Interval[]{2018-02-20 10:00 (X/X) - 2018-02-20 15:00 (X/X)}\",\n        \"2018-02-20T09:37\",\n        [\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n            \"today 10-15\",\n        ],\n    ],\n    [\n        \"Interval[]{2018-02-20 10:00 (X/X) - 2018-02-20 11:00 (X/X)}\",\n        \"2018-02-20T09:37\",\n        [\n            \"today 10-11am\",\n            \"today 10-11am\",\n            \"today 10-11am\",\n        ],\n    ],\n    [\n        \"Time[]{2017-06-23 22:00 (X/X)}\",\n        \"2017-06-02T09:41\",\n        [\"23.06.2017 ca. 10Uhr\", \"23.06.2017 ca. 10Uhr\"],\n    ],\n    # [\n    #     \"Interval[]{2018-02-20 21:00 (X/X) - 2018-02-21 03:00 (X/X)}\",\n    #     \"2018-02-20T09:37\",\n    #     [\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #         \"9pm-3am\",\n    #     ],\n    # ],\n    [\n        \"Interval[]{2018-02-20 X:X (X/X) - 2018-02-21 X:X (X/X)}\",\n        \"2018-02-16T08:59\",\n        [\"20.02.2018 bis 21.02.20178\"],\n    ],\n    [\n        \"Interval[]{2017-05-10 18:00 (X/X) - 2017-05-10 20:00 (X/X)}\",\n        \"2017-05-04T19:05\",\n        [\n            \"10.05.2017 gegen 18-20 Uhr\",\n            \"10.05.2017 gegen 18-20 Uhr\",\n            \"10.05.2017 gegen 18-20 Uhr\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-11-13 22:00 (X/X) - 2017-11-13 23:00 (X/X)}\",\n        \"2017-10-25T09:25\",\n        [\"13.11.2017 gegen 10-11 Uhr\", \"13.11.2017 gegen 10-11 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-04-24 21:30 (X/X) - 2017-04-24 22:00 (X/X)}\",\n        \"2017-04-13T12:41\",\n        [\n            \"24.04.2017 gegen 09:30 - 10:00 Uhr\",\n            \"24.04.2017 gegen 09:30 - 10:00 Uhr\",\n            \"24.04.2017 gegen 09:30 - 10:00 Uhr\",\n        ],\n    ],\n    [\n        \"Time[]{2018-03-02 14:00 (X/X)}\",\n        \"2018-02-23T15:38\",\n        [\n            \"02.03.2018 gegen 14:00 Uhr nachmittags\",\n            \"02.03.2018 gegen 14:00 Uhr nachmittags\",\n        ],\n    ],\n    [\n        \"Time[]{2017-07-18 X:X (X/evening)}\",\n        \"2017-07-11T09:03\",\n        [\"18/07 sp\\u00e4t abends\", \"18/07 sp\\u00e4t abends\", \"18/07 sp\\u00e4t abends\"],\n    ],\n    [\n        \"Time[]{2016-12-12 13:40 (X/X)}\",\n        \"2016-12-09T18:07\",\n        [\n            \"01:40 Mon 12 Dec 2016\",\n            \"01:40 Mon 12 Dec 2016\",\n            \"01:40 Mon 12 Dec 2016\",\n        ],\n    ],\n    [\n        \"Time[]{2017-11-20 20:25 (X/X)}\",\n        \"2017-11-14T08:41\",\n        [\n            \"08:25 Monday 20 November 2017\",\n            \"08:25 Monday 20 November 2017\",\n            \"08:25 Monday 20 November 2017\",\n        ],\n    ],\n    [\"Time[]{2017-08-02 15:42 (X/X)}\", \"2017-07-31T09:05\", [\"15:42 diesen Mittwoch\"]],\n    [\n        \"Time[]{2017-03-15 19:20 (X/X)}\",\n        \"2017-03-15T10:46\",\n        [\"15 Mar 19:20\", \"15 Mar 19:20\", \"15 Mar 19:20\"],\n    ],\n    [\"Time[]{2017-08-10 X:X (X/X)}\", \"2017-08-09T14:45\", [\"10 Aug\", \"10 Aug\"]],\n    [\"Time[]{2016-11-28 X:X (X/X)}\", \"2016-11-18T12:56\", [\"28 Nov 2016\", \"28 Nov 2016\"]],\n    [\"Time[]{2017-09-18 X:X (X/X)}\", \"2017-09-07T08:03\", [\"2017-09-18\", \"2017-09-18\"]],\n    [\"Time[]{2017-09-20 X:X (X/X)}\", \"2017-09-07T08:03\", [\"2017-09-20\", \"2017-09-20\"]],\n    [\n        \"Time[]{2016-10-30 X:X (X/X)}\",\n        \"2016-10-05T13:20\",\n        [\"2016-10-30 12:05\", \"2016-10-30 12:05\", \"2016-10-30 12:05\"],\n    ],\n    [\"Time[]{2016-12-16 19:55 (X/X)}\", \"2016-11-23T16:05\", [\"2016-12-16 19:55\"]],\n    [\"Time[]{2016-12-16 22:55 (X/X)}\", \"2016-11-23T16:05\", [\"2016-12-16 22:55\"]],\n    [\"Time[]{2016-12-17 13:25 (X/X)}\", \"2016-11-23T18:55\", [\"2016-12-17 01:25\"]],\n    [\"Time[]{2016-12-17 14:55 (X/X)}\", \"2016-11-23T16:05\", [\"2016-12-17 02:55\"]],\n    [\"Time[]{2016-12-17 17:50 (X/X)}\", \"2016-11-23T18:55\", [\"2016-12-17 05:50\"]],\n    [\"Time[]{2016-12-17 19:00 (X/X)}\", \"2016-11-23T18:55\", [\"2016-12-17 07:00\"]],\n    [\"Time[]{2016-12-17 19:20 (X/X)}\", \"2016-11-23T16:05\", [\"2016-12-17 07:20\"]],\n    [\"Time[]{2016-12-17 20:15 (X/X)}\", \"2016-11-23T18:55\", [\"2016-12-17 08:15\"]],\n    [\"Time[]{2016-12-17 12:00 (X/X)}\", \"2016-11-23T16:05\", [\"2016-12-17 12:00\"]],\n    [\"Time[]{2016-12-17 13:05 (X/X)}\", \"2016-11-23T16:05\", [\"2016-12-17 13:05\"]],\n    [\n        \"Time[]{2016-05-16 X:X (X/X)}\",\n        \"2016-03-04T16:16\",\n        [\"16th May 2016\", \"16th May 2016\", \"16th May 2016\"],\n    ],\n    [\n        \"Time[]{2017-09-05 X:X (X/X)}\",\n        \"2017-06-27T10:47\",\n        [\"05th September 2017\", \"05th September 2017\"],\n    ],\n    [\n        \"Time[]{2018-04-07 X:X (X/X)}\",\n        \"2018-03-05T14:43\",\n        [\"07th April 2018\", \"07th April 2018\", \"07th April 2018\"],\n    ],\n    [\n        \"Time[]{2018-02-10 X:X (X/X)}\",\n        \"2018-01-29T03:05\",\n        [\"10th February 2018\", \"10th February 2018\"],\n    ],\n    [\n        \"Time[]{2018-03-11 X:X (X/X)}\",\n        \"2017-11-10T12:37\",\n        [\"11th March 2018\", \"11th March 2018\"],\n    ],\n    [\n        \"Time[]{2016-11-24 12:50 (X/X)}\",\n        \"2016-11-16T16:38\",\n        [\"24th 12:50\", \"24th 12:50\"],\n    ],\n    [\n        \"Time[]{2016-12-24 X:X (X/X)}\",\n        \"2016-12-11T21:39\",\n        [\"24th 25th December\", \"24th 25th December\", \"24th 25th December\"],\n    ],\n    [\n        \"Time[]{2017-05-10 X:X (X/X)}\",\n        \"2017-05-08T15:39\",\n        [\"10th of May 2017\", \"10th of May 2017\", \"10th of May 2017\"],\n    ],\n    [\n        \"Time[]{2018-01-12 X:X (X/X)}\",\n        \"2017-10-25T07:59\",\n        [\"am Fr. 12. Januar 2018\", \"am Fr. 12. Januar 2018\"],\n    ],\n    [\n        \"Time[]{2018-03-30 X:X (X/evening)}\",\n        \"2018-03-11T21:48\",\n        [\"am Donnerstag Abend 30.3\"],\n    ],\n    [\n        \"Time[]{2018-05-25 18:45 (X/X)}\",\n        \"2018-04-11T10:04\",\n        [\n            \"on Friday 25 may at 18:45 in the evening\",\n            \"on Friday 25 may at 18:45 in the evening\",\n        ],\n    ],\n    [\n        \"Time[]{2018-02-23 X:X (X/X)}\",\n        \"2018-01-05T16:44\",\n        [\"on Friday 23rd\", \"ab Freitag 23.02.2018\", \"on Friday 23/2/2018\"],\n    ],\n    [\"Time[]{2018-01-18 X:X (X/X)}\", \"2018-01-16T15:09\", [\"am Donnerstag den 18.\"]],\n    [\n        \"Time[]{2017-11-08 X:X (X/X)}\",\n        \"2017-09-05T08:17\",\n        [\"am Mittwoch, den 08. November 2017\", \"am Mittwoch, den 08. November 2017\"],\n    ],\n    [\"Time[]{2017-05-03 X:X (X/X)}\", \"2017-04-24T12:02\", [\"am 3.\"]],\n    [\"Time[]{2017-07-15 X:X (X/X)}\", \"2017-06-21T11:02\", [\"am 15\"]],\n    [\"Time[]{2017-08-07 X:X (X/X)}\", \"2017-08-04T14:25\", [\"am 07.\"]],\n    [\"Time[]{2016-11-13 X:X (X/X)}\", \"2016-10-18T07:23\", [\"am 13.\"]],\n    [\n        \"Time[]{2016-06-13 X:X (X/X)}\",\n        \"2016-03-21T11:20\",\n        [\"am 13. Juni 2016\", \"am 13. Juni 2016\"],\n    ],\n    [\n        \"Time[]{2018-03-12 X:X (X/morning)}\",\n        \"2018-03-02T11:56\",\n        [\"am 12. M\\u00e4rz 2018 morgens\"],\n    ],\n    # [\n    #     \"Time[]{2018-06-13 X:X (X/morning)}\",\n    #     \"2018-03-26T10:02\",\n    #     [\"am 13. Juni 2018 morgens\"],\n    # ],\n    [\n        \"Time[]{2016-11-16 21:50 (X/X)}\",\n        \"2016-11-03T10:07\",\n        [\"am 16. November 2016 09:50 Uhr\"],\n    ],\n    [\n        \"Time[]{2022-12-24 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"12/24\", \"12/24\", \"24.12\", \"12.24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\",\n         \"12\"\n         \"/24\", \"12/24\"],\n    ],\n    [\n        \"Time[]{2023-08-15 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"meet with adam 8/15\", \"meet with adam 8/15\", \"meet with adam 8/15\", \"meet with adam 8/15\",\n         \"meet with martin 8/15\", \"meet with adam 8/15\", \"meet with adam 8/15\", \"meet with martin 8/15\",\n         \"meet with adam 8/15\", \"meet with adam 8/15\", \"meet with \"\n                                                       \"martin 8/15\",\n         'meet with adam 8/15'],\n    ],\n    [\n        \"Time[]{2022-12-20 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"meet with adam 12/20\", \"meet with adam 12/20\", \"meet with adam 12/20\", \"meet with adam 12/20\",\n         \"meet with adam 12/20\", \"meet with adam 12/20\", \"meet with adam 12/20\", \"meet with adam 12/20\",\n         \"meet with adam 12/20\", \"meet with martin 12/20\",\n         \"meet with martin 12/20\", \"meet with martin 12/20\"],\n    ],\n    [\n        \"Time[]{2023-03-13 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"3/13\", \"3/13\", \"3/13\", \"3/13\", \"3/13\", \"3/13\", \"3/13\", \"3/13\", \"3/13\", \"3/13\"],\n    ],\n    [\n        \"Time[]{2023-06-14 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"6/14\", \"6/14\", \"6/14\", \"6/14\", \"6/14\", \"6/14\", \"6/14\", \"6/14\"],\n    ],\n    [\n        \"Time[]{2023-10-19 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"10/19\", \"10/19\", \"10/19\", \"10/19\", \"10/19\", \"10/19\", \"10/19\", \"10/19\"],\n    ],\n    [\n        \"Time[]{2022-12-30 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\", \"12/30\"],\n    ],\n    [\n        \"Time[]{2022-12-24 X:X (X/X)}\",\n        \"2022-11-30T10:07\",\n        [\"12/24\", \"24.12\", \"12.24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12/24\", \"12\"\n                                                                                                            \"/24\",\n         \"12/24\"],\n    ],\n    [\n        \"Time[]{2017-10-04 X:X (X/evening)}\",\n        \"2017-09-25T14:37\",\n        [\"am 04. Oktober 2017 abends\"],\n    ],\n    [\n        \"Interval[]{None - 2017-11-20 22:30 (X/X)}\",\n        \"2017-11-07T14:16\",\n        [\"am 20. November 2017 sp\\u00e4testens 10:30 Uhr\"],\n    ],\n    # [\"Time[]{2018-04-11 X:X (X/morning)}\", \"2018-03-27T12:23\", [\"am 11. morgens\"]],\n    # [\"Time[]{2018-02-14 X:X (X/morning)}\", \"2018-01-17T11:48\", [\"am 14. morgens\"]],\n    # [\n    #     \"Time[]{2017-11-14 X:X (X/X)}\",\n    #     \"2017-09-07T12:57\",\n    #     [\"am 14.November 2017\", \"am 14.November 2017\"],\n    # ],\n    # [\n    #     \"Time[]{2017-01-20 X:X (X/morning)}\",\n    #     \"2016-11-15T10:25\",\n    #     [\"am 20.Januar 2017 morgens\"],\n    # ],\n    # [\n    #     \"Time[]{2016-08-15 X:X (X/afternoon)}\",\n    #     \"2016-06-23T11:34\",\n    #     [\"am 15.8. am Nachmittag\"],\n    # ],\n    # [\"Time[]{2018-04-15 X:X (X/evening)}\", \"2018-03-14T15:40\", [\"am 15.04 am Abend\"]],\n    # [\n    #     \"Time[]{2018-04-11 X:X (X/lateafternoon)}\",\n    #     \"2018-03-16T11:54\",\n    #     [\"am 11.04 sp\\u00e4tnachmittags\"],\n    # ],\n    # [\n    #     \"Time[]{2017-12-15 X:X (X/lateevening)}\",\n    #     \"2017-12-08T10:34\",\n    #     [\"am 15.12 sp\\u00e4t abends\"],\n    # ],\n    # [\n    #     \"Time[]{2018-03-16 X:X (X/afternoon)}\",\n    #     \"2018-03-08T04:32\",\n    #     [\"am 16.03. am Nachmittag\"],\n    # ],\n    # [\n    #     \"Time[]{2017-12-17 X:X (X/afternoon)}\",\n    #     \"2017-12-12T06:45\",\n    #     [\"am 17.12. am Nachmittag\"],\n    # ],\n    # [\"Time[]{2018-01-25 X:X (X/evening)}\", \"2018-01-16T17:07\", [\"am 25.01. am Abend\"]],\n    # [\n    #     \"Time[]{2018-01-02 X:X (X/afternoon)}\",\n    #     \"2017-12-18T08:47\",\n    #     [\"am 02.01. am nachmittag\"],\n    # ],\n    [\n        \"Interval[]{2017-08-28 20:15 (X/X) - 2017-08-28 21:20 (X/X)}\",\n        \"2017-08-22T12:26\",\n        [\"am 28.08.17 08:15 - 09:20\", \"am 28.08.17 08:15 - 09:20\"],\n    ],\n    [\n        \"Interval[]{2018-03-02 14:30 (X/X) - 2018-03-02 16:00 (X/X)}\",\n        \"2018-02-16T17:50\",\n        [\"am 02.03.18 14:30 - 16:00 Uhr\", \"am 02.03.18 14:30 - 16:00 Uhr\"],\n    ],\n    [\n        \"Interval[]{2018-05-04 17:35 (X/X) - 2018-05-04 18:30 (X/X)}\",\n        \"2018-03-26T08:13\",\n        [\"am 04.05.18 17:35 - 18:30 Uhr\", \"am 04.05.18 17:35 - 18:30 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-12-21 15:30 (X/X) - 2017-12-21 16:40 (X/X)}\",\n        \"2017-11-22T12:23\",\n        [\"am 21.12.17 15:30 - 16:40\", \"am 21.12.17 15:30 - 16:40\"],\n    ],\n    [\n        \"Interval[]{2018-03-14 17:45 (X/X) - 2018-03-14 19:10 (X/X)}\",\n        \"2018-03-01T12:42\",\n        [\"am 14.03.18 17:45 -- 19:10 Uhr\", \"am 14.03.18 17:45 -- 19:10 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-11-02 15:00 (X/X) - 2017-11-02 18:00 (X/X)}\",\n        \"2017-10-17T08:57\",\n        [\"am 02.11.2017 15-18 Uhr\", \"am 02.11.2017 15-18 Uhr\"],\n    ],\n    [\n        \"Interval[]{2018-04-04 19:10 (X/X) - 2018-04-04 20:20 (X/X)}\",\n        \"2018-03-29T11:39\",\n        [\"am 04.04.2018 07:10 - 08:20\", \"am 04.04.2018 07:10 - 08:20\"],\n    ],\n    [\n        \"Interval[]{2018-02-06 19:10 (X/X) - 2018-02-06 20:40 (X/X)}\",\n        \"2017-12-22T09:56\",\n        [\"am 06.02.2018 07:10 - 08:40\", \"am 06.02.2018 07:10 - 08:40\"],\n    ],\n    [\n        \"Interval[]{2018-02-06 19:50 (X/X) - 2018-02-06 21:15 (X/X)}\",\n        \"2017-12-22T09:56\",\n        [\"am 06.02.2018 19:50 - 21:15\", \"am 06.02.2018 19:50 - 21:15\"],\n    ],\n    [\n        \"Interval[]{2018-03-07 16:03 (X/X) - 2018-03-07 20:07 (X/X)}\",\n        \"2018-02-19T09:03\",\n        [\"am 07.03.2018 16:03 - 20:07\", \"am 07.03.2018 16:03 - 20:07\"],\n    ],\n    [\n        \"Interval[]{2017-06-12 18:50 (X/X) - 2017-06-12 20:00 (X/X)}\",\n        \"2017-06-08T11:07\",\n        [\"am 12.06.2017 06:50 - 08:00\", \"am 12.06.2017 06:50 - 08:00\"],\n    ],\n    [\n        \"Interval[]{2017-11-16 18:05 (X/X) - 2017-11-16 19:35 (X/X)}\",\n        \"2017-11-09T11:59\",\n        [\"am 16.11.2017 18:05 - 19:35 Uhr\", \"am 16.11.2017 18:05 - 19:35 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-07-17 19:00 (X/X) - 2017-07-17 21:00 (X/X)}\",\n        \"2017-07-11T11:53\",\n        [\"am 17.07.2017 07:00-09:00 Uhr\", \"am 17.07.2017 07:00-09:00 Uhr\"],\n    ],\n    [\n        \"Time[]{2018-06-07 19:00 (X/X)}\",\n        \"2018-03-05T13:15\",\n        [\"am 07.06.2018 um 07.00 Uhr morgens\"],\n    ],\n    [\n        \"Interval[]{X-X-X 20:00 (X/X) - None}\",\n        \"2017-06-14T15:35\",\n        [\"ab 08:00 Uhr\", \"ab 08:00 Uhr\", \"ab 08:00 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-07-20 18:00 (X/X) - None}\",\n        \"2017-06-23T08:54\",\n        [\"ab 18:00 Uhr 20.07.2017\"],\n    ],\n    [\n        \"Interval[]{2016-11-28 08:00 (X/X) - None}\",\n        \"2016-11-14T13:36\",\n        [\"ab 08:00 Uhr am 28.11.2016\"],\n    ],\n    [\n        \"Interval[]{X-X-X 16:00 (X/X) - None}\",\n        \"2016-12-16T08:09\",\n        [\"ab 16Uhr\", \"ab 16Uhr\", \"ab 16Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-02-10 14:00 (X/X) - None}\",\n        \"2017-01-29T14:13\",\n        [\"ab 14h am 10.02.2017\"],\n    ],\n    [\n        \"Time[]{2018-03-22 X:X (X/X)}\",\n        \"2018-03-15T11:38\",\n        [\"on the 22.\", \"Donnerstag 22.3.\"],\n    ],\n    [\n        \"Time[]{2017-01-24 X:X (X/evening)}\",\n        \"2017-01-24T13:24\",\n        [\"ab heute Abend\", \"ab heute Abend\", \"ab heute Abend\"],\n    ],\n    [\n        \"Interval[]{2022-12-05 X:X (X/X) - 2022-12-06 X:X (X/X)}\",\n        \"2022-11-29T15:35\",\n        [\n            \"Monday to tuesday\",\n            \"Monday to tuesday\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-10 X:X (X/X)}\",\n        \"2017-10-12T07:20\",\n        [\"vom 8.11 bis 10.11\"],\n    ],\n    [\"Time[]{2017-06-12 X:X (X/X)}\", \"2017-06-08T08:38\", [\"the 12.\"]],\n    [\"Time[]{2017-03-09 X:X (X/X)}\", \"2017-03-07T07:36\", [\"vom 09.\"]],\n    [\n        \"Time[]{2018-04-20 X:X (X/noon)}\",\n        \"2018-04-05T08:59\",\n        [\"vom 16. - 20. April Mittags\", \"vom 16. - 20. April Mittags\"],\n    ],\n    [\n        \"Interval[]{2017-09-04 X:X (X/X) - 2017-09-06 X:X (X/X)}\",\n        \"2017-08-24T12:11\",\n        [\"vom 04.09 bis 06.09\"],\n    ],\n    [\n        \"Interval[]{2018-02-07 X:X (X/X) - 2018-02-08 X:X (X/X)}\",\n        \"2018-01-11T16:34\",\n        [\"vom 07.02 bis 08.02\"],\n    ],\n    [\n        \"Interval[]{2017-05-12 X:X (X/X) - 2017-05-13 X:X (X/X)}\",\n        \"2017-04-13T10:10\",\n        [\"vom 12.05 bis 13.05\"],\n    ],\n    [\n        \"Interval[]{2017-08-14 X:X (X/X) - 2017-08-16 X:X (X/X)}\",\n        \"2017-07-21T08:09\",\n        [\"vom 14.08 bis 16.08\"],\n    ],\n    [\n        \"Interval[]{2017-03-15 X:X (X/X) - 2017-03-16 X:X (X/X)}\",\n        \"2017-03-14T08:54\",\n        [\"vom 15.03 bis 16.03\"],\n    ],\n    [\n        \"Interval[]{2017-01-16 X:X (X/X) - 2017-01-19 X:X (X/X)}\",\n        \"2017-01-10T08:23\",\n        [\"vom 16.01 bis 19.01\"],\n    ],\n    [\n        \"Interval[]{2018-02-18 X:X (X/X) - 2018-02-23 X:X (X/X)}\",\n        \"2018-02-12T13:36\",\n        [\"vom 18.02 bis 23.02\"],\n    ],\n    [\n        \"Time[]{2018-01-04 21:00 (X/X)}\",\n        \"2017-12-18T15:50\",\n        [\"vom 02.01. - 04.01. um 21:00 Uhr\", \"vom 02.01. - 04.01. um 21:00 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-06-07 X:X (X/X) - 2017-06-08 X:X (X/X)}\",\n        \"2017-06-06T10:56\",\n        [\"f\\u00fcr 07.06. bis 08.06\"],\n    ],\n    [\n        \"Interval[]{2017-11-02 X:X (X/X) - 2017-11-03 X:X (X/X)}\",\n        \"2017-10-16T13:21\",\n        [\"vom 02.11. bis 03.11\"],\n    ],\n    [\n        \"Interval[]{2017-02-07 X:X (X/X) - 2017-02-10 X:X (X/X)}\",\n        \"2017-02-03T09:16\",\n        [\"vom 07.02. bis 10.02\"],\n    ],\n    [\n        \"Interval[]{2017-01-09 X:X (X/X) - 2017-01-10 X:X (X/X)}\",\n        \"2017-01-04T08:44\",\n        [\"vom 09.01. bis 10.01\"],\n    ],\n    [\n        \"Interval[]{2017-07-10 X:X (X/X) - 2017-07-12 X:X (X/X)}\",\n        \"2017-06-20T11:06\",\n        [\"vom 10.07. bis 12.07\"],\n    ],\n    [\n        \"Time[]{2017-07-06 16:00 (X/X)}\",\n        \"2017-07-06T06:10\",\n        [\"06.07 16:00\", \"06.07 16:00\", \"06.07 16:00\"],\n    ],\n    [\n        \"Interval[]{None - 2016-10-04 08:30 (X/X)}\",\n        \"2016-09-07T14:13\",\n        [\"vor 08:30 Uhr am 04.10.\"],\n    ],\n    [\n        \"Time[]{2017-07-05 X:X (X/morning)}\",\n        \"2017-07-04T15:51\",\n        [\"morgen Mittwoch\", \"morgen Mittwoch\"],\n    ],\n    [\n        \"Time[]{2017-08-02 18:30 (X/X)}\",\n        \"2017-07-25T15:21\",\n        [\"kommenden Mittwoch den 02.August 2017 06:30\"],\n    ],\n    # [\"Time[]{2017-10-26 X:X (X/first)}\", \"2017-10-25T12:42\", [\"earliest 26.10\"]],\n    [\n        \"Interval[]{2017-02-06 X:X (X/X) - 2017-02-07 X:X (X/X)}\",\n        \"2017-02-06T13:13\",\n        [\n            \"heute 06.02 bis morgen 7.02\",\n            \"heute 06.02 bis morgen 7.02\",\n            \"heute 06.02 bis morgen 7.02\",\n        ],\n    ],\n    # [\n    #     \"Interval[]{None - 2017-12-15 X:X (X/afternoon)}\",\n    #     \"2017-12-14T20:43\",\n    #     [\"tomorrow 15.12 before afternoon\"],\n    # ],\n    [\n        \"Time[]{2016-11-21 X:X (X/X)}\",\n        \"2016-11-21T16:18\",\n        [\"heute 21.11.\", \"heute 21.11.\", \"heute 21.11.\"],\n    ],\n    [\n        \"Interval[]{2016-10-05 18:00 (X/X) - None}\",\n        \"2016-09-07T14:13\",\n        [\n            \"nach 18:00 Uhr am 05.10.\",\n            \"nach 18:00 Uhr am 05.10.\",\n            \"nach 18:00 Uhr am 05.10.\",\n        ],\n    ],\n    [\n        \"Interval[]{2018-02-07 15:00 (X/X) - None}\",\n        \"2018-01-30T12:32\",\n        [\"nach 15:00 Uhr am 07.02.2018\"],\n    ],\n    [\n        \"Interval[]{X-X-X 16:00 (X/X) - None}\",\n        \"2016-09-17T08:01\",\n        [\"after 4pm\", \"after 4pm\", \"after 4pm\"],\n    ],\n    [\n        \"Interval[]{X-X-X 19:00 (X/X) - None}\",\n        \"2017-11-22T07:12\",\n        [\"abends ab 19:00\", \"abends ab 19:00\", \"abends ab 19:00\"],\n    ],\n    [\"Time[]{2016-09-09 X:X (X/morning)}\", \"2016-09-08T11:04\", [\"morgen frueh\"]],\n    [\n        \"Interval[]{2017-11-02 14:00 (X/X) - 2017-11-02 16:00 (X/X)}\",\n        \"2017-11-02T07:03\",\n        [\n            \"heute zwischen 14 und 16 Uhr\",\n            \"heute zwischen 14 und 16 Uhr\",\n            \"heute zwischen 14 und 16 Uhr\",\n        ],\n    ],\n    [\n        \"Interval[]{2017-11-14 07:30 (X/X) - 2017-11-14 12:52 (X/X)}\",\n        \"2017-11-13T09:59\",\n        [\"morgen, den 14.11.2017 07:30 - 12:52 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-11-06 X:X (X/X)}\",\n        \"2017-11-03T07:20\",\n        [\n            \"KW 45 bis KW 51 von montags bis freitags 06.11.2017\",\n            \"on Monday - 06.11.2017\",\n            \"KW 45 bis KW 51 von montags bis freitags 06.11.2017\",\n            \"November 6, 2017\",\n            \"Montag 06.11\",\n            \"on Monday - 06.11.2017\",\n        ],\n    ],\n    [\"Time[]{2017-07-07 X:X (X/X)}\", \"2017-05-31T08:47\", [\"Am Freitag 07.07.2017\"]],\n    [\n        \"Time[]{2017-06-29 X:X (X/X)}\",\n        \"2017-06-19T12:47\",\n        [\"Am Donnerstag den 29.06\", \"Am Donnerstag den 29.06\"],\n    ],\n    [\n        \"Interval[]{2017-06-26 19:50 (X/X) - 2017-06-26 22:00 (X/X)}\",\n        \"2017-06-20T11:10\",\n        [\"Mon 26th June 07:50-10:00\"],\n    ],\n    [\n        \"Time[]{2016-11-17 13:51 (X/X)}\",\n        \"2016-11-14T08:48\",\n        [\"Donnerstag Nachmittag 13:51\"],\n    ],\n    [\n        \"Time[]{2017-12-21 19:00 (X/X)}\",\n        \"2017-12-18T10:37\",\n        [\n            \"Diesen Donnerstag, 21.12. gegen 07:00\",\n            \"Diesen Donnerstag, 21.12. gegen 07:00\",\n        ],\n    ],\n    [\"Time[]{2017-11-02 17:50 (X/X)}\", \"2017-10-29T18:23\", [\"Thurs 2 Nov 1750\"]],\n    [\"Time[]{2017-10-06 14:00 (X/X)}\", \"2017-09-29T13:47\", [\"Freitag 14 Uhr\"]],\n    [\"Time[]{2017-10-12 22:45 (X/X)}\", \"2017-10-09T09:05\", [\"Donnerstag 10:45 Uhr\"]],\n    [\n        \"Time[]{2017-09-07 X:X (X/X)}\",\n        \"2017-05-23T12:46\",\n        [\"Donnerstag 07.09.17\", \"am Donnerstag 7.9.2017\", \"am Donnerstag 07.09.17\"],\n    ],\n    [\"Time[]{2016-12-15 X:X (X/X)}\", \"2016-11-29T08:43\", [\"Donnerstag 15.12.16\"]],\n    [\"Time[]{2017-08-24 X:X (X/X)}\", \"2017-08-16T07:10\", [\"Donnerstag 24.08.17\"]],\n    [\"Time[]{2017-04-07 X:X (X/X)}\", \"2017-03-06T13:32\", [\"Freitag 07.04.17\"]],\n    [\"Time[]{2017-11-03 X:X (X/X)}\", \"2017-11-01T07:20\", [\"Donnerstag 03.11.2017\"]],\n    [\"Time[]{2017-04-06 X:X (X/X)}\", \"2017-03-09T14:13\", [\"Donnerstag 06.04.2017\"]],\n    [\"Time[]{2018-06-07 X:X (X/X)}\", \"2017-11-16T09:29\", [\"Donnerstag 07.06.2018\"]],\n    [\"Time[]{2018-02-08 X:X (X/X)}\", \"2017-11-16T09:29\", [\"Donnerstag 08.02.2018\"]],\n    [\n        \"Time[]{2018-03-08 X:X (X/X)}\",\n        \"2017-11-16T09:29\",\n        [\"Donnerstag 08.03.2018\", \"am Donnerstag 08.03.2018\"],\n    ],\n    [\"Time[]{2018-01-11 X:X (X/X)}\", \"2017-11-16T09:29\", [\"Donnerstag 11.01.2018\"]],\n    [\n        \"Time[]{2018-04-12 X:X (X/X)}\",\n        \"2017-11-16T09:29\",\n        [\"Donnerstag 12.04.2018\", \"Donnerstag 12.04.\"],\n    ],\n    [\"Time[]{2017-07-03 18:48 (X/X)}\", \"2017-06-30T13:27\", [\"Montag 06:48h\"]],\n    [\"Time[]{2016-04-14 14:50 (X/X)}\", \"2016-04-12T16:36\", [\"Donnerstag 14:50\"]],\n    [\"Time[]{2017-05-12 23:30 (X/X)}\", \"2017-05-08T12:58\", [\"Freitag 11:30\"]],\n    [\"Time[]{2016-04-20 16:30 (X/X)}\", \"2016-04-15T11:21\", [\"Mittwoch 16:30\"]],\n    [\"Time[]{2018-01-31 17:00 (X/X)}\", \"2018-01-25T11:04\", [\"Mittwoch 17:00\"]],\n    [\"Time[]{2018-02-06 17:00 (X/X)}\", \"2018-02-02T13:47\", [\"Dienstag 05:00 Uhr\"]],\n    [\"Time[]{2017-05-30 18:24 (X/X)}\", \"2017-05-29T06:22\", [\"Dienstag 06:24 Uhr\"]],\n    [\"Time[]{2018-02-20 16:00 (X/X)}\", \"2018-02-16T10:44\", [\"Dienstag 16:00 Uhr\"]],\n    [\"Time[]{2017-05-30 16:25 (X/X)}\", \"2017-05-29T06:22\", [\"Dienstag 16:25 Uhr\"]],\n    [\n        \"Interval[]{2017-07-10 18:30 (X/X) - 2017-07-10 19:50 (X/X)}\",\n        \"2017-05-31T07:58\",\n        [\"Monday 10th of July 18:30 - 19:50\"],\n    ],\n    [\n        \"Time[]{2017-06-28 22:10 (X/X)}\",\n        \"2017-06-22T07:47\",\n        [\"Wednesday 28th of June 10:10SXF\"],\n    ],\n    [\"Time[]{2016-04-07 17:00 (X/X)}\", \"2016-04-05T12:38\", [\"Donnerstag 5pm\"]],\n    [\n        \"Time[]{2017-03-09 20:35 (X/X)}\",\n        \"2017-02-24T10:51\",\n        [\"Sunday 9th of March 20:35CDG\"],\n    ],\n    [\n        \"Interval[]{2017-06-12 18:00 (X/X) - None}\",\n        \"2017-06-08T08:38\",\n        [\"Monday evening 12.06.2017 after 18:00\"],\n    ],\n    [\"Time[]{2017-05-18 18:00 (X/X)}\", \"2017-05-15T11:59\", [\"Donnerstag abend 18:00\"]],\n    [\"Time[]{2017-01-03 X:X (X/X)}\", \"2016-12-14T08:33\", [\"Dienstag, 3.1.2017\"]],\n    [\"Time[]{2017-01-24 X:X (X/X)}\", \"2016-12-14T08:33\", [\"Dienstag, 24.1.2017\"]],\n    [\"Time[]{2016-11-25 10:00 (X/X)}\", \"2016-11-22T15:30\", [\"Friday, 25.11. 10 am\"]],\n    [\n        \"Time[]{2017-09-14 X:X (X/X)}\",\n        \"2017-09-01T10:01\",\n        [\"Donnerstag 14.09.17\", \"Donnerstag 14.09\"],\n    ],\n    [\"Time[]{2016-06-16 X:X (X/X)}\", \"2016-06-03T09:37\", [\"Donnerstag 16.06.16\"]],\n    [\"Time[]{2018-02-01 X:X (X/X)}\", \"2018-01-19T15:29\", [\"Donnerstag 01.02.2018\"]],\n    [\"Time[]{2017-05-05 12:55 (X/X)}\", \"2017-05-03T18:24\", [\"Freitag 12:55\"]],\n    [\n        \"Time[]{2017-11-17 16:10 (X/X)}\",\n        \"2017-11-09T10:54\",\n        [\"Friday 17th Nov 4:10 pm\"],\n    ],\n    [\"Time[]{2018-02-02 00:45 (X/X)}\", \"2018-01-15T16:51\", [\"2 FEB 00:45\"]],\n    [\"Time[]{2018-02-07 20:00 (X/X)}\", \"2018-01-08T21:10\", [\"7 FEB 08:00\"]],\n    [\"Time[]{2018-04-06 16:30 (X/X)}\", \"2018-03-29T09:26\", [\"6 APRIL 16:30\"]],\n    [\"Time[]{2017-12-01 19:10 (X/X)}\", \"2017-11-20T19:42\", [\"1 Dec 0710\"]],\n    [\"Time[]{2017-12-01 20:15 (X/X)}\", \"2017-11-20T19:42\", [\"1 Dec 0815\"]],\n    [\"Time[]{2018-02-02 17:25 (X/X)}\", \"2018-01-24T10:06\", [\"2 Feb 0525\"]],\n    [\"Time[]{2018-01-02 14:30 (X/X)}\", \"2017-12-09T12:31\", [\"2 Jan 1430\"]],\n    [\"Time[]{2018-01-02 23:25 (X/X)}\", \"2017-12-09T12:31\", [\"2 Jan 2325\"]],\n    [\"Time[]{2017-11-02 12:35 (X/X)}\", \"2017-08-25T12:23\", [\"2 Nov 1235\"]],\n    [\"Time[]{2017-11-02 18:15 (X/X)}\", \"2017-08-25T12:23\", [\"2 Nov 1815\"]],\n    [\"Time[]{2017-11-02 19:40 (X/X)}\", \"2017-10-25T09:35\", [\"2 Nov 1940\"]],\n    [\"Time[]{2017-12-03 20:25 (X/X)}\", \"2017-11-20T19:42\", [\"3 Dec 2025\"]],\n    [\"Time[]{2017-12-03 21:25 (X/X)}\", \"2017-11-20T19:42\", [\"3 Dec 2125\"]],\n    [\"Time[]{2018-03-09 19:55 (X/X)}\", \"2018-02-20T11:11\", [\"9 March 0755\"]],\n    [\"Time[]{2016-10-04 22:35 (X/X)}\", \"2016-09-12T08:20\", [\"4. Okt 22:35\"]],\n    [\"Time[]{2017-06-01 14:15 (X/X)}\", \"2017-05-12T15:32\", [\"1. Juni 14:15\"]],\n    [\"Time[]{2017-07-05 21:34 (X/X)}\", \"2017-06-29T14:30\", [\"5. Juli 09:34\"]],\n    [\"Time[]{2017-07-05 13:47 (X/X)}\", \"2017-06-29T14:30\", [\"5. Juli 13:47\"]],\n    [\"Time[]{2017-06-02 22:20 (X/X)}\", \"2017-05-12T15:32\", [\"2. Juni 10:20 Uhr\"]],\n    [\"Time[]{2017-09-06 22:30 (X/X)}\", \"2017-08-07T14:26\", [\"6. Sept 10:30\"]],\n    [\"Time[]{2018-02-08 18:35 (X/X)}\", \"2018-01-17T10:14\", [\"8. Februar 6:35\"]],\n    [\"Time[]{2017-08-02 16:45 (X/X)}\", \"2017-07-10T10:57\", [\"2. August 16:45\"]],\n    [\"Time[]{2016-04-07 12:30 (X/X)}\", \"2016-03-30T12:28\", [\"7. April 12:30h\"]],\n    [\"Time[]{2017-12-04 21:30 (X/X)}\", \"2017-11-24T12:39\", [\"4. Dezember 21:30\"]],\n    [\"Time[]{2017-08-01 14:08 (X/X)}\", \"2017-07-31T11:31\", [\"1. August 14:08 Uhr\"]],\n    [\"Time[]{2017-10-06 X:X (X/X)}\", \"2017-09-28T10:01\", [\"6. 10.\"]],\n    [\"Time[]{2017-02-07 18:05 (X/X)}\", \"2016-12-16T09:02\", [\"7.2.2017 um 18:05\"]],\n    [\"Time[]{2017-03-24 19:05 (X/X)}\", \"2017-03-13T15:25\", [\"7:05 Friday 24. march\"]],\n    [\"Time[]{2017-07-02 15:10 (X/X)}\", \"2017-05-31T12:41\", [\"02 JUL 15:10\"]],\n    [\"Time[]{2017-07-02 16:30 (X/X)}\", \"2017-05-31T12:41\", [\"02 JUL 16:30\"]],\n    [\"Time[]{2018-01-04 12:20 (X/X)}\", \"2017-12-06T12:36\", [\"04 JAN 12:20\"]],\n    [\"Time[]{2017-06-04 19:45 (X/X)}\", \"2017-05-17T09:16\", [\"04 JUN 07:45\"]],\n    [\"Time[]{2017-06-04 21:35 (X/X)}\", \"2017-05-17T09:16\", [\"04 JUN 09:35\"]],\n    [\"Time[]{2018-01-05 00:10 (X/X)}\", \"2017-12-06T12:36\", [\"05 JAN 00:10\"]],\n    [\"Time[]{2017-07-06 20:00 (X/X)}\", \"2017-05-30T13:31\", [\"06 JUL 20:00\"]],\n    [\"Time[]{2017-07-06 21:45 (X/X)}\", \"2017-05-30T13:31\", [\"06 JUL 21:45\"]],\n    [\"Time[]{2017-06-06 20:45 (X/X)}\", \"2017-05-17T09:16\", [\"06 JUN 20:45\"]],\n    [\"Time[]{2017-06-06 22:35 (X/X)}\", \"2017-05-17T09:16\", [\"06 JUN 22:35\"]],\n    [\"Time[]{2017-07-07 19:05 (X/X)}\", \"2017-06-21T10:04\", [\"07 JUL 07:05\"]],\n    [\"Time[]{2017-07-07 17:25 (X/X)}\", \"2017-06-21T10:04\", [\"07 JUL 17:25\"]],\n    [\"Time[]{2017-07-07 19:10 (X/X)}\", \"2017-05-30T13:31\", [\"07 JUL 19:10\"]],\n    [\"Time[]{2017-06-07 19:55 (X/X)}\", \"2017-05-17T09:16\", [\"07 JUN 07:55\"]],\n    [\"Time[]{2017-06-07 20:50 (X/X)}\", \"2017-05-17T09:16\", [\"07 JUN 08:50\"]],\n    [\"Time[]{2017-06-08 21:50 (X/X)}\", \"2017-05-17T09:16\", [\"08 JUN 09:50\"]],\n    [\"Time[]{2018-01-10 19:10 (X/X)}\", \"2017-12-30T15:14\", [\"10 JAN 19:10\"]],\n    [\"Time[]{2018-01-10 22:05 (X/X)}\", \"2017-12-30T15:14\", [\"10 JAN 22:05\"]],\n    [\"Time[]{2017-10-10 20:40 (X/X)}\", \"2017-09-09T06:12\", [\"10 OCT 08:40\"]],\n    [\"Time[]{2017-10-10 21:15 (X/X)}\", \"2017-09-19T09:55\", [\"10 OCT 09:15\"]],\n    [\"Time[]{2017-10-10 22:30 (X/X)}\", \"2017-09-19T09:55\", [\"10 OCT 10:30\"]],\n    [\"Time[]{2017-10-10 23:35 (X/X)}\", \"2017-09-09T06:12\", [\"10 OCT 11:35\"]],\n    [\"Time[]{2018-01-11 17:35 (X/X)}\", \"2017-12-30T15:14\", [\"11 JAN 17:35\"]],\n    [\"Time[]{2018-01-11 18:10 (X/X)}\", \"2017-12-30T15:14\", [\"11 JAN 18:10\"]],\n    [\"Time[]{2018-01-11 19:55 (X/X)}\", \"2017-12-30T15:14\", [\"11 JAN 19:55\"]],\n    [\"Time[]{2018-01-11 21:50 (X/X)}\", \"2017-12-30T15:14\", [\"11 JAN 21:50\"]],\n    [\"Time[]{2017-10-11 17:00 (X/X)}\", \"2017-09-09T06:12\", [\"11 OCT 17:00\"]],\n    [\"Time[]{2017-09-11 13:15 (X/X)}\", \"2017-09-09T06:12\", [\"11 SEP 13:15\"]],\n    [\"Time[]{2017-09-11 16:05 (X/X)}\", \"2017-09-09T06:12\", [\"11 SEP 16:05\"]],\n    [\"Time[]{2018-01-12 15:15 (X/X)}\", \"2017-12-30T15:14\", [\"12 JAN 15:15\"]],\n    [\"Time[]{2018-01-12 17:05 (X/X)}\", \"2017-12-30T15:14\", [\"12 JAN 17:05\"]],\n    [\"Time[]{2018-01-12 19:45 (X/X)}\", \"2017-12-30T15:14\", [\"12 JAN 19:45\"]],\n    [\"Time[]{2017-09-12 17:00 (X/X)}\", \"2017-09-09T06:12\", [\"12 SEP 17:00\"]],\n    [\"Time[]{2017-09-12 17:55 (X/X)}\", \"2017-09-09T06:12\", [\"12 SEP 17:55\"]],\n    [\"Time[]{2018-02-13 19:45 (X/X)}\", \"2017-10-16T13:34\", [\"13 FEB 07:45\"]],\n    [\"Time[]{2018-02-13 20:35 (X/X)}\", \"2017-10-16T13:34\", [\"13 FEB 08:35\"]],\n    [\"Time[]{2018-02-13 18:05 (X/X)}\", \"2017-10-16T13:34\", [\"13 FEB 18:05\"]],\n    [\"Time[]{2018-02-13 18:50 (X/X)}\", \"2017-10-16T13:34\", [\"13 FEB 18:50\"]],\n    [\"Time[]{2017-11-15 16:30 (X/X)}\", \"2017-11-14T04:09\", [\"15 NOV 16:30\"]],\n    [\"Time[]{2017-11-15 17:35 (X/X)}\", \"2017-11-14T04:09\", [\"15 NOV 17:35\"]],\n    [\"Time[]{2017-11-15 18:15 (X/X)}\", \"2017-11-14T04:09\", [\"15 NOV 18:15\"]],\n    [\"Time[]{2018-04-15 19:10 (X/X)}\", \"2018-03-29T09:26\", [\"15 APRIL 19:10\"]],\n    [\"Time[]{2016-03-03 18:55 (X/X)}\", \"2016-02-17T10:04\", [\"03 Mar 18:55\"]],\n    [\"Time[]{2016-03-03 22:55 (X/X)}\", \"2016-02-17T10:04\", [\"03 Mar 22:55\"]],\n    [\"Time[]{2016-03-04 00:45 (X/X)}\", \"2016-02-17T10:04\", [\"04 Mar 00:45\"]],\n    [\"Time[]{2016-03-04 16:55 (X/X)}\", \"2016-02-17T10:04\", [\"04 Mar 16:55\"]],\n    [\"Time[]{2016-03-09 20:30 (X/X)}\", \"2016-03-01T23:13\", [\"09 Mar 20:30\"]],\n    [\"Time[]{2016-03-10 21:15 (X/X)}\", \"2016-03-01T23:13\", [\"10 Mar 21:15\"]],\n    [\"Time[]{2016-02-15 19:25 (X/X)}\", \"2016-02-10T16:38\", [\"15 Feb 19:25\"]],\n    [\"Time[]{2016-02-16 20:15 (X/X)}\", \"2016-02-10T16:38\", [\"16 Feb 08:15\"]],\n    [\"Time[]{2016-02-16 13:05 (X/X)}\", \"2016-02-10T16:38\", [\"16 Feb 13:05\"]],\n    [\"Time[]{2016-02-18 20:55 (X/X)}\", \"2016-02-10T16:38\", [\"18 Feb 20:55\"]],\n    [\"Time[]{2016-02-18 22:15 (X/X)}\", \"2016-02-10T16:38\", [\"18 Feb 22:15\"]],\n    [\"Time[]{2016-03-18 20:45 (X/X)}\", \"2016-03-04T13:34\", [\"18 Mar 20:45\"]],\n    [\"Time[]{2017-12-12 22:30 (X/X)}\", \"2017-11-29T15:28\", [\"12 Dec 1030\"]],\n    [\"Time[]{2018-03-12 22:05 (X/X)}\", \"2018-02-28T11:22\", [\"12 Mar 1005\"]],\n    [\"Time[]{2017-05-12 21:00 (X/X)}\", \"2017-05-09T18:51\", [\"12 May 0900\"]],\n    [\"Time[]{2017-05-12 22:15 (X/X)}\", \"2017-05-09T18:51\", [\"12 May 1015\"]],\n    [\"Time[]{2017-05-12 17:00 (X/X)}\", \"2017-05-09T18:51\", [\"12 May 1700\"]],\n    [\"Time[]{2017-05-12 18:15 (X/X)}\", \"2017-05-09T18:51\", [\"12 May 1815\"]],\n    [\"Time[]{2017-11-12 20:20 (X/X)}\", \"2017-08-25T12:23\", [\"12 Nov 2020\"]],\n    [\"Time[]{2017-11-12 22:55 (X/X)}\", \"2017-08-25T12:23\", [\"12 Nov 2255\"]],\n    [\"Time[]{2017-11-13 20:20 (X/X)}\", \"2017-08-25T12:23\", [\"13 Nov 2020\"]],\n    [\"Time[]{2017-11-13 22:55 (X/X)}\", \"2017-08-25T12:23\", [\"13 Nov 2255\"]],\n    [\"Time[]{2017-11-13 23:30 (X/X)}\", \"2017-08-25T12:23\", [\"13 Nov 2330\"]],\n    [\"Time[]{2017-12-14 22:20 (X/X)}\", \"2017-11-29T15:28\", [\"14 Dec 1020\"]],\n    [\"Time[]{2017-05-14 19:05 (X/X)}\", \"2017-05-03T12:01\", [\"14 May 0705pm\"]],\n    [\"Time[]{2017-07-27 23:00 (X/X)}\", \"2017-07-20T15:50\", [\"27 July 1100\"]],\n    [\"Time[]{2017-10-04 14:55 (X/X)}\", \"2017-08-04T07:06\", [\"04 October 02:55\"]],\n    [\"Time[]{2017-10-04 12:00 (X/X)}\", \"2017-08-04T07:06\", [\"04 October 12.00\"]],\n    [\"Time[]{2018-03-02 12:50 (X/X)}\", \"2018-02-05T13:59\", [\"02 March 12:50\"]],\n    [\"Time[]{2017-08-10 17:00 (X/X)}\", \"2017-07-14T06:23\", [\"10 August 17:00\"]],\n    [\"Time[]{2018-03-10 19:40 (X/X)}\", \"2018-02-23T09:15\", [\"10 March 1940\"]],\n    [\"Time[]{2018-03-13 17:00 (X/X)}\", \"2018-02-23T09:15\", [\"13 March 1700\"]],\n    [\"Time[]{2016-02-15 20:15 (X/X)}\", \"2016-02-13T08:17\", [\"15 feb 08:15\"]],\n    [\"Time[]{2016-02-15 21:30 (X/X)}\", \"2016-02-13T08:17\", [\"15 feb 09:30\"]],\n    [\"Time[]{2016-02-15 22:15 (X/X)}\", \"2016-02-13T08:17\", [\"15 feb 10:15\"]],\n    [\n        \"Interval[]{2017-12-12 X:X (X/X) - 2017-12-13 X:X (X/X)}\",\n        \"2017-10-25T13:27\",\n        [\"12- 13.12.17\"],\n    ],\n    [\n        \"Interval[]{2018-01-15 X:X (X/X) - 2018-01-17 X:X (X/X)}\",\n        \"2017-12-04T15:01\",\n        [\"15-17.01.2018\"],\n    ],\n    [\n        \"Interval[]{2017-05-02 X:X (X/X) - 2017-05-04 X:X (X/X)}\",\n        \"2017-04-28T13:07\",\n        [\"02. - 04.05. 2017\", \"02. - 04.05. 2017\"],\n    ],\n    [\n        \"Interval[]{2017-11-16 X:X (X/X) - 2017-11-17 X:X (X/X)}\",\n        \"2017-09-18T15:23\",\n        [\"16. - 17.11.17\"],\n    ],\n    [\n        \"Interval[]{2017-08-03 X:X (X/X) - 2017-08-04 X:X (X/X)}\",\n        \"2017-06-29T12:25\",\n        [\"03. - 04.08.2017\"],\n    ],\n    [\n        \"Interval[]{2017-09-03 X:X (X/X) - 2017-09-05 X:X (X/X)}\",\n        \"2017-04-03T14:57\",\n        [\"03. - 05.09.2017\"],\n    ],\n    [\n        \"Interval[]{2017-07-13 X:X (X/X) - 2017-07-14 X:X (X/X)}\",\n        \"2017-05-31T09:03\",\n        [\"13. - 14.07.2017\"],\n    ],\n    [\"Time[]{2016-05-20 18:55 (X/X)}\", \"2016-04-18T09:08\", [\"20. may 18:55\"]],\n    [\"Time[]{2017-05-16 19:30 (X/X)}\", \"2017-05-08T12:11\", [\"16. may 19:30\"]],\n    [\"Time[]{2017-10-21 23:30 (X/X)}\", \"2017-07-07T08:26\", [\"21. Oct 11:30\"]],\n    [\"Time[]{2017-10-21 19:00 (X/X)}\", \"2017-07-07T08:26\", [\"21. Oct 19:00\"]],\n    [\"Time[]{2017-10-21 20:04 (X/X)}\", \"2017-07-07T08:26\", [\"21. Oct 20:04\"]],\n    [\"Time[]{2017-07-19 20:39 (X/X)}\", \"2017-07-03T16:28\", [\"19. Juli 8:39\"]],\n    [\"Time[]{2017-03-07 17:20 (X/X)}\", \"2017-02-17T10:35\", [\"07. M\\u00e4rz 17:20 Uhr\"]],\n    [\"Time[]{2018-03-12 22:50 (X/X)}\", \"2018-03-09T13:29\", [\"12. M\\u00e4rz 10:50\"]],\n    [\"Time[]{2018-03-12 12:05 (X/X)}\", \"2018-03-09T13:29\", [\"12. M\\u00e4rz 12:05\"]],\n    [\"Time[]{2018-03-13 23:15 (X/X)}\", \"2018-03-08T15:14\", [\"13. M\\u00e4rz 11:15\"]],\n    [\"Time[]{2018-03-13 14:40 (X/X)}\", \"2018-03-08T15:14\", [\"13. M\\u00e4rz 14:40\"]],\n    [\"Time[]{2018-03-14 19:00 (X/X)}\", \"2018-03-09T13:29\", [\"14. M\\u00e4rz 07:00\"]],\n    [\"Time[]{2018-03-14 22:10 (X/X)}\", \"2018-03-09T13:29\", [\"14. M\\u00e4rz 10:10\"]],\n    [\"Time[]{2018-03-15 20:40 (X/X)}\", \"2018-03-08T15:14\", [\"15. M\\u00e4rz 08:40\"]],\n    [\"Time[]{2018-03-15 22:15 (X/X)}\", \"2018-03-08T15:14\", [\"15. M\\u00e4rz 10:15\"]],\n    [\"Time[]{2017-08-31 16:40 (X/X)}\", \"2017-07-20T10:17\", [\"31. August 4:40PM\"]],\n    [\"Time[]{2018-01-10 19:00 (X/X)}\", \"2018-01-05T06:09\", [\"10. Januar 7:00\"]],\n    [\"Time[]{2018-02-27 18:00 (X/X)}\", \"2018-02-12T10:09\", [\"27. Februar 18 Uhr\"]],\n    [\"Time[]{2018-04-10 18:55 (X/X)}\", \"2018-03-29T14:48\", [\"10. April 06:55\"]],\n    [\"Time[]{2018-01-11 20:20 (X/X)}\", \"2018-01-05T06:09\", [\"11. Januar 20:20\"]],\n    [\"Time[]{2016-11-11 13:20 (X/X)}\", \"2016-10-11T07:13\", [\"11. November 13:20\"]],\n    [\"Time[]{2016-11-11 14:50 (X/X)}\", \"2016-10-11T07:13\", [\"11. November 14:50\"]],\n    [\"Time[]{2018-09-11 17:10 (X/X)}\", \"2018-03-20T12:49\", [\"11. September 17:10\"]],\n    [\"Time[]{2018-04-16 23:25 (X/X)}\", \"2018-04-03T11:50\", [\"16. April 11:25\"]],\n    [\"Time[]{2018-04-16 15:25 (X/X)}\", \"2018-04-03T11:50\", [\"16. April 15:25\"]],\n    [\"Time[]{2015-12-16 17:10 (X/X)}\", \"2015-12-10T16:58\", [\"16. Dezember 05:10\"]],\n    [\"Time[]{2015-12-16 18:20 (X/X)}\", \"2015-12-10T16:58\", [\"16. Dezember 06:20\"]],\n    [\"Time[]{2018-02-19 19:45 (X/X)}\", \"2018-02-14T09:50\", [\"19. Februar 07:45\"]],\n    [\"Time[]{2018-02-19 12:40 (X/X)}\", \"2018-02-14T09:50\", [\"19. Februar 12:40\"]],\n    [\"Time[]{2017-01-19 22:35 (X/X)}\", \"2017-01-16T16:46\", [\"19. Januar 10:35\"]],\n    [\"Time[]{2018-04-20 15:30 (X/X)}\", \"2018-04-03T11:50\", [\"20. April 15:30\"]],\n    [\"Time[]{2018-04-20 17:50 (X/X)}\", \"2018-04-03T11:50\", [\"20. April 17:50\"]],\n    [\"Time[]{2018-09-11 20:15 (X/X)}\", \"2018-03-20T12:49\", [\"11. September 08:15 Uhr\"]],\n    [\"Time[]{2017-12-12 14:00 (X/X)}\", \"2017-12-07T09:10\", [\"12. Dezember 14:00 Uhr\"]],\n    [\"Time[]{2017-12-12 20:50 (X/X)}\", \"2017-12-07T09:10\", [\"12. Dezember 20:50 Uhr\"]],\n    [\"Time[]{2017-04-04 17:35 (X/X)}\", \"2017-03-25T14:11\", [\"04. April 17:35 h\"]],\n    [\"Time[]{2018-04-25 22:15 (X/X)}\", \"2018-03-21T12:49\", [\"25. apr 10:15\"]],\n    [\n        \"Interval[]{2018-12-12 X:X (X/X) - 2018-12-14 X:X (X/X)}\",\n        \"2018-03-22T15:20\",\n        [\"12. bis 14.12.2018\"],\n    ],\n    [\"Time[]{2018-03-13 21:20 (X/X)}\", \"2018-03-06T11:02\", [\"13. mar 09:20\"]],\n    [\n        \"Interval[]{2018-01-24 X:X (X/X) - 2018-01-29 X:X (X/X)}\",\n        \"2017-12-18T13:03\",\n        [\"24.-29. Januar 2018\"],\n    ],\n    [\n        \"Interval[]{2018-03-21 X:X (X/X) - 2018-03-23 X:X (X/X)}\",\n        \"2018-01-09T09:14\",\n        [\"21.-23.3.18\"],\n    ],\n    [\n        \"Interval[]{2017-04-10 X:X (X/X) - 2017-04-11 X:X (X/X)}\",\n        \"2017-04-04T08:53\",\n        [\"10.-11.04. 2017\", \"10.-11.04.2017\", \"10.-11.04. 2017\"],\n    ],\n    [\n        \"Interval[]{2017-11-05 X:X (X/X) - 2017-11-10 X:X (X/X)}\",\n        \"2017-08-14T16:01\",\n        [\"05.-10.11.17\"],\n    ],\n    [\n        \"Interval[]{2018-05-07 X:X (X/X) - 2018-05-09 X:X (X/X)}\",\n        \"2018-02-28T17:28\",\n        [\"07.-09.05.18\"],\n    ],\n    [\n        \"Interval[]{2017-10-07 X:X (X/X) - 2017-10-14 X:X (X/X)}\",\n        \"2017-08-07T08:13\",\n        [\"07.-14.10.17\"],\n    ],\n    [\n        \"Interval[]{2018-05-04 X:X (X/X) - 2018-05-05 X:X (X/X)}\",\n        \"2018-02-02T09:44\",\n        [\"04.-05.05.2018\"],\n    ],\n    [\n        \"Interval[]{2017-11-05 X:X (X/X) - 2017-11-07 X:X (X/X)}\",\n        \"2017-09-19T12:19\",\n        [\"05.-07.11.2017\"],\n    ],\n    [\n        \"Interval[]{2018-02-05 X:X (X/X) - 2018-02-10 X:X (X/X)}\",\n        \"2017-09-26T14:05\",\n        [\"05.-10.02.2018\"],\n    ],\n    [\n        \"Interval[]{2018-02-05 X:X (X/X) - 2018-02-11 X:X (X/X)}\",\n        \"2017-09-26T14:05\",\n        [\"05.-11.02.2018\"],\n    ],\n    [\n        \"Interval[]{2017-03-06 X:X (X/X) - 2017-03-08 X:X (X/X)}\",\n        \"2017-01-19T08:09\",\n        [\"06.-08.03.2017\"],\n    ],\n    [\n        \"Interval[]{2018-05-06 X:X (X/X) - 2018-05-09 X:X (X/X)}\",\n        \"2018-02-07T12:30\",\n        [\"06.-09.05.2018\"],\n    ],\n    [\n        \"Interval[]{2018-06-08 X:X (X/X) - 2018-06-09 X:X (X/X)}\",\n        \"2018-02-02T10:04\",\n        [\"08.-09.06.2018\"],\n    ],\n    [\n        \"Interval[]{2018-07-08 X:X (X/X) - 2018-07-10 X:X (X/X)}\",\n        \"2018-02-07T12:30\",\n        [\"08.-10.07.2018\"],\n    ],\n    [\n        \"Interval[]{2018-01-08 X:X (X/X) - 2018-01-11 X:X (X/X)}\",\n        \"2017-11-16T09:10\",\n        [\"08.-11.01.2018\"],\n    ],\n    [\n        \"Interval[]{2018-06-10 X:X (X/X) - 2018-06-12 X:X (X/X)}\",\n        \"2018-02-07T12:30\",\n        [\"10.-12.06.2018\"],\n    ],\n    [\"Time[]{2017-05-23 14:00 (X/X)}\", \"2017-04-25T15:59\", [\"23.Mai 14h\"]],\n    [\n        \"Interval[]{None - 2018-02-14 22:30 (X/X)}\",\n        \"2018-02-02T18:56\",\n        [\"14.2 sp\\u00e4testens um 10:30\"],\n    ],\n    [\n        \"Interval[]{2017-03-17 22:30 (X/X) - 2017-03-18 21:25 (X/X)}\",\n        \"2017-03-09T10:17\",\n        [\"17.03. 10:30 - 18.03. 09:25\"],\n    ],\n    [\n        \"Interval[]{None - 2016-01-20 19:00 (X/X)}\",\n        \"2016-01-13T12:05\",\n        [\"20.01. sp\\u00e4testens um 19 Uhr\"],\n    ],\n    [\n        \"Interval[]{None - 2017-07-03 22:00 (X/X)}\",\n        \"2017-06-21T13:36\",\n        [\"03.07. sp\\u00e4testens um 10:00 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-08-15 13:00 (X/X) - 2017-08-15 16:30 (X/X)}\",\n        \"2017-08-02T06:54\",\n        [\"15.08.17 13 - 16:30\"],\n    ],\n    [\n        \"Interval[]{2017-04-05 15:00 (X/X) - 2017-04-05 17:00 (X/X)}\",\n        \"2017-04-03T11:09\",\n        [\"05.04.17 15-17 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-06-11 11:00 (X/X) - 2017-06-11 12:00 (X/X)}\",\n        \"2017-04-18T10:38\",\n        [\"11.06.17 11-12 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-06-11 11:00 (X/X) - 2017-06-11 13:00 (X/X)}\",\n        \"2017-04-04T09:18\",\n        [\"11.06.17 11-13 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-07-13 19:00 (X/X) - 2017-07-13 19:30 (X/X)}\",\n        \"2017-07-07T14:52\",\n        [\"13.07.17 19-19:30 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-06-02 X:X (X/X)}\",\n        \"2017-01-23T17:51\",\n        [\"02.06.17 19.30\", \"02.06.17 19.30\"],\n    ],\n    [\n        \"Interval[]{2016-04-01 19:00 (X/X) - 2016-04-01 21:10 (X/X)}\",\n        \"2016-03-23T09:11\",\n        [\"01.04.16 1900-2110\"],\n    ],\n    [\n        \"Interval[]{2016-07-01 19:25 (X/X) - 2016-07-01 22:50 (X/X)}\",\n        \"2016-06-28T09:39\",\n        [\"01.07.16 1925-2250\"],\n    ],\n    [\n        \"Interval[]{2016-05-02 19:30 (X/X) - 2016-05-02 20:00 (X/X)}\",\n        \"2016-04-27T09:14\",\n        [\"02.05.16 1930-2000\"],\n    ],\n    [\n        \"Interval[]{2016-06-03 19:05 (X/X) - 2016-06-03 21:00 (X/X)}\",\n        \"2016-05-27T13:01\",\n        [\"03.06.16 1905-2100\"],\n    ],\n    [\n        \"Interval[]{2016-04-04 19:30 (X/X) - 2016-04-04 20:00 (X/X)}\",\n        \"2016-03-30T12:57\",\n        [\"04.04.16 1930-2000\"],\n    ],\n    [\n        \"Interval[]{2016-04-04 22:40 (X/X) - 2016-04-05 03:30 (X/X)}\",\n        \"2016-04-04T14:32\",\n        [\"04.04.16 2240-0330am\"],\n    ],\n    [\n        \"Interval[]{2016-05-06 19:00 (X/X) - 2016-05-06 21:10 (X/X)}\",\n        \"2016-04-29T12:27\",\n        [\"06.05.16 1900-2110\"],\n    ],\n    [\n        \"Interval[]{2016-04-07 19:00 (X/X) - 2016-04-07 21:10 (X/X)}\",\n        \"2016-04-05T08:03\",\n        [\"07.04.16 1900-2110\"],\n    ],\n    [\n        \"Interval[]{2016-04-08 19:00 (X/X) - 2016-04-08 21:10 (X/X)}\",\n        \"2016-04-01T13:47\",\n        [\"08.04.16 1900-2110\"],\n    ],\n    [\n        \"Interval[]{2016-07-08 19:05 (X/X) - 2016-07-08 21:00 (X/X)}\",\n        \"2016-06-29T09:44\",\n        [\"08.07.16 1905-2100\"],\n    ],\n    [\n        \"Interval[]{2016-06-09 19:00 (X/X) - 2016-06-09 21:10 (X/X)}\",\n        \"2016-06-06T09:52\",\n        [\"09.06.16 1900-2110\"],\n    ],\n    [\n        \"Interval[]{2016-06-10 19:25 (X/X) - 2016-06-10 22:50 (X/X)}\",\n        \"2016-06-03T07:53\",\n        [\"10.06.16 1925-2250\"],\n    ],\n    [\n        \"Interval[]{2016-05-13 19:00 (X/X) - 2016-05-13 21:10 (X/X)}\",\n        \"2016-05-06T10:44\",\n        [\"13.05.16 1900-2110\"],\n    ],\n    [\n        \"Interval[]{2016-05-13 19:30 (X/X) - 2016-05-13 20:40 (X/X)}\",\n        \"2016-05-12T16:03\",\n        [\"13.05.16 1930-2040\"],\n    ],\n    [\n        \"Interval[]{2016-04-15 13:00 (X/X) - 2016-04-15 16:00 (X/X)}\",\n        \"2016-04-11T13:39\",\n        [\"15.04.16 von 13-16 Uhr\", \"15.04.16 von 13-16 Uhr\"],\n    ],\n    [\n        \"Interval[]{2018-04-10 08:00 (X/X) - 2018-04-10 10:00 (X/X)}\",\n        \"2018-03-26T15:54\",\n        [\"10.04.2018 8-10AM\", \"10.04.2018 8-10AM\"],\n    ],\n    [\n        \"Interval[]{2017-04-07 17:00 (X/X) - 2017-04-07 18:00 (X/X)}\",\n        \"2017-04-03T11:09\",\n        [\"07.04.2017 17-18 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-03-22 19:10 (X/X)}\",\n        \"2017-03-07T14:54\",\n        [\"22.03.2017 19:10\", \"22.03.2017 19:10\"],\n    ],\n    [\n        \"Time[]{2018-02-14 12:00 (X/X)}\",\n        \"2018-01-24T15:25\",\n        [\"14.02.2018 morgens ca. 12.00 Uhr\"],\n    ],\n    # [\n    #     \"Time[]{2017-03-19 09:00 (X/X)}\",\n    #     \"2017-03-03T08:57\",\n    #     [\"19.03.2017 morgens gegen 09.00 h\"],\n    # ],\n    [\"Time[]{2017-05-15 15:40 (X/X)}\", \"2017-04-06T09:01\", [\"15:40 Mon 15 May\"]],\n    [\"Time[]{2017-04-09 17:20 (X/X)}\", \"2017-03-30T13:07\", [\"17:20 So 9. Apr\"]],\n    [\"Time[]{2017-07-13 22:25 (X/X)}\", \"2017-07-05T12:39\", [\"10:25 Thu 13. Jul\"]],\n    [\"Time[]{2017-03-22 22:35 (X/X)}\", \"2017-03-13T15:25\", [\"10:35 Mi 22. M\\u00e4r\"]],\n    [\"Time[]{2017-07-14 23:05 (X/X)}\", \"2017-07-05T12:39\", [\"11:05 Fri 14 Jul\"]],\n    [\n        \"Time[]{2017-01-11 19:05 (X/X)}\",\n        \"2017-01-03T07:56\",\n        [\"19:05 Mittwoch 11 Januar\"],\n    ],\n    [\"Time[]{2016-12-02 18:50 (X/X)}\", \"2016-11-02T16:44\", [\"2 DEC 18:50\"]],\n    [\"Time[]{2016-11-14 21:30 (X/X)}\", \"2016-10-31T15:12\", [\"14 NOV 9:30\"]],\n    [\"Time[]{2016-12-01 22:00 (X/X)}\", \"2016-11-22T09:46\", [\"1 DEC 10:00\"]],\n    [\"Time[]{2017-07-01 19:40 (X/X)}\", \"2017-05-19T08:51\", [\"1 JUL 19:40\"]],\n    [\"Time[]{2016-11-02 22:15 (X/X)}\", \"2016-10-28T10:19\", [\"2 NOV 10:15\"]],\n    [\"Time[]{2016-11-02 22:35 (X/X)}\", \"2016-10-28T08:42\", [\"2 NOV 10:35\"]],\n    [\"Time[]{2017-10-02 22:15 (X/X)}\", \"2017-08-30T10:39\", [\"2 OCT 22:15\"]],\n    [\"Time[]{2017-04-03 23:40 (X/X)}\", \"2017-03-15T10:47\", [\"3 APR 11:40\"]],\n    [\"Time[]{2017-04-03 12:30 (X/X)}\", \"2017-03-15T10:47\", [\"3 APR 12:30\"]],\n    [\"Time[]{2017-04-03 15:20 (X/X)}\", \"2017-03-15T10:47\", [\"3 APR 15:20\"]],\n    [\"Time[]{2017-04-03 16:30 (X/X)}\", \"2017-03-15T10:47\", [\"3 APR 16:30\"]],\n    [\"Time[]{2017-04-03 18:30 (X/X)}\", \"2017-03-06T10:53\", [\"3 APR 18:30\"]],\n    [\"Time[]{2017-04-03 19:55 (X/X)}\", \"2017-03-06T10:53\", [\"3 APR 19:55\"]],\n    [\"Time[]{2017-08-03 19:40 (X/X)}\", \"2017-05-19T08:51\", [\"3 AUG 19:40\"]],\n    [\"Time[]{2016-11-03 20:00 (X/X)}\", \"2016-10-28T08:42\", [\"3 NOV 20:00\"]],\n    [\"Time[]{2017-08-04 17:15 (X/X)}\", \"2017-05-19T08:51\", [\"4 AUG 17:15\"]],\n    [\"Time[]{2017-08-04 18:20 (X/X)}\", \"2017-05-19T08:51\", [\"4 AUG 18:20\"]],\n    [\"Time[]{2016-11-04 18:35 (X/X)}\", \"2016-11-02T08:55\", [\"4 NOV 18:35\"]],\n    [\"Time[]{2017-04-06 19:40 (X/X)}\", \"2017-03-06T10:53\", [\"6 APR 07:40\"]],\n    [\"Time[]{2017-04-06 21:00 (X/X)}\", \"2017-03-06T10:53\", [\"6 APR 09:00\"]],\n    [\"Time[]{2017-04-06 22:00 (X/X)}\", \"2017-03-06T10:53\", [\"6 APR 10:00\"]],\n    [\"Time[]{2017-04-06 13:10 (X/X)}\", \"2017-03-06T10:53\", [\"6 APR 13:10\"]],\n    [\"Time[]{2017-04-07 12:55 (X/X)}\", \"2017-03-15T10:47\", [\"7 APR 12:55\"]],\n    [\"Time[]{2017-04-07 14:15 (X/X)}\", \"2017-03-15T10:47\", [\"7 APR 14:15\"]],\n    [\"Time[]{2017-04-07 16:10 (X/X)}\", \"2017-03-15T10:47\", [\"7 APR 16:10\"]],\n    [\"Time[]{2017-04-07 17:00 (X/X)}\", \"2017-03-15T10:47\", [\"7 APR 17:00\"]],\n    [\"Time[]{2017-04-07 19:20 (X/X)}\", \"2017-03-06T10:53\", [\"7 APR 19:20\"]],\n    [\"Time[]{2017-04-07 20:20 (X/X)}\", \"2017-03-06T10:53\", [\"7 APR 20:20\"]],\n    [\"Time[]{2017-04-07 21:00 (X/X)}\", \"2017-03-06T10:53\", [\"7 APR 21:00\"]],\n    [\"Time[]{2017-04-07 22:10 (X/X)}\", \"2017-03-06T10:53\", [\"7 APR 22:10\"]],\n    [\"Time[]{2016-11-09 21:00 (X/X)}\", \"2016-11-02T08:51\", [\"9 NOV 09:00\"]],\n    [\"Time[]{2016-11-09 22:25 (X/X)}\", \"2016-11-02T08:55\", [\"9 NOV 10:25\"]],\n    [\"Time[]{2016-11-10 16:00 (X/X)}\", \"2016-11-02T09:52\", [\"10 NOV 16:00\"]],\n    [\"Time[]{2016-11-10 17:00 (X/X)}\", \"2016-11-08T09:06\", [\"10 NOV 17:00\"]],\n    [\"Time[]{2016-11-10 17:30 (X/X)}\", \"2016-11-09T09:19\", [\"10 NOV 17:30\"]],\n    [\"Time[]{2016-12-11 19:25 (X/X)}\", \"2016-11-21T10:41\", [\"11 DEC 19:25\"]],\n    [\"Time[]{2016-11-11 23:30 (X/X)}\", \"2016-11-08T11:44\", [\"11 NOV 11:30\"]],\n    [\"Time[]{2016-11-11 16:00 (X/X)}\", \"2016-11-08T11:44\", [\"11 NOV 16:00\"]],\n    [\"Time[]{2016-11-11 19:00 (X/X)}\", \"2016-11-08T09:06\", [\"11 NOV 19:00\"]],\n    [\"Time[]{2016-11-12 15:00 (X/X)}\", \"2016-11-09T15:42\", [\"12 NOV 15:00\"]],\n    [\"Time[]{2017-10-12 00:40 (X/X)}\", \"2017-08-30T10:39\", [\"12 OCT 00:40\"]],\n    [\"Time[]{2017-08-13 20:05 (X/X)}\", \"2017-05-19T08:51\", [\"13 AUG 08:05\"]],\n    [\"Time[]{2017-08-13 21:10 (X/X)}\", \"2017-05-19T08:51\", [\"13 AUG 09:10\"]],\n    [\"Time[]{2017-08-13 13:30 (X/X)}\", \"2017-05-19T08:51\", [\"13 AUG 13:30\"]],\n    [\"Time[]{2017-08-13 17:40 (X/X)}\", \"2017-05-19T08:51\", [\"13 AUG 17:40\"]],\n    [\"Time[]{2017-09-15 21:25 (X/X)}\", \"2017-08-18T14:19\", [\"15th September 21:25\"]],\n    [\"Time[]{2018-03-22 19:50 (X/X)}\", \"2018-02-09T14:33\", [\"22 mar 7:50\"]],\n    [\n        \"Time[]{2018-03-23 13:50 (X/X)}\",\n        \"2018-02-09T14:33\",\n        [\"23 march 13:50\", \"Friday 23rd Mar 13:50\"],\n    ],\n    [\"Time[]{2018-03-02 07:10 (X/X)}\", \"2018-02-09T09:04\", [\"2 mar 7:10am\"]],\n    [\n        \"Time[]{2018-04-17 X:X (X/X)}\",\n        \"2018-04-12T11:16\",\n        [\"on Tue, 17-Apr\", \"on Tue, 17-Apr\"],\n    ],\n    [\n        \"Time[]{2017-03-12 X:X (X/X)}\",\n        \"2016-11-14T20:44\",\n        [\"on Sunday March 12\", \"on Sunday March 12\"],\n    ],\n    [\n        \"Time[]{2016-12-13 X:X (X/X)}\",\n        \"2016-11-15T15:03\",\n        [\"on Tuesday 13 December\", \"16-12-13\", \"on Tuesday 13 December\"],\n    ],\n    [\n        \"Time[]{2017-08-25 X:X (X/X)}\",\n        \"2017-08-02T08:35\",\n        [\"am Freitag 25. August\", \"am Freitag 25. August\"],\n    ],\n    [\n        \"Time[]{2017-04-14 X:X (X/X)}\",\n        \"2017-04-06T15:11\",\n        [\"am Freitag 14.4.\", \"am Freitag 14.4.\"],\n    ],\n    [\"Time[]{2018-01-11 15:45 (X/X)}\", \"2018-01-08T17:30\", [\"Thursday 15:45\"]],\n    [\n        \"Time[]{2017-11-21 X:X (X/X)}\",\n        \"2017-11-05T14:30\",\n        [\"am Dienstag 21.11.\", \"am Dienstag 21.11.\"],\n    ],\n    [\n        \"Time[]{2016-11-10 X:X (X/X)}\",\n        \"2016-10-31T00:53\",\n        [\"am Donnerstag 10.11.\", \"am Donnerstag 10.11.\"],\n    ],\n    [\n        \"Time[]{2017-11-23 X:X (X/X)}\",\n        \"2017-11-05T14:30\",\n        [\"am Donnerstag 23.11.\", \"am Donnerstag 23.11.\", \"Donnerstag 23. November\"],\n    ],\n    [\n        \"Time[]{2016-11-24 X:X (X/X)}\",\n        \"2016-10-19T16:28\",\n        [\"am Donnerstag 24.11.\", \"am Donnerstag 24.11.\"],\n    ],\n    [\n        \"Time[]{2017-08-22 18:40 (X/X)}\",\n        \"2017-08-10T09:17\",\n        [\"am Dienstag 22.08. 18:40\", \"am Dienstag 22.08. 18:40\"],\n    ],\n    [\"Time[]{2016-01-17 X:X (X/X)}\", \"2016-12-16T08:38\", [\"am Dienstag 17.01.2016\"]],\n    [\"Time[]{2018-06-28 X:X (X/X)}\", \"2018-03-23T09:58\", [\"am Donnerstag 28.06.2018\"]],\n    [\n        \"Time[]{2017-09-22 X:X (X/X)}\",\n        \"2017-09-11T16:52\",\n        [\"on Friday 22/9\", \"on Friday 22/9\"],\n    ],\n    [\n        \"Time[]{2018-01-31 20:40 (X/X)}\",\n        \"2018-01-25T13:54\",\n        [\"on Wednesday 31/1 at 08:40\", \"on Wednesday 31/1 at 08:40\"],\n    ],\n    [\n        \"Time[]{2017-08-27 X:X (X/X)}\",\n        \"2017-08-17T10:25\",\n        [\"am Sonntag 27/08\", \"am Sonntag 27/08\"],\n    ],\n    [\"Time[]{2016-05-11 14:30 (X/X)}\", \"2016-05-09T20:05\", [\"am Mittwoch 14:30\"]],\n    [\"Time[]{2016-02-18 15:55 (X/X)}\", \"2016-02-16T10:31\", [\"am Donnerstag 15:55 Uhr\"]],\n    [\"Time[]{2018-04-30 X:X (X/X)}\", \"2018-01-25T13:40\", [\"on Monday 30th April\"]],\n    [\n        \"Time[]{2017-07-09 X:X (X/X)}\",\n        \"2017-06-28T08:23\",\n        [\"on Sunday 9th July\", \"on Sunday 9th July\"],\n    ],\n    [\n        \"Time[]{2017-03-08 X:X (X/X)}\",\n        \"2017-02-28T16:22\",\n        [\"am Mittwoch den 08.03.\", \"am Mittwoch den 08.03.\"],\n    ],\n    [\n        \"Time[]{2016-09-01 X:X (X/X)}\",\n        \"2016-06-06T14:31\",\n        [\"am Donnerstag, 01. September\", \"am Donnerstag, 01. September\"],\n    ],\n    [\n        \"Time[]{2018-04-10 X:X (X/evening)}\",\n        \"2018-03-20T08:03\",\n        [\"am Dienstag, 10.4. abends\", \"am Dienstag, 10.4. abends\"],\n    ],\n    [\n        \"Time[]{2017-08-18 X:X (X/X)}\",\n        \"2017-08-09T06:58\",\n        [\"am Freitag 18.08\", \"am Freitag 18.08\"],\n    ],\n    [\n        \"Time[]{2017-09-27 06:30 (X/X)}\",\n        \"2017-09-20T17:50\",\n        [\"am Mittwoch 27.09. 06:30am\", \"am Mittwoch 27.09. 06:30am\"],\n    ],\n    [\"Time[]{2017-03-21 X:X (X/X)}\", \"2017-03-13T08:37\", [\"am Dienstag 21.03.17\"]],\n    [\"Time[]{2016-11-29 X:X (X/X)}\", \"2016-10-20T15:40\", [\"am Dienstag 29.11.16\"]],\n    [\"Time[]{2017-03-16 X:X (X/X)}\", \"2017-03-07T11:26\", [\"am Donnerstag 16.03.17\"]],\n    [\"Time[]{2017-06-22 X:X (X/X)}\", \"2017-05-05T10:43\", [\"am Donnerstag 22.06.17\"]],\n    [\"Time[]{2018-02-02 X:X (X/X)}\", \"2018-01-22T14:32\", [\"am Freitag 02.02.2018\"]],\n    [\"Time[]{2015-11-20 X:X (X/X)}\", \"2015-11-06T09:36\", [\"am Freitag 20.11.2015\"]],\n    [\n        \"Time[]{2016-11-07 X:X (X/X)}\",\n        \"2016-11-04T09:55\",\n        [\"ab Montag den 07.11\", \"ab Montag den 07.11\"],\n    ],\n    [\n        \"Time[]{2015-10-06 X:X (X/X)}\",\n        \"2015-09-24T10:40\",\n        [\"am Dienstag den 06.10.\", \"am Dienstag den 06.10.\"],\n    ],\n    [\n        \"Time[]{2017-08-15 X:X (X/X)}\",\n        \"2017-08-03T12:00\",\n        [\"am Dienstag den 15.08.\", \"am Dienstag den 15.08.\"],\n    ],\n    [\n        \"Time[]{2017-12-09 13:00 (X/X)}\",\n        \"2017-11-27T14:14\",\n        [\"um 13 Uhr Samstag 09.12.2017\"],\n    ],\n    [\n        \"Interval[]{2017-12-13 16:00 (X/X) - None}\",\n        \"2017-12-04T09:06\",\n        [\"am 13.12. ab frühestens 16:00 h\", \"am 13.12. ab frühestens 16:00 h\"],\n    ],\n    [\n        \"Interval[]{None - 2018-03-22 20:00 (X/X)}\",\n        \"2018-03-09T12:27\",\n        [\"am 22.03. sp\\u00e4testens um 8.00 Uhr\"],\n    ],\n    [\n        \"Interval[]{None - 2017-05-16 13:00 (X/X)}\",\n        \"2017-05-05T08:14\",\n        [\"am 16.05. sp\\u00e4testens um 13 Uhr\"],\n    ],\n    [\n        \"Interval[]{None - 2017-07-10 19:30 (X/X)}\",\n        \"2017-05-30T12:02\",\n        [\"am 10.07. sp\\u00e4testens um 07:30\"],\n    ],\n    [\n        \"Interval[]{2017-04-12 19:00 (X/X) - None}\",\n        \"2017-04-05T12:42\",\n        [\"am 12.04.2017 ab ca. 7.00 Uhr\"],\n    ],\n    [\n        \"Time[]{2016-10-12 16:00 (X/X)}\",\n        \"2016-09-22T10:28\",\n        [\"am 12.10.2016 nachmittags 16.00 Uhr\", \"am 12.10.2016 nachmittags 16.00 Uhr\"],\n    ],\n    # [\n    #     \"Time[]{2015-10-21 06:55 (X/X)}\",\n    #     \"2015-10-14T14:32\",\n    #     [\"am 21.10.2015 fr\\u00fch 06:55\", \"am 21.10.2015 fr\\u00fch 06:55\"],\n    # ],\n    [\n        \"Time[]{2016-11-10 17:20 (X/X)}\",\n        \"2016-10-19T12:53\",\n        [\"am 10.11.2016 abends 17:20 Uhr\", \"am 10.11.2016 abends 17:20 Uhr\"],\n    ],\n    # [\n    #     \"Time[]{2018-02-01 18:48 (X/X)}\",\n    #     \"2018-01-22T07:58\",\n    #     [\"am 01.02.2018 morgens um 06.48 Uhr\"],\n    # ],\n    # [\n    #     \"Time[]{2017-02-09 23:00 (X/X)}\",\n    #     \"2017-01-27T07:41\",\n    #     [\"am 09.02.2017 vormittags um 11:00 Uhr\"],\n    # ],\n    [\n        \"Time[]{2017-06-01 19:00 (X/X)}\",\n        \"2017-03-28T08:06\",\n        [\"am 01.06.2017 abends ca. 19.00 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-04-12 18:00 (X/X)}\",\n        \"2017-04-05T12:42\",\n        [\"am 12.04.2017 abends ca. 18.00 Uhr\"],\n    ],\n    [\n        \"Time[]{2016-11-08 20:00 (X/X)}\",\n        \"2016-10-28T07:29\",\n        [\"am 08.11.2016 abends gegen 20 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-05-30 20:20 (X/X)}\",\n        \"2017-05-11T11:58\",\n        [\"um 08:20 Uhr Dienstag 30.05.2017\"],\n    ],\n    [\n        \"Interval[]{2018-03-26 X:X (X/X) - 2018-03-29 X:X (X/X)}\",\n        \"2018-03-14T14:42\",\n        [\"ab den 26.03.2018-29.03.2018\", \"ab den 26.03.2018-29.03.2018\"],\n    ],\n    [\n        \"Time[]{2015-10-22 X:X (X/evening)}\",\n        \"2015-10-19T15:13\",\n        [\"am kommenden Donnerstag abends\", \"am kommenden Donnerstag abends\"],\n    ],\n    [\n        \"Time[]{2018-05-28 14:05 (X/X)}\",\n        \"2018-04-10T20:29\",\n        [\"on Monday 28.05.2018 14:05\"],\n    ],\n    [\n        \"Interval[]{2017-06-02 X:X (X/X) - 2017-06-03 X:X (X/X)}\",\n        \"2017-04-28T10:53\",\n        [\"vom 02. - 03.06.2017\"],\n    ],\n    [\n        \"Interval[]{2017-05-08 X:X (X/X) - 2017-05-10 X:X (X/X)}\",\n        \"2017-03-29T06:38\",\n        [\"vom 08. - 10.05.2017\"],\n    ],\n    [\n        \"Interval[]{2018-04-08 X:X (X/X) - 2018-04-14 X:X (X/X)}\",\n        \"2018-01-12T10:02\",\n        [\"vom 08. - 14.04.2018\"],\n    ],\n    [\n        \"Interval[]{2017-09-15 X:X (X/X) - 2017-09-16 X:X (X/X)}\",\n        \"2017-08-14T13:04\",\n        [\"vom 15. auf den 16.09.2017\"],\n    ],\n    [\n        \"Interval[]{2017-02-01 X:X (X/X) - 2017-02-03 X:X (X/X)}\",\n        \"2016-11-30T20:38\",\n        [\"vom 01.-03. Februar 2017\"],\n    ],\n    [\n        \"Interval[]{2017-03-14 X:X (X/X) - 2017-03-16 X:X (X/X)}\",\n        \"2016-01-18T07:24\",\n        [\"vom 14.-16.3.2017\"],\n    ],\n    [\n        \"Interval[]{2018-06-05 X:X (X/X) - 2018-06-06 X:X (X/X)}\",\n        \"2018-02-28T10:20\",\n        [\"vom 05.-06.06.18\"],\n    ],\n    [\n        \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n        \"2017-10-06T14:27\",\n        [\"vom 08.-09.11.2017\"],\n    ],\n    [\n        \"Interval[]{2017-05-08 X:X (X/X) - 2017-05-12 X:X (X/X)}\",\n        \"2016-09-02T08:40\",\n        [\"vom 08.-12.05.2017\"],\n    ],\n    [\n        \"Interval[]{2018-03-09 X:X (X/X) - 2018-03-11 X:X (X/X)}\",\n        \"2018-01-08T08:51\",\n        [\"vom 09.-11.03.2018\"],\n    ],\n    [\n        \"Interval[]{2018-01-09 X:X (X/X) - 2018-01-12 X:X (X/X)}\",\n        \"2017-11-15T13:15\",\n        [\"vom 09.-12.01.2018\"],\n    ],\n    [\n        \"Interval[]{2018-03-09 X:X (X/X) - 2018-03-12 X:X (X/X)}\",\n        \"2018-01-08T08:51\",\n        [\"vom 09.-12.03.2018\"],\n    ],\n    [\n        \"Time[]{2016-09-02 X:X (X/morning)}\",\n        \"2016-09-01T07:53\",\n        [\"morgen Freitagvormittag\", \"morgen Freitagvormittag\"],\n    ],\n    [\n        \"Time[]{2017-12-21 19:03 (X/X)}\",\n        \"2017-12-14T08:21\",\n        [\"thursday next week 7:03pm\"],\n    ],\n    [\n        \"Time[]{2017-12-21 15:25 (X/X)}\",\n        \"2017-12-14T08:21\",\n        [\"thursday next week 15:25\"],\n    ],\n    [\n        \"Time[]{2017-09-12 17:44 (X/X)}\",\n        \"2017-09-07T07:51\",\n        [\"n\\u00e4chste Woche Dienstag 17:44\"],\n    ],\n    [\"Time[]{2018-01-29 21:15 (X/X)}\", \"2018-01-22T12:56\", [\"next Monday 9:15\"]],\n    [\"Time[]{2016-06-30 19:05 (X/X)}\", \"2016-06-28T11:00\", [\"diesen Donnerstag 7:05\"]],\n    [\n        \"Time[]{2017-06-19 21:30 (X/X)}\",\n        \"2017-06-16T11:26\",\n        [\"kommenden Montag 9:30 Uhr\"],\n    ],\n    [\"Time[]{2017-01-08 14:00 (X/X)}\", \"2017-01-04T16:49\", [\"diesen Sonntag 14 Uhr\"]],\n    [\"Time[]{2017-09-28 22:00 (X/X)}\", \"2017-09-26T16:18\", [\"diesen Donnerstag 10:00\"]],\n    [\"Time[]{2017-10-11 18:39 (X/X)}\", \"2017-10-11T07:28\", [\"heute Abend um 18:39\"]],\n    [\n        \"Time[]{2017-03-23 16:36 (X/X)}\",\n        \"2017-03-22T09:18\",\n        [\"morgen Nachmittag um 16:36 Uhr\"],\n    ],\n    [\n        \"Time[]{2016-10-11 X:X (X/evening)}\",\n        \"2016-10-06T09:06\",\n        [\"kommenden Dienstag abends\", \"kommenden Dienstag abends\"],\n    ],\n    [\n        \"Time[]{2016-10-11 X:X (X/morning)}\",\n        \"2016-10-06T09:06\",\n        [\"kommenden Dienstag morgens\"],\n    ],\n    [\n        \"Time[]{2017-09-21 20:30 (X/X)}\",\n        \"2017-09-18T13:35\",\n        [\"diesen Donnerstag 21.09 08:30 Uhr\", \"diesen Donnerstag 21.09. 08:30 Uhr\"],\n    ],\n    [\n        \"Time[]{2018-01-23 X:X (X/X)}\",\n        \"2018-01-22T13:41\",\n        [\"morgen 23.01\", \"morgen 23.01\"],\n    ],\n    [\n        \"Interval[]{2017-01-18 X:X (X/X) - 2017-01-20 X:X (X/X)}\",\n        \"2017-01-18T12:52\",\n        [\"heute bis Freitag\"],\n    ],\n    [\"Time[]{2016-12-09 21:45 (X/X)}\", \"2016-12-02T13:36\", [\"next week Fri 0945\"]],\n    [\n        \"Time[]{2016-10-19 21:20 (X/X)}\",\n        \"2016-10-17T09:55\",\n        [\"this wednesday 19th 09:20\", \"this wednesday 09:20\"],\n    ],\n    [\n        \"Interval[]{2017-06-14 18:00 (X/X) - None}\",\n        \"2017-05-24T11:13\",\n        [\"Am 14.06.2017 fr\\u00fchestens 18:00 Uhr\"],\n    ],\n    [\"Time[]{2017-03-07 X:X (X/X)}\", \"2017-03-06T13:23\", [\"Di. 07.\"]],\n    [\"Time[]{2016-09-13 X:X (X/X)}\", \"2016-09-12T20:07\", [\"Di. 13.09\"]],\n    [\"Time[]{2017-02-14 X:X (X/X)}\", \"2017-02-13T15:54\", [\"Di. 14.02\"]],\n    [\n        \"Interval[]{2017-09-26 X:X (X/X) - 2017-09-27 X:X (X/X)}\",\n        \"2017-08-31T16:34\",\n        [\"Di., 26.09.-27.09., 1 Nacht\"],\n    ],\n    [\n        \"Interval[]{2018-02-23 X:X (X/X) - 2018-02-24 X:X (X/X)}\",\n        \"2018-02-14T16:04\",\n        [\"Fr.-Sa., 23.02.-24.02., 1 Nacht\"],\n    ],\n    [\"Time[]{2016-12-03 X:X (X/X)}\", \"2016-11-30T13:23\", [\"Samstag 3.12\"]],\n    [\"Time[]{2016-10-14 X:X (X/X)}\", \"2016-10-09T08:56\", [\"Friday 14\"]],\n    [\"Time[]{2016-10-11 X:X (X/X)}\", \"2016-10-04T10:52\", [\"Tuesday 11\"]],\n    [\"Time[]{2017-07-18 X:X (X/X)}\", \"2017-07-06T12:42\", [\"Dienstag 18.7.\"]],\n    [\"Time[]{2016-06-28 X:X (X/X)}\", \"2016-06-13T08:26\", [\"Dienstag 28.6.\"]],\n    [\"Time[]{2017-06-15 X:X (X/X)}\", \"2017-06-07T11:25\", [\"Donnerstag 15.6.\"]],\n    [\"Time[]{2017-07-20 X:X (X/X)}\", \"2017-07-12T20:49\", [\"Donnerstag 20.7.\"]],\n    [\"Time[]{2017-08-17 16:15 (X/X)}\", \"2017-08-10T09:11\", [\"Donnerstag 17.8. 16:15\"]],\n    [\"Time[]{2018-01-23 X:X (X/evening)}\", \"2018-01-23T10:48\", [\"Abends 23.01\"]],\n    [\n        \"Time[]{2018-04-03 X:X (X/X)}\",\n        \"2018-03-29T10:31\",\n        [\"Dienstag 03.04\", \"Dienstag 03.04\"],\n    ],\n    [\n        \"Time[]{2017-06-20 X:X (X/X)}\",\n        \"2017-06-19T07:04\",\n        [\"Dienstag 20.6\", \"Dienstag 20.6\", \"am Dienstag 20.6\"],\n    ],\n    [\"Time[]{2017-03-02 X:X (X/X)}\", \"2017-02-13T11:00\", [\"Donnerstag 02.03\"]],\n    [\"Time[]{2017-12-07 X:X (X/X)}\", \"2017-11-27T10:53\", [\"Donnerstag 07.12\"]],\n    [\"Time[]{2017-08-02 X:X (X/X)}\", \"2017-07-10T07:29\", [\"Mittwoch 02.08\"]],\n    [\"Time[]{2017-06-07 X:X (X/X)}\", \"2017-06-04T20:23\", [\"Mittwoch 07.06\"]],\n    [\"Time[]{2017-12-13 X:X (X/X)}\", \"2017-12-07T13:33\", [\"Mittwoch 13.12\"]],\n    [\n        \"Time[]{2017-08-23 X:X (X/X)}\",\n        \"2017-08-16T13:00\",\n        [\"Mittwoch 23.08\", \"Dienstag 23.08\", \"am Mittwoch 23.08\"],\n    ],\n    [\"Time[]{2017-10-25 X:X (X/X)}\", \"2017-10-10T12:06\", [\"Mittwoch 25.10\"]],\n    [\"Time[]{2017-09-11 X:X (X/X)}\", \"2017-09-08T20:54\", [\"Monday 11.09\"]],\n    [\"Time[]{2017-06-19 X:X (X/X)}\", \"2017-05-24T08:15\", [\"Monday 19.06\"]],\n    [\"Time[]{2018-03-15 X:X (X/X)}\", \"2018-01-23T11:31\", [\"Donnerstag 15.03.\"]],\n    [\"Time[]{2018-04-04 X:X (X/X)}\", \"2018-03-27T08:41\", [\"Mittwoch 4.4.\"]],\n    [\n        \"Time[]{2016-09-23 X:X (X/X)}\",\n        \"2016-09-20T08:45\",\n        [\"Freitag, 23. September 2016\"],\n    ],\n    [\"Time[]{2017-07-25 X:X (X/X)}\", \"2017-05-30T09:59\", [\"Dienstag 25.07\"]],\n    [\"Time[]{2017-08-17 X:X (X/X)}\", \"2017-08-09T08:02\", [\"Donnerstag 17.08\"]],\n    [\n        \"Interval[]{2017-10-05 21:45 (X/X) - 2017-10-05 22:55 (X/X)}\",\n        \"2017-09-28T07:55\",\n        [\"Donnerstag, den 5.10.2017 09:45 - 10:55 Uhr\"],\n    ],\n    [\"Time[]{2018-01-07 X:X (X/X)}\", \"2017-12-19T09:24\", [\"7. Januar 2018\"]],\n    [\"Time[]{2017-10-26 X:X (X/X)}\", \"2017-10-17T18:14\", [\"26 Oct 2017\"]],\n    [\"Time[]{2018-05-24 14:55 (X/X)}\", \"2018-04-10T08:46\", [\"24 of May at 14:55\"]],\n    [\"Time[]{2018-04-25 12:00 (X/X)}\", \"2018-04-05T09:18\", [\"25 of April at 12:00\"]],\n    [\"Time[]{2017-05-22 X:X (X/X)}\", \"2017-05-04T16:28\", [\"22. Mai 2017\"]],\n    [\"Time[]{2016-07-15 X:X (X/X)}\", \"2016-06-20T10:03\", [\"15. Juli 16\"]],\n    [\"Time[]{2018-06-14 X:X (X/X)}\", \"2018-03-08T11:34\", [\"14. Juni 2018\"]],\n    [\"Time[]{2018-02-14 X:X (X/X)}\", \"2017-12-19T09:24\", [\"14. Februar 2018\"]],\n    [\"Time[]{2018-03-14 X:X (X/X)}\", \"2018-03-12T16:48\", [\"14. 03.\"]],\n    [\n        \"Interval[]{2018-04-10 X:X (X/X) - 2018-04-11 X:X (X/X)}\",\n        \"2018-04-05T10:08\",\n        [\"10.04. - 11.04., 1 Nacht\"],\n    ],\n    [\"Time[]{2018-01-18 15:30 (X/X)}\", \"2018-01-18T13:11\", [\"18.01. 15:30 Uhr\"]],\n    [\n        \"Interval[]{2017-10-06 X:X (X/X) - 2017-10-07 X:X (X/X)}\",\n        \"2017-09-22T12:53\",\n        [\"06.10.-07.10., 1 Nacht\"],\n    ],\n    [\n        \"Interval[]{2017-12-06 X:X (X/X) - 2017-12-07 X:X (X/X)}\",\n        \"2017-11-24T14:27\",\n        [\"06.12.2017 to 07.12.2017 (1 night\"],\n    ],\n    [\n        \"Interval[]{2018-03-09 21:00 (X/X) - 2018-03-09 22:00 (X/X)}\",\n        \"2018-02-20T09:37\",\n        [\"09.03.2018 ca. 9-10 Uhr\"],\n    ],\n    [\n        \"Interval[]{2017-07-06 14:00 (X/X) - 2017-07-06 15:00 (X/X)}\",\n        \"2017-06-21T12:02\",\n        [\"06.07.2017 ca. 14-15 Uhr\"],\n    ],\n    [\"Time[]{2017-09-15 14:35 (X/X)}\", \"2017-08-11T13:10\", [\"02:35 Friday 15 Sep 2017\"]],\n    [\"Time[]{2017-09-15 19:20 (X/X)}\", \"2017-08-11T13:10\", [\"07:20 Friday 15 Sep 2017\"]],\n    [\n        \"Time[]{2016-11-11 22:00 (X/X)}\",\n        \"2016-11-09T13:16\",\n        [\"10:00 Fri 11 Nov 2016\"],\n    ],\n    [\n        \"Time[]{2018-05-09 16:00 (X/X)}\",\n        \"2018-03-26T11:11\",\n        [\"04:00 Wednesday 9 May 2018\"],\n    ],\n    [\n        \"Time[]{2018-05-09 20:40 (X/X)}\",\n        \"2018-03-26T11:11\",\n        [\"08:40 Wednesday 9 May 2018\"],\n    ],\n    [\n        \"Time[]{2018-03-01 20:30 (X/X)}\",\n        \"2018-02-19T15:04\",\n        [\"08:30 Thursday 1 March 2018\"],\n    ],\n    [\n        \"Time[]{2018-05-12 17:00 (X/X)}\",\n        \"2018-03-26T11:11\",\n        [\"05:00 Saturday 12 May 2018\"],\n    ],\n    [\n        \"Time[]{2018-05-12 19:45 (X/X)}\",\n        \"2018-03-26T11:11\",\n        [\"07:45 Saturday 12 May 2018\"],\n    ],\n    [\n        \"Time[]{2018-05-12 22:25 (X/X)}\",\n        \"2018-03-26T11:11\",\n        [\"10:25 Saturday 12 May 2018\"],\n    ],\n    [\n        \"Time[]{X-X-X 22:00 (X/X)}\",\n        \"2022-12-08T11:11\",\n        [\"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\", \"at 10\"],\n    ],\n    [\n        \"Time[]{X-X-X 16:00 (X/X)}\",\n        \"2022-12-08T11:11\",\n        [\"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", \"at 4\", ],\n    ],\n    [\n        \"Time[]{2018-05-17 23:40 (X/X)}\",\n        \"2018-03-26T11:11\",\n        [\"11:40 Thursday 17 May 2018\"],\n    ],\n    [\n        \"Time[]{2017-01-12 20:45 (X/X)}\",\n        \"2017-01-03T07:56\",\n        [\"20:45 Donnerstag 12 Januar\"],\n    ],\n    [\n        \"Time[]{2018-02-27 00:15 (X/X)}\",\n        \"2018-02-19T15:04\",\n        [\"00:15 Tuesday 27 February 2018\"],\n    ],\n    [\n        \"Time[]{2017-11-24 23:05 (X/X)}\",\n        \"2017-11-14T08:41\",\n        [\"11:05 Friday 24 November 2017\"],\n    ],\n    [\"Time[]{2017-11-07 X:X (X/X)}\", \"2017-11-06T08:59\", [\"7th November 2017\"]],\n    [\"Time[]{2018-03-31 X:X (X/X)}\", \"2018-03-11T21:48\", [\"am Freitag 31.3.\"]],\n    [\"Time[]{2017-12-12 X:X (X/X)}\", \"2017-12-06T12:11\", [\"am Dienstag 12.12\"]],\n    [\"Time[]{2018-03-16 X:X (X/X)}\", \"2018-02-19T08:56\", [\"am Freitag 16.03\"]],\n    [\"Time[]{2017-05-17 X:X (X/X)}\", \"2017-05-12T11:37\", [\"am Mittwoch 17.05\"]],\n    [\"Time[]{2016-09-14 X:X (X/X)}\", \"2016-09-02T05:48\", [\"am Mittwoch 14.09.\"]],\n    [\"Time[]{2017-06-05 X:X (X/X)}\", \"2017-05-27T08:01\", [\"am Montag 05.06.\"]],\n    [\"Time[]{2018-03-23 X:X (X/X)}\", \"2018-03-14T10:42\", [\"on Friday 23/03\"]],\n    [\"Time[]{2018-01-22 X:X (X/X)}\", \"2018-01-15T13:05\", [\"on Monday 22nd January\"]],\n    [\"Time[]{2016-03-31 X:X (X/X)}\", \"2016-03-09T15:20\", [\"am Donnerstag 31.03.\"]],\n    [\n        \"Time[]{2017-09-14 19:05 (X/X)}\",\n        \"2017-09-11T05:57\",\n        [\"am Donnerstag, 14.09.17 07:05\"],\n    ],\n    [\"Time[]{2017-05-18 X:X (X/X)}\", \"2017-04-22T19:02\", [\"am Donnerstag den 18.05\"]],\n    [\"Time[]{2016-03-17 X:X (X/X)}\", \"2016-03-11T09:15\", [\"am 17. M\\u00e4rz 2016\"]],\n    [\n        \"Interval[]{2016-03-16 16:45 (X/X) - None}\",\n        \"2016-02-25T12:48\",\n        [\"am 16.3.16 fr\\u00fchestens 16:45 Uhr\"],\n    ],\n    [\"Time[]{2017-09-21 X:X (X/X)}\", \"2017-09-12T10:23\", [\"am 21.09\"]],\n    [\n        \"Time[]{2017-03-07 12:00 (X/X)}\",\n        \"2017-02-08T08:08\",\n        [\"am 07.03.17 Mittag 12 Uhr\"],\n    ],\n    # [\n    #     \"Time[]{2017-12-06 X:X (X/lateafternoon)}\",\n    #     \"2017-11-23T07:22\",\n    #     [\"06.12.2017 Sp\\u00e4tnachmittag\"],\n    # ],\n    [\n        \"Interval[]{2017-06-12 18:00 (X/X) - 2017-06-12 19:05 (X/X)}\",\n        \"2017-06-08T11:07\",\n        [\"am 12.06.2017 18:00 - 19:05\"],\n    ],\n    [\n        \"Time[]{2016-11-09 X:X (X/lateevening)}\",\n        \"2016-11-07T08:10\",\n        [\"am 09.11.2016 sp\\u00e4t Abends\"],\n    ],\n    [\n        \"Interval[]{2018-03-09 17:00 (X/X) - None}\",\n        \"2018-02-15T14:47\",\n        [\"am 09.03.2018 fr\\u00fchstens 17 Uhr\"],\n    ],\n    [\n        \"Time[]{2017-09-14 X:X (X/earlymorning)}\",\n        \"2017-09-05T10:10\",\n        [\"am 14.09.2017 fr\\u00fch morgens\"],\n    ],\n    [\n        \"Interval[]{2017-05-16 X:X (X/X) - 2017-05-18 X:X (X/X)}\",\n        \"2017-05-12T11:16\",\n        [\"von Dienstag 16.05 bis Donnerstag 18.05\"],\n    ],\n    [\n        \"Interval[]{2018-02-05 X:X (X/X) - 2018-02-08 X:X (X/X)}\",\n        \"2018-02-03T09:20\",\n        [\"von Montag 05.02 bis Donnerstag 08.02\"],\n    ],\n    [\n        \"Interval[]{2018-02-24 X:X (X/X) - 2018-02-26 X:X (X/X)}\",\n        \"2018-02-07T16:28\",\n        [\"from 24.02.2018 to 26.02.2018\"],\n    ],\n    [\"Time[]{2017-06-23 X:X (X/X)}\", \"2017-06-22T07:20\", [\"morgen 23.06\"]],\n    [\n        \"Interval[]{2018-03-15 X:X (X/X) - 2018-03-16 X:X (X/X)}\",\n        \"2018-03-05T12:51\",\n        [\"15.3-16.3\"],\n    ],\n    [\n        \"Interval[]{2017-11-28 13:13 (X/X) - 2017-11-28 13:44 (X/X)}\",\n        \"2017-11-27T15:14\",\n        [\"morgen, 28.11.2017 um 13:13 - 13:44 Uhr\"],\n    ],\n    [\"Time[]{1993-07-02 X:X (X/X)}\", \"2017-11-27T15:14\", [\"2 jul 93\"]],\n    [\"Time[]{2022-07-02 X:X (X/X)}\", \"2017-11-27T15:14\", [\"2 jul 22\"]],\n    # [\n    #     \"Interval[]{2018-06-07 X:X (X/evening) - 2018-06-07 X:X (X/night)}\",\n    #     \"2018-05-08T16:32\",\n    #     [\"at 7.6 evening/night\"],\n    # ],\n]\n"
  },
  {
    "path": "ctparse/time/corpus.py",
    "content": "corpus = [\n    # ruleYear\n    (\"Time[]{2019-X-X X:X (X/X)}\", \"2018-03-07T12:43\", [\"2019\"]),\n    # ruleToday\n    (\n        \"Time[]{2018-03-07 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"heute\", \"zu dieser zeit\", \"today\"],\n    ),\n    # ruleNow\n    (\n        \"Time[]{2018-03-07 12:43 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"jetzt\", \"genau jetzt\", \"gerade eben\", \"rightnow\", \"just now\"],\n    ),\n    # ruleTomorrow\n    (\"Time[]{2019-01-01 X:X (X/X)}\", \"2018-12-31T12:43\", [\"morgen\", \"tomorrow\", \"tom\", \"tmrw\"]),\n    # ruleAfterTomorrow\n    (\"Time[]{2019-01-02 X:X (X/X)}\", \"2018-12-31T12:43\", [\"übermorgen\"]),\n    # ruleTomorrow + time\n    (\n        \"Time[]{2019-01-01 19:25 (X/X)}\",\n        \"2018-12-31T12:43\",\n        [\"morgen 19:25\", \"tomorrow 7:25 pm\"],\n    ),\n    # ruleYesterday\n    # test on a leap-year\n    (\"Time[]{2020-02-29 X:X (X/X)}\", \"2020-03-01T12:43\", [\"gestern\", \"yesterday\"]),\n    # ruleBeforeYesterday\n    # test on a leap-year\n    (\"Time[]{2020-02-28 X:X (X/X)}\", \"2020-03-01T12:43\", [\"vorgestern\"]),\n    # ruleEOM\n    (\n        \"Time[]{2018-03-31 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"ende des Monats\", \"eom\", \"end of the month\"],\n    ),\n    # ruleEOY\n    (\n        \"Time[]{2018-12-31 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"ende des Jahres\", \"eoy\", \"end of the year\"],\n    ),\n    # ruleNamedDOW\n    (\"Time[]{2018-03-12 X:X (X/X)}\", \"2018-03-07T12:43\", [\"Montag\", \"mon\", \"monday\"]),\n    (\n        \"Time[]{2018-03-13 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"Dienstag\", \"tuesday\", \"tue\"],\n    ),\n    # ruleNamedDOW + POD\n    # (\"Time[]{2018-03-12 X:X (X/morning)}\", \"2018-03-07T12:43\", [\"Montagmorgen\"]),\n    # (\"Time[]{2018-03-14 X:X (X/forenoon)}\", \"2018-03-07T12:43\", [\"Mittwochvormittag\"]),\n    # (\"Time[]{2018-03-10 X:X (X/morning)}\", \"2018-03-07T12:43\", [\"Samstagfrüh\"]),\n    # (\n    #     \"Time[]{2018-03-11 X:X (X/night)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"sunday night\", \"Sonntagnacht\"],\n    # ),\n    # ruleNamedMonth\n    (\"Time[]{2023-01-01 X:X (X/X)}\", \"2022-11-28T12:43\", [\"1st January\", \"1st jan.\"]),\n    (\"Time[]{2023-04-15 X:X (X/X)}\", \"2022-11-28T12:43\", [\"15 April\", \"15 apr.\"]),\n    (\"Time[]{X-07-X X:X (X/X)}\", \"2022-11-28T12:43\", [\"Juli\", \"July\", \"Jul\"]),\n    (\n        \"Time[]{2022-12-24 X:X (X/X)}\",\n        \"2022-11-28T12:43\",\n        [\"24 Dezember\", \"December 24\", \"24 Dec.\", \"24 Dez.\"],\n    ),\n    # ruleAtDOW\n    (\"Time[]{2018-03-13 X:X (X/X)}\", \"2018-03-07T12:43\", [\"am Dienstag\", \"on Tue\"]),\n    (\n        \"Time[]{2018-03-14 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"this Wednesday\", \"diesen Mittwoch\"],\n    ),\n    # ruleNextDOW\n    (\n        \"Time[]{2018-03-16 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\n            \"am nächsten Freitag\",\n            \"next Friday\",\n            \"nächste Woche Freitag\",\n            \"Friday next week\",\n            \"on the following Friday\",\n        ],\n    ),\n    # ruleDOYYear, ruleDDMM, ruleDDMMYYYY\n    (\n        \"Time[]{2018-05-08 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\n            \"8.5.2018\",\n            \"8. Mai 2018\",\n            \"8. Mai 18\",\n            \"8 May 2018\",\n            \"8 May\",\n            \"May 8\",\n            \"8/5\",\n            \"8.5.\",\n            \"am 8. Mai 2018\",\n            \"diesen 8. Mai 18\",\n            \"den 8.5.\",\n            \"8th May\",\n            \"8th of May\",\n            \"May 8th\",\n            \"at 8th May\",\n            \"on 8th of May\",\n            \"this May 8th\",\n            \"may 8\",\n        ],\n    ),\n    (\n        \"Time[]{2022-12-24 X:X (X/X)}\",\n        \"2022-11-29T12:43\",\n        [\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"12/24\",\n            \"24/12\",\n            \"24/12\",\n            \"24/12\",\n        ],\n    ),\n    # ruleDOWDOM\n    (\n        \"Time[]{2022-11-29 X:X (X/X)}\",\n        \"2022-11-28T12:43\",\n        [\"Tuesday 29th\", \"Tuesday the 29th\", \"Dienstag der 29.\"],\n    ),\n    (\n        \"Time[]{2018-06-02 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"Saturday 2nd\", \"Jun 2nd\", \"am 2ten Juni\"],\n    ),\n    # ruleDOWDate, ruleDateDOW\n    (\n        \"Time[]{2018-05-08 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"Tuesday 8.5\", \"8.5 Tuesday\"],\n    ),\n    # (\n    #     \"Time[]{2018-05-08 X:X (X/morning)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"Dienstagmorgen 8.5.\", \"8.5. Dienstagmorgen\"],\n    # ),\n    # rulePOD, ruleLatentPOD\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/morning)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"morgens\", \"früh\", \"in der früh\", \"early\", \"morning\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/earlymorning)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"früh morgens\", \"sehr früh\", \"early morning\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/forenoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"vormittags\", \"forenoon\"],\n    # ),\n    # before noon case\n    # (\n    #     \"Interval[]{None - 2018-03-08 X:X (X/noon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"vor mittags\", \"before noon\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/afternoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"nachmittag\", \"afternoon\"],\n    # ),\n    # # past noon case\n    # (\n    #     \"Interval[]{2018-03-08 X:X (X/noon) - None}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"nach mittag\", \"after noon\"],\n    # ),\n    # (\"Time[]{2018-03-08 X:X (X/noon)}\", \"2018-03-07T12:43\", [\"mittags\", \"noon\"]),\n    # (\n    #     \"Time[]{2018-03-07 X:X (X/evening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"abends\", \"late\", \"spät\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-07 X:X (X/lateevening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"später abend\", \"very late\", \"late evening\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/veryearlyafternoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"sehr früher nachmittag\", \"very early afternoon\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-07 X:X (X/night)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"heute nacht\", \"this night\", \"nachts\"],\n    # ),\n    # # First/Last\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/first)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\n    #         \"tomorrow first\",\n    #         \"morgen erster\",\n    #         \"morgen so früh wie möglich\",\n    #         \"tomorrow earliest possible\",\n    #     ],\n    # ),\n    # (\n    #     \"Time[]{2018-03-08 X:X (X/last)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\n    #         \"tomorrow last\",\n    #         \"morgen letzter\",\n    #         \"tomorrow as late as possible\",\n    #         \"morgen spätest möglicher\",\n    #     ],\n    # ),\n    # (\n    #     \"Time[]{2018-03-09 X:X (X/first)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"Friday first\", \"Freitag erster\"],\n    # ),\n    # (\n    #     \"Time[]{2018-03-13 X:X (X/last)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"Tuesday last\", \"Dienstag letzter\"],\n    # ),\n    # # Date + POD\n    # (\n    #     \"Time[]{2017-01-25 X:X (X/evening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\n    #         \"25.01.2017 abends\",\n    #         \"evening of January 25th 2017\",\n    #         \"25.01.2017 late\",\n    #         \"25.01.2017 spät\",\n    #         \"25.01.2017 (spät)\",\n    #     ],\n    # ),\n    # (\n    #     \"Time[]{2017-01-25 X:X (X/lateafternoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\n    #         \"25.01.2017 spät nachmittags\",\n    #         \"am 25. Januar 2017 am späten Nachmittag\",\n    #         \"am 25. Januar 2017 am späten Nachmittag\",\n    #         \"am 25. Januar 2017 am späten Nachmittag\",\n    #         \"late afternoon of January 25th 2017\",\n    #     ],\n    # ),\n    # (\n    #     \"Time[]{2020-01-25 X:X (X/evening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\n    #         \"25.01.2020 abends\",\n    #         \"25.01.2020 late\",\n    #         \"25.01.2020 spät\",\n    #         \"25. Januar 2020 abends\",\n    #         \"abends 25.01.2020\",\n    #         \"evening of January 25th 2020\",\n    #     ],\n    # ),\n    # (\n    #     \"Time[]{2018-03-25 X:X (X/evening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"evening of the 25th\", \"am 25. abends\", \"abends am 25.\"],\n    # ),\n    # # ruleTODPOD\n    # (\n    #     \"Time[]{X-X-X 16:30 (X/X)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"um 4:30 nachmittags\", \"at 4:30 in the afternoon\"],\n    # ),\n    # rulePODTOD\n    # (\n    #     \"Time[]{X-X-X 20:00 (X/X)}\",  # next day since moning is already over\n    #     \"2018-03-07T12:43\",\n    #     [\"morgens um 8\", \"late morning at 8\"],\n    # ),\n    (\n        \"Time[]{X-X-X 16:30 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"nachmittags um 16:30\", \"afternoon at 16:30\", \"16:30\"],\n    ),\n    # ruleDateTOD\n    (\n        \"Time[]{2018-08-05 20:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\n            \"5. August um 8\",\n            \"August 5th at 8\",\n            # \"august 5 at 8am\",\n            \"5. Aug gegen 8\",\n            \"05.08.2018 8Uhr\",\n            \"05.08.2018 8pm\",\n            \"august 5th 8\"\n        ],\n    ),\n    # ruleTODDate\n    (\n        \"Time[]{2018-08-05 20:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"um 8 5. August\", \"at 8 on August 5th\"],\n    ),\n    # ruleDateDate, ruleDOMDate, ruleDateDOM\n    (\n        \"Interval[]{2018-08-05 X:X (X/X) - 2018-08-16 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\n            \"5.8. - 16.8.\",\n            \"August 5th - August 16th\",\n            \"Aug 5 - 16\",\n            \"from Aug 5 to 16\",\n            \"5 to 16 Aug\",\n            \"from 5 to 16 Aug\",\n            \"5. - 16.8.\",\n            \"5.8. - 16.8.2018\",\n            \"5.8. bis 16.8.2018\",\n            \"5.8. - 16.8.\",\n            \"5.8. bis 16.8.\",\n            \"5. - 16.8.\",\n            \"5.8. - 16.8.2018\",\n            \"5.8. bis 16.8.2018\",\n            \"5.8. - 16.8.\",\n            \"5.8. bis 16.8.\",\n            \"5. bis zum 16.8.\",\n            \"vom 05.08.2018 zum 16.08.2018\",\n        ],\n    ),\n    # ruleDOYDate\n    (\n        \"Interval[]{2017-08-05 X:X (X/X) - 2017-08-16 X:X (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"5.8. - 16.8.2017\", \"Samstag 5.8. - Mittwoch 16.8.2017\"],\n    ),\n    # ruleDateTimeDateTime\n    (\n        \"Interval[]{2018-08-05 08:00 (X/X) - 2018-08-16 13:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"5.8. 8am - 16.8. 13Uhr\", \"August 5th 8am - August 16th 13h\"],\n    ),\n    (\n        \"Interval[]{X-X-X 08:00 (X/X) - X-X-X 13:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"8am - 13:00\", \"8am - 13Uhr\", \"8am to 13h\", \"8am-13\"],\n    ),\n    # increasing coverage for int-int hours\n    (\n        \"Interval[]{X-X-X 10:00 (X/X) - X-X-X 12:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"10am - 12:00\", \"10am - 12Uhr\", \"10am to 12h\", \"10-12am\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\", \"10-12\",],\n    ),\n    (\n        \"Interval[]{X-X-X 15:00 (X/X) - X-X-X 16:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"03:00 - 04:00\", \"3Uhr - 4Uhr\", \"3h to 4h\", \"3-4\"],\n    ),\n    # rulePODPOD\n    # (\n    #     \"Interval[]{X-X-X X:X (X/evening) - X-X-X X:X (X/night)}\",\n    #     \"2018-05-08T10:32\",\n    #     [\"evening/night\"],\n    # ),\n    # ruleAfterTime\n    (\n        \"Interval[]{2017-11-26 20:00 (X/X) - None}\",\n        \"2018-03-07T12:43\",\n        [\"26.11.2017 ab 08:00 Uhr\"],\n    ),\n    (\n        \"Interval[]{2018-11-26 20:00 (X/X) - None}\",\n        \"2018-03-07T12:43\",\n        [\n            \"26.11.2018 ab 08:00 Uhr\",\n            \"26.11. ab 08:00 Uhr\",\n            \"26.11. frühestens um 08:00 Uhr\",\n            \"November 26th earliest 08:00 Uhr\",\n            \"November 26th earliest after 08:00 Uhr\",\n            \"November 26th from earliest 08:00 Uhr\",\n            \"26.11. nicht vor 08:00 Uhr\",\n        ],\n    ),\n    # ruleBeforeTime\n    (\n        \"Interval[]{None - 2017-11-26 20:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\n            \"26.11.2017 vor 08:00 Uhr\",\n            \"26.11.2017 bis spätestens 08:00 Uhr\",\n            \"26.11.2017 spätestens bis 08:00 Uhr\",\n        ],\n    ),\n    (\n        \"Interval[]{None - 2018-11-26 20:00 (X/X)}\",\n        \"2018-03-07T12:43\",\n        [\"26.11.2018 vor 08:00 Uhr\", \"26.11. vor 08:00 Uhr\", \"26.11. not after 08:00\"],\n    ),\n    # ruleHHMM\n    (\n        \"Time[]{X-X-X 20:00 (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\"8h\", \"8 Uhr\", \"8:00\", \"8h00\", \"8\"],\n    ),\n    (\n        \"Time[]{X-X-X 20:00 (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\"20h\", \"20 Uhr\", \"20:00\", \"20pm\", \"20\"],\n    ),  # <-- ignore am, since this makes no sense\n    # ruleMonthDOM\n    (\n        \"Time[]{2018-04-07 X:X (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\"april 7\", \"april 7th\", \"7. April\"],\n    ),\n    # ruleAbsorbOnTime\n    (\n        \"Time[]{X-X-X 20:00 (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\"at 8pm\", \"um 20h\", \"gegen 20:00\", \"about 8pm\", \"at around 8pm\"],\n    ),\n    # ruleAbsorbOnTime + X\n    (\n        \"Time[]{2018-06-21 08:00 (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\n            \"Jun 21 at 8am\",\n            \"Jun 21 8am\",\n            \"Jun 21 at 8am\",\n            \"Jun 21 on 8am\",\n            \"21. Juni um 8am\",\n        ],\n    ),\n    # ruleDateInterval\n    (\n        \"Interval[]{2018-11-13 13:30 (X/X) - 2018-11-13 15:35 (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\n            \"Mon, Nov 13 1:30 PM - 3:35 PM\",\n            \"Montag, 13. November von 13:30 bis 15:35\",\n            \"Nov 13 13:30 - 15:35\",\n        ],\n    ),\n    (\n        \"Interval[]{2018-11-13 13:30 (X/X) - None}\",\n        \"2018-03-07T00:00\",\n        [\n            \"Mon, Nov 13 after 1:30 PM\",\n            \"Montag, 13. November nach 13:30\",\n            \"Montag, 13. November 2018 nach 13:30\",\n            \"13.11. ab 13:30\",\n        ],\n    ),\n    (\n        \"Interval[]{2016-11-13 13:30 (X/X) - None}\",\n        \"2018-03-07T00:00\",\n        [\n            \"Mon, Nov 13 2016 after 1:30 PM\",\n            \"Montag, 13. November 2016 nach 13:30\",\n            \"Montag, 13. November 2016 nach 13:30\",\n            \"13.11.16 ab 13:30\",\n        ],\n    ),\n    (\n        \"Interval[]{2018-03-11 X:X (X/noon) - None}\",\n        \"2018-03-07T00:00\",\n        [\"Sunday after noon\", \"Sonntag ab Mittag\", \"Sonntag, 11. März 2018 ab Mittag\"],\n    ),\n    # (\n    #     \"Interval[]{2018-03-11 21:00 (X/X) - None}\",\n    #     \"2018-03-07T00:00\",\n    #     [\n    #         \"Sunday Mar 11 after 9\",\n    #         \"Sonntag, 11. März 2018 nach 9\",\n    #         \"Sonntag, der 11. Mrz. nach 9\",\n    #     ],\n    # ),\n    # (\n    #     \"Interval[]{2016-03-11 21:00 (X/X) - None}\",\n    #     \"2018-03-07T00:00\",\n    #     [\n    #         \"Sunday Mar 11 2016 after 9\",\n    #         \"Sonntag, 11. März 2016 nach 9\",\n    #         \"Sonntag, der 11. Mrz 2016 nach 9\",\n    #     ],\n    # ),\n    # ruleDateInterval - day wrap\n    (\n        \"Interval[]{2018-11-13 23:30 (X/X) - 2018-11-14 03:35 (X/X)}\",\n        \"2018-03-07T00:00\",\n        [\"Mon, Nov 13 11:30 PM - 3:35 AM\", \"Nov 13 23:30 - 3:35am\"],\n    ),\n    (\n        \"Interval[]{2018-02-20 21:00 (X/X) - 2018-02-21 04:00 (X/X)}\",\n        \"2018-02-20T09:37\",\n        [\"today 9pm - 4am\"],\n    ),\n    # ruleAbsorbDOWComma -- deleted, comma should be removed by caller\n    (\n        \"Time[]{2018-07-27 X:X (X/X)}\",\n        \"2018-07-26T00:00\",\n        [\"Freitag, dem 27.\", \"Fri, the 27th\", \"fri 27\"],\n    ),\n    # ruleNamedHour\n    (\"Time[]{X-X-X 09:00 (X/X)}\", \"2018-07-26T00:00\", [\"neun\", \"nine\"]),\n    # ruleQuarterBeforeHH\n    # (\n    #     \"Time[]{2018-07-26 19:45 (X/X)}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"viertel vor acht\", \"viertel vor 8\", \"quarter to eight\"],\n    # ),\n    # ruleQuarterBeforeHH midnight wrap\n    (\"Time[]{X-X-X 23:45 (X/X)}\", \"2018-07-26T00:00\", [\"viertel vor 0\"]),\n    # ruleQuarterAfterHH\n    # (\n    #     \"Time[]{2018-07-26 08:15 (X/X)}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"viertel nach acht\", \"viertel nach 8\", \"quarter past eight\"],\n    # ),\n    # ruleHalfBeforeHH\n    # (\n    #     \"Time[]{2018-07-26 07:30 (X/X)}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"half eight\"],\n    # ),\n    # ruleHalfBeforeHH not when minutes are present\n    (\"Time[]{X-X-X 19:35 (X/X)}\", \"2018-07-26T00:00\", [\"halb 7:35\"]),\n    # ruleHalfBeforeHH midnight wrap\n    (\"Time[]{X-X-X 23:30 (X/X)}\", \"2018-07-26T00:00\", [\"halb mitternacht\"]),\n    # ruleHalfAfterHH\n    (\n        \"Time[]{X-X-X 08:30 (X/X)}\",\n        \"2018-07-26T00:00\",\n        [\"halb nach acht\", \"halfe past eight\"],\n    ),\n    # ruleHalfAfterHH not when minutes are present\n    (\"Time[]{X-X-X 20:32 (X/X)}\", \"2018-07-26T00:00\", [\"halb nach 8:32\"]),\n    # rulePODInterval\n    # (\n    #     \"Interval[]{None - 2018-09-17 22:00 (X/X)}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"am 17.9. abends vor 10\", \"at Sep 17th in the evening before 10\"],\n    # ),\n    # (\n    #     \"Interval[]{X-X-X 22:00 (X/X) - None}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"abends nach 10\", \"in the evening after 10\", \"in the evening after 22h\"],\n    # ),\n    # (\n    #     \"Interval[]{X-X-X 20:00 (X/X) - X-X-X 21:00 (X/X)}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"in the evening between 8 and 9\", \"Jul 26th between 20 and 21\"],\n    # ),\n    # (\n    #     \"Interval[]{X-X-X 08:00 (X/X) - X-X-X 09:00 (X/X)}\",\n    #     \"2018-07-26T00:00\",\n    #     [\"in the morning between 8 and 9\", \"Jul 26th between 8 and 9\"],\n    # ),\n    # rule\n    #\n    # -----------------------------------------------------------------------------\n    # OLD CORPUS\n    # -----------------------------------------------------------------------------\n    #\n    (\n        \"Interval[]{2017-12-19 21:30 (X/X) - 2017-12-19 22:45 (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\n            \"tomorrow 09:30 - 10:45\",\n            \"tomorrow 0930 - 1045\",\n            \"19. Dezember von 09:30 bis 10:45\",\n            \"19th of December from 09:30 til 10:45\",\n            \"19.12. 09:30 - 10:45\",\n            \"19.12.17 09:30 - 10:45\",\n            \"19.12.2017 09:30 - 19.12.2017 10:45\",\n            \"19.12.2017 09:30 - 10:45\",\n            \"19 dec 0930-1045\",\n            \"Dec 19th 9:30pm to 10:45pm\",\n        ],\n    ),\n    (\n        \"Interval[]{2018-02-16 X:X (X/X) - 2018-02-21 X:X (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\"16.02.2018 - 21.02.2018\", \"16. bis 21.02.2018\"],\n    ),\n    (\n        \"Interval[]{2018-08-07 X:X (X/X) - 2018-08-10 X:X (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\"07.-10.08.2018\"],\n    ),\n    # ('Range[]{2018-12-09 - 2018-12-13}',\n    #  '2017-12-18T12:34',\n    #  [\n    #      '09.-13.12.2018 von Samstag bis Time[]{2017-05-11 X:X (X/X)}'\n    #  ]),\n    # ('Range[]{2018-04-27 - 2018-04-30}',\n    #  '2017-12-18T12:34',\n    #  [\n    #      # 'from the 27th to the 30th of April 2018',\n    #      '27.-30.04.2018 von Freitag bis Montag'\n    #  ]),\n    (\n        \"Time[]{2018-01-13 X:X (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\"am 13.1.\", \"am 13.01.\", \"am 13. Januar\", \"13.01\", \"13.1\", \"13th Jan\"],\n    ),\n    (\n        \"Time[]{2017-12-19 X:X (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\n            \"am Dienstag\",\n            \"am 19.12\",\n            \"Dienstag 19.12\",\n            \"Tuesday 19th of December\",\n            \"Tuesday December 19th\",\n            \"Dienstag 19. Dezember\",\n            \"Dienstag Dezember 19.\",\n            \"Dienstag\",\n        ],\n    ),\n    (\n        \"Time[]{2018-03-01 14:30 (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\n            # mm/dd does not work yet\n            # '03/01/2018 at 2:30 pm',\n            \"am 01.03.2018 um 14:30\",\n            \"Mar 1st 2:30 pm\",\n            \"1. März um 1430 Uhr\",\n            \"01.03.2018 14:30\",\n        ],\n    ),\n    (\n        \"Time[]{2018-01-03 14:30 (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\n            # mm/dd does not work yet\n            # '01/03/2018 at 2:30 pm',\n            \"am 03.01.2018 um 14:30\",\n            \"Jan. 3rd 2:30 pm\",\n            \"3. Januar 1430 Uhr\",\n            \"03.01.2018 14:30\",\n            \"3 Jan 2018 14:30\",\n        ],\n    ),\n    (\"Time[]{2018-04-23 23:00 (X/X)}\", \"2017-12-18T12:34\", [\"23.04.2018 11:00\"]),\n    (\"Time[]{2018-11-19 18:00 (X/X)}\", \"2017-12-18T12:34\", [\"19.11.2018 18:00\"]),\n    # (\n    #     \"Time[]{2017-12-20 X:X (X/morning)}\",\n    #     \"2017-12-18T12:34\",\n    #     [\"Wednesday, 20th December morning\", \"december 20 morning\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/morning)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\n    #         \"6. dezember morgens\",\n    #         \"6. dezember früh\",\n    #         \"6. dezember in der früh\",\n    #         \"december 6 early\",\n    #         \"december 6th morning\",\n    #     ],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/earlymorning)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. dezember früh morgens\", \"december 6 early morning\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/forenoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. Dezember vormittags\", \"december 6th forenoon\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/afternoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. Dezember nachmittag\", \"december 6 afternoon\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/noon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. Dezember mittags\", \"december 6 noon\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/evening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. Dezember abends\", \"december 6 late\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/lateevening)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. Dezember später abend\", \"december 6 late evening\"],\n    # ),\n    # (\n    #     \"Time[]{2018-12-06 X:X (X/veryearlyafternoon)}\",\n    #     \"2018-03-07T12:43\",\n    #     [\"6. Dezember sehr früher nachmittag\", \"december 6 very early afternoon\"],\n    # ),\n    # ('DateTime[]{2017-12-20Tmorning}',\n    #  '2017-12-18T12:34',\n    #  ['Wednesday, morning, 20.12.17']),\n    # ('DateTime[]{2017-12-20Tafternoon}',\n    #  '2017-12-18T12:34',\n    #  ['Wednesday, afternoon, 20.12.17']),\n    # ('DateTime[]{2017-12-20 XX:XX (X/evening)}',\n    #  '2017-12-18T12:34',\n    #  ['Wednesday, evening, 20.12.17']),\n    (\"Time[]{2017-12-20 18:45 (X/X)}\", \"2017-12-18T12:34\", [\"6:45 Uhr 20.12.2017\"]),\n    (\"Time[]{2018-08-04 15:00 (X/X)}\", \"2017-12-18T12:34\", [\"04.08.2018 15:00\"]),\n    (\"Time[]{2018-09-01 13:00 (X/X)}\", \"2017-12-18T12:34\", [\"01.09.2018 01:00\"]),\n    (\"Time[]{2018-11-29 22:00 (X/X)}\", \"2017-12-18T12:34\", [\"29.11.2018 22:00\"]),\n    (\"Time[]{2018-02-27 19:00 (X/X)}\", \"2017-12-18T12:34\", [\"27.02.2018 07:00\"]),\n    (\"Time[]{2018-05-09 21:30 (X/X)}\", \"2017-12-18T12:34\", [\"09.05.2018 09:30\"]),\n    (\"Time[]{2018-01-17 14:30 (X/X)}\", \"2017-12-18T12:34\", [\"17.01.2018 14:30\"]),\n    (\n        \"Interval[]{2018-06-21 11:00 (X/X) - 2018-06-21 13:00 (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\"21.06.2018 11:00-13:00\", \"Jun 21st between 11am and 1pm\"],\n    ),\n    (\n        \"Interval[]{2018-07-09 20:00 (X/X) - 2018-07-13 22:00 (X/X)}\",\n        \"2017-12-18T12:34\",\n        [\"09.07.2018 08:00 - 13.07.2018 10:00\"],\n    ),\n    # Military time tests\n    (\"Time[]{2020-02-03 X:X (X/X)}\", \"2020-02-25T12:34\", [\"3 Feb 2020\"]),\n    # Duration tests\n    # (\n    #     \"Duration[]{1 nights}\",\n    #     \"2020-02-25T12:34\",\n    #     [\"one night\", \"ein nacht\", \"eine übernachtung\"],\n    # ),\n    (\"Duration[]{30 days}\", \"2020-02-25T12:34\", [\"in 30 days\", \"in 30 tage\"],),\n    (\"Duration[]{7 weeks}\", \"2020-02-25T12:34\", [\"in 7 weeks\", \"in 7 wochen\"],),\n    (\n        \"Duration[]{20 minutes}\",\n        \"2020-02-25T12:34\",\n        [\"in 20 minutes\", \"in twenty minutes\", \"in zwanzig Minuten\"],\n    ),\n    (\"Duration[]{1 months}\", \"2020-02-25T12:34\", [\"in 1 month\", \"in one month\", \"in ein Monat\"]),\n    (\n        \"Duration[]{30 minutes}\",\n        \"2020-02-25T12:34\",\n        [\"in half an hour\", \"in half hour\", \"in 1/2 hour\", \"in 1/2h\", \"in 1/2 h\", \"in halbe Stunde\"],\n    ),\n    # ruleTimeDuration\n    # (\n    #     \"Interval[]{2020-02-27 X:X (X/X) - 2020-02-28 X:X (X/X)}\",\n    #     \"2020-02-25T12:34\",\n    #     [\"on the 27th for one day\", \"on the 27th for one night\"],\n    # ),\n    # (\n    #     \"Interval[]{2020-02-25 15:00 (X/X) - 2020-02-25 16:00 (X/X)}\",\n    #     \"2020-02-25T12:34\",\n    #     [\"today 15:00 for one hour\"],\n    # ),\n    # # ruleDurationInterval, ruleIntervalDuration\n    # (\n    #     \"Interval[]{2020-11-15 X:X (X/X) - 2020-11-18 X:X (X/X)}\",\n    #     \"2020-02-25T12:34\",\n    #     [\"3 days 15-18 Nov\", \"15-18 Nov 3 Nächte\", \"15-18 Nov für 3 Nächte\"],\n    # ),\n]\n"
  },
  {
    "path": "ctparse/time/postprocess_latent.py",
    "content": "\"\"\"Those rules are applied as postprocessing steps after scoring has been already\ndone. Needed for backwards compatibility.\"\"\"\nfrom ctparse.types import Artifact, Interval, Time\nfrom datetime import datetime\nfrom dateutil.relativedelta import relativedelta\n\n\ndef apply_postprocessing_rules(ts: datetime, art: Artifact) -> Artifact:\n    \"\"\"Apply postprocessing rules to a resolution *art*. This is\n    introduced for backwards compatibility reasons.\n\n    Example:\n\n    8:00 pm, ts=2020.01.01 07:00\n\n    produces a resolution:\n\n    X-X-X 20:00\n\n    after postprocessing this is anchored to the reference time:\n\n    2020-01-01 20:00\n    \"\"\"\n    if isinstance(art, Time):\n        if art.isTOD:\n            return _latent_tod(ts, art)\n    if isinstance(art, Interval):\n        if art.isTimeInterval:\n            return _latent_time_interval(ts, art)\n\n    return art\n\n\ndef _latent_tod(ts: datetime, tod: Time) -> Time:\n    dm = ts + relativedelta(hour=tod.hour, minute=tod.minute or 0)\n    if dm <= ts:\n        dm += relativedelta(days=1)\n\n    res = Time(\n        year=dm.year, month=dm.month, day=dm.day, hour=dm.hour, minute=dm.minute, period=tod.period,\n    )\n    res.mstart = tod.mstart\n    res.mend = tod.mend\n    return res\n\n\ndef _latent_time_interval(ts: datetime, ti: Interval) -> Interval:\n    assert ti.t_from and ti.t_to  # guaranteed by the caller\n    dm_from = ts + relativedelta(hour=ti.t_from.hour, minute=ti.t_from.minute or 0)\n    dm_to = ts + relativedelta(hour=ti.t_to.hour, minute=ti.t_to.minute or 0)\n    if dm_from <= ts:\n        dm_from += relativedelta(days=1)\n        dm_to += relativedelta(days=1)\n\n    # pm-am interval overlap\n    if ti.t_from.period == \"pm\" and ti.t_to.period == \"am\":\n        dm_to += relativedelta(days=1)\n\n    res = Interval(\n        t_from=Time(\n            year=dm_from.year,\n            month=dm_from.month,\n            day=dm_from.day,\n            hour=dm_from.hour,\n            minute=dm_from.minute,\n            period=ti.t_from.period,\n        ),\n        t_to=Time(\n            year=dm_to.year,\n            month=dm_to.month,\n            day=dm_to.day,\n            hour=dm_to.hour,\n            minute=dm_to.minute,\n            period=ti.t_to.period,\n        ),\n    )\n    res.mstart = ti.mstart\n    res.mend = ti.mend\n    return res\n"
  },
  {
    "path": "ctparse/time/rules.py",
    "content": "from typing import Optional, Any, cast\nfrom datetime import datetime, timedelta\nfrom dateutil.relativedelta import relativedelta\nfrom dateutil.rrule import rrule, MONTHLY\nfrom ..rule import rule, predicate, dimension, _regex_to_join\nfrom ..types import Time, Duration, Interval, pod_hours, RegexMatch, DurationUnit, Recurring, RecurringFrequency, \\\n    RecurringArray\n\n# removed about, around, approx, ( the)? due to conflicts in regular sentences (\"sync about their tech\")\n@rule(\n    r\"at|on|am|um|gegen|den|dem|der|ca\\.?|(in|of)\",\n    dimension(Time),\n)\ndef ruleAbsorbOnTime(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch, t: Time) -> Time:\n    return t\n\n\n@rule(r\"von|vom|zwischen|from|between\", dimension(Interval))\ndef ruleAbsorbFromInterval(ts: datetime, pm_bias: bool, date_format: str, _: Any, i: Interval) -> Interval:\n    return i\n\n\n_dows = [\n    (\"mon\", r\"\\bmontag\\b|\\bmonday\\b|\\bmon\\.?\\b\"),\n    (\"tue\", r\"\\bdie?nstag\\b|\\bdie\\.?\\b|\\btuesday\\b|\\btue\\.?\\b\"),\n    (\"wed\", r\"\\bmittwoch\\b|\\bmi\\.?\\b|\\bwednesday\\b|\\bwed\\.?\\b\"),\n    (\"thu\", r\"\\bdonn?erstag\\b|\\bthursday\\b|\\bthur?\\.?\\b\"),\n    (\"fri\", r\"\\bfreitag\\b|\\bfriday\\b|\\bfri\\.?\\b\"),\n    (\"sat\", r\"\\bsamstag\\b|\\bsonnabends?\\b|\\bsaturday\\b|\\bsat\\.?\\b\"),\n    (\"sun\", r\"\\bsonntag\\b|\\bso\\.?\\b|\\bsunday\\b|\\bsun\\.?\\b\"),\n]\n_rule_dows = r\"|\".join(r\"(?P<{}>{})\".format(dow, expr) for dow, expr in _dows)\n_rule_dows = r\"({})\\s*\".format(_rule_dows)\n\n\n@rule(_rule_dows)\ndef ruleNamedDOW(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Time]:\n    for i, (name, _) in enumerate(_dows):\n        if m.match.group(name):\n            return Time(DOW=i)\n    return None\n\n\n_months = [\n    (\"january\", r\"\\bjanuary?\\b|\\bjan\\.?\\b\"),\n    (\"february\", r\"\\bfebruary?\\b|\\bfeb\\.?\\b\"),\n    (\"march\", r\"\\bmärz\\b|\\bmarch\\b|\\bmar\\.?\\b|\\bmrz\\.?\\b|\\bmär\\.?\\b\"),\n    (\"april\", r\"\\bapril\\b|\\bapr\\.?\\b\"),\n    (\"may\", r\"\\bmai\\b|\\bmay\\.?\\b\"),\n    (\"june\", r\"\\bjuni\\b|\\bjune\\b|\\bjun\\.?\\b\"),\n    (\"july\", r\"\\bjuli\\b|\\bjuly\\b|\\bjul\\.?\\b\"),\n    (\"august\", r\"\\baugust\\b|\\baug\\.?\\b\"),\n    (\"september\", r\"\\bseptember\\b|\\bsept?\\.?\\b\"),\n    (\"october\", r\"\\boktober\\b|\\boctober\\b|\\boct\\.?\\b|\\bokt\\.?\\b\"),\n    (\"november\", r\"\\bnovember\\b|\\bnov\\.?\\b\"),\n    (\"december\", r\"\\bdecember\\b|\\bdezember\\b|\\bdez\\.?\\b|\\bdec\\.?\\b\"),\n]\n_rule_months = \"|\".join(r\"(?P<{}>{})\".format(name, expr) for name, expr in _months)\n\n\n@rule(_rule_months)\ndef ruleNamedMonth(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Time]:\n    match = m.match\n    for i, (name, _) in enumerate(_months):\n        if match.group(name):\n            return Time(month=i + 1)\n    return None\n\n\n_named_ts = (\n    (1, r\"\\bone\\b|\\beins\\b?\"),\n    (2, r\"\\btwo\\b|\\bzwei\\b\"),\n    (3, r\"\\bthree\\b|\\bdrei\\b\"),\n    (4, r\"\\bfour\\b|\\bvier\\b\"),\n    (5, r\"\\bfive\\b|\\bfünf\\b\"),\n    (6, r\"\\bsix\\b|\\bsechs\\b\"),\n    (7, r\"\\bseven\\b|\\bsieben\\b\"),\n    (8, r\"\\beight\\b|\\bacht\\b\"),\n    (9, r\"\\bnine\\b|\\bneun\\b\"),\n    (10, r\"\\bten\\b|\\bzehn\\b\"),\n    (11, r\"\\beleven\\b|\\belf\\b\"),\n    (12, r\"\\btwelve\\b|\\bzwölf\\b\"),\n)\n_rule_named_ts = \"|\".join(r\"(?P<t_{}>{})\".format(n, expr) for n, expr in _named_ts)\n_rule_named_ts = r\"({})\\s*\".format(_rule_named_ts)\n\n\n@rule(_rule_named_ts + r\"(uhr|h|o\\'?clock)?\")\ndef ruleNamedHour(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Time]:\n    match = m.match\n    for n, _, in _named_ts:\n        if match.group(\"t_{}\".format(n)):\n            return Time(hour=n, minute=0)\n    return None\n\n\n@rule(\"mitternacht|midnight\")\ndef ruleMidnight(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    return Time(hour=0, minute=0)\n\n\ndef _pod_from_match(pod: str, m: RegexMatch) -> str:\n    mod = \"\"\n    if m.match.group(\"mod_early\"):\n        mod = \"early\"\n    elif m.match.group(\"mod_late\"):\n        mod = \"late\"\n    if m.match.group(\"mod_very\"):\n        mod = \"very\" + mod\n    return mod + pod\n\n\n@rule(\n    r\"(?P<mod_very>(sehr|very)\\s+)?\"\n    \"((?P<mod_early>früh(e(r|n|m))?|early)\"\n    \"|(?P<mod_late>(spät(e(r|n|m))?|late)))\",\n    predicate(\"isPOD\"),\n)\ndef ruleEarlyLatePOD(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch, p: Time) -> Time:\n    return Time(POD=_pod_from_match(p.POD, m))\n\n\n_pods = [\n    # (\n    #     \"first\",\n    #     (\n    #         r\"(erster?|first|earliest|as early|frühe?st(ens?)?|so früh)\"\n    #         \"( (as )?possible| (wie )?möglich(er?)?)?\"\n    #     ),\n    # ),\n    # (\n    #     \"last\",\n    #     (\n    #         r\"(letzter?|last|latest|as late as possible|spätest möglich(er?)?|\"\n    #         \"so spät wie möglich(er?)?)\"\n    #     ),\n    # ),\n    # (\"earlymorning\", r\"very early|sehr früh\"),\n    # (\"lateevening\", r\"very late|sehr spät\"),\n    (\"morning\", r\"\\bmorning\\b|\\bmorgend?s?\\b\"),\n    (\"forenoon\", r\"\\bforenoon\\b|\\bvormittags?\\b\"),\n    (\"afternoon\", r\"\\bafternoon\\b|\\bnachmittags?\\b\"),\n    (\"noon\", r\"\\bnoon\\b|\\bmittags?\\b\"),\n    (\"evening\", r\"\\bevening\\b|\\btonight\\b|\\babend?s?\\b|\\bspät\\b\"),\n    (\"night\", r\"\\bnight\\b|\\bnachts?\\b\"),\n]\n\n_rule_pods = \"|\".join(\"(?P<{}>{})\".format(pod, expr) for pod, expr in _pods)\n\n\n@rule(_rule_pods)\ndef rulePOD(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Time]:\n    for _, (pod, _) in enumerate(_pods):\n        if m.match.group(pod):\n            return Time(POD=pod)\n    return None\n\n\n@rule(r\"(?<!\\d|\\.)(?P<day>(?&_day))\\.?(?!\\d)\")\ndef ruleDOM1(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    # Ordinal day \"5.\"\n    return Time(day=int(m.match.group(\"day\")))\n\n\n@rule(r\"(?<!\\d|\\.)(?P<month>(?&_month))\\.?(?!\\d)\")\ndef ruleMonthOrdinal(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    # Ordinal day \"5.\"\n    return Time(month=int(m.match.group(\"month\")))\n\n\n@rule(r\"(?<!\\d|\\.)(?P<day>(?&_day))\\s*(?:st|nd|rd|th|s?ten|ter)\")\n# a \"[0-31]\" followed by a th/st\ndef ruleDOM2(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    return Time(day=int(m.match.group(\"day\")))\n\n\n@rule(r\"(?<!\\d|\\.)(?P<year>(?&_year))(?!\\d)\")\ndef ruleYear(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    # Since we may have two-digits years, we have to make a call\n    # on how to handle which century does the time refers to.\n    # We are using a strategy inspired by excel. Reference:\n    # https://github.com/comtravo/ctparse/issues/56\n    # https://docs.microsoft.com/en-us/office/troubleshoot/excel/two-digit-year-numbers\n    y = int(m.match.group(\"year\"))\n    SAME_CENTURY_THRESHOLD = 10\n\n    # Let the reference year be ccyy (e.g. 1983 => cc=19, yy=83)\n    cc = ts.year // 100\n    yy = ts.year % 100\n    # Check if year is two digits\n    if y < 100:\n        # Then any two digit year between 0 and\n        # yy+10 is interpreted to be within the\n        #  century cc (e.g. 83 maps to 1983, 93 to 1993),\n        # anything above maps to the previous century (e.g. 94 maps to 1894).\n        if y < yy + SAME_CENTURY_THRESHOLD:\n            return Time(year=cc * 100 + y)\n        else:\n            return Time(year=(cc - 1) * 100 + y)\n    else:\n        return Time(year=y)\n\n\n@rule(\n    r\"heute|(um diese zeit|zu dieser zeit|um diesen zeitpunkt|zu diesem zeitpunkt)|\"\n    \"todays?|(at this time)\"\n)\ndef ruleToday(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    return Time(year=ts.year, month=ts.month, day=ts.day)\n\n\n@rule(\n    r\"(genau\\s*)?jetzt|diesen moment|in diesem moment|gerade eben|\"\n    r\"((just|right)\\s*)?now|immediately\"\n)\ndef ruleNow(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    return Time(\n        year=ts.year, month=ts.month, day=ts.day, hour=ts.hour, minute=ts.minute\n    )\n\n\n@rule(r\"(morgen){e<=1}|tmrw?|(tomm?or?rows?){e<=1}|tom\")\ndef ruleTomorrow(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(days=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(r\"übermorgen\")\ndef ruleAfterTomorrow(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(days=2)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(r\"gestern|yesterdays?\")\ndef ruleYesterday(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(days=-1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(r\"vor\\s?gestern\")\ndef ruleBeforeYesterday(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(days=-2)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(r\"(das )?ende (des|dieses) monats?|(the )?(\\bEOM\\b|end of (the )?month)\")\ndef ruleEOM(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(day=1, months=1, days=-1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(\n    r\"(das )?(\\bEOY\\b|jahr(es)? ?ende|ende (des )?jahr(es)?)|\"\n    r\"(the )?(\\bEOY\\b|end of (the )?year)\"\n)\ndef ruleEOY(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(day=1, month=1, years=1, days=-1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"isDOM\"), predicate(\"isMonth\"))\ndef ruleDOMMonth(ts: datetime, pm_bias: bool, date_format: str, dom: Time, m: Time) -> Time:\n    return Time(day=dom.day, month=m.month)\n\n\n@rule(predicate(\"isDOM\"), r\"of\", predicate(\"isMonth\"))\ndef ruleDOMMonth2(ts: datetime, pm_bias: bool, date_format: str, dom: Time, _: RegexMatch, m: Time) -> Time:\n    return Time(day=dom.day, month=m.month)\n\n\n@rule(predicate(\"isMonth\"), predicate(\"isDOM\"))\ndef ruleMonthDOM(ts: datetime, pm_bias: bool, date_format: str, m: Time, dom: Time) -> Time:\n    return Time(month=m.month, day=dom.day)\n\n\n@rule(r\"am|diese(n|m)|at|on|this\", predicate(\"isDOW\"))\ndef ruleAtDOW(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch, dow: Time) -> Time:\n    dm = ts + relativedelta(weekday=dow.DOW)\n    if dm.date() == ts.date():\n        dm += relativedelta(weeks=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(\n    r\"((am )?(dem |den )?((kommenden?|nächsten?)( Woche)?))|\"\n    \"((on |at )?(the )?((next|following)( week)?))\",\n    predicate(\"isDOW\"),\n)\ndef ruleNextDOW(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch, dow: Time) -> Time:\n    dm = ts + relativedelta(weekday=dow.DOW, weeks=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"isDOW\"), r\"((kommende|nächste) Woche)|((next|following) week)\")\ndef ruleDOWNextWeek(ts: datetime, pm_bias: bool, date_format: str, dow: Time, _: RegexMatch) -> Time:\n    dm = ts + relativedelta(weekday=dow.DOW, weeks=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"isDOY\"), predicate(\"isYear\"))\ndef ruleDOYYear(ts: datetime, pm_bias: bool, date_format: str, doy: Time, y: Time) -> Time:\n    return Time(year=y.year, month=doy.month, day=doy.day)\n\n\n@rule(predicate(\"isDOW\"), predicate(\"isPOD\"))\ndef ruleDOWPOD(ts: datetime, pm_bias: bool, date_format: str, dow: Time, pod: Time) -> Time:\n    return Time(DOW=dow.DOW, POD=pod.POD)\n\n\n@rule(predicate(\"isDOW\"), predicate(\"isDOM\"))\ndef ruleDOWDOM(ts: datetime, pm_bias: bool, date_format: str, dow: Time, dom: Time) -> Time:\n    # Monday 5th\n    # Find next date at this day of week and day of month\n    dm = rrule(MONTHLY, dtstart=ts, byweekday=dow.DOW, bymonthday=dom.day, count=1)[0]\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"hasDOW\"), predicate(\"isDate\"))\ndef ruleDOWDate(ts: datetime, pm_bias: bool, date_format: str, dow: Time, date: Time) -> Time:\n    # Monday 5th December - ignore DOW, but carry over e.g. POD from dow\n    return Time(date.year, date.month, date.day, POD=dow.POD)\n\n\n@rule(predicate(\"isDate\"), predicate(\"hasDOW\"))\ndef ruleDateDOW(ts: datetime, pm_bias: bool, date_format: str, date: Time, dow: Time) -> Time:\n    # Monday 5th December - ignore DOW, but carry over e.g. POD from dow\n    return Time(date.year, date.month, date.day, POD=dow.POD)\n\n\n# LatentX: handle time entities that are not grounded to a date yet\n# and assume the next date+time in the future\n@rule(predicate(\"isDOM\"))\ndef ruleLatentDOM(ts: datetime,pm_bias: bool, date_format: str, dom: Time) -> Time:\n    dm = ts + relativedelta(day=dom.day)\n    if dm <= ts:\n        dm += relativedelta(months=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"isDOW\"))\ndef ruleLatentDOW(ts: datetime, pm_bias: bool, date_format: str, dow: Time) -> Time:\n    dm = ts + relativedelta(weekday=dow.DOW)\n    if dm <= ts:\n        dm += relativedelta(weeks=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"isDOY\"))\ndef ruleLatentDOY(ts: datetime, pm_bias: bool, date_format: str, doy: Time) -> Time:\n    dm = ts + relativedelta(month=doy.month, day=doy.day)\n    if dm < ts:\n        dm += relativedelta(years=1)\n    return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@rule(predicate(\"isPOD\"))\ndef ruleLatentPOD(ts: datetime, pm_bias: bool, date_format: str, pod: Time) -> Time:\n    # Set the time to the pre-defined POD values, but keep the POD\n    # information. The date is chosen based on what ever is the next\n    # possible slot for these times\n    h_from, h_to = pod_hours[pod.POD]\n    t_from = ts + relativedelta(hour=h_from, minute=0)\n    if t_from <= ts:\n        t_from += relativedelta(days=1)\n    return Time(year=t_from.year, month=t_from.month, day=t_from.day, POD=pod.POD)\n\n\n@rule(\n    r\"(?<!\\d|\\.)(?P<day>(?&_day))[\\.\\/]\"  # removed \\-\n    r\"((?P<month>(?&_month))|(?P<named_month>({})))\\.?\"\n    r\"(?!\\d|am|\\s*pm)\".format(_rule_months),\n    date_format=\"EU\"\n)\n# do not allow dd.ddam, dd.ddpm, but allow dd.dd am - e.g. in the German\n# \"13.06 am Nachmittag\"\ndef ruleDDMM(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    if m.match.group(\"month\"):\n        month = int(m.match.group(\"month\"))\n    else:\n        for i, (name, _) in enumerate(_months):\n            if m.match.group(name):\n                month = i + 1\n    day = int(m.match.group(\"day\"))\n    # TODO remove the hack below and extend the DDMM and MMDD rules to be more readable and clear.\n    if date_format == \"US\":\n        if day <= 12:\n            return Time(month=day, day=month)\n\n    return Time(month=month, day=day)\n\n\n@rule(\n    r\"(?<!\\d|\\.)((?P<month>(?&_month))|(?P<named_month>({})))[\\.\\/]\"\n    r\"(?P<day>(?&_day))\"\n    r\"(?!\\d|am|\\s*pm)\".format(_rule_months),\n    date_format=\"US\"\n)\ndef ruleMMDD(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    if m.match.group(\"month\"):\n        month = int(m.match.group(\"month\"))\n    else:\n        for i, (name, _) in enumerate(_months):\n            if m.match.group(name):\n                month = i + 1\n    return Time(month=month, day=int(m.match.group(\"day\")))\n\n\n@rule(\n    r\"(?<!\\d|\\.)(?P<day>(?&_day))[\\/\\.]\"\n    r\"((?P<month>(?&_month))|(?P<named_month>({})))[\\/\\.]\"\n    r\"(?P<year>(?&_year))(?!\\d)\".format(_rule_months),\n    date_format=\"EU\"\n)\ndef ruleDDMMYYYY(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    y = int(m.match.group(\"year\"))\n    if y < 100:\n        y += 2000\n    if m.match.group(\"month\"):\n        month = int(m.match.group(\"month\"))\n    else:\n        for i, (name, _) in enumerate(_months):\n            if m.match.group(name):\n                month = i + 1\n\n    time = Time(year=y, month=month, day=int(m.match.group(\"day\")))\n    try:\n        time.dt\n        return time\n    except ValueError:\n        return None\n\n\n@rule(\n    r\"(?<!\\d|\\.)\\s*((?P<month>(?&_month))|(?P<named_month>({})))\\s*[\\/\\.]\"\n    r\"(?P<day>(?&_day))\\s*[\\/\\.]\"\n    r\"\\s*(?P<year>(?&_year))(?!\\d)\".format(_rule_months),\n    date_format=\"US\"\n)\ndef ruleMMDDYYYY(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    y = int(m.match.group(\"year\"))\n    if y < 100:\n        y += 2000\n    if m.match.group(\"month\"):\n        month = int(m.match.group(\"month\"))\n    else:\n        for i, (name, _) in enumerate(_months):\n            if m.match.group(name):\n                month = i + 1\n\n    day = int(m.match.group(\"day\"))\n    time = Time(year=y, month=month, day=day)\n\n    try:\n        time.dt\n        return time\n    except ValueError:\n        return None\n\n\ndef _is_valid_military_time(ts: datetime, pm_bias: bool, date_format: str, t: Time) -> bool:\n    if t.hour is None or t.minute is None:\n        return False\n\n    t_year = t.hour * 100 + t.minute\n    # Military times (i.e. no separator) are notriously difficult to\n    # distinguish from yyyy; these are some heuristics to avoid an abundance\n    # of false positives for hhmm\n    #\n    # If hhmm is the current year -> assume it is a year\n    if t_year == ts.year:\n        return False\n    # If hhmm is the year in 3 month from now -> same, prefer year\n    if t_year == (ts + relativedelta(months=3)).year:\n        return False\n    # If the minutes is not a multiple of 5 prefer year.\n    # Since military times are typically used for flights,\n    # and flight times are only multiples of 5, we use this heuristic as evidence\n    # for military times.\n    if t.minute % 5:\n        return False\n    return True\n\n\ndef _maybe_apply_am_pm(t: Time, pm_bias: bool, date_format: str, ampm_match: str) -> Time:\n    # add pm_bias, to access\n    if not t.hour:\n        return t\n    if ampm_match is None:\n        if not pm_bias:\n            return Time(hour=t.hour, minute=t.minute)\n\n        # PM bias\n        if t.hour < 12:\n            return Time(hour=t.hour + 12, minute=t.minute)\n        else:\n            t.period = \"pm\"\n            return t\n\n    if ampm_match.lower().startswith(\"a\") and t.hour <= 12:\n        if t.hour == 12:\n            t.hour = 0\n        t.period = \"am\"\n        return t\n\n    if ampm_match.lower().startswith(\"p\") and t.hour < 12:\n        return Time(hour=t.hour + 12, minute=t.minute, period='pm')\n    # the case ampm_match.startswith('a') and t.hour >\n    # 12 (e.g. 13:30am) makes no sense, lets ignore the ampm\n    # likewise if hour >= 12 no 'pm' action is needed\n    return t\n\n\n@rule(\n    # match hhmm\n    r\"(?<!\\d|\\.)(?P<hour>(?:[01]\\d)|(?:2[0-3]))(?P<minute>(?&_minute))\"\n    r\"\\s*(?P<clock>uhr|h)?\"  # optional uhr\n    r\"\\s*(?P<ampm>\\s*[ap]\\.?m\\.?)?(?!\\d)\"  # optional am/pm\n)\ndef ruleHHMMmilitary(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Time]:\n    t = Time(hour=int(m.match.group(\"hour\")), minute=int(m.match.group(\"minute\") or 0))\n    if m.match.group(\"clock\") or _is_valid_military_time(ts, pm_bias, date_format, t):\n        return _maybe_apply_am_pm(t, pm_bias, date_format, m.match.group(\"ampm\"))\n    return None\n\n\n@rule(\n    r\"(?<!\\d)\"  # We don't start matching with another number, or a dot\n    r\"(?P<hour>(?&_hour))\"  # We certainly match an hour\n    # We try to match also the minute\n    r\"((?P<sep>:|uhr|h|)(?P<minute>(?&_minute)))?\"\n    r\"\\s*(?P<clock>uhr|h)?\"  # We match uhr with no minute\n    r\"(?P<ampm>\\s*[ap]\\.?m\\.?)?\"  # AM PM\n    r\"(?!\\d)\"\n)\ndef ruleHHMM(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    # hh [am|pm]\n    # hh:mm\n    # hhmm\n    t = Time(hour=int(m.match.group(\"hour\")), minute=int(m.match.group(\"minute\") or 0))\n    return _maybe_apply_am_pm(t, pm_bias, date_format, m.match.group(\"ampm\"))\n\n\n@rule(r\"(?<!\\d|\\.)(?P<hour>(?&_hour))\\s*(uhr|h|o\\'?clock)\")\ndef ruleHHOClock(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Time:\n    return Time(hour=int(m.match.group(\"hour\")))\n\n\n@rule(r\"(a |one )?quarter( to| till| before| of)|vie?rtel vor\", predicate(\"isTOD\"))\ndef ruleQuarterBeforeHH(ts: datetime, pm_bias: bool, date_format:str, _: RegexMatch, t: Time) -> Optional[Time]:\n    # no quarter past hh:mm where mm is not 0 or missing\n    if t.minute:\n        return None\n    if t.hour > 0:\n        return Time(hour=t.hour - 1, minute=45)\n    else:\n        return Time(hour=23, minute=45)\n\n\n@rule(r\"((a |one )?quarter( after| past)|vie?rtel nach)\", predicate(\"isTOD\"))\ndef ruleQuarterAfterHH(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch, t: Time) -> Optional[Time]:\n    if t.minute:\n        return None\n    return Time(hour=t.hour, minute=15)\n\n\n@rule(r\"halfe?( to| till| before| of)?|halb( vor)?\", predicate(\"isTOD\"))\ndef ruleHalfBeforeHH(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch, t: Time) -> Optional[Time]:\n    if t.minute:\n        return None\n    if t.hour > 0:\n        return Time(hour=t.hour - 1, minute=30)\n    else:\n        return Time(hour=23, minute=30)\n\n\n@rule(r\"halfe?( after| past)|halb nach\", predicate(\"isTOD\"))\ndef ruleHalfAfterHH(ts: datetime, pm_bias: bool, date_format: str, _: RegexMatch, t: Time) -> Optional[Time]:\n    if t.minute:\n        return None\n    return Time(hour=t.hour, minute=30)\n\n\n@rule(predicate(\"isTOD\"), predicate(\"isPOD\"))\ndef ruleTODPOD(ts: datetime, pm_bias: bool, date_format: str, tod: Time, pod: Time) -> Optional[Time]:\n    # time of day may only be an hour as in \"3 in the afternoon\"; this\n    # is only relevant for time <= 12\n    if tod.hour < 12 and (\n        \"afternoon\" in pod.POD\n        or \"evening\" in pod.POD\n        or \"night\" in pod.POD\n        or \"last\" in pod.POD\n    ):\n        h = tod.hour + 12\n    elif tod.hour > 12 and (\n        \"forenoon\" in pod.POD or \"morning\" in pod.POD or \"first\" in pod.POD\n    ):\n        # 17Uhr morgen -> do not merge\n        return None\n    else:\n        h = tod.hour\n    return Time(hour=h, minute=tod.minute)\n\n\n@rule(predicate(\"isPOD\"), predicate(\"isTOD\"))\ndef rulePODTOD(ts: datetime, pm_bias: bool, date_format: str, pod: Time, tod: Time) -> Optional[Time]:\n    return cast(Time, ruleTODPOD(ts, pm_bias, date_format, tod, pod))\n\n\n@rule(predicate(\"isDate\"), predicate(\"isTOD\"))\ndef ruleDateTOD(ts: datetime, pm_bias: bool, date_format: str, date: Time, tod: Time) -> Time:\n    return Time(\n        year=date.year, month=date.month, day=date.day, hour=tod.hour, minute=tod.minute\n    )\n\n\n@rule(predicate(\"isTOD\"), predicate(\"isDate\"))\ndef ruleTODDate(ts: datetime, pm_bias: bool, date_format: str, tod: Time, date: Time) -> Time:\n    return Time(\n        year=date.year, month=date.month, day=date.day, hour=tod.hour, minute=tod.minute\n    )\n\n\n@rule(predicate(\"isDate\"), predicate(\"isPOD\"))\ndef ruleDatePOD(ts: datetime, pm_bias: bool, date_format: str, d: Time, pod: Time) -> Time:\n    return Time(year=d.year, month=d.month, day=d.day, POD=pod.POD)\n\n\n@rule(predicate(\"isPOD\"), predicate(\"isDate\"))\ndef rulePODDate(ts: datetime, pm_bias: bool, date_format: str, pod: Time, d: Time) -> Time:\n    return Time(year=d.year, month=d.month, day=d.day, POD=pod.POD)\n\n\n@rule(\n    r\"((?P<not>not |nicht )?(vor|before))|(bis )?spätestens( bis)?|bis|latest\",\n    dimension(Time),\n)\ndef ruleBeforeTime(ts: datetime, pm_bias: bool, date_format: str, r: RegexMatch, t: Time) -> Interval:\n    if r.match.group(\"not\"):\n        return Interval(t_from=t, t_to=None)\n    else:\n        return Interval(t_from=None, t_to=t)\n\n\n@rule(\n    r\"((?P<not>not |nicht )?(nach|after))|(ab )?frühe?stens( ab)?|ab|\"\n    \"(from )?earliest( after)?|from\",\n    dimension(Time),\n)\ndef ruleAfterTime(ts: datetime, pm_bias: bool, date_format: str, r: RegexMatch, t: Time) -> Interval:\n    if r.match.group(\"not\"):\n        return Interval(t_from=None, t_to=t)\n    else:\n        return Interval(t_from=t, t_to=None)\n\n\n@rule(predicate(\"isDate\"), _regex_to_join, predicate(\"isDate\"))\ndef ruleDateDate(ts: datetime, pm_bias: bool, date_format: str, d1: Time, _: RegexMatch, d2: Time) -> Optional[Interval]:\n    if d1.year > d2.year:\n        return None\n    if d1.year == d2.year and d1.month > d2.month:\n        return None\n    if d1.year == d2.year and d1.month == d2.month and d1.day >= d2.day:\n        return None\n    return Interval(t_from=d1, t_to=d2)\n\n\n@rule(predicate(\"isDOM\"), _regex_to_join, predicate(\"isDate\"))\ndef ruleDOMDate(ts: datetime, pm_bias: bool, date_format: str, d1: Time, _: RegexMatch, d2: Time) -> Optional[Interval]:\n    if d1.day >= d2.day:\n        return None\n    return Interval(t_from=Time(year=d2.year, month=d2.month, day=d1.day), t_to=d2)\n\n\n@rule(predicate(\"isDate\"), _regex_to_join, predicate(\"isDOM\"))\ndef ruleDateDOM(ts: datetime, pm_bias: bool, date_format: str, d1: Time, _: RegexMatch, d2: Time) -> Optional[Interval]:\n    if d1.day >= d2.day:\n        return None\n    return Interval(t_from=d1, t_to=Time(year=d1.year, month=d1.month, day=d2.day))\n\n\n@rule(predicate(\"isDOY\"), _regex_to_join, predicate(\"isDate\"))\ndef ruleDOYDate(ts: datetime, pm_bias: bool, date_format: str, d1: Time, _: RegexMatch, d2: Time) -> Optional[Interval]:\n    if d1.month > d2.month:\n        return None\n    elif d1.month == d2.month and d1.day >= d2.day:\n        return None\n    return Interval(t_from=Time(year=d2.year, month=d1.month, day=d1.day), t_to=d2)\n\n\n@rule(predicate(\"isDateTime\"), _regex_to_join, predicate(\"isDateTime\"))\ndef ruleDateTimeDateTime(\n    ts: datetime, pm_bias: bool, date_format: str, d1: Time, _: RegexMatch, d2: Time\n) -> Optional[Interval]:\n    if d1.year > d2.year:\n        return None\n    if d1.year == d2.year and d1.month > d2.month:\n        return None\n    if d1.year == d2.year and d1.month == d2.month and d1.day > d2.day:\n        return None\n    if (\n        d1.year == d2.year\n        and d1.month == d2.month\n        and d1.day == d2.day\n        and d1.hour > d2.hour\n    ):\n        return None\n    if (\n        d1.year == d2.year\n        and d1.month == d2.month\n        and d1.day == d2.day\n        and d1.hour == d2.hour\n        and d1.minute >= d2.minute\n    ):\n        return None\n    return Interval(t_from=d1, t_to=d2)\n\n\n@rule(predicate(\"isTOD\"), _regex_to_join, predicate(\"isTOD\"))\ndef ruleTODTOD(ts: datetime, pm_bias: bool, date_format: str, t1: Time, _: RegexMatch, t2: Time) -> Interval:\n    if not pm_bias:\n        if (t2.hour < t1.hour):\n            if t2.hour < 12:\n                t2.hour += 12\n\n            return Interval(t_from=t1, t_to=t2)\n\n    # 9-5 handling on pm bias\n    if (t2.hour < t1.hour) and (t2.hour >= 12 and t1.hour >= 12):\n        t1.hour -= 12\n        return Interval(t_from=t1, t_to=t2)\n    # am override\n    if not t1.period and t2.period == \"am\" and t1.hour > 12:\n        t1.hour -= 12\n        return Interval(t_from=t1, t_to=t2)\n    else:\n        return Interval(t_from=t1, t_to=t2)\n\n\n@rule(predicate(\"isPOD\"), _regex_to_join, predicate(\"isPOD\"))\ndef rulePODPOD(ts: datetime, pm_bias: bool, date_format: str, t1: Time, _: RegexMatch, t2: Time) -> Interval:\n    return Interval(t_from=t1, t_to=t2)\n\n\n@rule(predicate(\"isDate\"), dimension(Interval))\ndef ruleDateInterval(ts: datetime, pm_bias: bool, date_format: str, d: Time, i: Interval) -> Optional[Interval]:\n    if not (\n        (i.t_from is None or i.t_from.isTOD or i.t_from.isPOD)\n        and (i.t_to is None or i.t_to.isTOD or i.t_to.isPOD)\n    ):\n        return None\n    t_from = t_to = None\n    if i.t_from is not None:\n        t_from = Time(\n            year=d.year,\n            month=d.month,\n            day=d.day,\n            hour=i.t_from.hour,\n            minute=i.t_from.minute,\n            POD=i.t_from.POD,\n        )\n    if i.t_to is not None:\n        t_to = Time(\n            year=d.year,\n            month=d.month,\n            day=d.day,\n            hour=i.t_to.hour,\n            minute=i.t_to.minute,\n            POD=i.t_to.POD,\n        )\n    if t_from and t_to and t_from.dt >= t_to.dt:\n        t_to_dt = t_to.dt + relativedelta(days=1)\n        t_to = Time(\n            year=t_to_dt.year,\n            month=t_to_dt.month,\n            day=t_to_dt.day,\n            hour=t_to_dt.hour,\n            minute=t_to_dt.minute,\n            POD=t_to.POD,\n        )\n    return Interval(t_from=t_from, t_to=t_to)\n\n\n@rule(dimension(Interval), predicate(\"isDate\"))\ndef ruleIntervalDate(ts: datetime, pm_bias: bool, date_format: str, i: Interval, d: Time) -> Optional[Interval]:\n    if not (\n        (i.t_from is None or i.t_from.isTOD or i.t_from.isPOD)\n        and (i.t_to is None or i.t_to.isTOD or i.t_to.isPOD)\n    ):\n        return None\n    t_from = t_to = None\n    if i.t_from is not None:\n        t_from = Time(\n            year=d.year,\n            month=d.month,\n            day=d.day,\n            hour=i.t_from.hour,\n            minute=i.t_from.minute,\n            POD=i.t_from.POD,\n        )\n    if i.t_to is not None:\n        t_to = Time(\n            year=d.year,\n            month=d.month,\n            day=d.day,\n            hour=i.t_to.hour,\n            minute=i.t_to.minute,\n            POD=i.t_to.POD,\n        )\n    if t_from and t_to and t_from.dt >= t_to.dt:\n        t_to_dt = t_to.dt + relativedelta(days=1)\n        t_to = Time(\n            year=t_to_dt.year,\n            month=t_to_dt.month,\n            day=t_to_dt.day,\n            hour=t_to_dt.hour,\n            minute=t_to_dt.minute,\n            POD=t_to.POD,\n        )\n    return Interval(t_from=t_from, t_to=t_to)\n\n\n@rule(predicate(\"isPOD\"), dimension(Interval))\ndef rulePODInterval(ts: datetime, pm_bias: bool, date_format: str, p: Time, i: Interval) -> Optional[Interval]:\n    def _adjust_h(t: Time) -> Optional[int]:\n        if t.hour is None:\n            return None\n        if t.hour < 12 and (\n            \"afternoon\" in p.POD\n            or \"evening\" in p.POD\n            or \"night\" in p.POD\n            or \"last\" in p.POD\n        ):\n            return t.hour + 12\n        else:\n            return t.hour\n\n    # only makes sense if i is a time interval\n    if not (\n        (i.t_from is None or i.t_from.hasTime) and (i.t_to is None or i.t_to.hasTime)\n    ):\n        return None\n    t_to = t_from = None\n    if i.t_to is not None:\n        t_to = Time(\n            year=i.t_to.year,\n            month=i.t_to.month,\n            day=i.t_to.day,\n            hour=_adjust_h(i.t_to),\n            minute=i.t_to.minute,\n            DOW=i.t_to.DOW,\n        )\n    if i.t_from is not None:\n        t_from = Time(\n            year=i.t_from.year,\n            month=i.t_from.month,\n            day=i.t_from.day,\n            hour=_adjust_h(i.t_from),\n            minute=i.t_from.minute,\n            DOW=i.t_from.DOW,\n        )\n    return Interval(t_from=t_from, t_to=t_to)\n\n\n# We add named numbers at least until 31 (max number of days in a month)\n_named_number = (\n    (1, r\"an?|one|ein[es]?\"),\n    (2, r\"two|zwei\"),\n    (3, r\"three|drei\"),\n    (4, r\"four|vier\"),\n    (5, r\"five|fünf\"),\n    (6, r\"six|sechs\"),\n    (7, r\"seven|sieben\"),\n    (8, r\"eight|acht\"),\n    (9, r\"nine|neun\"),\n    (10, r\"ten|zehn\"),\n    (11, r\"eleven|elf\"),\n    (12, r\"twelve|zwölf\"),\n    (13, r\"thirteen|dreizehn\"),\n    (14, r\"fourteen|vierzehn\"),\n    (15, r\"fifteen|fünfzehn\"),\n    (16, r\"sixteen|sechszehn\"),\n    (17, r\"seventeen|siebzehn\"),\n    (18, r\"eighteen|achtzehn\"),\n    (19, r\"nineteen|neunzehn\"),\n    (20, r\"twenty|zwanzig\"),\n    (21, r\"twentyone|einund?zwanzig\"),\n    (22, r\"twentytwo|zweiund?zwanzig\"),\n    (23, r\"twentythree|dreiund?zwanzig\"),\n    (24, r\"twentyfour|vierund?zwanzig\"),\n    (25, r\"twentyfive|fünfund?zwanzig\"),\n    (26, r\"twentysix|sechsund?zwanzig\"),\n    (27, r\"twentyseven|siebenud?zwanzig\"),\n    (28, r\"twentyeight|achtund?zwanzig\"),\n    (29, r\"twentynine|neunund?zwanzig\"),\n    (30, r\"thirty|drei(ß|ss)ig\"),\n    (31, r\"thirtyone|einundrei(ß|ss)ig\"),\n)\n_rule_named_number = \"|\".join(\n    r\"(?P<n_{}>{}\\b)\".format(n, expr) for n, expr in _named_number\n)\n_rule_named_number = r\"({})\\s*\".format(_rule_named_number)\n\n_durations = [\n    (DurationUnit.NIGHTS, r\"\\bn[aä]chte?\\b|\\bnights?\\b|\\b[üu]bernachtung\\b\"),\n    (DurationUnit.DAYS, r\"\\btage?\\b|days?|d\"),\n    (DurationUnit.MINUTES, r\"\\bmins?\\b|m(inute[ns]?)?\"),\n    (DurationUnit.HOURS, r\"\\bstunden?\\b|h(ours?)?|h|hrs?\"),\n    (DurationUnit.WEEKS, r\"weeks?|\\bwochen?\\b|w\"),\n    (DurationUnit.MONTHS, r\"\\bmonate?\\b|\\bmonths?\\b\"),\n    (DurationUnit.YEARS, r'\\bjahre?\\b|\\byears?\\b|\\by\\b|\\byrs?\\b'),\n]\n\n_rule_durations = r\"|\".join(\n    r\"(?P<d_{}>{}\\b)\".format(dur.value, expr) for dur, expr in _durations\n)\n_rule_durations = r\"({})\\s*\".format(_rule_durations)\n\n\n# Rules regarding durations\n@rule(r\"(in)\\s*\" + r\"(?P<num>\\d+)\\s*\" + _rule_durations)\ndef ruleDigitDuration(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Duration]:\n    # 1 day, 1 night etc.\n    num = m.match.group(\"num\")\n    if num:\n        for n, _, in _durations:\n            unit = m.match.group(\"d_\" + n.value)\n            if unit:\n                return Duration(int(num), n)\n\n    return None\n\n\n@rule(r\"(in)\\s*\" + _rule_named_number + _rule_durations)\ndef ruleNamedNumberDuration(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Duration]:\n    # one day, two nights, thirty days etc.\n    num = None\n    for n, _ in _named_number:\n        match = m.match.group(\"n_{}\".format(n))\n        if match:\n            num = n\n            continue\n\n    if num:\n        for d, _, in _durations:\n            unit = m.match.group(\"d_\" + d.value)\n            if unit:\n                return Duration(num, d)\n\n    return None\n\n\n@rule(r\"(in)\\s*\" + r\"(hal[fb]e?|1/2)(\\s+an?)?\\s*\" + _rule_durations)\ndef ruleDurationHalf(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Duration]:\n    # half day, half hour, 1/2 hour\n    for n, _, in _durations:\n        if m.match.group(\"d_\" + n.value):\n            if n == DurationUnit.HOURS:\n                return Duration(30, DurationUnit.MINUTES)\n            if n == DurationUnit.DAYS:\n                return Duration(12, DurationUnit.HOURS)\n\n    return None\n\n# discarding these rules for now and adding their functional counterparts below.\n# These have no use case for us at the moment\n# TODO: update corpus.py and auto_corpus.py\n\n# @rule(predicate(\"isDateInterval\"), r\"f[üo]r\", dimension(Duration))\n# def ruleIntervalConjDuration(\n#     ts: datetime, interval: Interval, _: RegexMatch, dur: Duration\n# ) -> Optional[Interval]:\n#     # Example: people tend to repeat themselves when specifying durations\n#     # 15-16 Nov für 1 Nacht\n#     return ruleDurationInterval(ts, dur, interval)  # type: ignore\n\n\n# @rule(predicate(\"isDateInterval\"), dimension(Duration))\n# def ruleIntervalDuration(\n#     ts: datetime, interval: Interval, dur: Duration\n# ) -> Optional[Interval]:\n#     # Variant without conjunction\n#     # 15-16 Nov 1 Nacht\n#     return ruleDurationInterval(ts, dur, interval)  # type: ignore\n#\n#\n# @rule(dimension(Duration), predicate(\"isDateInterval\"))\n# def ruleDurationInterval(\n#     ts: datetime, dur: Duration, interval: Interval\n# ) -> Optional[Interval]:\n#     # 3 days 15-18 Nov\n#     delta = interval.t_to.dt - interval.t_from.dt\n#     dur_delta = _duration_to_relativedelta(dur)\n#     if delta.days == dur_delta.days:\n#         return interval\n#     return None\n#\n@rule(dimension(Time), \"(for)\\s*\" + r\"(?P<num>\\d+)\\s*\" + _rule_durations)\ndef ruleIntervalFromDuration(\n    ts: datetime, pm_bias: bool, date_format: str, t: Time, m: RegexMatch,\n) -> Optional[Interval]:\n    # task 8pm for 30 minutes\n    dur = ruleDigitDuration(ts, pm_bias, date_format, m)\n\n    if t.hasDate:\n        time_dt = t.dt\n    else:\n        t.day, t.month, t.year = ts.day, ts.month, ts.year\n        time_dt = t.dt\n\n    if dur.unit in (\n        DurationUnit.DAYS,\n        DurationUnit.NIGHTS,\n        DurationUnit.WEEKS,\n        DurationUnit.MONTHS,\n    ):\n        delta = _duration_to_relativedelta(dur)\n        end_ts = time_dt + delta\n        end = Time(year=end_ts.year, month=end_ts.month, day=end_ts.day)\n        if t.hour:\n            end = Time(year=end_ts.year, month=end_ts.month, day=end_ts.day, hour=end_ts.hour, minute=end_ts.minute)\n        return Interval(t_from=t, t_to=end)\n\n    if dur.unit in (DurationUnit.HOURS, DurationUnit.MINUTES):\n        delta = _duration_to_relativedelta(dur)\n        end_ts = time_dt + delta\n        end = Time(\n            year=end_ts.year,\n            month=end_ts.month,\n            day=end_ts.day,\n            hour=end_ts.hour,\n            minute=end_ts.minute,\n        )\n        return Interval(t_from=t, t_to=end)\n    return None\n\n\ndef _duration_to_relativedelta(dur: Duration) -> relativedelta:\n    return {\n        DurationUnit.DAYS: relativedelta(days=dur.value),\n        DurationUnit.NIGHTS: relativedelta(days=dur.value),\n        DurationUnit.WEEKS: relativedelta(weeks=dur.value),\n        DurationUnit.MONTHS: relativedelta(months=dur.value),\n        DurationUnit.HOURS: relativedelta(hours=dur.value),\n        DurationUnit.MINUTES: relativedelta(minutes=dur.value),\n    }[dur.unit]\n\n\n@rule(dimension(Time), dimension(Duration))\ndef ruleTimeDuration(ts: datetime, pm_bias: bool, date_format: str, t: Time, d: Duration) -> Time:\n    # beer 4am in 3 days\n    delta = d.time(ts)\n    time = Time(\n        year=delta.year,\n        month=delta.month,\n        day=delta.day,\n        hour=t.hour,\n        minute=t.minute\n    )\n    return time\n\n\n@rule(dimension(Duration), dimension(Time))\ndef ruleDurationTime(ts: datetime, pm_bias: bool, date_format: str, d: Duration, t: Time) -> Time:\n    # beer in 3 days 4am\n    delta = d.time(ts)\n    time = Time(\n        year=delta.year,\n        month=delta.month,\n        day=delta.day,\n        hour=t.hour,\n        minute=t.minute\n    )\n    return time\n\n\n@rule(dimension(Duration), dimension(Interval))\ndef ruleDurationInterval(ts: datetime, pm_bias: bool, date_format: str, d: Duration, i: Interval) -> Interval:\n    # beer in 3 days 4-6pm\n\n    if not i.isTimeInterval:\n        return None\n\n    delta = d.time(ts)\n    start_time = Time(\n        year=delta.year,\n        month=delta.month,\n        day=delta.day,\n        hour=i.t_from.hour,\n        minute=i.t_from.minute\n    )\n    end_time = Time(\n        year=delta.year,\n        month=delta.month,\n        day=delta.day,\n        hour=i.t_to.hour,\n        minute=i.t_to.minute\n    )\n    return Interval(t_from=start_time, t_to=end_time)\n\n\n@rule(dimension(Interval), dimension(Duration))\ndef ruleIntervalDuration(ts: datetime, pm_bias: bool, date_format: str, i: Interval, d: Duration) -> Interval:\n\n    # beer 4-6pm in 3 days\n    # TODO: \"4-6 in 3 days\" doesn't work\n\n    if not i.isTimeInterval:\n        return None\n\n    delta = d.time(ts)\n    start_time = Time(\n        year=delta.year,\n        month=delta.month,\n        day=delta.day,\n        hour=i.t_from.hour,\n        minute=i.t_from.minute\n    )\n    end_time = Time(\n        year=delta.year,\n        month=delta.month,\n        day=delta.day,\n        hour=i.t_to.hour,\n        minute=i.t_to.minute\n    )\n    return Interval(t_from=start_time, t_to=end_time)\n\n\n######### Recurring events #########\n\n_named_interval = (\n    (2, r\"2|2nd|second|other|two\"),\n    (3, r\"3|3rd|third|three\"),\n    (4, r\"4|4th|four\"),\n    (5, r\"5|5th|five\"),\n    (6, r\"6|6th|six\"),\n    (7, r\"7|7th|seven\"),\n    (7, r\"8|8th|eight\"),\n    (9, r\"9|9th|nine\"),\n    (10, r\"10|10th|ten\"),\n    (11, r\"11|11th|eleven\"),\n)\n\n_rule_named_interval = \"|\".join(\n    r\"(?P<n_{}>{}\\b)\".format(itv, expr) for itv, expr in _named_interval\n\n)\n_rule_named_interval = r\"({})\\s*\".format(_rule_named_interval)\n\n_single_frequencies = [\n    (RecurringFrequency.DAILY, r\"daily\"),\n    (RecurringFrequency.WEEKLY, r\"weekly\"),\n    (RecurringFrequency.MONTHLY, r\"monthly\"),\n    (RecurringFrequency.YEARLY, r\"yearly\"),\n]\n\n_rule_single_frequencies = r\"|\".join(\n    r\"(?P<f_{}>{}\\b)\".format(freq.value, expr) for freq, expr in _single_frequencies\n)\n_rule_single_frequencies = r\"({})\\s*\".format(_rule_single_frequencies)\n\n_frequencies = [\n    (RecurringFrequency.DAILY, r\"days?|d\"),\n    (RecurringFrequency.WEEKLY, r\"weeks?|w\"),\n    (RecurringFrequency.MONTHLY, r\"months?|m\"),\n    (RecurringFrequency.YEARLY, r\"years?|y\"),\n]\n\n_rule_frequencies = r\"|\".join(\n    r\"(?P<f_{}>{}\\b)\".format(freq.value, expr) for freq, expr in _frequencies\n)\n_rule_frequencies = r\"({})\\s*\".format(_rule_frequencies)\n\n_recurring_dows = [\n    (\"mon\", r\"\\bmontags\\b|\\bmondays\\b|\\bmons\\.?\\b\"),\n    (\"tue\", r\"\\bdie?nstags\\b|\\bdies\\.?\\b|\\btuesdays\\b|\\btues\\.?\\b\"),\n    (\"wed\", r\"\\bmittwochs\\b|\\bmis\\.?\\b|\\bwednesdays\\b|\\bweds\\.?\\b\"),\n    (\"thu\", r\"\\bdonn?erstags\\b|\\bdons\\.?\\b|\\bthursdays\\b|\\bthurs\\.?\\b\"),\n    (\"fri\", r\"\\bfreitags\\b|\\bfridays\\b|\\bfris\\.?\\b\"),\n    (\"sat\", r\"\\bsamstags\\b|\\bsonnabends\\b|\\bsaturdays\\b|\\bsats\\.?\\b\"),\n    (\"sun\", r\"\\bsonntags\\b|\\bsos\\.?\\b|\\bsundays\\b|\\bsuns\\.?\\b\"),\n]\n_rule_recurring_dows = r\"|\".join(r\"(?P<{}>{})\".format(dow, expr) for dow, expr in _recurring_dows)\n_rule_recurring_dows = r\"({})\\s*\".format(_rule_recurring_dows)\n\n\n@rule(_rule_single_frequencies)\ndef ruleRecurringSingle(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Recurring]:\n    # daily / weekly\n    for f, _ in _single_frequencies:\n        freq = m.match.group(\"f_\" + f.value)\n        if freq:\n            time = Time(year=ts.year, month=ts.month, day=ts.day)\n            return Recurring(f.value, 1, start_time=time, end_time=time)\n    return None\n\n\n# r\"(?<!\\S)every(?!\\S)\\s*|(?<!\\S)each(?!\\S)\\s*\" old case sensitive regex\n@rule(r\"(every|each)\\s*\" + _rule_frequencies)\ndef ruleRecurring(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Recurring]:\n    # every day / every week\n    for f, _ in _frequencies:\n        freq = m.match.group(\"f_\" + f.value)\n        if freq:\n            time = Time(year=ts.year, month=ts.month, day=ts.day)\n            return Recurring(frequency=f.value, interval=1, start_time=time, end_time=time)\n\n    return None\n\n\n# r\"(?<!\\S)every(?!\\S)\\s*|(?<!\\S)each(?!\\S)\\s*\" old case sensitive regex\n@rule(r\"(every|each)\\s*\" + _rule_named_interval + _rule_frequencies)\ndef ruleRecurringIntervals(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Recurring]:\n    # every other week / every 2nd day\n    for i, _ in _named_interval:\n        match = m.match.group(\"n_{}\".format(i))\n        if match:\n            itv = i\n    for f, _ in _frequencies:\n        freq = m.match.group(\"f_\" + f.value)\n        if freq:\n            time = Time(year=ts.year, month=ts.month, day=ts.day)\n            return Recurring(frequency=f.value, interval=itv, start_time=time, end_time=time)\n    return None\n\n\n@rule(dimension(Recurring), r\"(starting|beginning|from|starts?|begins?)\\s*\", predicate(\"isDate\"))\ndef ruleDefinedRecurringIntervals(ts: datetime, pm_bias: bool, date_format: str, r: Recurring, m: RegexMatch, start: Time) -> Optional[Recurring]:\n    # every other week from monday / every 2nd day from today / every day starting monday / beer 4am weekly from next monday\n    start_time = Time(\n        year=start.year,\n        month=start.month,\n        day=start.day,\n        hour=r.start_time.hour or None,\n        minute=r.start_time.minute\n    )\n    end_time = Time(\n        year=start.year,\n        month=start.month,\n        day=start.day,\n        hour=r.end_time.hour or None,\n        minute=r.end_time.minute\n    )\n\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=start_time, end_time=end_time)\n\n\n@rule(r\"(starting|beginning|from|starts?|begins?)\\s*\", predicate(\"isDate\"), dimension(Recurring))\ndef ruleDefinedRecurringIntervals2(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch, start: Time, r: Recurring) -> Optional[Recurring]:\n    # beer from 25th every other week\n    start_time = Time(\n        year=start.year,\n        month=start.month,\n        day=start.day,\n        hour=r.start_time.hour or None,\n        minute=r.start_time.minute\n    )\n    end_time = Time(\n        year=start.year,\n        month=start.month,\n        day=start.day,\n        hour=r.end_time.hour or None,\n        minute=r.end_time.minute\n    )\n\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=start_time, end_time=end_time)\n\n\n@rule(dimension(Time), dimension(Recurring))\ndef ruleRecurringTime(ts: datetime, pm_bias: bool, date_format: str, t: Time, r: Recurring) -> Optional[Recurring]:\n    # 4 every day / 4pm daily / 7am tomorrow weekly / friday 4pm daily\n    r_time = r.start_time.dt\n    if t.hasDate:\n        r_time = t.dt\n\n    dm = ts + relativedelta(hour=t.hour, minute=t.minute or 0, day=r_time.day)\n    if dm <= ts:\n        r_time += relativedelta(days=1)\n    time = Time(\n        year=r_time.year,\n        month=r_time.month,\n        day=r_time.day,\n        hour=dm.hour,\n        minute=dm.minute\n    )\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=time, end_time=time, byday=r.byday)\n\n\n@rule(dimension(Recurring), dimension(Time))\ndef ruleRecurringTime2(ts: datetime, pm_bias: bool, date_format: str, r: Recurring, t: Time) -> Optional[Recurring]:\n    # every day 4 / daily 4pm\n    r_time = r.start_time.dt\n    if t.hasDate:\n        r_time = t.dt\n\n    dm = ts + relativedelta(hour=t.hour, minute=t.minute or 0, day=r_time.day)\n    if dm <= ts:\n        r_time += relativedelta(days=1)\n    time = Time(\n        year=r_time.year,\n        month=r_time.month,\n        day=r_time.day,\n        hour=dm.hour,\n        minute=dm.minute\n    )\n\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=time, end_time=time, byday=r.byday)\n\n\n@rule(dimension(Recurring), predicate(\"isTimeInterval\"))\ndef ruleRecurringTimeInterval(ts: datetime, pm_bias: bool, date_format: str, r: Recurring, t: Interval) -> Optional[Recurring]:\n    # every day 4-6 / daily 9-5\n    r_time = r.start_time.dt\n    dm = ts + relativedelta(hour=t.t_from.hour, minute=t.t_from.minute or 0, day=r_time.day)\n    if dm <= ts:\n        r_time += relativedelta(days=1)\n    start_time = Time(\n        year=r_time.year,\n        month=r_time.month,\n        day=r_time.day,\n        hour=t.t_from.hour,\n        minute=t.t_from.minute\n    )\n    end_time = Time(\n        year=r_time.year,\n        month=r_time.month,\n        day=r_time.day,\n        hour=t.t_to.hour,\n        minute=t.t_to.minute\n    )\n\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=start_time, end_time=end_time, byday=r.byday)\n\n\n@rule(predicate(\"isTimeInterval\"), dimension(Recurring))\ndef ruleRecurringTimeInterval2(ts: datetime, pm_bias: bool, date_format: str, t: Interval, r: Recurring) -> Optional[Recurring]:\n    # 4-6 every day / 9-5 daily\n    r_time = r.start_time.dt\n    dm = ts + relativedelta(hour=t.t_from.hour, minute=t.t_from.minute or 0, day=r_time.day)\n    if dm <= ts:\n        r_time += relativedelta(days=1)\n    start_time = Time(\n        year=r_time.year,\n        month=r_time.month,\n        day=r_time.day,\n        hour=t.t_from.hour,\n        minute=t.t_from.minute\n    )\n    end_time = Time(\n        year=r_time.year,\n        month=r_time.month,\n        day=r_time.day,\n        hour=t.t_to.hour,\n        minute=t.t_to.minute\n    )\n\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=start_time, end_time=end_time, byday=r.byday)\n\n\n@rule(r\"(every|each)\\s*\", predicate(\"isDOW\"))\ndef ruleRecurringDOW(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch, dow: Time) -> Optional[Recurring]:\n    # every thursday\n    dm = ts + relativedelta(weekday=dow.DOW)\n    if dm <= ts:\n        dm += relativedelta(weeks=1)\n    time = Time(year=dm.year, month=dm.month, day=dm.day, DOW=dow.DOW)\n    return Recurring(frequency=RecurringFrequency.WEEKLY.value, interval=1, start_time=time, end_time=time, byday=dm.weekday())\n\n\n@rule(r\"(every|each)\\s*\", predicate('isDOY'))\ndef ruleRecurringDOY(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch, doy: Time) -> Optional[Recurring]:\n    # every 23.9 / every september 3rd\n    dm = ts + relativedelta(month=doy.month, day=doy.day)\n    if dm <= ts:\n        dm += relativedelta(years=1)\n    time = Time(year=dm.year, month=doy.month, day=doy.day)\n    return Recurring(frequency=RecurringFrequency.YEARLY.value, interval=1, start_time=time, end_time=time, byday=dm.weekday())\n\n\n@rule(r\"(every|each)\\s*\" + _rule_named_interval, predicate(\"isDOW\"))\ndef ruleRecurringIntervalDOW(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch, dow: Time) -> Optional[Recurring]:\n    # every other thursday\n    itv = None\n    for i, _ in _named_interval:\n        match = m.match.group(\"n_{}\".format(i))\n        if match:\n            itv = i\n    dm = ts + relativedelta(weekday=dow.DOW)\n    if dm <= ts:\n        dm += relativedelta(weeks=1)\n    time = Time(year=dm.year, month=dm.month, day=dm.day, DOW=dow.DOW)\n    return Recurring(frequency=RecurringFrequency.WEEKLY.value, interval=itv, start_time=time, end_time=time, byday=dm.weekday())\n\n\n@rule(_rule_recurring_dows)\ndef ruleRecurringDOWS(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Recurring]:\n    # thursdays\n    for i, (name, _) in enumerate(_recurring_dows):\n        if m.match.group(name):\n            dow = i\n            dm = ts + relativedelta(weekday=dow)\n            if dm <= ts:\n                dm += relativedelta(weeks=1)\n            time = Time(year=dm.year, month=dm.month, day=dm.day, DOW=dow)\n            return Recurring(frequency=RecurringFrequency.WEEKLY.value, interval=1, start_time=time, end_time=time, byday=dm.weekday())\n    return None\n\n\n@rule(dimension(Recurring), r\"(and)\\s*\", dimension(Recurring))\ndef ruleRecurringSimpleDOWDOW(ts: datetime, pm_bias: bool, date_format: str, rec1: Recurring, m: RegexMatch, rec2: Recurring) -> Optional[Recurring]:\n    # thursdays and wednesdays\n    return Recurring(frequency=rec1.frequency, interval=rec1.interval, start_time=rec1.start_time, end_time=rec1.end_time, byday=(rec1.start_time.dt.weekday(), rec2.start_time.dt.weekday()))\n\n\n@rule(r\"(every|each)\\s*\", predicate(\"isDOW\"), r\"(and)\\s*\", predicate(\"isDOW\"))\ndef ruleRecurringDOWDOW(ts: datetime, pm_bias: bool, date_format: str, m1: RegexMatch, dow1: Time, m2: RegexMatch, dow2: Time) -> Optional[Recurring]:\n    # every thursday and wednesday\n    dm = ts + relativedelta(weekday=dow1.DOW)\n    if dm <= ts:\n        dm += relativedelta(weeks=1)\n    time1 = Time(year=dm.year, month=dm.month, day=dm.day, DOW=dow1.DOW)\n\n    dm2 = ts + relativedelta(weekday=dow2.DOW)\n    if dm2 <= ts:\n        dm2 += relativedelta(weeks=1)\n    time2 = Time(year=dm2.year, month=dm2.month, day=dm2.day, DOW=dow2.DOW)\n\n    return Recurring(frequency=RecurringFrequency.WEEKLY.value, interval=1, start_time=time1, end_time=time1, byday=(time1.dt.weekday(), time2.dt.weekday()))\n\n\n@rule(r\"(every|each)\\s*\", predicate(\"isDOW\"), r\"(to)\\s*\", predicate(\"isDOW\"))\ndef ruleRecurringDOW2DOW(ts: datetime, pm_bias: bool, date_format: str, m1: RegexMatch, dow1: Time, m2: RegexMatch, dow2: Time) -> Optional[Recurring]:\n    # every wednesday to monday\n    dows = []\n\n    if dow1.DOW < dow2.DOW:\n        dows = [day for day in range(dow1.DOW, dow2.DOW+1)]\n\n    elif dow1.DOW > dow2.DOW:\n        i = dow1.DOW\n        dows.append(i)\n        while i != dow2.DOW:\n            if i == 6:\n                i = 0\n                dows.append(i)\n                continue\n            i += 1\n            dows.append(i)\n\n    dows = tuple(dows)\n\n    for dow in dows:\n        dm = ts + relativedelta(weekday=dow)\n        if dm <= ts:\n            dm += relativedelta(weeks=1)\n            time = Time(year=dm.year, month=dm.month, day=dm.day)\n        if dm >= ts:\n            dm += relativedelta(weekday=dow)\n            time = Time(year=dm.year, month=dm.month, day=dm.day)\n\n    return Recurring(frequency=RecurringFrequency.WEEKLY.value, interval=1, start_time=time, end_time=time,\n                     byday=dows)\n\n\n# TODO 5-6 not working\n@rule(r\"(weekdays|every weekday)\\s*\")\ndef ruleRecurringWeekdays(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch) -> Optional[Recurring]:\n    # weekdays 5-6 / every weekday 4pm\n    dows = (0, 1, 2, 3, 4)\n\n    for dow in dows:\n        dm = ts + relativedelta(weekday=dow)\n        if dm <= ts:\n            dm += relativedelta(weeks=1)\n            time = Time(year=dm.year, month=dm.month, day=dm.day)\n        if dm >= ts:\n            dm += relativedelta(weekday=dow)\n            time = Time(year=dm.year, month=dm.month, day=dm.day)\n\n    return Recurring(frequency=RecurringFrequency.WEEKLY.value, interval=1, start_time=time, end_time=time,\n                     byday=dows)\n\n\n@rule(dimension(Duration), dimension(Recurring))\ndef ruleDurationRecurring(ts: datetime, pm_bias: bool, date_format: str, d: Duration, r: Recurring) -> Optional[Recurring]:\n    # beer in 3 days every week\n    dur = d.time(ts=ts)\n    time = Time(\n        year=dur.year,\n        month=dur.month,\n        day=dur.day\n    )\n    return Recurring(frequency=r.frequency, interval=r.interval, start_time=time, end_time=time, byday=dur.dt.weekday())\n\n\n@rule(r\"(next)\\s*\" + _rule_durations)\ndef ruleNextFrequency(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch):\n    for n, _, in _durations:\n        unit = m.match.group(\"d_\" + n.value)\n        if unit:\n            if unit == \"week\":\n                d = ts + relativedelta(days=7)\n                return Time(\n                    year=d.year,\n                    month=d.month,\n                    day=d.day,\n                )\n            if unit == \"month\":\n                d = ts + relativedelta(months=1)\n                return Time(\n                    year=d.year,\n                    month=d.month,\n                    day=d.day,\n                )\n    return None\n\n\n@rule(r\"(last)\\s*\" + _rule_dows)\ndef ruleLastDOM(ts: datetime, pm_bias: bool, date_format: str, m: RegexMatch):\n    # last monday of the month\n    for i, (name, _) in enumerate(_dows):\n        if m.match.group(name):\n            dom = i\n            break\n    last_dom = (datetime.now().replace(day=1) + timedelta(days=32)).replace(day=1)\n    while True:\n        last_dom -= timedelta(days=1)\n        if last_dom.weekday() == dom:\n            return Time(month=last_dom.month, day=last_dom.day)\n\n    return None\n"
  },
  {
    "path": "ctparse/timers.py",
    "content": "\"\"\"Utilities for tracking time spent in functions.\n\nAlthough this module is not part of the public API, it is used in various parts of\nthe ctparse package.\n\n\"\"\"\nfrom time import perf_counter\nfrom typing import Any, Callable, TypeVar, Union, Tuple\nfrom functools import wraps\n\nT = TypeVar(\"T\")\n\n\ndef timeout(timeout: Union[float, int]) -> Callable[[], None]:\n    \"\"\"Generate a functions that raises an exceptions if a timeout has passed.\n\n    Example:\n\n        sentinel = timeout(1.0)\n        time.sleep(0.5)\n        sentinel() # Do nothing\n        time.sleep(0.6)\n        sentinel() # Raises CTParseTimeoutException\n\n    :param timeout:\n       time in seconds. If it is equal to zero, it means to never raise an exception.\n    :returns:\n        A function that raises a `CTParseTimeoutException` if `timeout` seconds have\n        expired.\n    \"\"\"\n    start_time = perf_counter()\n\n    def _tt() -> None:\n        if timeout == 0:\n            return\n        if perf_counter() - start_time > timeout:\n            raise CTParseTimeoutError()\n\n    return _tt\n\n\ndef timeit(f: Callable[..., T]) -> Callable[..., Tuple[T, float]]:\n    \"\"\"Wrapper to time a function.\n\n    The wrapped function is modified so that it returns a tuple `(f(args), t)`\n    where `t` the time in seconds the function call took to run.\n\n    Example:\n\n        def fun(x):\n            return x * x\n\n        result, exec_time = timeit(fun)(3)\n\n    \"\"\"\n\n    @wraps(f)\n    def _wrapper(*args: Any, **kwargs: Any) -> Tuple[T, float]:\n        start_time = perf_counter()\n        res = f(*args, **kwargs)\n        return res, perf_counter() - start_time\n\n    return _wrapper\n\n\n# NOTE: TimeoutError is a built-in exception that means that\n# system function timed out at the system level. Hence we opt\n# for a custom exception.\nclass CTParseTimeoutError(Exception):\n    \"\"\"Exception raised by the `timeout` function.\"\"\"\n"
  },
  {
    "path": "ctparse/types.py",
    "content": "from datetime import datetime\nfrom typing import Any, Dict, Optional, Tuple, Type, TypeVar, List\nfrom dateutil.relativedelta import relativedelta\nfrom dateutil.rrule import rrule, YEARLY, MONTHLY, WEEKLY, DAILY\n\nimport regex\nfrom regex import Regex\nimport enum\n\nT = TypeVar(\"T\", bound=\"Artifact\")\n\n\nclass Artifact:\n    def __init__(self) -> None:\n        self.mstart = 0\n        self.mend = 0\n        self._attrs = [\"mstart\", \"mend\"]\n\n    def update_span(self: T, *args: \"Artifact\") -> T:\n        self.mstart = args[2].mstart\n        self.mend = args[-1].mend\n        return self\n\n    def __len__(self) -> int:\n        return self.mend - self.mstart\n\n    def __bool__(self) -> bool:\n        return True\n\n    def __str__(self) -> str:\n        return \"\"\n\n    def __repr__(self) -> str:\n        return \"{}[{}-{}]{{{}}}\".format(\n            self.__class__.__name__, self.mstart, self.mend, str(self)\n        )\n\n    def nb_str(self) -> str:\n        \"\"\"Return a string representation without the bounds information.\"\"\"\n        return \"{}[]{{{}}}\".format(self.__class__.__name__, str(self))\n\n    def __eq__(self, other: Any) -> bool:\n        if type(other) != type(self):\n            return False\n        else:\n            return all(getattr(self, a) == getattr(other, a) for a in self._attrs)\n\n    def __hash__(self) -> int:\n        return hash(tuple(getattr(self, a) for a in self._attrs))\n\n    def _hasOnly(self, *args: str) -> bool:\n        \"\"\"check that all attributes set to True are set (i.e. not None) and\n        all set to False are not set (i.e. None)\n\n        \"\"\"\n        return all(\n            getattr(self, a) is not None if a in args else getattr(self, a) is None\n            for a in self._attrs\n        )\n\n    def _hasAtLeast(self, *args: str) -> bool:\n        \"\"\"check that all attributes set to True are set (i.e. not None) and\n        all set to False are not set (i.e. None)\n\n        \"\"\"\n        return all(getattr(self, a) is not None for a in args)\n\n\nclass RegexMatch(Artifact):\n    def __init__(self, id: int, m: Regex) -> None:\n        super().__init__()\n        self._attrs = [\"mstart\", \"mend\", \"id\"]\n        self.key = \"R{}\".format(id)\n        self.id = id\n        self.match = m\n        self.mstart = m.span(self.key)[0]\n        self.mend = m.span(self.key)[1]\n        self._text = m.group(self.key)\n\n    def __str__(self) -> str:\n        return \"{}:{}\".format(self.id, self._text)\n\n\n_pod_hours = {\n    \"earlymorning\": {\n        \"offset\": (4, 7),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"morning\": {\n        \"offset\": (6, 9),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"forenoon\": {\n        \"offset\": (9, 12),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"noon\": {\n        \"offset\": (11, 13),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"afternoon\": {\n        \"offset\": (12, 17),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"evening\": {\n        \"offset\": (17, 20),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"lateevening\": {\n        \"offset\": (18, 21),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"night\": {\n        \"offset\": (19, 22),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (-1, -1),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (1, 1),\n        },\n    },\n    \"first\": {\n        \"offset\": (0, 0),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (0, 0),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (0, 0),\n        },\n    },\n    \"last\": {\n        \"offset\": (23, 23),\n        \"early\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (0, 0),\n        },\n        \"late\": {\n            \"early\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"late\": {\"offset\": (0, 0), \"very\": {\"offset\": (0, 0)}},\n            \"very\": {\"offset\": (0, 0)},\n            \"offset\": (0, 0),\n        },\n    },\n}\n\n\ndef _mk_pod_hours() -> Dict[str, Tuple[int, int]]:\n    def _add_ts(t1: Tuple[int, int], t2: Tuple[int, int]) -> Tuple[int, int]:\n        return (t1[0] + t2[0], t1[1] + t2[1])\n\n    def _mk(\n        pod: str, pod_data: Dict[str, Any], t: Tuple[int, int]\n    ) -> Dict[str, Tuple[int, int]]:\n        r = {pod: _add_ts(t, pod_data[\"offset\"])}\n        for k, v in pod_data.items():\n            if k == \"offset\":\n                continue\n            r.update(_mk(k + pod, v, r[pod]))\n        return r\n\n    res = {}\n    for k, v in _pod_hours.items():\n        if k == \"offset\":\n            continue\n        res.update(_mk(k, v, (0, 0)))\n    return res\n\n\npod_hours = _mk_pod_hours()\n\n\n_TIME_REGEX = regex.compile(\n    r\"(\\d{4}|X)-(\\d{2}|X)-(\\d{2}|X) (\\d{2}|X):(\\d{2}|X) \\((\\d|X)\\/(\\w+)\\)\"\n)\n\n\nclass Time(Artifact):\n    def __init__(\n        self,\n        year: Optional[int] = None,\n        month: Optional[int] = None,\n        day: Optional[int] = None,\n        hour: Optional[int] = None,\n        minute: Optional[int] = None,\n        DOW: Optional[int] = None,\n        POD: Optional[str] = None,\n        period: Optional[str] = None,\n    ) -> None:\n        super().__init__()\n        self._attrs = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"DOW\", \"POD\", \"period\"]\n        # Might add some validation here, did not to avoid the overhead\n        self.year = year\n        self.month = month\n        self.day = day\n        self.hour = hour\n        self.minute = minute\n        self.DOW = DOW\n        self.POD = POD\n        self.period = period\n\n    # -----------------------------------------------------------------------------\n    # Make sure to not accidentially test bool(x) as False when x==0, but you meant\n    # x==None\n    # -----------------------------------------------------------------------------\n    @property\n    def isDOY(self) -> bool:\n        \"\"\"isDayOfYear <=> a dd.mm but not year\n        \"\"\"\n        return self._hasOnly(\"month\", \"day\")\n\n    @property\n    def isDOM(self) -> bool:\n        \"\"\"isDayOfMonth <=> a dd but no month\n        \"\"\"\n        return self._hasOnly(\"day\")\n\n    @property\n    def isDOW(self) -> bool:\n        \"\"\"isDayOfWeek <=> DOW is the 0=Monday index; fragile test, as the DOW\n        could be accompanied by e.g. a full date etc.; in practice,\n        however, the production rules do not do that.\n\n        \"\"\"\n        return self._hasOnly(\"DOW\")\n\n    @property\n    def isMonth(self) -> bool:\n        return self._hasOnly(\"month\")\n\n    @property\n    def isPOD(self) -> bool:\n        \"\"\"isPartOfDay <=> morning, etc.; fragile, tests only that there is a\n        POD and neither a full date nor a full time\n        \"\"\"\n        return self._hasOnly(\"POD\")\n\n    @property\n    def isHour(self) -> bool:\n        \"\"\"only has an hour\"\"\"\n        return self._hasOnly(\"hour\")\n\n    @property\n    def isTOD(self) -> bool:\n        \"\"\"isTimeOfDay - only a time, not date\"\"\"\n        return self._hasOnly(\"hour\") or self._hasOnly(\"hour\", \"minute\") or self._hasOnly(\"hour\", \"period\") or self._hasOnly(\"hour\", \"minute\", \"period\")\n\n    @property\n    def isDate(self) -> bool:\n        \"\"\"isDate - only a date, not time\"\"\"\n        return self._hasOnly(\"year\", \"month\", \"day\")\n\n    @property\n    def isDateTime(self) -> bool:\n        \"\"\"a date and a time\"\"\"\n        return self._hasOnly(\"year\", \"month\", \"day\", \"hour\") or self._hasOnly(\n            \"year\", \"month\", \"day\", \"hour\", \"minute\"\n        )\n\n    @property\n    def isYear(self) -> bool:\n        \"\"\"just a year\"\"\"\n        return self._hasOnly(\"year\")\n\n    @property\n    def hasDate(self) -> bool:\n        \"\"\"at least a date\"\"\"\n        return self._hasAtLeast(\"year\", \"month\", \"day\")\n\n    @property\n    def hasDOY(self) -> bool:\n        \"\"\"at least a day of year\"\"\"\n        return self._hasAtLeast(\"month\", \"day\")\n\n    @property\n    def hasDOW(self) -> bool:\n        \"\"\"at least a day of week\"\"\"\n        return self._hasAtLeast(\"DOW\")\n\n    @property\n    def hasTime(self) -> bool:\n        \"\"\"at least a time to the hour\"\"\"\n        return self._hasAtLeast(\"hour\") or self._hasOnly(\"hour\", \"period\")\n\n    @property\n    def hasPeriod(self) -> bool:\n        \"\"\"at least a period\"\"\"\n        return self._hasAtLeast(\"period\")\n\n    @property\n    def hasPOD(self) -> bool:\n        \"\"\"at least a part of day\"\"\"\n        return self._hasAtLeast(\"POD\")\n\n    def __str__(self) -> str:\n        return \"{}-{}-{} {}:{} ({}/{})\".format(\n            \"{:04d}\".format(self.year) if self.year is not None else \"X\",\n            \"{:02d}\".format(self.month) if self.month is not None else \"X\",\n            \"{:02d}\".format(self.day) if self.day is not None else \"X\",\n            \"{:02d}\".format(self.hour) if self.hour is not None else \"X\",\n            \"{:02d}\".format(self.minute) if self.minute is not None else \"X\",\n            \"{:d}\".format(self.DOW) if self.DOW is not None else \"X\",\n            \"{}\".format(self.POD) if self.POD is not None else \"X\",\n        )\n\n    @classmethod\n    def from_str(cls: Type[\"Time\"], text: str) -> \"Time\":\n        match = _TIME_REGEX.match(text)\n        if not match:\n            raise ValueError(\"Invalid format\")\n        else:\n\n            def parse_opt_int(x: str) -> Optional[int]:\n                return None if x == \"X\" else int(x)\n\n            pod = match.group(7)\n            return cls(\n                year=parse_opt_int(match.group(1)),\n                month=parse_opt_int(match.group(2)),\n                day=parse_opt_int(match.group(3)),\n                hour=parse_opt_int(match.group(4)),\n                minute=parse_opt_int(match.group(5)),\n                DOW=parse_opt_int(match.group(6)),\n                POD=None if pod == \"X\" else pod,\n            )\n\n    @property\n    def start(self) -> \"Time\":\n        if self.hour is None and self.hasPOD:\n            hour = pod_hours[self.POD][0]  # type: ignore\n        else:\n            hour = self.hour or 0\n        return Time(\n            year=self.year,\n            month=self.month,\n            day=self.day,\n            hour=hour,\n            minute=self.minute or 0,\n            period=self.period,\n        )\n\n    @property\n    def end(self) -> \"Time\":\n        if self.hour is None and self.hasPOD:\n            hour = pod_hours[self.POD][1]  # type: ignore\n        else:\n            hour = self.hour if self.hour is not None else 23\n        return Time(\n            year=self.year,\n            month=self.month,\n            day=self.day,\n            hour=hour,\n            minute=self.minute if self.minute is not None else 59,\n            period=self.period,\n        )\n\n    @property\n    def dt(self) -> datetime:\n        # Use the start time, in case we have a POD specification\n        t = self.start\n        if t.year is None or t.month is None or t.day is None:\n            raise ValueError(\n                \"cannot convert underspecified Time into datetime\"\n                \", missing at least one of year, month or day\"\n            )\n        return datetime(t.year, t.month, t.day, t.hour or 0, t.minute or 0)\n\n\nclass Interval(Artifact):\n    def __init__(\n        self, t_from: Optional[Time] = None, t_to: Optional[Time] = None\n    ) -> None:\n        super().__init__()\n        self._attrs = [\"t_from\", \"t_to\"]\n        self.t_from = t_from\n        self.t_to = t_to\n\n    @property\n    def isTimeInterval(self) -> bool:\n        if self.t_from is None or self.t_to is None:\n            return False\n        else:\n            return self.t_from.isTOD and self.t_to.isTOD\n\n    @property\n    def isDateInterval(self) -> bool:\n        if self.t_from is None or self.t_to is None:\n            return False\n        return self.t_from.isDate and self.t_to.isDate\n\n    def __str__(self) -> str:\n        return \"{} - {}\".format(str(self.t_from), str(self.t_to))\n\n    @classmethod\n    def from_str(cls: Type[\"Interval\"], text: str) -> \"Interval\":\n        bounds = text.split(\" - \")\n        if len(bounds) != 2:\n            raise ValueError(\"Invalid format\")\n\n        t_from = None if bounds[0] == \"None\" else Time.from_str(bounds[0])\n        t_to = None if bounds[1] == \"None\" else Time.from_str(bounds[1])\n        return cls(t_from=t_from, t_to=t_to)\n\n    @property\n    def start(self) -> Optional[Time]:\n        if self.t_from is not None:\n            return self.t_from.start\n        else:\n            return None\n\n    @property\n    def end(self) -> Optional[Time]:\n        if self.t_to is not None:\n            return self.t_to.end\n        else:\n            return None\n\n\n@enum.unique\nclass DurationUnit(enum.Enum):\n    MINUTES = \"minutes\"\n    HOURS = \"hours\"\n    DAYS = \"days\"\n    NIGHTS = \"nights\"\n    WEEKS = \"weeks\"\n    MONTHS = \"months\"\n    YEARS = \"years\"\n\n\nclass Duration(Artifact):\n    def __init__(self, value: int, unit: DurationUnit):\n        \"\"\"Create a Duration using value and unit.\n\n        Typical values for unit are:\n\n        minute, hour, day, night, week, month, year\n        \"\"\"\n        super().__init__()\n        self.value = value\n        self.unit = unit\n\n    def __str__(self) -> str:\n        return \"{} {}\".format(self.value, self.unit.value)\n\n    @classmethod\n    def from_str(cls: Type[\"Duration\"], text: str) -> \"Duration\":\n        value, unit = text.split()\n        return Duration(int(value), DurationUnit(unit))\n\n    def time(self, ts: datetime) -> Time:\n        if self.unit == DurationUnit.MINUTES:\n            dm = ts + relativedelta(minutes=+self.value)\n            return Time(year=dm.year, month=dm.month, day=dm.day, hour=dm.hour, minute=dm.minute)\n        if self.unit == DurationUnit.HOURS:\n            dm = ts + relativedelta(hours=+self.value)\n            return Time(year=dm.year, month=dm.month, day=dm.day, hour=dm.hour, minute=dm.minute)\n        if self.unit == DurationUnit.DAYS:\n            dm = ts + relativedelta(days=+self.value)\n        if self.unit == DurationUnit.WEEKS:\n            dm = ts + relativedelta(days=+self.value*7)\n        if self.unit == DurationUnit.MONTHS:\n            dm = ts + relativedelta(months=+self.value)\n        if self.unit == DurationUnit.YEARS:\n            dm = ts + relativedelta(years=+self.value)\n\n        return Time(year=dm.year, month=dm.month, day=dm.day)\n\n\n@enum.unique\nclass RecurringFrequency(enum.Enum):\n    DAILY = \"DAILY\"\n    WEEKLY = \"WEEKLY\"\n    MONTHLY = \"MONTHLY\"\n    YEARLY = \"YEARLY\"\n\n\nclass Recurring(Artifact):\n    def __init__(\n        self,\n        frequency: Optional[RecurringFrequency] = None,\n        interval: Optional[int] = None,\n        start_time: Optional[Time] = None,\n        end_time: Optional[Time] = None,\n        byday: Optional[tuple[int, ...]] = None,\n    ):\n        super().__init__()\n        self._attrs = ['start_time', 'end_time', 'frequency', 'interval', 'byday']\n        self.start_time = start_time\n        self.end_time = end_time\n        self.frequency = frequency\n        self.interval = interval\n        self.frequency_map = {RecurringFrequency.DAILY.value: DAILY,\n                              RecurringFrequency.WEEKLY.value: WEEKLY,\n                              RecurringFrequency.MONTHLY.value: MONTHLY,\n                              RecurringFrequency.YEARLY.value: YEARLY}\n        self.byday = byday\n\n    def __str__(self) -> str:\n        return \"{} {} {} {}\".format(self.frequency, self.interval, self.start_time, self.end_time, self.byday)\n\n    @property\n    def isRecurring(self) -> bool:\n        if self.frequency and self.interval is None:\n            return False\n        else:\n            return True\n\n    @property\n    def isRecurringDOW(self) -> bool:\n        if not self.start_time.DOW:\n            return False\n        else:\n            return True\n\n    @property\n    def isRecurringTime(self) -> bool:\n        if not self.start_time.hasTime:\n            return False\n        else:\n            return True\n\n    def to_rrule(self) -> rrule:\n        r_rule = rrule(freq=self.frequency_map[self.frequency], interval=self.interval, byweekday=self.byday)\n        r_rule = r_rule.__str__().split('\\n')[1]\n        return r_rule\n\n\nclass RecurringArray(Artifact):\n    def __init__(self,\n                 rec_1: Optional[Recurring] = None,\n                 rec_2: Optional[Recurring] = None,\n                 rec_3: Optional[Recurring] = None,\n                 rec_4: Optional[Recurring] = None,\n                 rec_5: Optional[Recurring] = None,\n                 ):\n        super().__init__()\n        self._attrs = ['rec_1', 'rec_2', 'rec_3', 'rec_4', 'rec_5']\n        self.rec_1 = rec_1\n        self.rec_2 = rec_2\n        self.rec_3 = rec_3\n        self.rec_4 = rec_4\n        self.rec_5 = rec_5\n\n    def __str__(self) -> str:\n        return \"\\n Recurring instance: {} \\n Recurring instance: {} \\n Recurring instance: {} \\n Recurring instance: {} \\n Recurring instance: {}\".format(self.rec_1, self.rec_2, self.rec_3, self.rec_4, self.rec_5)\n\n    @property\n    def to_list(self) -> list:\n        array = [self.rec_1, self.rec_2, self.rec_3, self.rec_4, self.rec_5]\n        array = [i for i in array if i != None]\n        return array\n"
  },
  {
    "path": "datasets/README.rst",
    "content": "==================\nTime Parse Dataset\n==================\n\nThe dataset included in ``datasets/timeparse_corpus.json`` contains a set of ~2000 human annotated time expression in english and german.\n\nThe dataset is a list of json records with the following fields:\n\n- *text*: the text for the time expression\n- *ref_time*: a timestamp in ISO 8601 format ``YYYY-MM-DDTHH:MM:SS``\n- *gold_parse*: the human annotation of the time expression. It can be a ``Time`` or ``Interval``. \n- *language*: a two-digit code indicating the language. In this dataset it is either \"en\" or \"de\".\n\n\nFor ``Time``, the format is as follows::\n\n    Time[]{YYYY-MM-DD HH:MM (dow/tod)} \n\nWhere:\n- ``YYYY`` is a four-digit year or ``X``, if year is missing\n- ``MM`` is a two-digit month or ``X``, if month is missing\n- ``DD`` is a two-digit day or ``X``, if day is missing\n- ``HH`` is a two-digit hour (24 hour clock) or ``X``, if hour is missing\n- ``MM`` is a two-digit minute or ``X``, if minute is missing\n- ``dow`` is an integer between 0 and 6 representing day of week or X, if missing (in the dataset, day of week is always missing)\n- ``tod`` is a string representing the time of day (such as earlymorning, morning, forenoon, noon, afternoon, evening, lateevening) or X if not specified.\n\nExample::\n\n    Morning of the 11th June 2017\n    Time[]{2017-06-11 X:X (X/morning)}\n\nFor ``Interval`` the format is as follows::\n\n    Interval[]{<START_T> - <END_T>}\n\nWhere ``<START_T>`` and ``<END_T>`` are the beginning and end of the interval. ``<START_T>`` or ``<END_T>`` can be None if the interval is open-ended. They can be specified\nusing the same representation for times, as described above::\n\n    YYYY-MM-DD HH:MM (dow/tod)\n\nExample::\n\n    Wed, Oct 11 2017 8:30 PM - 9:47 PM\n    Interval[]{2017-10-11 08:30 (X/X) - 2017-10-11 09:47 (X/X)}"
  },
  {
    "path": "datasets/timeparse_corpus.json",
    "content": "[\n {\n  \"text\": \"Donnerstag, den 05.10. ca 6:55\",\n  \"ref_time\": \"2017-09-25T16:06:55\",\n  \"gold_parse\": \"Time[]{2017-10-05 06:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.05.2017 früh\",\n  \"ref_time\": \"2017-05-16T05:42:09\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.7\",\n  \"ref_time\": \"2017-07-11T20:21:25\",\n  \"gold_parse\": \"Time[]{2017-07-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04.07.2017 19:55 Uhr\",\n  \"ref_time\": \"2017-06-29T09:19:38\",\n  \"gold_parse\": \"Time[]{2017-07-04 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.10.2017 ca. ab 19.00 Uhr\",\n  \"ref_time\": \"2017-10-13T12:32:36\",\n  \"gold_parse\": \"Interval[]{2017-10-22 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"one night\",\n  \"ref_time\": \"2017-10-03T14:30:35\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 21 auf 22 November\",\n  \"ref_time\": \"2017-11-13T07:36:19\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr, 23.6. möglichst spät\",\n  \"ref_time\": \"2017-05-29T15:36:03\",\n  \"gold_parse\": \"Time[]{2017-06-23 X:X (X/lateevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Heute\",\n  \"ref_time\": \"2017-08-16T14:01:23\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag dieser Woche\",\n  \"ref_time\": \"2017-05-16T14:22:31\",\n  \"gold_parse\": \"Time[]{2017-05-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.07.\",\n  \"ref_time\": \"2017-06-28T11:51:53\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12 September - Late evening\",\n  \"ref_time\": \"2017-09-01T08:44:52\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/lateevening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 22.05.\",\n  \"ref_time\": \"2017-05-16T08:24:16\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 3.7.2017 11:55\",\n  \"ref_time\": \"2017-06-23T12:37:04\",\n  \"gold_parse\": \"Time[]{2017-07-03 11:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.01.2018 12:00 Uhr\",\n  \"ref_time\": \"2017-09-27T09:37:06\",\n  \"gold_parse\": \"Time[]{2018-01-31 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 14.November 2017\",\n  \"ref_time\": \"2017-09-07T12:57:04\",\n  \"gold_parse\": \"Time[]{2017-11-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11. auf 12.\",\n  \"ref_time\": \"2017-06-28T15:41:46\",\n  \"gold_parse\": \"Interval[]{2017-07-11 X:X (X/X) - 2017-07-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute 17:48h\",\n  \"ref_time\": \"2017-09-14T12:25:47\",\n  \"gold_parse\": \"Time[]{2017-09-14 17:48 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 31.10.2017 08:30\",\n  \"ref_time\": \"2017-10-26T11:53:15\",\n  \"gold_parse\": \"Time[]{2017-10-31 08:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.05.2017\",\n  \"ref_time\": \"2017-05-11T06:19:21\",\n  \"gold_parse\": \"Time[]{2017-05-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11.2017 morgens 10 Uhr\",\n  \"ref_time\": \"2017-10-26T07:42:36\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-20 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 11.10. so spät wie möglich\",\n  \"ref_time\": \"2017-10-07T07:29:09\",\n  \"gold_parse\": \"Time[]{2017-10-11 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.08. 1845-1955\",\n  \"ref_time\": \"2017-07-28T09:54:12\",\n  \"gold_parse\": \"Interval[]{2017-08-02 18:45 (X/X) - 2017-08-02 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.07\",\n  \"ref_time\": \"2017-06-14T10:15:04\",\n  \"gold_parse\": \"Time[]{2017-07-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14-12-2017\",\n  \"ref_time\": \"2017-11-22T13:00:06\",\n  \"gold_parse\": \"Time[]{2017-12-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.09.2017 gegen 6:30 Uhr\",\n  \"ref_time\": \"2017-07-27T09:41:10\",\n  \"gold_parse\": \"Time[]{2017-09-08 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.06.\",\n  \"ref_time\": \"2017-05-30T16:58:00\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.06.2017 10:40 Uhr\",\n  \"ref_time\": \"2017-05-31T10:57:42\",\n  \"gold_parse\": \"Time[]{2017-06-13 10:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen 11:57\",\n  \"ref_time\": \"2017-11-05T09:26:19\",\n  \"gold_parse\": \"Time[]{2017-11-06 11:57 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"diesen Donnerstag, 21.09. 08:30 Uhr\",\n  \"ref_time\": \"2017-09-18T13:35:43\",\n  \"gold_parse\": \"Time[]{2017-09-21 08:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Abend\",\n  \"ref_time\": \"2017-10-26T09:09:44\",\n  \"gold_parse\": \"Time[]{X-X-X X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, den 17.10.2017 05:25 Uhr\",\n  \"ref_time\": \"2017-10-12T09:17:36\",\n  \"gold_parse\": \"Time[]{2017-10-17 05:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.09.2017 Morgens\",\n  \"ref_time\": \"2017-09-06T12:49:56\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11. Zum 1.12.17\",\n  \"ref_time\": \"2017-11-25T18:38:46\",\n  \"gold_parse\": \"Interval[]{2017-11-30 X:X (X/X) - 2017-12-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 09.08. -10-08\",\n  \"ref_time\": \"2017-08-08T06:44:11\",\n  \"gold_parse\": \"Interval[]{2017-08-09 X:X (X/X) - 2017-08-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.9.\",\n  \"ref_time\": \"2017-09-09T05:50:20\",\n  \"gold_parse\": \"Time[]{2017-09-11 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"01.12. morgens ab 8:00\",\n  \"ref_time\": \"2017-11-01T13:40:52\",\n  \"gold_parse\": \"Interval[]{2017-12-01 08:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.\",\n  \"ref_time\": \"2017-09-21T04:44:34\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 14th December approximately 17.30.\",\n  \"ref_time\": \"2017-11-07T10:45:50\",\n  \"gold_parse\": \"Time[]{2017-12-14 17:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch, den 20.09.\",\n  \"ref_time\": \"2017-09-13T11:21:39\",\n  \"gold_parse\": \"Time[]{2017-09-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 09.11. zwischen 19 und 20 Uhr\",\n  \"ref_time\": \"2017-10-09T11:31:36\",\n  \"gold_parse\": \"Interval[]{2017-11-09 19:00 (X/X) - 2017-11-09 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24. Mai ca. 17.15 Uhr\",\n  \"ref_time\": \"2017-05-19T09:14:39\",\n  \"gold_parse\": \"Time[]{2017-05-24 17:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"MO 3.7.17 8:30h\",\n  \"ref_time\": \"2017-06-30T14:46:33\",\n  \"gold_parse\": \"Time[]{2017-07-03 08:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.07 abends\",\n  \"ref_time\": \"2017-07-14T16:17:39\",\n  \"gold_parse\": \"Time[]{2017-07-18 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag 20.06.207 19:05 Uhr\",\n  \"ref_time\": \"2017-05-29T06:51:19\",\n  \"gold_parse\": \"Time[]{2017-06-20 19:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.9. ab 20 Uhr\",\n  \"ref_time\": \"2017-07-03T10:29:08\",\n  \"gold_parse\": \"Interval[]{2017-09-28 20:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27. Juni am Abend\",\n  \"ref_time\": \"2017-06-01T06:55:32\",\n  \"gold_parse\": \"Time[]{2017-06-27 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 18.07 bis 20.07.\",\n  \"ref_time\": \"2017-07-12T13:33:30\",\n  \"gold_parse\": \"Interval[]{2017-07-18 X:X (X/X) - 2017-07-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 27.09.\",\n  \"ref_time\": \"2017-09-25T12:21:15\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.10 um 8:10\",\n  \"ref_time\": \"2017-08-03T13:30:21\",\n  \"gold_parse\": \"Time[]{2017-10-18 08:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.09.17 ab 12 Uhr\",\n  \"ref_time\": \"2017-08-04T11:00:27\",\n  \"gold_parse\": \"Interval[]{2017-09-07 12:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.06. 17-18 Uhr\",\n  \"ref_time\": \"2017-06-26T15:33:40\",\n  \"gold_parse\": \"Interval[]{2017-06-29 17:00 (X/X) - 2017-06-29 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.07.-19.07.2017\",\n  \"ref_time\": \"2017-07-10T10:19:25\",\n  \"gold_parse\": \"Interval[]{2017-07-18 X:X (X/X) - 2017-07-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 20.11. ca. 18.00Uhr\",\n  \"ref_time\": \"2017-11-19T04:44:14\",\n  \"gold_parse\": \"Time[]{2017-11-20 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen abends\",\n  \"ref_time\": \"2017-09-27T06:34:18\",\n  \"gold_parse\": \"Time[]{2017-09-28 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.9. around 17:00\",\n  \"ref_time\": \"2017-09-19T10:21:58\",\n  \"gold_parse\": \"Time[]{2017-09-26 17:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25 JUL abends\",\n  \"ref_time\": \"2017-06-19T07:21:09\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.10.2017 ab 16:00 Uhr\",\n  \"ref_time\": \"2017-10-12T08:35:51\",\n  \"gold_parse\": \"Interval[]{2017-10-18 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.06.2017 00:05\",\n  \"ref_time\": \"2017-06-16T08:10:07\",\n  \"gold_parse\": \"Time[]{2017-06-18 00:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.09. - 20.09.2017\",\n  \"ref_time\": \"2017-08-08T08:39:00\",\n  \"gold_parse\": \"Interval[]{2017-09-18 X:X (X/X) - 2017-09-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on the 05.12.2017\",\n  \"ref_time\": \"2017-11-28T14:21:23\",\n  \"gold_parse\": \"Time[]{2017-12-05 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.09.2017 ab 16:00 Uhr\",\n  \"ref_time\": \"2017-09-26T05:41:05\",\n  \"gold_parse\": \"Interval[]{2017-09-26 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 22. - 23.09.\",\n  \"ref_time\": \"2017-09-11T08:02:20\",\n  \"gold_parse\": \"Interval[]{2017-09-22 X:X (X/X) - 2017-09-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.10.17\",\n  \"ref_time\": \"2017-10-05T06:37:28\",\n  \"gold_parse\": \"Time[]{2017-10-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von Montag, den 06.11.2017 (Anreise ca. 19.00 Uhr) bis Mittwoch, den 08.11.2017\",\n  \"ref_time\": \"2017-11-03T11:58:59\",\n  \"gold_parse\": \"Interval[]{2017-11-06 19:00 (X/X) - 2017-11-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-10-22T15:09:22\",\n  \"gold_parse\": \"Time[]{2017-10-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday 03.07 to Thursday 06.07\",\n  \"ref_time\": \"2017-07-02T13:06:59\",\n  \"gold_parse\": \"Interval[]{2017-07-03 X:X (X/X) - 2017-07-06 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"31.05.17\",\n  \"ref_time\": \"2017-05-17T06:37:40\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"July 30\",\n  \"ref_time\": \"2017-07-21T15:13:21\",\n  \"gold_parse\": \"Time[]{2017-07-30 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Donnerstag\",\n  \"ref_time\": \"2017-07-10T11:47:37\",\n  \"gold_parse\": \"Time[]{2017-07-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.07.\",\n  \"ref_time\": \"2017-06-27T08:05:03\",\n  \"gold_parse\": \"Time[]{2017-07-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von 22.11.17 - 23.11.17\",\n  \"ref_time\": \"2017-11-20T13:56:52\",\n  \"gold_parse\": \"Interval[]{2017-11-22 X:X (X/X) - 2017-11-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.12. um 14:45h\",\n  \"ref_time\": \"2017-11-09T08:12:33\",\n  \"gold_parse\": \"Time[]{2017-12-02 14:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.10.17 nicht vor 19.00 Uhr\",\n  \"ref_time\": \"2017-07-21T12:43:29\",\n  \"gold_parse\": \"Interval[]{2017-10-05 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.-17. Dezember\",\n  \"ref_time\": \"2017-09-28T08:50:55\",\n  \"gold_parse\": \"Interval[]{2017-12-12 X:X (X/X) - 2017-12-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31/08 0935-1101\",\n  \"ref_time\": \"2017-08-11T06:26:42\",\n  \"gold_parse\": \"Interval[]{2017-08-31 09:35 (X/X) - 2017-08-31 11:01 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23. November 2017 spätestens 15 Uhr\",\n  \"ref_time\": \"2017-11-15T09:01:57\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-23 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen abend\",\n  \"ref_time\": \"2017-08-24T09:54:37\",\n  \"gold_parse\": \"Time[]{2017-08-25 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag den 14.07. um 19:40\",\n  \"ref_time\": \"2017-07-10T07:50:28\",\n  \"gold_parse\": \"Time[]{2017-07-14 19:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.2017 später\",\n  \"ref_time\": \"2017-07-05T06:04:05\",\n  \"gold_parse\": \"Interval[]{2017-09-05 16:10 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 20/10/2017\",\n  \"ref_time\": \"2017-09-11T11:23:21\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.\",\n  \"ref_time\": \"2017-07-07T21:05:34\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"13.10. um 18.30 Uhr\",\n  \"ref_time\": \"2017-09-13T18:01:01\",\n  \"gold_parse\": \"Time[]{2017-10-13 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11.2017 Ab 15:31 Uhr\",\n  \"ref_time\": \"2017-11-13T14:19:38\",\n  \"gold_parse\": \"Time[]{2017-11-20 15:31 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.10.\",\n  \"ref_time\": \"2017-08-11T11:40:43\",\n  \"gold_parse\": \"Time[]{2017-10-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.07.17\",\n  \"ref_time\": \"2017-06-28T13:35:30\",\n  \"gold_parse\": \"Time[]{2017-07-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.12\",\n  \"ref_time\": \"2017-11-29T15:07:33\",\n  \"gold_parse\": \"Time[]{2017-12-16 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18.-21.12.\",\n  \"ref_time\": \"2017-09-01T13:05:27\",\n  \"gold_parse\": \"Interval[]{2017-12-18 X:X (X/X) - 2017-12-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"next Tuesday lunchtime\",\n  \"ref_time\": \"2017-05-30T13:10:19\",\n  \"gold_parse\": \"Time[]{2017-06-06 X:X (X/noon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Samstag 10ter Juni\",\n  \"ref_time\": \"2017-05-19T12:36:53\",\n  \"gold_parse\": \"Time[]{2017-06-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.06.\",\n  \"ref_time\": \"2017-06-02T12:06:48\",\n  \"gold_parse\": \"Time[]{2017-06-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.09.2017\",\n  \"ref_time\": \"2017-09-22T10:59:04\",\n  \"gold_parse\": \"Time[]{2017-09-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2. Dez. 2017 15:40\",\n  \"ref_time\": \"2017-10-24T12:51:01\",\n  \"gold_parse\": \"Time[]{2017-12-02 15:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 22.08.2017 um 21:30\",\n  \"ref_time\": \"2017-08-16T14:29:54\",\n  \"gold_parse\": \"Time[]{2017-08-22 21:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05\",\n  \"ref_time\": \"2017-05-23T12:10:55\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 16. August ab 15:00 Uhr\",\n  \"ref_time\": \"2017-08-08T13:16:00\",\n  \"gold_parse\": \"Interval[]{2017-08-16 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag, 15. Dezember 14:00\",\n  \"ref_time\": \"2017-11-29T13:25:29\",\n  \"gold_parse\": \"Time[]{2017-12-15 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"So., 24. Sep. 06:45 - 08:00\",\n  \"ref_time\": \"2017-09-06T07:36:39\",\n  \"gold_parse\": \"Interval[]{2017-09-24 06:45 (X/X) - 2017-09-24 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.12.2017 7:15am\",\n  \"ref_time\": \"2017-11-24T14:27:51\",\n  \"gold_parse\": \"Time[]{2017-12-05 07:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.11. ca. 18.00 h\",\n  \"ref_time\": \"2017-11-07T10:30:09\",\n  \"gold_parse\": \"Time[]{2017-11-29 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fri 19 May 18:40 - 19:55\",\n  \"ref_time\": \"2017-05-11T17:16:49\",\n  \"gold_parse\": \"Interval[]{2017-05-19 18:40 (X/X) - 2017-05-19 19:55 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.10 - 16.10\",\n  \"ref_time\": \"2017-10-11T08:04:38\",\n  \"gold_parse\": \"Interval[]{2017-10-15 X:X (X/X) - 2017-10-16 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"21.10\",\n  \"ref_time\": \"2017-10-04T10:56:41\",\n  \"gold_parse\": \"Time[]{2017-10-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.09. 09:05 - 09:50\",\n  \"ref_time\": \"2017-09-06T16:07:18\",\n  \"gold_parse\": \"Interval[]{2017-09-28 09:05 (X/X) - 2017-09-28 09:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.07.2017\",\n  \"ref_time\": \"2017-07-10T10:10:11\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 04.10.2017 um 20:50\",\n  \"ref_time\": \"2017-09-26T07:22:23\",\n  \"gold_parse\": \"Time[]{2017-10-04 20:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen\",\n  \"ref_time\": \"2017-06-02T18:29:51\",\n  \"gold_parse\": \"Time[]{2017-06-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 04.09 at 9h15\",\n  \"ref_time\": \"2017-08-20T16:08:20\",\n  \"gold_parse\": \"Time[]{2017-09-04 09:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.9. morgens gg 9\",\n  \"ref_time\": \"2017-08-23T09:40:37\",\n  \"gold_parse\": \"Time[]{2017-09-27 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"next Thrusday in the afternoon around 18 or 19\",\n  \"ref_time\": \"2017-11-22T09:12:41\",\n  \"gold_parse\": \"Interval[]{2017-11-30 18:00 (X/X) - 2017-11-30 19:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 08.12. vormittags ab ca. 11 Uhr\",\n  \"ref_time\": \"2017-11-08T20:33:04\",\n  \"gold_parse\": \"Interval[]{2017-12-08 11:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Oct 27, 2017 at 1540-1030\",\n  \"ref_time\": \"2017-07-09T12:25:02\",\n  \"gold_parse\": \"Interval[]{2017-10-27 15:40 (X/X) - 2017-10-28 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.10., gegen 9h\",\n  \"ref_time\": \"2017-08-31T10:54:18\",\n  \"gold_parse\": \"Time[]{2017-10-16 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.06.2017\",\n  \"ref_time\": \"2017-06-19T21:28:12\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 21. auf 22. eine Nacht\",\n  \"ref_time\": \"2017-11-15T05:49:48\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11.2017 14:27 Uhr\",\n  \"ref_time\": \"2017-11-08T11:10:34\",\n  \"gold_parse\": \"Time[]{2017-11-30 14:27 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.07.2017 morgens 06:35h\",\n  \"ref_time\": \"2017-07-18T08:04:42\",\n  \"gold_parse\": \"Time[]{2017-07-26 06:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 29.11.\",\n  \"ref_time\": \"2017-09-25T15:59:52\",\n  \"gold_parse\": \"Time[]{2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.10.2017 Morgens\",\n  \"ref_time\": \"2017-09-19T10:11:55\",\n  \"gold_parse\": \"Time[]{2017-10-10 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on June 16th at 08.00\",\n  \"ref_time\": \"2017-06-13T14:35:43\",\n  \"gold_parse\": \"Time[]{2017-06-16 08:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.10.2017 Nachmittags\",\n  \"ref_time\": \"2017-10-18T14:58:09\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute bis 14:00 Uhr\",\n  \"ref_time\": \"2017-09-07T07:10:59\",\n  \"gold_parse\": \"Interval[]{2017-09-07 08:00 (X/X) - 2017-09-07 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.12. um 14:45h\",\n  \"ref_time\": \"2017-10-23T08:36:51\",\n  \"gold_parse\": \"Time[]{2017-12-02 14:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon, Sep 18 3:25 PM - 11:55 PM\",\n  \"ref_time\": \"2017-09-06T08:31:37\",\n  \"gold_parse\": \"Interval[]{2017-09-18 15:25 (X/X) - 2017-09-18 23:55 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Sonntag, den 14.05.17 23:14 Uhr\",\n  \"ref_time\": \"2017-05-09T13:37:24\",\n  \"gold_parse\": \"Time[]{2017-05-14 23:14 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Kalenderwoche 32\",\n  \"ref_time\": \"2017-07-24T23:46:36\",\n  \"gold_parse\": \"Interval[]{2017-08-07 X:X (X/X) - 2017-08-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 25.05.17 frühmorgens\",\n  \"ref_time\": \"2017-05-15T07:47:37\",\n  \"gold_parse\": \"Time[]{2017-05-25 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.11 11:20\",\n  \"ref_time\": \"2017-11-16T18:17:55\",\n  \"gold_parse\": \"Time[]{2017-11-18 11:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26. November 2017 ab 19.00 Uhr\",\n  \"ref_time\": \"2017-11-09T10:58:13\",\n  \"gold_parse\": \"Interval[]{2017-11-26 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.11.2017 at around 12:30\",\n  \"ref_time\": \"2017-11-02T07:39:31\",\n  \"gold_parse\": \"Time[]{2017-11-10 12:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Morgen, 21.07.2017 15:13 Uhr\",\n  \"ref_time\": \"2017-07-20T09:25:11\",\n  \"gold_parse\": \"Time[]{2017-07-21 15:13 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.06 18:14\",\n  \"ref_time\": \"2017-05-23T07:49:54\",\n  \"gold_parse\": \"Time[]{2017-06-27 18:14 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 02.12. um 15:30 Uhr\",\n  \"ref_time\": \"2017-11-09T09:37:56\",\n  \"gold_parse\": \"Time[]{2017-12-02 15:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.11.2017\",\n  \"ref_time\": \"2017-11-21T09:26:50\",\n  \"gold_parse\": \"Time[]{2017-11-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"night 13-14.6.\",\n  \"ref_time\": \"2017-05-29T13:51:49\",\n  \"gold_parse\": \"Interval[]{2017-06-13 X:X (X/X) - 2017-06-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 14.9 gegen 20 Uhr\",\n  \"ref_time\": \"2017-08-29T08:57:54\",\n  \"gold_parse\": \"Time[]{2017-09-14 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.05. ab 07:00 Uhr\",\n  \"ref_time\": \"2017-05-24T08:34:28\",\n  \"gold_parse\": \"Interval[]{2017-05-29 07:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.11. um 21:00 h\",\n  \"ref_time\": \"2017-10-18T13:12:28\",\n  \"gold_parse\": \"Time[]{2017-11-17 21:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20 october\",\n  \"ref_time\": \"2017-10-19T08:47:39\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"27.6.2017 um 10:00 Uhr\",\n  \"ref_time\": \"2017-06-08T09:22:34\",\n  \"gold_parse\": \"Time[]{2017-06-27 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 30.08.2017 9:23 Uhr\",\n  \"ref_time\": \"2017-08-28T05:24:12\",\n  \"gold_parse\": \"Time[]{2017-08-30 09:23 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Sonntag 10.09\",\n  \"ref_time\": \"2017-09-08T11:38:44\",\n  \"gold_parse\": \"Time[]{2017-09-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.08.17 ab 14 Uhr\",\n  \"ref_time\": \"2017-07-10T08:11:14\",\n  \"gold_parse\": \"Interval[]{2017-08-01 14:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thu Nov 16 1:50 PM\",\n  \"ref_time\": \"2017-11-08T13:05:30\",\n  \"gold_parse\": \"Time[]{2017-11-16 13:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09 10:45\",\n  \"ref_time\": \"2017-08-17T07:31:24\",\n  \"gold_parse\": \"Time[]{2017-09-19 10:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.6. 18:15h\",\n  \"ref_time\": \"2017-06-27T08:53:42\",\n  \"gold_parse\": \"Time[]{2017-06-28 18:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.9.2017\",\n  \"ref_time\": \"2017-09-07T07:08:57\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, den 17.10.2017 20:33 Uhr\",\n  \"ref_time\": \"2017-10-12T09:17:36\",\n  \"gold_parse\": \"Time[]{2017-10-17 20:33 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23\",\n  \"ref_time\": \"2017-06-24T10:52:58\",\n  \"gold_parse\": \"Time[]{2017-08-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11.\",\n  \"ref_time\": \"2017-07-21T08:27:42\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"From Wed to Fri this week 2330\",\n  \"ref_time\": \"2017-11-29T12:13:58\",\n  \"gold_parse\": \"Time[]{2017-11-29 23:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"31.01.2018 12:00 Uhr\",\n  \"ref_time\": \"2017-09-27T09:37:06\",\n  \"gold_parse\": \"Time[]{2018-01-31 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag 25.08. 13:02 Uhr\",\n  \"ref_time\": \"2017-08-21T09:26:59\",\n  \"gold_parse\": \"Time[]{2017-08-25 13:02 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.09. 14:47 Uhr\",\n  \"ref_time\": \"2017-09-04T13:08:44\",\n  \"gold_parse\": \"Time[]{2017-09-22 14:47 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 14.-15.06.\",\n  \"ref_time\": \"2017-06-07T08:36:04\",\n  \"gold_parse\": \"Interval[]{2017-06-14 X:X (X/X) - 2017-06-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"abends am 19.07.2017\",\n  \"ref_time\": \"2017-06-29T12:24:38\",\n  \"gold_parse\": \"Time[]{2017-07-19 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 4.8. um 10:00h\",\n  \"ref_time\": \"2017-07-27T13:08:56\",\n  \"gold_parse\": \"Time[]{2017-08-04 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.9. ab 20:30\",\n  \"ref_time\": \"2017-09-14T10:30:10\",\n  \"gold_parse\": \"Interval[]{2017-09-20 20:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.07. so früh wie möglich\",\n  \"ref_time\": \"2017-07-03T06:23:53\",\n  \"gold_parse\": \"Time[]{2017-07-18 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.7. ab 18 Uhr\",\n  \"ref_time\": \"2017-06-28T15:41:46\",\n  \"gold_parse\": \"Time[]{2017-07-12 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 01.06.2017 um 10:15 Uhr bis 11:20 Uhr\",\n  \"ref_time\": \"2017-05-24T12:15:15\",\n  \"gold_parse\": \"Interval[]{2017-06-01 10:15 (X/X) - 2017-06-01 11:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"the 9th of October evening\",\n  \"ref_time\": \"2017-09-24T12:50:45\",\n  \"gold_parse\": \"Time[]{2017-10-09 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"24.8. Monday 10.00\",\n  \"ref_time\": \"2017-07-02T10:36:06\",\n  \"gold_parse\": \"Time[]{2017-08-24 10:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"06.12.17\",\n  \"ref_time\": \"2017-11-14T10:55:56\",\n  \"gold_parse\": \"Time[]{2017-12-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 10. November gegen 18 Uhr\",\n  \"ref_time\": \"2017-11-07T09:15:37\",\n  \"gold_parse\": \"Time[]{2017-11-10 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.06.2017 frühestmöglich\",\n  \"ref_time\": \"2017-05-24T12:05:12\",\n  \"gold_parse\": \"Time[]{2017-06-07 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.07. früher Nachmittag\",\n  \"ref_time\": \"2017-07-03T18:47:58\",\n  \"gold_parse\": \"Time[]{2017-07-08 X:X (X/earlyafternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 8.11. um 9 Uhr ca\",\n  \"ref_time\": \"2017-10-02T04:40:50\",\n  \"gold_parse\": \"Time[]{2017-11-08 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, den 30.6. um 16:00 Uhr\",\n  \"ref_time\": \"2017-06-27T13:45:30\",\n  \"gold_parse\": \"Time[]{2017-06-30 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.06.\",\n  \"ref_time\": \"2017-06-08T18:42:47\",\n  \"gold_parse\": \"Time[]{2017-06-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.01.1o sa gegen 16:30\",\n  \"ref_time\": \"2017-11-18T13:06:26\",\n  \"gold_parse\": \"Time[]{2018-01-26 16:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 20.09., 18:30 Uhr\",\n  \"ref_time\": \"2017-09-12T15:11:14\",\n  \"gold_parse\": \"Time[]{2017-09-20 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.9 around 0720\",\n  \"ref_time\": \"2017-08-25T13:44:00\",\n  \"gold_parse\": \"Time[]{2017-10-01 07:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"24.10.2017 09:27 - 10:16 Uhr\",\n  \"ref_time\": \"2017-10-23T13:50:24\",\n  \"gold_parse\": \"Interval[]{2017-10-24 09:27 (X/X) - 2017-10-24 10:16 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.17\",\n  \"ref_time\": \"2017-10-26T09:13:13\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.06. 16:00 Uhr bis 17:10 Uhr\",\n  \"ref_time\": \"2017-06-21T14:54:38\",\n  \"gold_parse\": \"Interval[]{2017-06-26 16:00 (X/X) - 2017-06-26 17:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"next Friday 6/9 around 170\",\n  \"ref_time\": \"2017-05-31T11:23:55\",\n  \"gold_parse\": \"Time[]{2017-06-09 17:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.08. 19- 20 Uhr\",\n  \"ref_time\": \"2017-08-18T11:04:16\",\n  \"gold_parse\": \"Interval[]{2017-08-23 19:00 (X/X) - 2017-08-23 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"4.9. späteste\",\n  \"ref_time\": \"2017-08-17T07:58:33\",\n  \"gold_parse\": \"Time[]{2017-09-04 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12 Nov 1115\",\n  \"ref_time\": \"2017-08-25T12:15:35\",\n  \"gold_parse\": \"Time[]{2017-11-13 11:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18.10.2017 6:00 Uhr\",\n  \"ref_time\": \"2017-10-12T08:35:51\",\n  \"gold_parse\": \"Time[]{2017-10-18 06:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"evening\",\n  \"ref_time\": \"2017-10-02T12:57:20\",\n  \"gold_parse\": \"Time[]{X-X-X X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10:40 - 11:50 am Dienstag 3.12.\",\n  \"ref_time\": \"2017-11-28T08:15:24\",\n  \"gold_parse\": \"Interval[]{2017-12-03 10:40 (X/X) - 2017-12-03 11:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do, 01.06.2017, 07:25\",\n  \"ref_time\": \"2017-05-31T14:11:10\",\n  \"gold_parse\": \"Time[]{2017-06-01 07:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 08.08.2017 um 06.35 Uhr\",\n  \"ref_time\": \"2017-07-28T07:17:26\",\n  \"gold_parse\": \"Time[]{2017-08-08 06:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday 11th December by late afternoon early evening\",\n  \"ref_time\": \"2017-11-07T10:45:50\",\n  \"gold_parse\": \"Interval[]{2017-12-11 X:X (X/lateafternoon) - 2017-12-11 X:X (X/earlyevening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Dienstag 11.07. um 19:30\",\n  \"ref_time\": \"2017-07-05T10:25:11\",\n  \"gold_parse\": \"Time[]{2017-07-11 19:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from 24th - 26th June\",\n  \"ref_time\": \"2017-06-21T14:11:13\",\n  \"gold_parse\": \"Interval[]{2017-06-24 X:X (X/X) - 2017-06-26 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Friday 27th of October\",\n  \"ref_time\": \"2017-08-22T14:54:12\",\n  \"gold_parse\": \"Time[]{2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.08.2017 17:40\",\n  \"ref_time\": \"2017-08-16T13:38:09\",\n  \"gold_parse\": \"Time[]{2017-08-21 17:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"tomorrow\",\n  \"ref_time\": \"2017-07-12T14:41:15\",\n  \"gold_parse\": \"Time[]{2017-07-13 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"9:00 Do 13. Jul\",\n  \"ref_time\": \"2017-07-05T12:39:59\",\n  \"gold_parse\": \"Time[]{2017-07-13 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 19.03.2018\",\n  \"ref_time\": \"2017-11-16T09:29:29\",\n  \"gold_parse\": \"Time[]{2018-03-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 23-25.08\",\n  \"ref_time\": \"2017-08-21T15:39:02\",\n  \"gold_parse\": \"Interval[]{2017-08-23 X:X (X/X) - 2017-08-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi, 08.11.2017 10:46\",\n  \"ref_time\": \"2017-11-07T10:40:00\",\n  \"gold_parse\": \"Time[]{2017-11-08 10:46 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.09.17 ab 19:00\",\n  \"ref_time\": \"2017-09-08T13:34:03\",\n  \"gold_parse\": \"Interval[]{2017-09-26 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18 Uhr\",\n  \"ref_time\": \"2017-05-22T08:34:36\",\n  \"gold_parse\": \"Time[]{X-X-X 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 07.12. morgens\",\n  \"ref_time\": \"2017-11-30T09:26:45\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-11-02T12:55:21\",\n  \"gold_parse\": \"Time[]{2017-11-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.12.17\",\n  \"ref_time\": \"2017-11-24T11:26:43\",\n  \"gold_parse\": \"Time[]{2017-12-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di, 21.11.17 17:21\",\n  \"ref_time\": \"2017-11-16T12:19:19\",\n  \"gold_parse\": \"Time[]{2017-11-21 17:21 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.11.17 bis 10 Uhr\",\n  \"ref_time\": \"2017-11-06T06:02:59\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-10 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.06.17 18:45\",\n  \"ref_time\": \"2017-06-16T12:40:13\",\n  \"gold_parse\": \"Time[]{2017-06-21 18:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fri Sep 8th 7:00 PM\",\n  \"ref_time\": \"2017-08-29T08:43:49\",\n  \"gold_parse\": \"Time[]{2017-09-08 19:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch, den 27.9. nach 19:30 Uhr\",\n  \"ref_time\": \"2017-06-27T12:55:02\",\n  \"gold_parse\": \"Interval[]{2017-09-27 19:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Montag, den 14.08.\",\n  \"ref_time\": \"2017-08-11T13:32:11\",\n  \"gold_parse\": \"Time[]{2017-08-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.05. 09:25\",\n  \"ref_time\": \"2017-05-23T08:47:03\",\n  \"gold_parse\": \"Time[]{2017-05-27 09:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.08.2017, 07:30 Uhr\",\n  \"ref_time\": \"2017-08-08T08:09:50\",\n  \"gold_parse\": \"Time[]{2017-08-09 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.04. - 15.04.18\",\n  \"ref_time\": \"2017-11-28T09:12:01\",\n  \"gold_parse\": \"Interval[]{2018-04-13 X:X (X/X) - 2018-04-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 21.8.17\",\n  \"ref_time\": \"2017-07-10T08:20:22\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11. um 19:00h\",\n  \"ref_time\": \"2017-10-23T13:07:08\",\n  \"gold_parse\": \"Time[]{2017-11-30 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.10.17\",\n  \"ref_time\": \"2017-08-23T12:59:44\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.08.\",\n  \"ref_time\": \"2017-08-17T07:17:17\",\n  \"gold_parse\": \"Time[]{2017-08-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 28.11 (14:00) - 30.11 (23:00)\",\n  \"ref_time\": \"2017-11-22T13:05:32\",\n  \"gold_parse\": \"Interval[]{2017-11-28 14:00 (X/X) - 2017-11-30 23:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6. morgens\",\n  \"ref_time\": \"2017-11-29T12:30:19\",\n  \"gold_parse\": \"Time[]{2017-12-06 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 13.09., 09:30 Uhr\",\n  \"ref_time\": \"2017-09-11T06:38:01\",\n  \"gold_parse\": \"Time[]{2017-09-13 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.10.\",\n  \"ref_time\": \"2017-10-10T17:20:47\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.06.2017 17:31 Uhr\",\n  \"ref_time\": \"2017-06-14T08:00:48\",\n  \"gold_parse\": \"Time[]{2017-06-19 17:31 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-07-17T18:01:16\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon, Dec 11 6:40 PM - 8:20 PM\",\n  \"ref_time\": \"2017-11-24T11:13:34\",\n  \"gold_parse\": \"Interval[]{2017-12-11 18:49 (X/X) - 2017-12-11 20:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday 18th October\",\n  \"ref_time\": \"2017-09-13T13:29:16\",\n  \"gold_parse\": \"Time[]{2017-10-18 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25th September\",\n  \"ref_time\": \"2017-09-07T10:03:03\",\n  \"gold_parse\": \"Time[]{2017-09-25 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"22.10. 19:05 Uhr\",\n  \"ref_time\": \"2017-10-17T06:24:21\",\n  \"gold_parse\": \"Time[]{2017-10-22 19:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nacht vom 29.05. - 30.05.17\",\n  \"ref_time\": \"2017-05-23T07:06:17\",\n  \"gold_parse\": \"Interval[]{2017-05-29 X:X (X/X) - 2017-05-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 18.09.2017\",\n  \"ref_time\": \"2017-09-13T14:55:25\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.9 später nachmittag\",\n  \"ref_time\": \"2017-08-31T14:58:46\",\n  \"gold_parse\": \"Time[]{2017-09-10 X:X (X/lateafternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9 November\",\n  \"ref_time\": \"2017-11-06T10:57:20\",\n  \"gold_parse\": \"Time[]{2017-11-09 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"19.6 - 21.6\",\n  \"ref_time\": \"2017-06-14T13:56:09\",\n  \"gold_parse\": \"Interval[]{2017-06-19 X:X (X/X) - 2017-06-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1st December around 6pm\",\n  \"ref_time\": \"2017-11-23T08:59:53\",\n  \"gold_parse\": \"Time[]{2017-12-01 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Do 01.06\",\n  \"ref_time\": \"2017-05-29T07:36:12\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.06.2017\",\n  \"ref_time\": \"2017-06-21T06:43:59\",\n  \"gold_parse\": \"Time[]{2017-06-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.10.2017 12:40\",\n  \"ref_time\": \"2017-09-15T12:17:47\",\n  \"gold_parse\": \"Time[]{2017-10-18 12:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.10.2017 10:15 Uhr\",\n  \"ref_time\": \"2017-10-02T16:06:45\",\n  \"gold_parse\": \"Time[]{2017-10-13 10:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"4.7. 6:34-10:09\",\n  \"ref_time\": \"2017-07-03T13:27:52\",\n  \"gold_parse\": \"Interval[]{2017-07-04 06:34 (X/X) - 2017-07-04 10:09 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Jun 7 1440-1825\",\n  \"ref_time\": \"2017-06-06T18:09:53\",\n  \"gold_parse\": \"Interval[]{2017-06-07 14:40 (X/X) - 2017-06-07 18:25 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch 24.1.\",\n  \"ref_time\": \"2017-11-11T15:06:20\",\n  \"gold_parse\": \"Time[]{2018-01-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 10. Juli 2017, 8.50 Uhr\",\n  \"ref_time\": \"2017-07-05T05:42:53\",\n  \"gold_parse\": \"Time[]{2017-07-10 08:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.09.2017 13:05 - 19:10\",\n  \"ref_time\": \"2017-09-15T11:44:20\",\n  \"gold_parse\": \"Interval[]{2017-09-28 13:05 (X/X) - 2017-09-28 19:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9.10 23:00\",\n  \"ref_time\": \"2017-09-21T07:07:45\",\n  \"gold_parse\": \"Time[]{2017-10-09 23:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.08. früh morgens\",\n  \"ref_time\": \"2017-08-16T10:21:36\",\n  \"gold_parse\": \"Time[]{2017-08-26 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12 loka 13:10\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-12 13:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"um 18:00 Uhr\",\n  \"ref_time\": \"2017-09-05T09:48:10\",\n  \"gold_parse\": \"Time[]{X-X-X 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18th Nov\",\n  \"ref_time\": \"2017-11-17T21:08:07\",\n  \"gold_parse\": \"Time[]{2017-11-18 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.06.2017 um 10:50 Uhr\",\n  \"ref_time\": \"2017-06-26T08:25:32\",\n  \"gold_parse\": \"Time[]{2017-06-27 10:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.10.2017\",\n  \"ref_time\": \"2017-10-10T12:45:18\",\n  \"gold_parse\": \"Time[]{2017-10-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.07.17\",\n  \"ref_time\": \"2017-07-04T06:39:18\",\n  \"gold_parse\": \"Time[]{2017-07-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21/09 2205-0455\",\n  \"ref_time\": \"2017-08-11T06:30:46\",\n  \"gold_parse\": \"Interval[]{2017-09-21 22:05 (X/X) - 2017-09-22 04:55 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"05.10.2017 morgens\",\n  \"ref_time\": \"2017-10-02T10:38:56\",\n  \"gold_parse\": \"Time[]{2017-10-05 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.07. 2017 gegen 08:00 Uhr\",\n  \"ref_time\": \"2017-07-18T10:37:54\",\n  \"gold_parse\": \"Time[]{2017-07-24 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nov 12 2215-1835\",\n  \"ref_time\": \"2017-07-21T16:36:54\",\n  \"gold_parse\": \"Interval[]{2017-11-12 22:15 (X/X) - 2017-11-12 18:35 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"13.11.17\",\n  \"ref_time\": \"2017-10-17T09:28:44\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 31.5 gegen 13:00\",\n  \"ref_time\": \"2017-05-24T14:17:38\",\n  \"gold_parse\": \"Time[]{2017-05-31 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.09.2017\",\n  \"ref_time\": \"2017-08-24T08:34:21\",\n  \"gold_parse\": \"Time[]{2017-09-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"spätestens am 13.01.18\",\n  \"ref_time\": \"2017-11-29T20:24:32\",\n  \"gold_parse\": \"Interval[]{None - 2018-01-13 23:59 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 11.Dezember 10:55\",\n  \"ref_time\": \"2017-11-29T13:25:29\",\n  \"gold_parse\": \"Time[]{2017-12-11 10:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"5pm\",\n  \"ref_time\": \"2017-05-24T15:42:27\",\n  \"gold_parse\": \"Time[]{X-X-X 17:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"28.-30.06.17\",\n  \"ref_time\": \"2017-06-27T12:10:08\",\n  \"gold_parse\": \"Interval[]{2017-06-28 X:X (X/X) - 2017-06-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 21.8.17\",\n  \"ref_time\": \"2017-07-10T08:20:22\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20 November\",\n  \"ref_time\": \"2017-11-17T13:51:22\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Abends 23.11.2017\",\n  \"ref_time\": \"2017-11-09T14:22:48\",\n  \"gold_parse\": \"Time[]{2017-11-23 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 21.11. um 19:20 Uhr\",\n  \"ref_time\": \"2017-11-09T11:28:42\",\n  \"gold_parse\": \"Time[]{2017-11-21 19:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 06.-08.08.\",\n  \"ref_time\": \"2017-08-04T09:46:34\",\n  \"gold_parse\": \"Interval[]{2017-08-06 X:X (X/X) - 2017-08-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.06.17 Abends\",\n  \"ref_time\": \"2017-06-14T14:53:38\",\n  \"gold_parse\": \"Time[]{2017-06-27 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.11.2017 7 Uhr\",\n  \"ref_time\": \"2017-11-02T09:41:10\",\n  \"gold_parse\": \"Time[]{2017-11-08 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017 19:10 - 22:00\",\n  \"ref_time\": \"2017-10-09T10:12:29\",\n  \"gold_parse\": \"Interval[]{2017-10-26 19:10 (X/X) - 2017-10-26 22:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.9 Späteste\",\n  \"ref_time\": \"2017-09-19T15:38:06\",\n  \"gold_parse\": \"Time[]{2017-09-24 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 29.11.2017 bis zum 30.11.2017\",\n  \"ref_time\": \"2017-11-28T10:44:02\",\n  \"gold_parse\": \"Interval[]{2017-11-29 X:X (X/X) - 2017-11-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.09. ab frühestens 13:30 h\",\n  \"ref_time\": \"2017-09-27T20:53:11\",\n  \"gold_parse\": \"Interval[]{2017-09-28 13:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"thursday night\",\n  \"ref_time\": \"2017-05-11T10:03:19\",\n  \"gold_parse\": \"Time[]{2017-05-18 X:X (X/night)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.11.1992\",\n  \"ref_time\": \"2017-10-27T15:09:35\",\n  \"gold_parse\": \"Time[]{1992-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Vom 19-20.07.2017\",\n  \"ref_time\": \"2017-07-18T08:53:20\",\n  \"gold_parse\": \"Interval[]{2017-07-19 X:X (X/X) - 2017-07-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.10.17 Frühmorgens\",\n  \"ref_time\": \"2017-09-29T07:31:57\",\n  \"gold_parse\": \"Time[]{2017-10-09 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"4.12.\",\n  \"ref_time\": \"2017-11-20T09:50:25\",\n  \"gold_parse\": \"Time[]{2017-12-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday evening\",\n  \"ref_time\": \"2017-06-09T08:32:49\",\n  \"gold_parse\": \"Time[]{2017-06-14 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"05.07.2017 früh morgens 16:45 Uhr\",\n  \"ref_time\": \"2017-06-06T08:31:36\",\n  \"gold_parse\": \"Time[]{2017-07-05 16:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25 SEP, 15:50\",\n  \"ref_time\": \"2017-09-10T15:46:24\",\n  \"gold_parse\": \"Time[]{2017-09-25 15:50 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18.07. 09.55 Uhr\",\n  \"ref_time\": \"2017-07-11T09:37:01\",\n  \"gold_parse\": \"Time[]{2017-07-18 09:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch den 20/09 ab gegen 21.00 Uhr\",\n  \"ref_time\": \"2017-09-18T17:00:04\",\n  \"gold_parse\": \"Interval[]{2017-09-20 21:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.11. morgens\",\n  \"ref_time\": \"2017-10-10T15:22:48\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von heute auf morgen\",\n  \"ref_time\": \"2017-06-26T07:55:07\",\n  \"gold_parse\": \"Interval[]{2017-06-26 X:X (X/X) - 2017-06-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von Mittwoch, 11.10.2017, bis Donnerstag, 12.10.2017\",\n  \"ref_time\": \"2017-09-25T10:17:10\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag\",\n  \"ref_time\": \"2017-07-10T06:42:21\",\n  \"gold_parse\": \"Time[]{2017-07-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.10. 10:00\",\n  \"ref_time\": \"2017-08-29T12:30:16\",\n  \"gold_parse\": \"Time[]{2017-10-19 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday November 16th around 14:30-15:00\",\n  \"ref_time\": \"2017-11-14T10:50:19\",\n  \"gold_parse\": \"Interval[]{2017-11-16 14:30 (X/X) - 2017-11-16 15:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 09.11. um 8:28 Uhr\",\n  \"ref_time\": \"2017-11-03T15:22:07\",\n  \"gold_parse\": \"Time[]{2017-11-09 08:28 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06 JUL ab 16:00\",\n  \"ref_time\": \"2017-05-30T14:04:39\",\n  \"gold_parse\": \"Interval[]{2017-07-06 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"4.9. späteste\",\n  \"ref_time\": \"2017-08-17T07:58:33\",\n  \"gold_parse\": \"Time[]{2017-09-04 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08.2017 (ab ca. 18.00 Uhr\",\n  \"ref_time\": \"2017-07-12T09:10:31\",\n  \"gold_parse\": \"Interval[]{2017-08-16 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.05.2017 07:30 Uhr\",\n  \"ref_time\": \"2017-05-10T11:12:26\",\n  \"gold_parse\": \"Time[]{2017-05-19 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28/10 morgens\",\n  \"ref_time\": \"2017-10-20T09:36:41\",\n  \"gold_parse\": \"Time[]{2017-10-28 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag am Freitag nach 17:00 Uhr\",\n  \"ref_time\": \"2017-09-25T14:04:34\",\n  \"gold_parse\": \"Interval[]{2017-09-29 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.07.2017 in the evening\",\n  \"ref_time\": \"2017-07-07T14:56:20\",\n  \"gold_parse\": \"Time[]{2017-07-11 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.10 spätestens 12:00 Uhr\",\n  \"ref_time\": \"2017-10-16T10:02:38\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-20 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2nd Oct\",\n  \"ref_time\": \"2017-09-08T17:14:10\",\n  \"gold_parse\": \"Time[]{2017-10-02 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"on Wednesday 23.08. around 7pm.\",\n  \"ref_time\": \"2017-08-17T18:01:53\",\n  \"gold_parse\": \"Time[]{2017-08-23 19:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18.06. morgens\",\n  \"ref_time\": \"2017-05-11T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-06-18 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 2.6.\",\n  \"ref_time\": \"2017-05-25T20:13:35\",\n  \"gold_parse\": \"Time[]{2017-06-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday late morning\",\n  \"ref_time\": \"2017-11-10T01:18:15\",\n  \"gold_parse\": \"Time[]{2017-11-14 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.11.\",\n  \"ref_time\": \"2017-11-14T09:08:43\",\n  \"gold_parse\": \"Time[]{2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25. Oktober ab 7 Uhr morgens\",\n  \"ref_time\": \"2017-09-07T14:33:21\",\n  \"gold_parse\": \"Interval[]{2017-10-25 07:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday afternoon 16.29h\",\n  \"ref_time\": \"2017-11-02T11:20:38\",\n  \"gold_parse\": \"Time[]{2017-11-07 16:29 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"12 loka 18:30\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-12 18:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"June 22\",\n  \"ref_time\": \"2017-06-13T07:28:43\",\n  \"gold_parse\": \"Time[]{2017-06-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.06.2017 20.25 Uhr\",\n  \"ref_time\": \"2017-06-08T08:43:17\",\n  \"gold_parse\": \"Time[]{2017-06-19 20:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31. August 6.55AM\",\n  \"ref_time\": \"2017-07-20T10:17:32\",\n  \"gold_parse\": \"Time[]{2017-08-31 06:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 16.11.2017 late afternoon\",\n  \"ref_time\": \"2017-11-13T15:19:05\",\n  \"gold_parse\": \"Time[]{2017-11-16 X:X (X/lateafternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"early afternoon\",\n  \"ref_time\": \"2017-10-24T19:11:30\",\n  \"gold_parse\": \"Time[]{X-X-X X:X (X/earlyafternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Donnerstag gegen 18:30\",\n  \"ref_time\": \"2017-11-07T10:12:41\",\n  \"gold_parse\": \"Time[]{2017-11-16 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 16.11.2017 6:30am\",\n  \"ref_time\": \"2017-11-13T15:19:05\",\n  \"gold_parse\": \"Time[]{2017-11-16 06:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"27.6. zu 28.6\",\n  \"ref_time\": \"2017-06-27T05:54:33\",\n  \"gold_parse\": \"Interval[]{2017-06-27 X:X (X/X) - 2017-06-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.08.2017 Vormittags\",\n  \"ref_time\": \"2017-07-05T11:53:05\",\n  \"gold_parse\": \"Time[]{2017-08-05 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Jun 7, Wed at 1515pm\",\n  \"ref_time\": \"2017-06-01T11:15:13\",\n  \"gold_parse\": \"Time[]{2017-06-07 15:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16 NOV, 09:10\",\n  \"ref_time\": \"2017-10-23T09:29:04\",\n  \"gold_parse\": \"Time[]{2017-11-16 09:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 13.11. um 19:00\",\n  \"ref_time\": \"2017-11-10T09:18:54\",\n  \"gold_parse\": \"Time[]{2017-11-13 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Monday 28 August, at around 8am\",\n  \"ref_time\": \"2017-08-14T10:44:12\",\n  \"gold_parse\": \"Time[]{2017-08-28 08:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.10. 16.20h\",\n  \"ref_time\": \"2017-09-21T09:36:31\",\n  \"gold_parse\": \"Time[]{2017-10-20 16:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.07.2017 um 09:30\",\n  \"ref_time\": \"2017-06-14T07:30:41\",\n  \"gold_parse\": \"Time[]{2017-07-05 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 10.01.2018\",\n  \"ref_time\": \"2017-11-17T09:26:37\",\n  \"gold_parse\": \"Time[]{2018-01-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.11. morgens\",\n  \"ref_time\": \"2017-11-07T13:39:18\",\n  \"gold_parse\": \"Time[]{2017-11-14 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 27.11 - 29.11.\",\n  \"ref_time\": \"2017-11-27T09:36:48\",\n  \"gold_parse\": \"Interval[]{2017-11-27 X:X (X/X) - 2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11. - 27.11.2017\",\n  \"ref_time\": \"2017-10-26T14:07:56\",\n  \"gold_parse\": \"Interval[]{2017-11-20 X:X (X/X) - 2017-11-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29. November abends nicht vor 18 Uhr\",\n  \"ref_time\": \"2017-11-09T15:07:55\",\n  \"gold_parse\": \"Interval[]{2017-11-29 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10:30 18. Juni\",\n  \"ref_time\": \"2017-05-15T17:37:06\",\n  \"gold_parse\": \"Time[]{2017-06-18 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10.2017 12:15 Uhr\",\n  \"ref_time\": \"2017-10-13T13:11:51\",\n  \"gold_parse\": \"Time[]{2017-10-23 12:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6. August 11.05\",\n  \"ref_time\": \"2017-07-26T09:21:31\",\n  \"gold_parse\": \"Time[]{2017-08-06 11:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 14/12/2017 6:00PM\",\n  \"ref_time\": \"2017-11-17T09:52:14\",\n  \"gold_parse\": \"Time[]{2017-12-14 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Sonntag, 29.10.\",\n  \"ref_time\": \"2017-10-25T13:30:35\",\n  \"gold_parse\": \"Time[]{2017-10-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.12.2017 ab 17 Uhr\",\n  \"ref_time\": \"2017-11-07T13:25:19\",\n  \"gold_parse\": \"Interval[]{2017-12-05 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11. - 27.11.2017\",\n  \"ref_time\": \"2017-10-26T14:07:56\",\n  \"gold_parse\": \"Interval[]{2017-11-20 X:X (X/X) - 2017-11-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.07.2017\",\n  \"ref_time\": \"2017-07-10T10:10:11\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 21:00 h\",\n  \"ref_time\": \"2017-10-24T06:31:58\",\n  \"gold_parse\": \"Time[]{X-X-X 21:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.6. abends\",\n  \"ref_time\": \"2017-06-02T10:21:48\",\n  \"gold_parse\": \"Time[]{2017-06-12 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Eine Übernachtung\",\n  \"ref_time\": \"2017-11-08T12:59:30\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.11.2017\",\n  \"ref_time\": \"2017-11-07T08:20:46\",\n  \"gold_parse\": \"Time[]{2017-11-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7th November 2017\",\n  \"ref_time\": \"2017-06-29T07:57:36\",\n  \"gold_parse\": \"Time[]{2017-11-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"December 7.\",\n  \"ref_time\": \"2017-10-27T13:43:50\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"29.08.2017\",\n  \"ref_time\": \"2017-08-24T11:37:52\",\n  \"gold_parse\": \"Time[]{2017-08-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 17.08.2017 19:20 - 20:30\",\n  \"ref_time\": \"2017-07-19T12:19:35\",\n  \"gold_parse\": \"Interval[]{2017-08-17 19:20 (X/X) - 2017-08-17 20:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 15.11. um 18:15 Uhr\",\n  \"ref_time\": \"2017-10-24T15:55:28\",\n  \"gold_parse\": \"Time[]{2017-11-15 18:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 06.48h\",\n  \"ref_time\": \"2017-06-30T13:27:26\",\n  \"gold_parse\": \"Time[]{2017-07-03 06:48 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.-17.05.2017\",\n  \"ref_time\": \"2017-05-15T13:45:34\",\n  \"gold_parse\": \"Interval[]{2017-05-16 X:X (X/X) - 2017-05-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mittwoch früh so zeitig wie möglich\",\n  \"ref_time\": \"2017-06-22T10:26:44\",\n  \"gold_parse\": \"Time[]{2017-06-28 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr 15. Sep 20:35\",\n  \"ref_time\": \"2017-07-25T12:26:26\",\n  \"gold_parse\": \"Time[]{2017-09-15 20:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11.2017 abends\",\n  \"ref_time\": \"2017-11-07T13:38:08\",\n  \"gold_parse\": \"Time[]{2017-11-27 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.12.2017 gegen 19:00 Uhr\",\n  \"ref_time\": \"2017-11-24T09:30:12\",\n  \"gold_parse\": \"Time[]{2017-12-20 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 20.7.\",\n  \"ref_time\": \"2017-07-12T20:49:08\",\n  \"gold_parse\": \"Time[]{2017-07-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 1. 2 ab 19 Uhr\",\n  \"ref_time\": \"2017-09-26T09:01:01\",\n  \"gold_parse\": \"Interval[]{2018-02-01 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11.\",\n  \"ref_time\": \"2017-08-11T11:40:43\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.11. 18:30\",\n  \"ref_time\": \"2017-11-27T15:16:11\",\n  \"gold_parse\": \"Time[]{2017-11-28 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.09.2017 Morgens\",\n  \"ref_time\": \"2017-09-06T12:49:56\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.12.2017\",\n  \"ref_time\": \"2017-11-20T10:24:17\",\n  \"gold_parse\": \"Time[]{2017-12-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.07.2017 früh morgens 14:25 Uhr\",\n  \"ref_time\": \"2017-06-06T08:31:36\",\n  \"gold_parse\": \"Time[]{2017-07-05 14:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11\",\n  \"ref_time\": \"2017-11-24T13:33:59\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.06.2017\",\n  \"ref_time\": \"2017-06-19T21:28:12\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"kommende Nacht\",\n  \"ref_time\": \"2017-11-23T12:16:57\",\n  \"gold_parse\": \"Interval[]{2017-11-23 X:X (X/X) - 2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 19 Juli 2017 in der Frühe\",\n  \"ref_time\": \"2017-07-10T08:29:26\",\n  \"gold_parse\": \"Time[]{2016-07-19 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"July 3rd\",\n  \"ref_time\": \"2017-06-02T10:33:52\",\n  \"gold_parse\": \"Time[]{2017-07-03 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 21.08. - 25.08.2017\",\n  \"ref_time\": \"2017-08-19T16:05:33\",\n  \"gold_parse\": \"Interval[]{2017-08-21 X:X (X/X) - 2017-08-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.11.2017 15:40\",\n  \"ref_time\": \"2017-10-12T08:06:39\",\n  \"gold_parse\": \"Time[]{2017-11-05 15:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.07. 07:25h\",\n  \"ref_time\": \"2017-07-21T11:00:35\",\n  \"gold_parse\": \"Time[]{2017-07-24 07:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.09.2017 16:25 Uhr\",\n  \"ref_time\": \"2017-09-19T07:12:55\",\n  \"gold_parse\": \"Time[]{2017-09-21 16:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 18. auf den 19.09.2017\",\n  \"ref_time\": \"2017-09-03T07:15:33\",\n  \"gold_parse\": \"Interval[]{2017-09-18 X:X (X/X) - 2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.09.2017 18:00 - 20:00\",\n  \"ref_time\": \"2017-08-09T09:39:11\",\n  \"gold_parse\": \"Interval[]{2017-09-14 18:00 (X/X) - 2017-09-14 20:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"05.10.2017 15:05 Uhr\",\n  \"ref_time\": \"2017-09-13T10:44:24\",\n  \"gold_parse\": \"Time[]{2017-10-05 15:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"July 8 - July 9\",\n  \"ref_time\": \"2017-07-06T11:26:18\",\n  \"gold_parse\": \"Interval[]{2017-07-08 X:X (X/X) - 2017-07-09 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.10.2017 12:00 Uhr\",\n  \"ref_time\": \"2017-10-10T05:43:58\",\n  \"gold_parse\": \"Time[]{2017-10-25 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday midday 19/05\",\n  \"ref_time\": \"2017-05-09T15:42:58\",\n  \"gold_parse\": \"Time[]{2017-05-19 X:X (X/noon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 18.11. zum 19.11.2017\",\n  \"ref_time\": \"2017-11-16T11:11:16\",\n  \"gold_parse\": \"Interval[]{2017-11-18 X:X (X/X) - 2017-11-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.9.2017 um 17.45 Uhr\",\n  \"ref_time\": \"2017-09-07T06:34:38\",\n  \"gold_parse\": \"Time[]{2017-09-20 17:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nachmittags\",\n  \"ref_time\": \"2017-10-11T06:29:14\",\n  \"gold_parse\": \"Time[]{X-X-X X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02 November 2017 09:35\",\n  \"ref_time\": \"2017-10-16T11:10:09\",\n  \"gold_parse\": \"Time[]{2017-11-02 09:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"October 10 (afternoon)\",\n  \"ref_time\": \"2017-10-02T08:48:54\",\n  \"gold_parse\": \"Time[]{2017-10-10 X:X (X/afternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch 09.08.\",\n  \"ref_time\": \"2017-08-03T13:14:07\",\n  \"gold_parse\": \"Time[]{2017-08-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.05.2017 11:26\",\n  \"ref_time\": \"2017-05-24T09:48:05\",\n  \"gold_parse\": \"Time[]{2017-05-29 11:26 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Fr  13.10.17 19:56\",\n  \"ref_time\": \"2017-09-29T08:46:55\",\n  \"gold_parse\": \"Time[]{2017-10-13 19:56 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"at 8\",\n  \"ref_time\": \"2022-12-08T09:12:01\",\n  \"gold_parse\": \"Time[]{2022-12-08 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.08.2017 bis 02.08.2017\",\n  \"ref_time\": \"2017-07-26T06:12:01\",\n  \"gold_parse\": \"Interval[]{2017-08-01 X:X (X/X) - 2017-08-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12/24\",\n  \"ref_time\": \"2022-11-30T06:12:01\",\n  \"gold_parse\": \"Time[]{2022-12-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.08.2017 morgens\",\n  \"ref_time\": \"2017-07-21T11:26:47\",\n  \"gold_parse\": \"Time[]{2017-08-24 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag\",\n  \"ref_time\": \"2017-11-05T14:30:26\",\n  \"gold_parse\": \"Time[]{2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 07.12.17 12:08\",\n  \"ref_time\": \"2017-10-11T06:40:17\",\n  \"gold_parse\": \"Time[]{2017-12-07 12:08 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen\",\n  \"ref_time\": \"2017-07-18T11:23:19\",\n  \"gold_parse\": \"Time[]{2017-07-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday 28/06 around 15:20\",\n  \"ref_time\": \"2017-07-20T15:24:21\",\n  \"gold_parse\": \"Time[]{2017-06-28 15:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"30.8. 18:00h\",\n  \"ref_time\": \"2017-08-14T13:36:01\",\n  \"gold_parse\": \"Time[]{2017-08-30 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.8. in the evening\",\n  \"ref_time\": \"2017-08-13T18:08:01\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Di., 25.07. 07:05 - 07:50 Uhr\",\n  \"ref_time\": \"2017-07-17T13:21:01\",\n  \"gold_parse\": \"Interval[]{2017-07-25 07:05 (X/X) - 2017-07-25 07:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.06.2017 19:50 Uhr\",\n  \"ref_time\": \"2017-06-08T08:43:17\",\n  \"gold_parse\": \"Time[]{2017-06-20 19:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mi, 23.8\",\n  \"ref_time\": \"2017-08-16T11:26:24\",\n  \"gold_parse\": \"Time[]{2017-08-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.17\",\n  \"ref_time\": \"2017-11-20T11:08:18\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19/12 1510-1640\",\n  \"ref_time\": \"2017-10-03T15:13:10\",\n  \"gold_parse\": \"Interval[]{2017-12-19 15:10 (X/X) - 2017-12-19 16:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 22.11.2017 um 18.13 Uhr\",\n  \"ref_time\": \"2017-11-14T08:50:04\",\n  \"gold_parse\": \"Time[]{2017-11-22 18:13 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Monday 8th October-Wednesday 11th October\",\n  \"ref_time\": \"2017-09-20T12:21:26\",\n  \"gold_parse\": \"Interval[]{2017-10-08 X:X (X/X) - 2017-10-11 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Donnerstag, 17.8. ab 16:45 Uhr\",\n  \"ref_time\": \"2017-07-18T13:22:48\",\n  \"gold_parse\": \"Interval[]{2017-08-17 16:45 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.9\",\n  \"ref_time\": \"2017-09-08T08:22:06\",\n  \"gold_parse\": \"Time[]{2017-09-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen 10.05 ab 12 Uhr\",\n  \"ref_time\": \"2017-05-09T13:30:21\",\n  \"gold_parse\": \"Interval[]{2017-05-10 12:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28. Juli später nachmittags\",\n  \"ref_time\": \"2017-07-14T09:25:35\",\n  \"gold_parse\": \"Time[]{2017-07-28 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 18.09 bis 19.09\",\n  \"ref_time\": \"2017-08-18T08:51:26\",\n  \"gold_parse\": \"Interval[]{2017-09-18 X:X (X/X) - 2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Vom 11.10. bis 12.10.\",\n  \"ref_time\": \"2017-09-13T13:59:46\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, den 5.10.2017 10:45 - 11:55 Uhr\",\n  \"ref_time\": \"2017-09-28T07:55:07\",\n  \"gold_parse\": \"Interval[]{2017-10-05 10:45 (X/X) - 2017-10-05 11:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.09.2017 14:25 Uhr\",\n  \"ref_time\": \"2017-08-25T09:56:31\",\n  \"gold_parse\": \"Time[]{2017-09-23 14:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09.2017 10:20 Uhr - 11:55 Uhr\",\n  \"ref_time\": \"2017-08-21T13:35:29\",\n  \"gold_parse\": \"Interval[]{2017-09-19 10:20 (X/X) - 2017-09-19 11:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, den 27.9. ab 08:00 Uhr\",\n  \"ref_time\": \"2017-06-27T12:55:02\",\n  \"gold_parse\": \"Interval[]{2017-09-27 08:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 30. August\",\n  \"ref_time\": \"2017-08-25T13:48:02\",\n  \"gold_parse\": \"Time[]{2017-08-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.11.2017 von 09:00 bis 15:30 Uhr\",\n  \"ref_time\": \"2017-11-14T07:19:04\",\n  \"gold_parse\": \"Interval[]{2017-11-16 09:00 (X/X) - 2017-11-16 15:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 25.10.\",\n  \"ref_time\": \"2017-10-24T17:39:58\",\n  \"gold_parse\": \"Time[]{2017-10-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 22.06.17 05:47 Uhr\",\n  \"ref_time\": \"2017-06-18T14:31:28\",\n  \"gold_parse\": \"Time[]{2017-06-22 05:47 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.06.2017, Freitag,\",\n  \"ref_time\": \"2017-05-29T12:45:55\",\n  \"gold_parse\": \"Time[]{2017-06-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 10.09. - 14.09.\",\n  \"ref_time\": \"2017-09-04T10:45:27\",\n  \"gold_parse\": \"Interval[]{2017-09-10 X:X (X/X) - 2017-09-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 26. - 27.09.2017\",\n  \"ref_time\": \"2017-09-25T08:16:31\",\n  \"gold_parse\": \"Interval[]{2017-09-26 X:X (X/X) - 2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.08.2017\",\n  \"ref_time\": \"2017-07-27T08:19:14\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7th of November, 2017\",\n  \"ref_time\": \"2017-10-29T15:56:00\",\n  \"gold_parse\": \"Time[]{2017-11-07 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"7.03.2018 in the evening\",\n  \"ref_time\": \"2017-10-17T09:15:38\",\n  \"gold_parse\": \"Time[]{2018-03-07 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"kommenden Sonntag, 08.10. ca. 18.30 h\",\n  \"ref_time\": \"2017-10-02T11:42:50\",\n  \"gold_parse\": \"Time[]{2017-10-08 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"spät am Nachmittag am 18.07.2017\",\n  \"ref_time\": \"2017-06-29T12:24:38\",\n  \"gold_parse\": \"Time[]{2017-07-18 X:X (X/lateafternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 6.07.2017 Abends ab 17.00h\",\n  \"ref_time\": \"2017-06-23T12:38:05\",\n  \"gold_parse\": \"Interval[]{2017-07-06 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do. 18. Mai 19:40\",\n  \"ref_time\": \"2017-05-15T16:35:20\",\n  \"gold_parse\": \"Time[]{2017-05-18 19:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.09.2017\",\n  \"ref_time\": \"2017-07-04T15:40:35\",\n  \"gold_parse\": \"Time[]{2017-09-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 9.9.\",\n  \"ref_time\": \"2017-08-28T01:33:48\",\n  \"gold_parse\": \"Time[]{2017-09-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.11.\",\n  \"ref_time\": \"2017-11-06T08:22:00\",\n  \"gold_parse\": \"Time[]{2017-11-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.07. 15 Uhr\",\n  \"ref_time\": \"2017-05-24T14:42:50\",\n  \"gold_parse\": \"Time[]{2017-07-21 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.8. 1845-1955\",\n  \"ref_time\": \"2017-08-15T10:34:43\",\n  \"gold_parse\": \"Interval[]{2017-08-18 18:45 (X/X) - 2017-08-18 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday, September 27th\",\n  \"ref_time\": \"2017-09-22T17:11:20\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Sonntag, 09.07.2017\",\n  \"ref_time\": \"2017-06-22T14:46:36\",\n  \"gold_parse\": \"Time[]{2017-07-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.10.2017 ab 14:30\",\n  \"ref_time\": \"2017-10-06T12:55:33\",\n  \"gold_parse\": \"Time[]{2017-10-17 14:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 05.09. - 06.09.2017\",\n  \"ref_time\": \"2017-08-30T10:23:22\",\n  \"gold_parse\": \"Interval[]{2017-09-05 X:X (X/X) - 2017-09-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"5 heinä 2017, 11:35\",\n  \"ref_time\": \"2017-07-04T14:51:04\",\n  \"gold_parse\": \"Time[]{2017-07-05 11:35 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"on Sunday 8th Oct 12:35 PM\",\n  \"ref_time\": \"2017-09-28T09:02:11\",\n  \"gold_parse\": \"Time[]{2017-10-08 12:35 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"Wed 31th 11:10 - 13:00\",\n  \"ref_time\": \"2017-05-10T15:52:14\",\n  \"gold_parse\": \"Interval[]{2017-05-31 11:10 (X/X) - 2017-05-31 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 02.11.2017 7-9 Uhr\",\n  \"ref_time\": \"2017-10-17T08:57:31\",\n  \"gold_parse\": \"Interval[]{2017-11-02 07:00 (X/X) - 2017-11-02 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon 23rd Oct at 15h05 20h15Leave\",\n  \"ref_time\": \"2017-10-20T07:28:07\",\n  \"gold_parse\": \"Time[]{2017-10-23 20:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18.06.2017 21:05Uhr\",\n  \"ref_time\": \"2017-06-02T08:35:39\",\n  \"gold_parse\": \"Time[]{2017-06-18 21:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday 23.08. 22:00\",\n  \"ref_time\": \"2017-08-17T10:31:26\",\n  \"gold_parse\": \"Time[]{2017-08-23 22:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 31.07. früh morgens\",\n  \"ref_time\": \"2017-06-19T11:51:01\",\n  \"gold_parse\": \"Time[]{2017-07-31 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11.17\",\n  \"ref_time\": \"2017-11-22T14:05:44\",\n  \"gold_parse\": \"Time[]{2017-11-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.10.17 Abends\",\n  \"ref_time\": \"2017-09-04T13:16:48\",\n  \"gold_parse\": \"Time[]{2017-10-10 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"around 18-19 in the evening\",\n  \"ref_time\": \"2017-05-22T08:06:36\",\n  \"gold_parse\": \"Interval[]{2017-05-24 18:00 (X/X) - 2017-05-24 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07. 10:00-11:05\",\n  \"ref_time\": \"2017-07-05T10:59:36\",\n  \"gold_parse\": \"Interval[]{2017-07-20 10:00 (X/X) - 2017-07-20 11:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nov 12 (Sun\",\n  \"ref_time\": \"2017-11-05T14:52:44\",\n  \"gold_parse\": \"Time[]{2017-11-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.10. gegen Mitternacht\",\n  \"ref_time\": \"2017-08-23T18:43:24\",\n  \"gold_parse\": \"Time[]{2017-10-27 00:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.11.2017 18:45h\",\n  \"ref_time\": \"2017-10-25T13:16:16\",\n  \"gold_parse\": \"Time[]{2017-11-15 18:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 05.10.2017 spätabends\",\n  \"ref_time\": \"2017-09-29T16:08:52\",\n  \"gold_parse\": \"Time[]{2017-10-05 X:X (X/lateevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.12. Nachmittags\",\n  \"ref_time\": \"2017-11-28T11:32:23\",\n  \"gold_parse\": \"Time[]{2017-12-13 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"From Tuesday 19th to Saturday 23 this month\",\n  \"ref_time\": \"2017-09-15T12:30:53\",\n  \"gold_parse\": \"Interval[]{2017-09-19 X:X (X/X) - 2017-09-23 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Nacht vom 28.11.2017 auf den 29.11.2017\",\n  \"ref_time\": \"2017-11-21T12:34:52\",\n  \"gold_parse\": \"Interval[]{2017-11-28 X:X (X/X) - 2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 15. auf den 16.11.2017\",\n  \"ref_time\": \"2017-11-12T18:51:57\",\n  \"gold_parse\": \"Interval[]{2017-11-15 X:X (X/X) - 2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute um 7:12 Uhr\",\n  \"ref_time\": \"2017-09-20T04:46:39\",\n  \"gold_parse\": \"Time[]{2017-09-20 07:12 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10.17 zwischen 12 und 12:30 Uhr\",\n  \"ref_time\": \"2017-10-11T06:19:14\",\n  \"gold_parse\": \"Interval[]{2017-10-23 12:00 (X/X) - 2017-10-23 12:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.9. um 14.10 Uhr\",\n  \"ref_time\": \"2017-09-01T07:39:03\",\n  \"gold_parse\": \"Time[]{2017-09-19 14:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.11. 07:28-09:24\",\n  \"ref_time\": \"2017-11-01T16:16:03\",\n  \"gold_parse\": \"Interval[]{2017-11-03 07:28 (X/X) - 2017-11-03 09:24 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.9 (Abends)\",\n  \"ref_time\": \"2017-09-08T08:22:06\",\n  \"gold_parse\": \"Time[]{2017-09-14 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"around midday Saturday\",\n  \"ref_time\": \"2017-11-13T13:45:57\",\n  \"gold_parse\": \"Time[]{2017-12-16 X:X (X/afternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Do, 19.10.2017 16:48\",\n  \"ref_time\": \"2017-10-16T13:04:40\",\n  \"gold_parse\": \"Time[]{2017-10-19 16:48 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen\",\n  \"ref_time\": \"2017-08-27T08:24:47\",\n  \"gold_parse\": \"Time[]{2017-08-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21. Oct. 16.49\",\n  \"ref_time\": \"2017-07-07T08:26:55\",\n  \"gold_parse\": \"Time[]{2017-10-21 16:49 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.- 12.07.2017\",\n  \"ref_time\": \"2017-07-05T08:15:13\",\n  \"gold_parse\": \"Interval[]{2017-07-11 X:X (X/X) - 2017-07-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.10. 18:00\",\n  \"ref_time\": \"2017-09-25T14:20:43\",\n  \"gold_parse\": \"Time[]{2017-10-06 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017\",\n  \"ref_time\": \"2017-10-19T08:37:12\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Abend des Mittwochs\",\n  \"ref_time\": \"2017-09-05T07:16:26\",\n  \"gold_parse\": \"Time[]{2017-09-06 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do, 12.10.17 22:01\",\n  \"ref_time\": \"2017-09-22T09:13:45\",\n  \"gold_parse\": \"Time[]{2017-10-12 22:01 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 20.7. 19:55h\",\n  \"ref_time\": \"2017-07-11T16:24:32\",\n  \"gold_parse\": \"Time[]{2017-07-20 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 31.05.17 13:48\",\n  \"ref_time\": \"2017-05-26T10:55:35\",\n  \"gold_parse\": \"Time[]{2017-05-31 13:48 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.10.2017 ca. 19 Uhr\",\n  \"ref_time\": \"2017-07-14T07:33:39\",\n  \"gold_parse\": \"Time[]{2017-10-10 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18/07 gegen 12:00\",\n  \"ref_time\": \"2017-07-11T09:03:37\",\n  \"gold_parse\": \"Time[]{2017-07-18 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.17 ab 16.00 Uhr\",\n  \"ref_time\": \"2017-07-24T08:43:57\",\n  \"gold_parse\": \"Interval[]{2017-09-05 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2017-09-20 14:00\",\n  \"ref_time\": \"2017-09-07T08:03:49\",\n  \"gold_parse\": \"Time[]{2017-09-20 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mo., 19.06.2017 16:55\",\n  \"ref_time\": \"2017-06-10T08:38:27\",\n  \"gold_parse\": \"Time[]{2017-06-19 16:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von 05.07.2017 bis 06.07.2017\",\n  \"ref_time\": \"2017-07-03T08:03:27\",\n  \"gold_parse\": \"Interval[]{2017-07-05 X:X (X/X) - 2017-07-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wed - Thu\",\n  \"ref_time\": \"2017-10-06T09:45:11\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11.10.17 10.50-11.35 Uhr\",\n  \"ref_time\": \"2017-10-09T13:18:05\",\n  \"gold_parse\": \"Interval[]{2017-10-11 10:00 (X/X) - 2017-10-11 11:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Montag den 29.05.2017\",\n  \"ref_time\": \"2017-05-23T12:52:29\",\n  \"gold_parse\": \"Time[]{2017-05-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08.17, 9.00 Uhr\",\n  \"ref_time\": \"2017-08-14T12:31:48\",\n  \"gold_parse\": \"Time[]{2017-08-16 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.09. 14:21 Uhr\",\n  \"ref_time\": \"2017-09-07T10:19:10\",\n  \"gold_parse\": \"Time[]{2017-09-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.08. morgens um 06.40\",\n  \"ref_time\": \"2017-08-15T13:44:08\",\n  \"gold_parse\": \"Time[]{2017-08-30 06:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen 1700\",\n  \"ref_time\": \"2017-06-26T12:14:45\",\n  \"gold_parse\": \"Time[]{2017-06-27 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Samstag den 09.09 ab 9Uhr -12Uhr\",\n  \"ref_time\": \"2017-08-16T10:57:00\",\n  \"gold_parse\": \"Interval[]{2017-09-09 09:00 (X/X) - 2017-09-09 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 16.11. um 13:35 Uhr\",\n  \"ref_time\": \"2017-11-14T10:29:41\",\n  \"gold_parse\": \"Time[]{2017-11-16 13:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.9. mittags bis 29.9. morgens\",\n  \"ref_time\": \"2017-09-13T14:50:21\",\n  \"gold_parse\": \"Interval[]{2017-09-27 X:X (X/noon) - 2017-09-29 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.11 6:10 - 13:35\",\n  \"ref_time\": \"2017-10-06T12:25:20\",\n  \"gold_parse\": \"Interval[]{2017-11-12 06:10 (X/X) - 2017-11-12 13:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday 11th December by early evening\",\n  \"ref_time\": \"2017-11-06T16:09:02\",\n  \"gold_parse\": \"Time[]{2017-12-11 X:X (X/earlyevening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.11 - 17.11\",\n  \"ref_time\": \"2017-10-19T07:50:51\",\n  \"gold_parse\": \"Interval[]{2017-11-15 X:X (X/X) - 2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 14.09.2017 ca. 7.30\",\n  \"ref_time\": \"2017-08-08T10:40:29\",\n  \"gold_parse\": \"Time[]{2017-09-14 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.05.17 14:37\",\n  \"ref_time\": \"2017-05-10T15:57:17\",\n  \"gold_parse\": \"Time[]{2017-05-16 14:37 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"September 5th\",\n  \"ref_time\": \"2017-08-01T11:52:12\",\n  \"gold_parse\": \"Time[]{2017-09-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-10-17T12:32:57\",\n  \"gold_parse\": \"Time[]{2017-10-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.11.2017\",\n  \"ref_time\": \"2017-11-06T11:24:09\",\n  \"gold_parse\": \"Time[]{2017-11-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04. - 05.12.2017\",\n  \"ref_time\": \"2017-11-22T08:27:43\",\n  \"gold_parse\": \"Interval[]{2017-12-04 X:X (X/X) - 2017-12-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09.\",\n  \"ref_time\": \"2017-08-16T10:07:24\",\n  \"gold_parse\": \"Time[]{2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08 auf 09 Nov.\",\n  \"ref_time\": \"2017-10-17T05:14:47\",\n  \"gold_parse\": \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"kommenden Sonntag, 10. September 12.00 h\",\n  \"ref_time\": \"2017-09-07T16:12:31\",\n  \"gold_parse\": \"Time[]{2017-09-10 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di. 27.09. kurz vor 9 Uhr\",\n  \"ref_time\": \"2017-09-18T13:26:38\",\n  \"gold_parse\": \"Interval[]{None - 2017-09-27 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24. auf 25.\",\n  \"ref_time\": \"2017-06-28T15:41:46\",\n  \"gold_parse\": \"Interval[]{2017-07-24 X:X (X/X) - 2017-07-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.07.2017 ab 18:00 bis später Abends\",\n  \"ref_time\": \"2017-06-28T14:06:13\",\n  \"gold_parse\": \"Interval[]{2017-07-03 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.08.2017 früh\",\n  \"ref_time\": \"2017-08-21T07:19:01\",\n  \"gold_parse\": \"Time[]{2017-08-28 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.05. ca 08:30\",\n  \"ref_time\": \"2017-05-16T12:23:03\",\n  \"gold_parse\": \"Time[]{2017-05-17 08:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di., 01.08.2017 07.40\",\n  \"ref_time\": \"2017-07-27T09:28:06\",\n  \"gold_parse\": \"Time[]{2017-08-01 07:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11. Oktober um 7:30\",\n  \"ref_time\": \"2017-10-04T06:55:27\",\n  \"gold_parse\": \"Time[]{2017-10-11 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"September 6th after 9pm\",\n  \"ref_time\": \"2017-08-14T08:27:59\",\n  \"gold_parse\": \"Interval[]{2017-09-06 21:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.06.2017 06:34 Uhr\",\n  \"ref_time\": \"2017-06-16T10:26:43\",\n  \"gold_parse\": \"Time[]{2017-06-20 06:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13 Nov\",\n  \"ref_time\": \"2017-08-25T12:15:35\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.06.2017\",\n  \"ref_time\": \"2017-06-08T08:44:19\",\n  \"gold_parse\": \"Time[]{2017-06-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.09.2017\",\n  \"ref_time\": \"2017-09-21T11:52:31\",\n  \"gold_parse\": \"Time[]{2017-09-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 16.06.\",\n  \"ref_time\": \"2017-05-16T08:47:26\",\n  \"gold_parse\": \"Time[]{2017-06-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Dienstag 15.08.\",\n  \"ref_time\": \"2017-08-10T13:38:13\",\n  \"gold_parse\": \"Time[]{2017-08-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgens am 19.09.\",\n  \"ref_time\": \"2017-09-11T16:20:10\",\n  \"gold_parse\": \"Time[]{2017-09-19 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday May 22nd around 16.40\",\n  \"ref_time\": \"2017-05-16T08:58:31\",\n  \"gold_parse\": \"Time[]{2017-05-22 16:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"4. Oktober\",\n  \"ref_time\": \"2017-09-26T10:59:32\",\n  \"gold_parse\": \"Time[]{2017-10-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.06.2017\",\n  \"ref_time\": \"2017-06-09T09:40:55\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.08.2017\",\n  \"ref_time\": \"2017-08-24T14:33:06\",\n  \"gold_parse\": \"Time[]{2017-08-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 25.05 18:30\",\n  \"ref_time\": \"2017-05-22T08:08:36\",\n  \"gold_parse\": \"Time[]{2017-05-25 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 09.08.-10.08.2017\",\n  \"ref_time\": \"2017-08-08T08:09:50\",\n  \"gold_parse\": \"Interval[]{2017-08-09 X:X (X/X) - 2017-08-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 03.07.2017 ca. 16.30 Uhr\",\n  \"ref_time\": \"2017-06-27T08:48:42\",\n  \"gold_parse\": \"Time[]{2017-07-03 16:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.09.2017\",\n  \"ref_time\": \"2017-07-25T10:03:13\",\n  \"gold_parse\": \"Time[]{2017-09-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.-09.11.17\",\n  \"ref_time\": \"2017-10-18T13:15:30\",\n  \"gold_parse\": \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 8.8. 14:31h\",\n  \"ref_time\": \"2017-08-08T08:28:56\",\n  \"gold_parse\": \"Time[]{2017-08-08 14:31 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.11.2017 21:55\",\n  \"ref_time\": \"2017-10-17T09:41:49\",\n  \"gold_parse\": \"Time[]{2017-11-12 21:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 16.11.2017\",\n  \"ref_time\": \"2017-11-02T08:25:23\",\n  \"gold_parse\": \"Time[]{2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 06:01\",\n  \"ref_time\": \"2017-07-05T15:09:49\",\n  \"gold_parse\": \"Time[]{2017-07-18 06:01 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.06.17\",\n  \"ref_time\": \"2017-05-29T10:11:00\",\n  \"gold_parse\": \"Time[]{2017-06-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 26.05.17 nach 18 Uhr\",\n  \"ref_time\": \"2017-05-15T07:47:37\",\n  \"gold_parse\": \"Interval[]{2017-05-26 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute bis 14:00 Uhr\",\n  \"ref_time\": \"2017-09-07T07:10:59\",\n  \"gold_parse\": \"Interval[]{2017-09-07 08:00 (X/X) - 2017-09-07 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.02.2018 06:20 Uhr\",\n  \"ref_time\": \"2017-11-30T10:31:46\",\n  \"gold_parse\": \"Time[]{2018-02-24 06:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08. abends\",\n  \"ref_time\": \"2017-08-01T08:04:29\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 17. November 2017 ab 18:30 Uhr\",\n  \"ref_time\": \"2017-09-27T09:45:09\",\n  \"gold_parse\": \"Interval[]{2017-11-17 18:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.11. nicht später als 20.00 Uhr\",\n  \"ref_time\": \"2017-10-23T10:04:20\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-03 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 08.10.17\",\n  \"ref_time\": \"2017-09-27T12:27:48\",\n  \"gold_parse\": \"Time[]{2017-10-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"November 7th around 17:00\",\n  \"ref_time\": \"2017-10-17T14:33:24\",\n  \"gold_parse\": \"Time[]{2017-11-07 17:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 22.11.-23.11.\",\n  \"ref_time\": \"2017-11-21T11:14:39\",\n  \"gold_parse\": \"Interval[]{2017-11-22 X:X (X/X) - 2017-11-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.07.2017 23:55 Uhr\",\n  \"ref_time\": \"2017-06-23T12:40:07\",\n  \"gold_parse\": \"Time[]{2017-07-17 23:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.06.2017\",\n  \"ref_time\": \"2017-05-15T08:49:09\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.07.2017\",\n  \"ref_time\": \"2017-06-13T13:37:18\",\n  \"gold_parse\": \"Time[]{2017-07-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.06.2017 07:20 Uhr\",\n  \"ref_time\": \"2017-06-08T07:13:03\",\n  \"gold_parse\": \"Time[]{2017-06-20 07:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.10. ca. 16:10 Uhr\",\n  \"ref_time\": \"2017-10-02T06:28:25\",\n  \"gold_parse\": \"Time[]{2017-10-12 16:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.09.17 um 14:34 Uhr\",\n  \"ref_time\": \"2017-09-11T14:48:58\",\n  \"gold_parse\": \"Time[]{2017-09-12 14:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 03.07.2017 20:30 Uhr\",\n  \"ref_time\": \"2017-06-28T10:15:55\",\n  \"gold_parse\": \"Time[]{2017-07-03 20:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 10.10.\",\n  \"ref_time\": \"2017-10-08T10:54:25\",\n  \"gold_parse\": \"Time[]{2017-10-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday evening\",\n  \"ref_time\": \"2017-10-19T09:07:57\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 15.9. um 7:45\",\n  \"ref_time\": \"2017-06-17T08:55:57\",\n  \"gold_parse\": \"Time[]{2017-09-15 07:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"3.10.-4.10.\",\n  \"ref_time\": \"2017-09-19T08:33:42\",\n  \"gold_parse\": \"Interval[]{2017-10-03 X:X (X/X) - 2017-10-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.10.2017 10.30 Uhr\",\n  \"ref_time\": \"2017-10-17T06:17:17\",\n  \"gold_parse\": \"Time[]{2017-10-18 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.06-13.06\",\n  \"ref_time\": \"2017-06-06T07:52:13\",\n  \"gold_parse\": \"Interval[]{2017-06-12 X:X (X/X) - 2017-06-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wed 1 Nov 0805\",\n  \"ref_time\": \"2017-10-29T18:23:09\",\n  \"gold_parse\": \"Time[]{2017-11-01 08:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Nacht vom 11. auf den 12. 12\",\n  \"ref_time\": \"2017-11-23T16:01:56\",\n  \"gold_parse\": \"Interval[]{2017-12-11 X:X (X/X) - 2017-12-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.6. abends\",\n  \"ref_time\": \"2017-06-02T10:21:48\",\n  \"gold_parse\": \"Time[]{2017-06-12 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday 23 May Evening\",\n  \"ref_time\": \"2017-05-16T07:42:34\",\n  \"gold_parse\": \"Time[]{2017-05-23 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"05.09.17\",\n  \"ref_time\": \"2017-07-21T08:40:48\",\n  \"gold_parse\": \"Time[]{2017-09-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19/12 1510-1640\",\n  \"ref_time\": \"2017-10-03T15:13:10\",\n  \"gold_parse\": \"Interval[]{2017-12-19 15:10 (X/X) - 2017-12-19 16:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"morgen 07:42\",\n  \"ref_time\": \"2017-11-22T14:22:53\",\n  \"gold_parse\": \"Time[]{2017-11-23 07:42 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25th\",\n  \"ref_time\": \"2017-08-11T08:06:02\",\n  \"gold_parse\": \"Time[]{2017-08-25 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Sonntag 22.10\",\n  \"ref_time\": \"2017-10-10T12:06:29\",\n  \"gold_parse\": \"Time[]{2017-10-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30. Mai 2017 gegen 17 Uhr\",\n  \"ref_time\": \"2017-05-26T07:44:16\",\n  \"gold_parse\": \"Time[]{2017-05-30 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2017-10-09 17:44\",\n  \"ref_time\": \"2017-10-05T14:25:25\",\n  \"gold_parse\": \"Time[]{2017-10-09 17:44 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 24 october\",\n  \"ref_time\": \"2017-09-22T10:40:47\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 15.06. - 17.06.2017\",\n  \"ref_time\": \"2017-06-01T08:18:01\",\n  \"gold_parse\": \"Interval[]{2017-06-15 X:X (X/X) - 2017-06-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.11.2017 ab 18:00 Uhr\",\n  \"ref_time\": \"2017-10-20T11:53:44\",\n  \"gold_parse\": \"Interval[]{2017-11-03 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do, 09.11.17 07:26\",\n  \"ref_time\": \"2017-11-06T08:31:59\",\n  \"gold_parse\": \"Time[]{2017-11-09 07:26 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Donnerstag gegen 21 Uhr\",\n  \"ref_time\": \"2017-09-18T07:48:21\",\n  \"gold_parse\": \"Time[]{2017-09-28 21:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag 18ter\",\n  \"ref_time\": \"2017-06-07T08:54:08\",\n  \"gold_parse\": \"Time[]{2017-06-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.12.17\",\n  \"ref_time\": \"2017-11-28T07:54:10\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.10.-26.10.2017\",\n  \"ref_time\": \"2017-10-23T11:05:19\",\n  \"gold_parse\": \"Interval[]{2017-10-25 X:X (X/X) - 2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"next week Tues morning\",\n  \"ref_time\": \"2017-07-31T15:28:22\",\n  \"gold_parse\": \"Time[]{2017-08-08 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"03.09.2017\",\n  \"ref_time\": \"2017-08-18T07:31:48\",\n  \"gold_parse\": \"Time[]{2017-09-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08.17 nachmittags\",\n  \"ref_time\": \"2017-08-04T12:23:27\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.2017 ab mittags\",\n  \"ref_time\": \"2017-09-01T09:58:57\",\n  \"gold_parse\": \"Time[]{2017-09-05 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.08. 7:00\",\n  \"ref_time\": \"2017-07-28T12:35:10\",\n  \"gold_parse\": \"Time[]{2017-08-03 07:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"8.11 in the evening\",\n  \"ref_time\": \"2017-11-06T08:17:33\",\n  \"gold_parse\": \"Time[]{2017-11-08 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"6.11. ca. 10:30 Uhr\",\n  \"ref_time\": \"2017-10-30T14:14:24\",\n  \"gold_parse\": \"Time[]{2017-11-06 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.06.2017\",\n  \"ref_time\": \"2017-06-02T06:31:34\",\n  \"gold_parse\": \"Time[]{2017-06-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1st December around 6pm\",\n  \"ref_time\": \"2017-11-23T08:59:53\",\n  \"gold_parse\": \"Time[]{2017-12-01 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Do, 28.09. gegen 9.30 Uhr\",\n  \"ref_time\": \"2017-09-25T12:21:15\",\n  \"gold_parse\": \"Time[]{2017-09-28 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.12\",\n  \"ref_time\": \"2017-11-01T12:43:18\",\n  \"gold_parse\": \"Time[]{2017-12-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.10.\",\n  \"ref_time\": \"2017-10-09T14:30:42\",\n  \"gold_parse\": \"Time[]{2017-10-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.09.2017 06:30 Uhr\",\n  \"ref_time\": \"2017-08-21T06:14:21\",\n  \"gold_parse\": \"Time[]{2017-09-11 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-10-13T08:36:53\",\n  \"gold_parse\": \"Time[]{2017-10-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von Donnerstag den 30.11. auf Sonnabend den 02.12.2017\",\n  \"ref_time\": \"2017-11-24T05:43:49\",\n  \"gold_parse\": \"Interval[]{2017-11-30 X:X (X/X) - 2017-12-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.07.\",\n  \"ref_time\": \"2017-07-10T15:17:25\",\n  \"gold_parse\": \"Time[]{2017-07-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11. um 20:10h\",\n  \"ref_time\": \"2017-10-26T10:32:11\",\n  \"gold_parse\": \"Time[]{2017-11-30 20:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.09.2017 um ca. 14:00 Uhr\",\n  \"ref_time\": \"2017-09-07T06:24:09\",\n  \"gold_parse\": \"Time[]{2017-09-18 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"5.10.2017 Mittagszeit\",\n  \"ref_time\": \"2017-08-29T07:40:49\",\n  \"gold_parse\": \"Time[]{2017-10-05 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.09.2017 18:00 Uhr\",\n  \"ref_time\": \"2017-08-21T06:14:21\",\n  \"gold_parse\": \"Time[]{2017-09-15 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04. Dezember 2017 13:40 - 17.36 Uhr\",\n  \"ref_time\": \"2017-10-12T12:04:27\",\n  \"gold_parse\": \"Interval[]{2017-12-04 13:40 (X/X) - 2017-12-04 17:36 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18. Juli 10:45\",\n  \"ref_time\": \"2017-07-10T13:09:12\",\n  \"gold_parse\": \"Time[]{2017-07-18 10:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.11.17\",\n  \"ref_time\": \"2017-11-06T09:27:45\",\n  \"gold_parse\": \"Time[]{2017-11-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15/11 bis don 16/11 1 Nacht\",\n  \"ref_time\": \"2017-11-01T17:13:55\",\n  \"gold_parse\": \"Interval[]{2017-11-15 X:X (X/X) - 2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9-10\",\n  \"ref_time\": \"2022-12-13T14:20:39\",\n  \"gold_parse\": \"Interval[]{X-X-X 09:00 (X/X) - X-X-X 10:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11-15\",\n  \"ref_time\": \"2022-12-13T10:20:39\",\n  \"gold_parse\": \"Interval[]{X-X-X 11:00 (X/X) - X-X-X 15:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"9\",\n  \"ref_time\": \"2022-12-13T14:20:39\",\n  \"gold_parse\": \"Time[]{2017-11-10 21:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"monday 5-9\",\n  \"ref_time\": \"2022-12-13T14:20:39\",\n  \"gold_parse\": \"Interval[]{2022-12-19 17:00 (X/X) - 2022-12-19 21:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"on June 14\",\n  \"ref_time\": \"2017-05-29T15:01:39\",\n  \"gold_parse\": \"Time[]{2017-06-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11.11.2017 16:36h\",\n  \"ref_time\": \"2017-11-09T15:35:08\",\n  \"gold_parse\": \"Time[]{2017-11-11 16:36 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.07\",\n  \"ref_time\": \"2017-07-04T14:45:02\",\n  \"gold_parse\": \"Time[]{2017-07-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Evening of 16 Nov\",\n  \"ref_time\": \"2017-08-25T09:43:25\",\n  \"gold_parse\": \"Time[]{2017-11-16 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Freitag, 06.10. um 17:30 Uhr\",\n  \"ref_time\": \"2017-09-19T12:55:12\",\n  \"gold_parse\": \"Time[]{2017-10-06 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.08.2017, 07:30 Uhr\",\n  \"ref_time\": \"2017-08-08T08:09:50\",\n  \"gold_parse\": \"Time[]{2017-08-09 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18/06 evening\",\n  \"ref_time\": \"2017-05-16T11:20:47\",\n  \"gold_parse\": \"Time[]{2017-06-18 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.11.17 21:15\",\n  \"ref_time\": \"2017-11-06T08:48:13\",\n  \"gold_parse\": \"Time[]{2017-11-07 21:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday 5 July, 20:15\",\n  \"ref_time\": \"2017-06-20T11:08:58\",\n  \"gold_parse\": \"Time[]{2017-07-05 20:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"30.06. 14:55\",\n  \"ref_time\": \"2017-06-27T09:12:55\",\n  \"gold_parse\": \"Time[]{2017-06-30 14:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 13.11. zum 14.11.\",\n  \"ref_time\": \"2017-10-25T07:33:57\",\n  \"gold_parse\": \"Interval[]{2017-11-13 X:X (X/X) - 2017-11-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1. Aug. 2017 15:20 Uhr\",\n  \"ref_time\": \"2017-07-28T10:16:45\",\n  \"gold_parse\": \"Time[]{2017-08-01 15:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 17.11.2017\",\n  \"ref_time\": \"2017-11-09T13:00:16\",\n  \"gold_parse\": \"Time[]{2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr 08.12.17\",\n  \"ref_time\": \"2017-10-09T06:58:40\",\n  \"gold_parse\": \"Time[]{2017-12-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.10.17\",\n  \"ref_time\": \"2017-07-12T08:23:10\",\n  \"gold_parse\": \"Time[]{2017-10-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.05. ab 07.30 Uhr\",\n  \"ref_time\": \"2017-05-11T13:15:54\",\n  \"gold_parse\": \"Interval[]{2017-05-15 07:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.12 gegen 10:00\",\n  \"ref_time\": \"2017-11-21T09:54:14\",\n  \"gold_parse\": \"Time[]{2017-12-16 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.05.2017 bis 31.05.2017\",\n  \"ref_time\": \"2017-05-29T13:45:48\",\n  \"gold_parse\": \"Interval[]{2017-05-30 X:X (X/X) - 2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.10.2017 17:30\",\n  \"ref_time\": \"2017-10-11T07:09:01\",\n  \"gold_parse\": \"Time[]{2017-10-13 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.10. 9:00\",\n  \"ref_time\": \"2017-08-29T12:30:16\",\n  \"gold_parse\": \"Time[]{2017-10-19 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.2017\",\n  \"ref_time\": \"2017-10-18T09:24:02\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2017-10-09 17:44\",\n  \"ref_time\": \"2017-10-05T14:25:25\",\n  \"gold_parse\": \"Time[]{2017-10-09 17:44 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017\",\n  \"ref_time\": \"2017-09-26T13:44:07\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag, 19.11.2017\",\n  \"ref_time\": \"2017-08-30T07:03:05\",\n  \"gold_parse\": \"Time[]{2017-11-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11. um 19:00h\",\n  \"ref_time\": \"2017-10-24T13:31:48\",\n  \"gold_parse\": \"Time[]{2017-11-30 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.06.2017\",\n  \"ref_time\": \"2017-05-31T06:27:12\",\n  \"gold_parse\": \"Time[]{2017-06-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2.\",\n  \"ref_time\": \"2017-06-29T06:15:58\",\n  \"gold_parse\": \"Time[]{2017-07-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17. Oktober morgens\",\n  \"ref_time\": \"2017-10-05T16:16:53\",\n  \"gold_parse\": \"Time[]{2017-10-17 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday\",\n  \"ref_time\": \"2017-07-19T16:16:33\",\n  \"gold_parse\": \"Time[]{2017-07-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13 loka 10:05\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-13 10:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"21.09.2017 um 12:15 Uhr\",\n  \"ref_time\": \"2017-08-25T13:57:05\",\n  \"gold_parse\": \"Time[]{2017-09-21 12:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-09-06T08:57:05\",\n  \"gold_parse\": \"Time[]{2017-09-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 22.08.2017 13:00\",\n  \"ref_time\": \"2017-08-17T11:21:07\",\n  \"gold_parse\": \"Time[]{2017-08-22 13:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Freitag 8am\",\n  \"ref_time\": \"2017-10-16T14:57:29\",\n  \"gold_parse\": \"Time[]{2017-10-17 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.08.17 9.30-11.05 Uhr\",\n  \"ref_time\": \"2017-07-26T07:13:26\",\n  \"gold_parse\": \"Interval[]{2017-08-08 09:30 (X/X) - 2017-08-08 11:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"November 6, 2017\",\n  \"ref_time\": \"2017-10-09T09:38:20\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"on Monday 17th of July around noon\",\n  \"ref_time\": \"2017-07-11T07:31:58\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.07.\",\n  \"ref_time\": \"2017-07-05T14:24:14\",\n  \"gold_parse\": \"Time[]{2017-07-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.06.2017\",\n  \"ref_time\": \"2017-06-07T08:08:53\",\n  \"gold_parse\": \"Time[]{2017-06-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.07. 14:15WAW\",\n  \"ref_time\": \"2017-06-22T09:20:01\",\n  \"gold_parse\": \"Time[]{2017-07-09 14:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 26.06.2017 13:10 - 16:05\",\n  \"ref_time\": \"2017-06-06T16:55:56\",\n  \"gold_parse\": \"Interval[]{2017-06-26 13:10 (X/X) - 2017-06-26 16:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09. - 21.09.\",\n  \"ref_time\": \"2017-09-06T12:45:55\",\n  \"gold_parse\": \"Interval[]{2017-09-19 X:X (X/X) - 2017-09-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10.2017 ca. 10.00 Uhr\",\n  \"ref_time\": \"2017-10-18T14:10:43\",\n  \"gold_parse\": \"Time[]{2017-10-23 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.6. ab 8.30 Uhr\",\n  \"ref_time\": \"2017-06-20T17:50:10\",\n  \"gold_parse\": \"Interval[]{2017-06-27 08:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.07.17\",\n  \"ref_time\": \"2017-06-28T07:02:41\",\n  \"gold_parse\": \"Time[]{2017-07-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.09.2017\",\n  \"ref_time\": \"2017-08-29T08:08:17\",\n  \"gold_parse\": \"Time[]{2017-09-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Sunday 15.10.\",\n  \"ref_time\": \"2017-10-11T12:25:46\",\n  \"gold_parse\": \"Time[]{2017-10-15 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"28.11. 08:28-09:43\",\n  \"ref_time\": \"2017-11-27T10:08:21\",\n  \"gold_parse\": \"Interval[]{2017-11-28 08:28 (X/X) - 2017-11-28 09:43 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.09.2017 17:15 - 18:25 Uhr\",\n  \"ref_time\": \"2017-09-05T11:18:22\",\n  \"gold_parse\": \"Interval[]{2017-09-13 17:15 (X/X) - 2017-09-13 18:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 19.07. zum 21.07.\",\n  \"ref_time\": \"2017-07-13T14:27:10\",\n  \"gold_parse\": \"Interval[]{2017-07-19 X:X (X/X) - 2017-07-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.07.2017 Nachmittags\",\n  \"ref_time\": \"2017-06-01T06:42:27\",\n  \"gold_parse\": \"Time[]{2017-07-02 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28. Juli gegen 13 Uhr ca\",\n  \"ref_time\": \"2017-06-22T13:11:56\",\n  \"gold_parse\": \"Time[]{2017-07-28 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Montag den 03.07. 09:50\",\n  \"ref_time\": \"2017-06-30T12:49:18\",\n  \"gold_parse\": \"Time[]{2017-07-03 09:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30. Juni 2017\",\n  \"ref_time\": \"2017-06-20T06:48:59\",\n  \"gold_parse\": \"Time[]{2017-06-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"kommende Woche Dienstag bis Donnerstag\",\n  \"ref_time\": \"2017-05-12T11:37:21\",\n  \"gold_parse\": \"Interval[]{2017-05-16 X:X (X/X) - 2017-05-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15 Sept 1410-1745ECO\",\n  \"ref_time\": \"2017-09-06T11:52:28\",\n  \"gold_parse\": \"Interval[]{2017-09-15 14:10 (X/X) - 2017-09-15 17:45 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"31 Jul evening\",\n  \"ref_time\": \"2017-07-11T15:32:37\",\n  \"gold_parse\": \"Time[]{2017-07-31 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-11-27T06:32:11\",\n  \"gold_parse\": \"Time[]{2017-11-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27 SEP, 17:15\",\n  \"ref_time\": \"2017-09-10T15:46:24\",\n  \"gold_parse\": \"Time[]{2017-09-27 17:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 09.-10.11.\",\n  \"ref_time\": \"2017-10-06T14:29:56\",\n  \"gold_parse\": \"Interval[]{2017-11-09 X:X (X/X) - 2017-11-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.06.2017 früh morgens\",\n  \"ref_time\": \"2017-06-08T07:30:27\",\n  \"gold_parse\": \"Time[]{2017-06-22 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.11.2017 ca. 16:00 Uhr\",\n  \"ref_time\": \"2017-11-08T09:17:54\",\n  \"gold_parse\": \"Time[]{2017-11-13 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 22.11.2017\",\n  \"ref_time\": \"2017-08-30T07:03:05\",\n  \"gold_parse\": \"Time[]{2017-11-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 30th November\",\n  \"ref_time\": \"2017-11-08T13:35:32\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Dienstag, den 19.09.2017 abends\",\n  \"ref_time\": \"2017-09-13T07:26:35\",\n  \"gold_parse\": \"Time[]{2017-09-19 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1 Nov 1015\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-02 10:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"21.08.2017\",\n  \"ref_time\": \"2017-08-21T12:12:46\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Sunday 1925\",\n  \"ref_time\": \"2017-06-20T15:44:48\",\n  \"gold_parse\": \"Time[]{2017-06-25 19:25 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"29.05.2017 bis 02.06.2017\",\n  \"ref_time\": \"2017-05-22T09:55:16\",\n  \"gold_parse\": \"Interval[]{2017-05-29 X:X (X/X) - 2017-06-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday 27 November between 16:00 and 21:00\",\n  \"ref_time\": \"2017-11-20T12:23:28\",\n  \"gold_parse\": \"Interval[]{2017-11-27 16:00 (X/X) - 2017-11-27 21:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.10.\",\n  \"ref_time\": \"2017-08-28T09:22:01\",\n  \"gold_parse\": \"Time[]{2017-10-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on December 7 th evening\",\n  \"ref_time\": \"2017-10-30T13:44:04\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.08.17\",\n  \"ref_time\": \"2017-08-11T13:04:59\",\n  \"gold_parse\": \"Time[]{2017-08-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Next week Monday\",\n  \"ref_time\": \"2017-05-25T09:17:54\",\n  \"gold_parse\": \"Time[]{2017-05-29 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Wednesday 27th late evening (around 8pm\",\n  \"ref_time\": \"2017-09-22T15:36:00\",\n  \"gold_parse\": \"Time[]{2017-09-27 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1.6.\",\n  \"ref_time\": \"2017-05-22T13:26:23\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Wednesday 21/06\",\n  \"ref_time\": \"2017-06-13T09:01:59\",\n  \"gold_parse\": \"Time[]{2017-06-21 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 17.09.\",\n  \"ref_time\": \"2017-09-11T13:58:07\",\n  \"gold_parse\": \"Time[]{2017-09-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"ab Montag\",\n  \"ref_time\": \"2017-07-19T10:39:14\",\n  \"gold_parse\": \"Time[]{2017-07-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 04.12.2017 13:59\",\n  \"ref_time\": \"2017-11-29T10:51:43\",\n  \"gold_parse\": \"Time[]{2017-12-04 13:59 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 14.06.2017 ab 18:00 h\",\n  \"ref_time\": \"2017-06-06T12:16:24\",\n  \"gold_parse\": \"Interval[]{2017-06-14 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag ab 17.00 Uhr\",\n  \"ref_time\": \"2017-10-19T06:03:26\",\n  \"gold_parse\": \"Interval[]{2017-11-10 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 2. Oktober\",\n  \"ref_time\": \"2017-09-19T07:19:59\",\n  \"gold_parse\": \"Time[]{2017-10-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on the 5th Night\",\n  \"ref_time\": \"2017-10-24T12:08:03\",\n  \"gold_parse\": \"Time[]{2017-11-05 X:X (X/night)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"03.07.\",\n  \"ref_time\": \"2017-06-29T14:52:59\",\n  \"gold_parse\": \"Time[]{2017-07-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.09.2017\",\n  \"ref_time\": \"2017-09-05T09:48:10\",\n  \"gold_parse\": \"Time[]{2017-09-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.09.2017 um 7:50 Uhr\",\n  \"ref_time\": \"2017-08-23T07:19:50\",\n  \"gold_parse\": \"Time[]{2017-09-25 07:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30. August 17-18 Uhr\",\n  \"ref_time\": \"2017-08-21T13:46:48\",\n  \"gold_parse\": \"Interval[]{2017-08-30 17:00 (X/X) - 2017-08-30 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 20.11. 9:08\",\n  \"ref_time\": \"2017-11-07T09:45:03\",\n  \"gold_parse\": \"Time[]{2017-11-20 09:08 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"3. April abends\",\n  \"ref_time\": \"2017-11-28T14:58:39\",\n  \"gold_parse\": \"Time[]{2018-04-03 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.08.17 ab 13.00-14.00 Uhr\",\n  \"ref_time\": \"2017-07-19T12:28:38\",\n  \"gold_parse\": \"Interval[]{2017-08-10 13:00 (X/X) - 2017-08-10 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.\",\n  \"ref_time\": \"2017-09-21T09:42:34\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 10.10.09. 08:00 h\",\n  \"ref_time\": \"2017-09-19T11:40:01\",\n  \"gold_parse\": \"Time[]{2017-10-10 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17. November morgens\",\n  \"ref_time\": \"2017-10-16T07:57:07\",\n  \"gold_parse\": \"Time[]{2017-11-17 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.12 gegen 10:00 Uhr\",\n  \"ref_time\": \"2017-11-21T09:54:14\",\n  \"gold_parse\": \"Time[]{2017-12-16 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10 JUL\",\n  \"ref_time\": \"2017-06-26T13:27:25\",\n  \"gold_parse\": \"Time[]{2017-07-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.07.\",\n  \"ref_time\": \"2017-06-27T08:05:03\",\n  \"gold_parse\": \"Time[]{2017-07-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.11.2017 ab 18:30 Uhr\",\n  \"ref_time\": \"2017-09-28T11:14:08\",\n  \"gold_parse\": \"Interval[]{2017-11-16 18:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.6 spätestens 14:00\",\n  \"ref_time\": \"2017-06-14T13:45:59\",\n  \"gold_parse\": \"Interval[]{None - 2017-06-19 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag 27.06.2017 6:45\",\n  \"ref_time\": \"2017-06-19T10:41:29\",\n  \"gold_parse\": \"Time[]{2017-06-27 06:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.6. late\",\n  \"ref_time\": \"2017-05-25T18:08:30\",\n  \"gold_parse\": \"Time[]{2017-06-06 X:X (X/latenight)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"01.06.2017 21:15\",\n  \"ref_time\": \"2017-05-10T09:07:10\",\n  \"gold_parse\": \"Time[]{2017-06-01 21:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"eine Nacht vom 11. Auf den 12. Oktober 2017\",\n  \"ref_time\": \"2017-08-23T07:17:49\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.09.2017 09:06\",\n  \"ref_time\": \"2017-09-15T11:02:59\",\n  \"gold_parse\": \"Time[]{2017-09-18 09:06 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.7.17 8:45\",\n  \"ref_time\": \"2017-07-17T07:52:28\",\n  \"gold_parse\": \"Time[]{2017-07-18 08:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.7\",\n  \"ref_time\": \"2017-07-03T08:36:18\",\n  \"gold_parse\": \"Time[]{2017-07-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 20th October\",\n  \"ref_time\": \"2017-10-09T14:04:29\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.10., 19:20\",\n  \"ref_time\": \"2017-10-09T09:40:21\",\n  \"gold_parse\": \"Time[]{2018-10-10 19:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"the first flight on 15 September\",\n  \"ref_time\": \"2017-08-23T10:02:45\",\n  \"gold_parse\": \"Time[]{2017-09-15 X:X (X/first)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"12th of October\",\n  \"ref_time\": \"2017-10-05T08:55:05\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Freitag 27.04.2018 16 Uhr\",\n  \"ref_time\": \"2017-11-16T09:29:29\",\n  \"gold_parse\": \"Time[]{2018-04-27 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.11. - 11.11.17\",\n  \"ref_time\": \"2017-10-24T07:10:15\",\n  \"gold_parse\": \"Interval[]{2017-11-06 X:X (X/X) - 2017-11-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute (22.09.)\",\n  \"ref_time\": \"2017-09-22T07:17:48\",\n  \"gold_parse\": \"Time[]{2017-09-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 04.10.17\",\n  \"ref_time\": \"2017-09-28T13:38:59\",\n  \"gold_parse\": \"Time[]{2017-10-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 07.12. nach 18:00\",\n  \"ref_time\": \"2017-11-17T14:21:56\",\n  \"gold_parse\": \"Interval[]{2017-12-07 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday 23.08. 22:00\",\n  \"ref_time\": \"2017-08-17T10:31:26\",\n  \"gold_parse\": \"Time[]{2017-08-23 22:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Do., 28.09.2017 06:45\",\n  \"ref_time\": \"2017-09-07T12:32:56\",\n  \"gold_parse\": \"Time[]{2017-09-29 06:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"folgenden Morgen bis 10:00 Uhr\",\n  \"ref_time\": \"2017-09-26T18:02:53\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-09 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.01. - 18.01.18\",\n  \"ref_time\": \"2017-11-14T14:09:47\",\n  \"gold_parse\": \"Interval[]{2018-01-16 X:X (X/X) - 2018-01-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Tuesday morning 11.21 - 11.22 early evening\",\n  \"ref_time\": \"2017-11-01T10:06:57\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/morning) - 2017-11-22 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"June 7th 17.05-18.15\",\n  \"ref_time\": \"2017-05-24T13:21:01\",\n  \"gold_parse\": \"Interval[]{2017-06-07 17:05 (X/X) - 2017-06-07 18:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"1207-130717\",\n  \"ref_time\": \"2017-06-16T12:06:59\",\n  \"gold_parse\": \"Interval[]{2017-07-12 X:X (X/X) - 2017-07-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.08. 08:50 Uhr\",\n  \"ref_time\": \"2017-07-20T09:37:14\",\n  \"gold_parse\": \"Time[]{2017-08-11 08:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.01.2017\",\n  \"ref_time\": \"2017-10-17T07:26:14\",\n  \"gold_parse\": \"Time[]{2017-01-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Montag, 18. September ab 13h\",\n  \"ref_time\": \"2017-09-12T12:32:39\",\n  \"gold_parse\": \"Interval[]{2017-09-18 13:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 7.9. um 20:30 h\",\n  \"ref_time\": \"2017-07-14T12:33:01\",\n  \"gold_parse\": \"Time[]{2017-09-07 20:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 20.06. 18.20 Uhr\",\n  \"ref_time\": \"2017-06-07T13:57:35\",\n  \"gold_parse\": \"Time[]{2017-06-20 18:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 7.11.2017 Ab 19:50\",\n  \"ref_time\": \"2017-10-05T11:16:47\",\n  \"gold_parse\": \"Interval[]{2017-11-07 19:50 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-10-08T12:10:27\",\n  \"gold_parse\": \"Time[]{2017-10-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 21.11 bis 25.11\",\n  \"ref_time\": \"2017-11-20T13:55:45\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09. gegen 17.30 Uhr\",\n  \"ref_time\": \"2017-08-31T10:50:16\",\n  \"gold_parse\": \"Time[]{2017-09-27 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.10.2017 um 16.55\",\n  \"ref_time\": \"2017-08-30T10:00:11\",\n  \"gold_parse\": \"Time[]{2017-10-03 16:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"diesen mittwoch abend ab 19:30\",\n  \"ref_time\": \"2017-05-29T08:36:57\",\n  \"gold_parse\": \"Interval[]{2017-05-31 19:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.5. 8:45\",\n  \"ref_time\": \"2017-05-18T08:44:49\",\n  \"gold_parse\": \"Time[]{2017-05-24 08:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.8-24.8.\",\n  \"ref_time\": \"2017-08-18T12:21:14\",\n  \"gold_parse\": \"Interval[]{2017-08-22 X:X (X/X) - 2017-08-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.9.\",\n  \"ref_time\": \"2017-07-24T11:44:10\",\n  \"gold_parse\": \"Time[]{2017-09-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12 to 15 October 2017\",\n  \"ref_time\": \"2017-07-05T12:54:08\",\n  \"gold_parse\": \"Interval[]{2017-10-12 X:X (X/X) - 2017-10-15 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 13.06.2017 nachmittags\",\n  \"ref_time\": \"2017-05-30T13:31:26\",\n  \"gold_parse\": \"Time[]{2017-06-13 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.11.17\",\n  \"ref_time\": \"2017-11-23T11:24:16\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 21.11. am frühen Abend\",\n  \"ref_time\": \"2017-11-02T12:34:15\",\n  \"gold_parse\": \"Time[]{2017-11-21 X:X (X/earlyevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.10. abends\",\n  \"ref_time\": \"2017-09-13T08:43:36\",\n  \"gold_parse\": \"Time[]{2017-10-05 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.12.2017\",\n  \"ref_time\": \"2017-11-21T14:01:19\",\n  \"gold_parse\": \"Time[]{2017-12-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-11-30T10:11:23\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.10.2017 um 18:09 Uhr\",\n  \"ref_time\": \"2017-10-02T11:09:18\",\n  \"gold_parse\": \"Time[]{2017-10-25 18:09 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi, 12.07.17 09:49\",\n  \"ref_time\": \"2017-07-10T14:08:13\",\n  \"gold_parse\": \"Time[]{2017-07-12 09:49 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.06.2017 um 07.30 Uhr\",\n  \"ref_time\": \"2017-05-18T10:02:23\",\n  \"gold_parse\": \"Time[]{2017-06-05 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.10.2017 20-21\",\n  \"ref_time\": \"2017-10-18T06:50:26\",\n  \"gold_parse\": \"Interval[]{2017-10-27 20:00 (X/X) - 2017-10-27 21:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"6 Nov\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"morgen selben Uhrzeit\",\n  \"ref_time\": \"2017-09-27T11:38:48\",\n  \"gold_parse\": \"Time[]{2017-09-28 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 21. 11. Bis zum 23. 11.\",\n  \"ref_time\": \"2017-11-15T11:37:40\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.6.-4.7.\",\n  \"ref_time\": \"2017-06-20T10:38:46\",\n  \"gold_parse\": \"Interval[]{2017-06-28 X:X (X/X) - 2017-07-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am frühen Abend\",\n  \"ref_time\": \"2017-09-14T06:04:38\",\n  \"gold_parse\": \"Time[]{2017-10-04 X:X (X/earlyevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Vom 26.-27.09.2017\",\n  \"ref_time\": \"2017-09-25T12:05:09\",\n  \"gold_parse\": \"Interval[]{2017-09-26 X:X (X/X) - 2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04.09.2017 15.10 Uhr\",\n  \"ref_time\": \"2017-08-30T08:36:02\",\n  \"gold_parse\": \"Time[]{2017-09-04 15:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07 JUL 17:25\",\n  \"ref_time\": \"2017-05-30T13:31:26\",\n  \"gold_parse\": \"Time[]{2017-07-07 17:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"next Tuesday 8th early morning\",\n  \"ref_time\": \"2017-07-31T17:45:15\",\n  \"gold_parse\": \"Time[]{2017-08-08 X:X (X/earlymorning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11. Sep. 2017 10:00 Uhr\",\n  \"ref_time\": \"2017-07-26T13:12:26\",\n  \"gold_parse\": \"Time[]{2017-09-11 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do., 26. Okt. 07:35+1 - 09:55+1\",\n  \"ref_time\": \"2017-10-02T08:23:37\",\n  \"gold_parse\": \"Interval[]{2017-10-27 07:35 (X/X) - 2017-10-27 09:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen\",\n  \"ref_time\": \"2017-11-06T20:45:09\",\n  \"gold_parse\": \"Time[]{2017-11-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-07-25T16:27:58\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 16.10.-18.10.17\",\n  \"ref_time\": \"2017-10-06T09:29:05\",\n  \"gold_parse\": \"Interval[]{2017-10-16 X:X (X/X) - 2017-10-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mittwoch den 19.07. gegen 17:30\",\n  \"ref_time\": \"2017-07-14T10:58:32\",\n  \"gold_parse\": \"Time[]{2017-07-17 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"3 Dec 2125\",\n  \"ref_time\": \"2017-11-20T19:42:36\",\n  \"gold_parse\": \"Time[]{2017-12-03 21:25 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 9.11. um 20:40h\",\n  \"ref_time\": \"2017-10-27T08:56:23\",\n  \"gold_parse\": \"Time[]{2017-11-09 20:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"November am 22.11.\",\n  \"ref_time\": \"2017-09-08T12:56:52\",\n  \"gold_parse\": \"Time[]{2017-11-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 06. - 07.12.\",\n  \"ref_time\": \"2017-08-23T12:27:34\",\n  \"gold_parse\": \"Interval[]{2017-12-06 X:X (X/X) - 2017-12-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 01.08. ab ca. 18:00 Uhr\",\n  \"ref_time\": \"2017-07-21T12:40:28\",\n  \"gold_parse\": \"Interval[]{2017-08-01 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.07.2017 7 Uhr\",\n  \"ref_time\": \"2017-07-24T14:51:45\",\n  \"gold_parse\": \"Time[]{2017-07-26 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13. Dezember gegen 11:00 Vormittags\",\n  \"ref_time\": \"2017-11-24T12:39:26\",\n  \"gold_parse\": \"Time[]{2017-12-13 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 15.08.2017 (nachmittags) bis zum 17.08.2017 (vormittags)\",\n  \"ref_time\": \"2017-08-14T08:13:53\",\n  \"gold_parse\": \"Interval[]{2017-08-15 X:X (X/afternoon) - 2017-08-17 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday evening\",\n  \"ref_time\": \"2017-09-04T09:11:42\",\n  \"gold_parse\": \"Time[]{2017-09-07 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-11-28T12:00:15\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.11.17 8.33 Uhr\",\n  \"ref_time\": \"2017-09-28T09:46:29\",\n  \"gold_parse\": \"Time[]{2017-11-09 08:33 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.09. 8:03 Uhr\",\n  \"ref_time\": \"2017-09-07T10:19:10\",\n  \"gold_parse\": \"Time[]{2017-09-11 08:03 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2.10.17 - 5.10 nachmittags\",\n  \"ref_time\": \"2017-08-15T08:12:20\",\n  \"gold_parse\": \"Time[]{2017-10-02 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 28.06.2017 07:38 Uhr\",\n  \"ref_time\": \"2017-06-21T09:22:12\",\n  \"gold_parse\": \"Time[]{2017-06-28 07:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 9. Oktober 2017 10:00 Uhr\",\n  \"ref_time\": \"2017-08-03T10:16:47\",\n  \"gold_parse\": \"Time[]{2017-10-09 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.11. 16:35 Uhr\",\n  \"ref_time\": \"2017-10-18T07:52:52\",\n  \"gold_parse\": \"Time[]{2017-11-19 16:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 28.9. morning\",\n  \"ref_time\": \"2017-09-22T08:01:05\",\n  \"gold_parse\": \"Time[]{2017-09-28 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen 6:38\",\n  \"ref_time\": \"2017-10-18T12:29:13\",\n  \"gold_parse\": \"Time[]{2017-10-19 06:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 26.06 - 27.06\",\n  \"ref_time\": \"2017-06-26T07:52:07\",\n  \"gold_parse\": \"Interval[]{2017-06-26 X:X (X/X) - 2017-06-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von Montag, 11.09. bis Donnerstag 14.09.\",\n  \"ref_time\": \"2017-09-08T09:49:10\",\n  \"gold_parse\": \"Interval[]{2017-09-11 X:X (X/X) - 2017-09-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 23.11.2017 07:25 - 8:35 Uhr\",\n  \"ref_time\": \"2017-11-16T13:19:24\",\n  \"gold_parse\": \"Interval[]{2017-11-23 07:25 (X/X) - 2017-11-23 08:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag 25.08. 13:02 Uhr\",\n  \"ref_time\": \"2017-08-21T09:26:59\",\n  \"gold_parse\": \"Time[]{2017-08-25 13:02 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 11.10. - 13.10.2017\",\n  \"ref_time\": \"2017-10-07T15:19:00\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"ab dem 07.07. bis 09.07.\",\n  \"ref_time\": \"2017-06-07T09:02:11\",\n  \"gold_parse\": \"Interval[]{2017-07-07 X:X (X/X) - 2017-07-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11.-29.11.2017\",\n  \"ref_time\": \"2017-11-26T07:44:15\",\n  \"gold_parse\": \"Interval[]{2017-11-27 X:X (X/X) - 2017-11-29 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mi. 20.09.2017\",\n  \"ref_time\": \"2017-09-19T10:04:52\",\n  \"gold_parse\": \"Time[]{2017-09-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.09.2017 ca. 09.00 Uhr\",\n  \"ref_time\": \"2017-07-04T07:28:38\",\n  \"gold_parse\": \"Time[]{2017-09-30 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.07.2017 ca 18:30\",\n  \"ref_time\": \"2017-06-14T15:01:43\",\n  \"gold_parse\": \"Time[]{2017-07-19 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 13.09.17 ab 11:30 Uhr\",\n  \"ref_time\": \"2017-09-08T14:55:15\",\n  \"gold_parse\": \"Interval[]{2017-09-13 11:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11 OCT, 17:00\",\n  \"ref_time\": \"2017-09-09T06:12:27\",\n  \"gold_parse\": \"Time[]{2017-10-11 17:00 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"30.06.2017\",\n  \"ref_time\": \"2017-05-31T07:03:35\",\n  \"gold_parse\": \"Time[]{2017-06-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 13. Dezember ca. 6 Uhr\",\n  \"ref_time\": \"2017-11-29T09:08:04\",\n  \"gold_parse\": \"Time[]{2017-12-13 06:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.11\",\n  \"ref_time\": \"2017-11-15T07:37:05\",\n  \"gold_parse\": \"Time[]{2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11. - 12.10.\",\n  \"ref_time\": \"2017-08-24T13:56:47\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.6.\",\n  \"ref_time\": \"2017-06-06T10:24:43\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.01.2018 19:21h\",\n  \"ref_time\": \"2017-11-02T08:53:13\",\n  \"gold_parse\": \"Time[]{2018-01-03 19:21 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.09.2017 17:50\",\n  \"ref_time\": \"2017-08-31T07:37:04\",\n  \"gold_parse\": \"Time[]{2017-09-17 17:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.10.2017 um 08:00 Uhr\",\n  \"ref_time\": \"2017-10-10T13:46:41\",\n  \"gold_parse\": \"Time[]{2017-10-16 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.-16.11.\",\n  \"ref_time\": \"2017-09-01T13:05:27\",\n  \"gold_parse\": \"Interval[]{2017-11-14 X:X (X/X) - 2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 17.07.2017 15:00-17:00 Uhr\",\n  \"ref_time\": \"2017-07-11T11:53:20\",\n  \"gold_parse\": \"Interval[]{2017-07-17 15:00 (X/X) - 2017-07-17 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.11.2017 07:00 Uhr\",\n  \"ref_time\": \"2017-11-02T11:27:05\",\n  \"gold_parse\": \"Time[]{2017-11-13 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 11. Dezember 20:20-21:20\",\n  \"ref_time\": \"2017-11-27T14:53:34\",\n  \"gold_parse\": \"Interval[]{2017-12-11 20:20 (X/X) - 2017-12-11 21:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.07\",\n  \"ref_time\": \"2017-07-04T13:43:18\",\n  \"gold_parse\": \"Time[]{2017-07-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.09.17 16:37\",\n  \"ref_time\": \"2017-09-08T16:03:06\",\n  \"gold_parse\": \"Time[]{2017-09-11 16:37 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 24. August um ca. 19.00 Uhr\",\n  \"ref_time\": \"2017-08-09T06:17:05\",\n  \"gold_parse\": \"Time[]{2017-08-24 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.-25.01.2018\",\n  \"ref_time\": \"2017-11-16T09:10:12\",\n  \"gold_parse\": \"Interval[]{2018-01-22 X:X (X/X) - 2018-01-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.09.2017 früh Vormittag\",\n  \"ref_time\": \"2017-09-01T11:46:15\",\n  \"gold_parse\": \"Time[]{2017-09-06 X:X (X/earlynoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 23.11. um 18:20 Uhr\",\n  \"ref_time\": \"2017-11-09T11:28:42\",\n  \"gold_parse\": \"Time[]{2017-11-23 18:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.12.2017 morgens zwischen 7 und 8 Uhr\",\n  \"ref_time\": \"2017-11-07T13:25:19\",\n  \"gold_parse\": \"Interval[]{2017-12-05 07:00 (X/X) - 2017-12-05 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10.17\",\n  \"ref_time\": \"2017-07-12T08:23:10\",\n  \"gold_parse\": \"Time[]{2017-10-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.2017 früher Flug\",\n  \"ref_time\": \"2017-10-24T11:23:09\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.08-02.09\",\n  \"ref_time\": \"2017-08-15T12:12:03\",\n  \"gold_parse\": \"Interval[]{2017-08-26 X:X (X/X) - 2017-09-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"thursday 23.11\",\n  \"ref_time\": \"2017-11-17T17:06:00\",\n  \"gold_parse\": \"Time[]{2017-11-23 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.09\",\n  \"ref_time\": \"2017-09-01T11:25:39\",\n  \"gold_parse\": \"Time[]{2017-09-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"diesen Mittwoch gegen 19 Uhr\",\n  \"ref_time\": \"2017-10-30T10:32:22\",\n  \"gold_parse\": \"Time[]{2017-11-01 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.08.2017 abends\",\n  \"ref_time\": \"2017-07-13T14:19:32\",\n  \"gold_parse\": \"Time[]{2017-08-23 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.08.2017 morgens 06:35h\",\n  \"ref_time\": \"2017-07-18T08:06:43\",\n  \"gold_parse\": \"Time[]{2017-08-15 06:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.09.2017 07:25\",\n  \"ref_time\": \"2017-09-14T08:52:56\",\n  \"gold_parse\": \"Time[]{2017-09-20 07:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8.12.17 ca. 11 Uhr\",\n  \"ref_time\": \"2017-11-30T09:06:22\",\n  \"gold_parse\": \"Time[]{2017-12-08 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 6.9.\",\n  \"ref_time\": \"2017-08-29T16:26:44\",\n  \"gold_parse\": \"Time[]{2017-09-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20/6 13.10h-14.40h\",\n  \"ref_time\": \"2017-06-13T07:38:49\",\n  \"gold_parse\": \"Interval[]{2017-06-20 13:10 (X/X) - 2017-06-20 14:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 27.10.2017 am frühen Abend\",\n  \"ref_time\": \"2017-09-07T06:42:40\",\n  \"gold_parse\": \"Time[]{2017-10-27 X:X (X/earlyevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.08\",\n  \"ref_time\": \"2017-07-31T09:57:46\",\n  \"gold_parse\": \"Time[]{2017-08-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday 12.09\",\n  \"ref_time\": \"2017-09-08T20:54:33\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"04.10.2017 letzte\",\n  \"ref_time\": \"2017-09-07T10:52:45\",\n  \"gold_parse\": \"Time[]{2017-10-04 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.08. - 30.08.2017\",\n  \"ref_time\": \"2017-08-23T13:25:53\",\n  \"gold_parse\": \"Interval[]{2017-08-29 X:X (X/X) - 2017-08-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 01. September\",\n  \"ref_time\": \"2017-07-24T11:12:38\",\n  \"gold_parse\": \"Time[]{2017-09-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16 JUL spätestens 16 JUL abends\",\n  \"ref_time\": \"2017-06-21T11:02:40\",\n  \"gold_parse\": \"Time[]{2017-07-16 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12. Oktober\",\n  \"ref_time\": \"2017-10-06T14:51:15\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"This Sunday till Tuesday\",\n  \"ref_time\": \"2017-09-12T16:17:16\",\n  \"gold_parse\": \"Interval[]{2017-09-17 X:X (X/X) - 2017-09-19 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"04.07.2017 20:00\",\n  \"ref_time\": \"2017-07-03T12:09:20\",\n  \"gold_parse\": \"Time[]{2017-07-04 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 21.11.2017 morgens früh bis 09 Uhr\",\n  \"ref_time\": \"2017-10-22T02:51:26\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-21 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.05.2017 19:08\",\n  \"ref_time\": \"2017-05-19T07:09:12\",\n  \"gold_parse\": \"Time[]{2017-05-19 19:08 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.11.2017 nachm./abends\",\n  \"ref_time\": \"2017-10-16T13:35:53\",\n  \"gold_parse\": \"Interval[]{2017-11-26 X:X (X/afternoon) - 2017-11-26 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.11.2017\",\n  \"ref_time\": \"2017-10-09T11:59:15\",\n  \"gold_parse\": \"Time[]{2017-11-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8.11 - 9.11\",\n  \"ref_time\": \"2017-10-26T15:40:41\",\n  \"gold_parse\": \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 12. - 19.09.2017\",\n  \"ref_time\": \"2017-08-09T10:50:15\",\n  \"gold_parse\": \"Interval[]{2017-09-12 X:X (X/X) - 2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag den 17.10.2017 05:18 Uhr\",\n  \"ref_time\": \"2017-09-29T08:39:52\",\n  \"gold_parse\": \"Time[]{2017-10-17 05:18 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7. - 9. November\",\n  \"ref_time\": \"2017-10-30T10:36:14\",\n  \"gold_parse\": \"Interval[]{2017-11-07 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.02.2018\",\n  \"ref_time\": \"2017-11-27T15:11:52\",\n  \"gold_parse\": \"Time[]{2018-02-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.09.\",\n  \"ref_time\": \"2017-08-30T11:52:50\",\n  \"gold_parse\": \"Time[]{2017-09-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-05-17T14:03:16\",\n  \"gold_parse\": \"Time[]{2017-05-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.09 gegen 10:00\",\n  \"ref_time\": \"2017-08-31T14:15:26\",\n  \"gold_parse\": \"Time[]{2017-09-06 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.9. - 28.9.2017\",\n  \"ref_time\": \"2017-09-14T13:45:54\",\n  \"gold_parse\": \"Interval[]{2017-09-25 X:X (X/X) - 2017-09-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 22.11.2017 17:55 Uhr\",\n  \"ref_time\": \"2017-11-08T10:29:19\",\n  \"gold_parse\": \"Time[]{2017-11-22 17:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Monday 13 November in morning\",\n  \"ref_time\": \"2017-11-08T14:59:17\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch abends\",\n  \"ref_time\": \"2017-08-21T11:24:46\",\n  \"gold_parse\": \"Time[]{2017-08-23 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.09 9.38h\",\n  \"ref_time\": \"2017-09-05T12:44:58\",\n  \"gold_parse\": \"Time[]{2017-09-25 09:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 31.8. später\",\n  \"ref_time\": \"2017-08-24T06:12:14\",\n  \"gold_parse\": \"Interval[]{2017-08-31 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Montag 13.11.2017\",\n  \"ref_time\": \"2017-10-11T09:21:28\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tue, Aug 15th 21:35\",\n  \"ref_time\": \"2017-08-14T15:21:31\",\n  \"gold_parse\": \"Time[]{2017-08-15 21:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, den 5.10.2017 16:00 - 17:00 Uhr\",\n  \"ref_time\": \"2017-09-28T07:55:07\",\n  \"gold_parse\": \"Interval[]{2017-10-05 16:00 (X/X) - 2017-10-05 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.06.2017\",\n  \"ref_time\": \"2017-06-14T07:23:25\",\n  \"gold_parse\": \"Time[]{2017-06-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2 Nov 1815\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-02 18:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"08.12.2017 - 10.12.2017\",\n  \"ref_time\": \"2017-11-24T11:29:08\",\n  \"gold_parse\": \"Interval[]{2017-12-08 X:X (X/X) - 2017-12-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"earlier 06.08\",\n  \"ref_time\": \"2017-07-27T14:17:42\",\n  \"gold_parse\": \"Time[]{2017-08-06 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"17.10. - 20.10.17\",\n  \"ref_time\": \"2017-10-06T07:05:05\",\n  \"gold_parse\": \"Interval[]{2017-10-17 X:X (X/X) - 2017-10-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.01.2018 12:00 Uhr\",\n  \"ref_time\": \"2017-09-27T09:37:06\",\n  \"gold_parse\": \"Time[]{2018-01-31 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.11.2017 - 24.11 2017\",\n  \"ref_time\": \"2017-11-06T09:35:52\",\n  \"gold_parse\": \"Interval[]{2017-11-22 X:X (X/X) - 2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute um 17:22\",\n  \"ref_time\": \"2017-11-06T10:27:41\",\n  \"gold_parse\": \"Time[]{2017-11-06 17:22 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 29.11. vor 10.00h\",\n  \"ref_time\": \"2017-11-07T09:12:11\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-29 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Monday, August 21st in the morning\",\n  \"ref_time\": \"2017-08-08T09:40:21\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Nov 8 2359-1715\",\n  \"ref_time\": \"2017-07-21T16:36:54\",\n  \"gold_parse\": \"Interval[]{2017-11-08 23:59 (X/X) - 2017-11-08 17:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"12. auf den 13.10\",\n  \"ref_time\": \"2017-10-10T18:44:47\",\n  \"gold_parse\": \"Interval[]{2017-10-12 X:X (X/X) - 2017-10-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 25.10.\",\n  \"ref_time\": \"2017-10-18T10:55:17\",\n  \"gold_parse\": \"Time[]{2017-10-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon Nov 13 3:35 PM\",\n  \"ref_time\": \"2017-11-08T13:05:30\",\n  \"gold_parse\": \"Time[]{2017-11-13 15:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.05.2017\",\n  \"ref_time\": \"2017-05-17T13:00:34\",\n  \"gold_parse\": \"Time[]{2017-05-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"the 22nd\",\n  \"ref_time\": \"2017-09-24T12:50:45\",\n  \"gold_parse\": \"Time[]{2017-10-22 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"on the 6th of December around noon\",\n  \"ref_time\": \"2017-11-16T08:18:27\",\n  \"gold_parse\": \"Time[]{2017-12-06 X:X (X/noon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Sonntag, 3.12. spätestens um 5:00 pm\",\n  \"ref_time\": \"2017-11-29T14:51:15\",\n  \"gold_parse\": \"Interval[]{None - 2017-12-03 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.11\",\n  \"ref_time\": \"2017-10-16T16:03:06\",\n  \"gold_parse\": \"Time[]{2017-11-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Sonntag den 12. November\",\n  \"ref_time\": \"2017-08-18T16:11:04\",\n  \"gold_parse\": \"Time[]{2017-11-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr, 02.06.2017, ca. 14:00\",\n  \"ref_time\": \"2017-05-31T14:11:10\",\n  \"gold_parse\": \"Time[]{2017-06-02 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.11.2017 17:00 Uhr\",\n  \"ref_time\": \"2017-09-25T09:39:49\",\n  \"gold_parse\": \"Time[]{2017-11-26 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 15.12. erster\",\n  \"ref_time\": \"2017-11-08T13:18:26\",\n  \"gold_parse\": \"Time[]{2017-12-15 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 23. auf den 24.09.2017\",\n  \"ref_time\": \"2017-08-21T20:25:17\",\n  \"gold_parse\": \"Interval[]{2017-09-23 X:X (X/X) - 2017-09-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"middle\",\n  \"ref_time\": \"2017-10-06T09:45:11\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/noon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"08.12. nachmittags\",\n  \"ref_time\": \"2017-11-14T08:52:18\",\n  \"gold_parse\": \"Time[]{2017-12-08 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 31.05. 6:30 Uhr\",\n  \"ref_time\": \"2017-05-19T09:37:46\",\n  \"gold_parse\": \"Time[]{2017-05-31 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thu 26 Oct late afternoon\",\n  \"ref_time\": \"2017-10-24T19:11:30\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/lateafternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.07.2017 10.00Uhr\",\n  \"ref_time\": \"2017-07-17T09:53:15\",\n  \"gold_parse\": \"Time[]{2017-07-26 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 06.10.2017 Spätnachmittag/Abend\",\n  \"ref_time\": \"2017-08-07T08:35:11\",\n  \"gold_parse\": \"Interval[]{2017-10-06 X:X (X/lateafternoon) - 2017-10-06 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 15/06 around 18.00 h\",\n  \"ref_time\": \"2017-06-12T14:50:11\",\n  \"gold_parse\": \"Time[]{2017-06-15 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 9. September\",\n  \"ref_time\": \"2017-09-06T09:02:24\",\n  \"gold_parse\": \"Time[]{2017-09-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr. 15.09.2017 - 6:00 Uhr\",\n  \"ref_time\": \"2017-09-12T07:07:42\",\n  \"gold_parse\": \"Time[]{2017-09-15 06:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2. Dez. 2017 17:55\",\n  \"ref_time\": \"2017-10-24T12:51:01\",\n  \"gold_parse\": \"Time[]{2017-12-02 17:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 27th June\",\n  \"ref_time\": \"2017-06-18T15:05:47\",\n  \"gold_parse\": \"Time[]{2017-06-27 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"12.6 - 16.6\",\n  \"ref_time\": \"2017-05-28T20:27:09\",\n  \"gold_parse\": \"Interval[]{2017-06-12 X:X (X/X) - 2017-06-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 29.11. Nachmittag\",\n  \"ref_time\": \"2017-11-08T11:29:36\",\n  \"gold_parse\": \"Time[]{2017-11-29 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.\",\n  \"ref_time\": \"2017-09-21T07:58:16\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 25.07.\",\n  \"ref_time\": \"2017-07-04T09:54:51\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tomorrow 16 Nov noon\",\n  \"ref_time\": \"2017-11-15T06:24:36\",\n  \"gold_parse\": \"Time[]{2017-11-16 12:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 19.06.2017 19:20 Uhr\",\n  \"ref_time\": \"2017-06-12T11:49:43\",\n  \"gold_parse\": \"Time[]{2017-06-19 19:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Dienstag, 11.07.2017 ab 15.00h\",\n  \"ref_time\": \"2017-07-06T09:05:46\",\n  \"gold_parse\": \"Interval[]{2017-07-11 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 31.7. frühestens 17:30 Uhr\",\n  \"ref_time\": \"2017-07-06T12:17:02\",\n  \"gold_parse\": \"Interval[]{2017-07-31 17:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.05.2017\",\n  \"ref_time\": \"2017-05-11T12:22:01\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi, 08.11.2017 13:35\",\n  \"ref_time\": \"2017-10-26T05:55:16\",\n  \"gold_parse\": \"Time[]{2017-11-08 13:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 14.11.2017 bis 17.11.2017\",\n  \"ref_time\": \"2017-11-14T07:28:06\",\n  \"gold_parse\": \"Interval[]{2017-11-14 X:X (X/X) - 2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8 October after 6pm\",\n  \"ref_time\": \"2017-10-03T20:24:48\",\n  \"gold_parse\": \"Interval[]{2017-10-08 18:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"17.07.17 morgens\",\n  \"ref_time\": \"2017-06-14T14:53:38\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 06.09. 20:35 Uhr\",\n  \"ref_time\": \"2017-08-21T13:24:25\",\n  \"gold_parse\": \"Time[]{2017-09-06 20:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24. September um ca. 16-17 Uhr\",\n  \"ref_time\": \"2017-07-31T10:54:41\",\n  \"gold_parse\": \"Interval[]{2017-09-24 16:00 (X/X) - 2017-09-24 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1 night\",\n  \"ref_time\": \"2017-09-14T09:18:11\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 28.11. spätestens 15:20 Uhr\",\n  \"ref_time\": \"2017-09-25T15:59:52\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-28 15:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 22.08. 08:34 - 10:28\",\n  \"ref_time\": \"2017-08-17T09:05:38\",\n  \"gold_parse\": \"Interval[]{2017-08-22 08:34 (X/X) - 2017-08-22 10:28 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 13.07.2017 um 15:35 Uhr\",\n  \"ref_time\": \"2017-07-05T12:49:04\",\n  \"gold_parse\": \"Time[]{2017-07-13 15:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.11.2017\",\n  \"ref_time\": \"2017-11-03T14:00:07\",\n  \"gold_parse\": \"Time[]{2017-11-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Freitag, 7.07.2017 Abends ab 18.00h\",\n  \"ref_time\": \"2017-06-23T12:38:05\",\n  \"gold_parse\": \"Interval[]{2017-07-07 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.09.2017 14:00 - 16:00\",\n  \"ref_time\": \"2017-08-09T09:39:11\",\n  \"gold_parse\": \"Interval[]{2017-09-12 14:00 (X/X) - 2017-09-12 16:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Donnerstag, 31.08.17\",\n  \"ref_time\": \"2017-08-29T07:35:47\",\n  \"gold_parse\": \"Time[]{2017-08-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 5th July\",\n  \"ref_time\": \"2017-07-03T15:35:49\",\n  \"gold_parse\": \"Time[]{2017-07-05 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"on sunday 9/24 by 1830\",\n  \"ref_time\": \"2017-09-12T16:30:23\",\n  \"gold_parse\": \"Time[]{2017-09-24 18:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.09. 22.10\",\n  \"ref_time\": \"2017-09-13T08:14:25\",\n  \"gold_parse\": \"Time[]{2017-09-20 22:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.11.2017 14:21 - 15:33 Uhr\",\n  \"ref_time\": \"2017-11-29T09:24:01\",\n  \"gold_parse\": \"Interval[]{2017-11-30 14:21 (X/X) - 2017-11-30 15:33 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday 25th July Early morning\",\n  \"ref_time\": \"2017-07-17T12:58:49\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mi 24.1.18 um 9h\",\n  \"ref_time\": \"2017-11-27T11:02:27\",\n  \"gold_parse\": \"Time[]{2018-01-24 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.11.2017 ab 17:30 Uhr\",\n  \"ref_time\": \"2017-09-28T10:04:54\",\n  \"gold_parse\": \"Interval[]{2017-11-12 17:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 18:36\",\n  \"ref_time\": \"2017-07-11T15:37:39\",\n  \"gold_parse\": \"Time[]{2017-07-12 18:36 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr. 15.09.2017 - 6:00 Uhr\",\n  \"ref_time\": \"2017-09-12T07:07:42\",\n  \"gold_parse\": \"Time[]{2017-09-15 06:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"donnerstag\",\n  \"ref_time\": \"2017-10-05T07:52:16\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.11.2017 nachm./abends\",\n  \"ref_time\": \"2017-10-16T13:35:53\",\n  \"gold_parse\": \"Interval[]{2017-11-26 X:X (X/afternoon) - 2017-11-26 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.06..2017 abends\",\n  \"ref_time\": \"2017-05-22T06:35:25\",\n  \"gold_parse\": \"Time[]{2017-06-06 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 22.09.2017 um 15:00 Uhr bis 24.09.2017 18:00 Uhr\",\n  \"ref_time\": \"2017-09-19T07:35:05\",\n  \"gold_parse\": \"Interval[]{2017-09-22 15:00 (X/X) - 2017-09-24 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.10. abends\",\n  \"ref_time\": \"2017-08-30T14:05:37\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.12.2017\",\n  \"ref_time\": \"2017-11-14T09:20:09\",\n  \"gold_parse\": \"Time[]{2017-12-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 20.07.2017\",\n  \"ref_time\": \"2017-07-14T08:17:09\",\n  \"gold_parse\": \"Time[]{2017-07-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.11.17\",\n  \"ref_time\": \"2017-10-25T08:54:00\",\n  \"gold_parse\": \"Time[]{2017-11-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 24.09. Abends\",\n  \"ref_time\": \"2017-09-19T08:29:40\",\n  \"gold_parse\": \"Time[]{2017-09-24 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.08. gegen 11.00 Uhr\",\n  \"ref_time\": \"2017-08-01T12:37:30\",\n  \"gold_parse\": \"Time[]{2017-08-05 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.2017\",\n  \"ref_time\": \"2017-09-25T13:40:20\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 27.09. 07:10 Uhr - 10:55 Uhr\",\n  \"ref_time\": \"2017-09-21T09:42:34\",\n  \"gold_parse\": \"Interval[]{2017-09-27 07:10 (X/X) - 2017-09-27 10:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11 October between 2 and 4pm\",\n  \"ref_time\": \"2017-10-03T20:24:48\",\n  \"gold_parse\": \"Interval[]{2017-10-11 14:00 (X/X) - 2017-10-11 16:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"12.10\",\n  \"ref_time\": \"2017-10-11T08:11:02\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.11.2017 ab 18:30 Uhr\",\n  \"ref_time\": \"2017-09-28T10:18:18\",\n  \"gold_parse\": \"Interval[]{2017-11-14 18:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11.\",\n  \"ref_time\": \"2017-11-02T16:54:27\",\n  \"gold_parse\": \"Time[]{2017-11-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday the 30 of Nov. early\",\n  \"ref_time\": \"2017-09-22T12:12:02\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"08.12. nachmittags\",\n  \"ref_time\": \"2017-11-14T08:52:18\",\n  \"gold_parse\": \"Time[]{2017-12-08 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.-10.02.2018\",\n  \"ref_time\": \"2017-09-26T14:05:17\",\n  \"gold_parse\": \"Interval[]{2018-02-05 X:X (X/X) - 2018-02-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mittwoch 26.07.17 früh Morgens\",\n  \"ref_time\": \"2017-07-20T14:46:36\",\n  \"gold_parse\": \"Time[]{2017-07-26 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di., 10.10.2017, 08:30\",\n  \"ref_time\": \"2017-08-21T12:26:51\",\n  \"gold_parse\": \"Time[]{2017-10-10 08:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 28.09.2017 07:50 Uhr\",\n  \"ref_time\": \"2017-09-13T13:34:19\",\n  \"gold_parse\": \"Time[]{2017-09-28 07:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 16.10.2017 ca. 13:00 Uhr\",\n  \"ref_time\": \"2017-10-12T15:23:59\",\n  \"gold_parse\": \"Time[]{2017-10-16 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 10.07. spätestens um 07:30\",\n  \"ref_time\": \"2017-05-30T12:02:43\",\n  \"gold_parse\": \"Interval[]{None - 2017-07-10 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2 nights\",\n  \"ref_time\": \"2017-07-17T12:57:50\",\n  \"gold_parse\": \"Duration[]{2 nights}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 26.10.-27.10.2017\",\n  \"ref_time\": \"2017-10-16T22:15:45\",\n  \"gold_parse\": \"Interval[]{2017-10-26 X:X (X/X) - 2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.07.2017 Ab 15:00 Uhr\",\n  \"ref_time\": \"2017-06-19T11:51:01\",\n  \"gold_parse\": \"Interval[]{2017-07-29 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montagnachmittag des 12.6.\",\n  \"ref_time\": \"2017-06-08T17:47:00\",\n  \"gold_parse\": \"Time[]{2017-06-12 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute bis 14:00 Uhr\",\n  \"ref_time\": \"2017-09-07T07:10:59\",\n  \"gold_parse\": \"Interval[]{2017-09-07 08:00 (X/X) - 2017-09-07 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 30.11.17\",\n  \"ref_time\": \"2017-11-24T14:37:54\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17. - 18.09.2017\",\n  \"ref_time\": \"2017-09-06T08:57:04\",\n  \"gold_parse\": \"Interval[]{2017-09-17 X:X (X/X) - 2017-09-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 19th November at 11:20am\",\n  \"ref_time\": \"2017-11-15T08:28:36\",\n  \"gold_parse\": \"Time[]{2017-11-19 11:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 3.11.17\",\n  \"ref_time\": \"2017-11-01T15:42:52\",\n  \"gold_parse\": \"Time[]{2017-11-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.07.2017 20:25 Uhr\",\n  \"ref_time\": \"2017-07-06T14:11:16\",\n  \"gold_parse\": \"Time[]{2017-07-26 20:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon Dec 4 08.40\",\n  \"ref_time\": \"2017-10-31T13:27:55\",\n  \"gold_parse\": \"Time[]{2017-12-04 08:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Am 30.08. 08:06 Uhr\",\n  \"ref_time\": \"2017-08-28T16:01:50\",\n  \"gold_parse\": \"Time[]{2017-08-30 08:06 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag, den 17.11.17 ab 17:00\",\n  \"ref_time\": \"2017-10-26T08:08:41\",\n  \"gold_parse\": \"Interval[]{2017-11-17 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.11\",\n  \"ref_time\": \"2017-10-16T16:03:06\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Sunday the 1st of October\",\n  \"ref_time\": \"2017-07-27T15:42:42\",\n  \"gold_parse\": \"Time[]{2017-10-01 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mi, 07.06.17 20:36\",\n  \"ref_time\": \"2017-06-06T08:27:33\",\n  \"gold_parse\": \"Time[]{2017-06-07 20:36 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11. 12:00 Uhr\",\n  \"ref_time\": \"2017-11-23T13:10:33\",\n  \"gold_parse\": \"Time[]{2017-11-27 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.06.2017 06:00 Uhr bis zum 15.06.2017 06:00\",\n  \"ref_time\": \"2017-06-12T09:00:06\",\n  \"gold_parse\": \"Interval[]{2017-06-14 06:00 (X/X) - 2017-06-15 06:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.11.2017 17:30 Uhr\",\n  \"ref_time\": \"2017-11-24T08:52:20\",\n  \"gold_parse\": \"Time[]{2017-11-28 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 20.11. 8:30\",\n  \"ref_time\": \"2017-11-07T09:45:03\",\n  \"gold_parse\": \"Time[]{2017-11-20 08:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 19.10.2017 früh\",\n  \"ref_time\": \"2017-10-11T12:18:39\",\n  \"gold_parse\": \"Time[]{2017-10-19 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.12.2017\",\n  \"ref_time\": \"2017-11-27T14:52:20\",\n  \"gold_parse\": \"Time[]{2017-12-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.11.17 6:38 Uhr\",\n  \"ref_time\": \"2017-11-24T09:54:22\",\n  \"gold_parse\": \"Time[]{2017-11-29 06:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi, 08.11.2017 10:06\",\n  \"ref_time\": \"2017-10-26T05:55:16\",\n  \"gold_parse\": \"Time[]{2017-11-08 10:06 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09 21:55 - 23:05\",\n  \"ref_time\": \"2017-08-03T14:55:23\",\n  \"gold_parse\": \"Interval[]{2017-09-05 21:55 (X/X) - 2017-09-05 23:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"on Nov 2nd morning\",\n  \"ref_time\": \"2017-10-24T12:08:03\",\n  \"gold_parse\": \"Time[]{2017-11-02 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"30.05.2017 12:05\",\n  \"ref_time\": \"2017-05-12T11:36:20\",\n  \"gold_parse\": \"Time[]{2017-05-30 12:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, den 12.08.2017 gegen 7:25 Uhr\",\n  \"ref_time\": \"2017-09-06T13:42:37\",\n  \"gold_parse\": \"Time[]{2017-08-12 07:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 06. - 07.12.\",\n  \"ref_time\": \"2017-08-23T12:27:34\",\n  \"gold_parse\": \"Interval[]{2017-12-06 X:X (X/X) - 2017-12-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.10., bis 12.00 h\",\n  \"ref_time\": \"2017-10-02T11:42:50\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-12 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21:30 Uhr\",\n  \"ref_time\": \"2017-10-02T11:09:18\",\n  \"gold_parse\": \"Time[]{2017-10-25 21:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.10. um 18.30 Uhr\",\n  \"ref_time\": \"2017-09-13T18:01:01\",\n  \"gold_parse\": \"Time[]{2017-10-13 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.12. bis zum 13.12.2017\",\n  \"ref_time\": \"2017-10-30T14:48:34\",\n  \"gold_parse\": \"Interval[]{2017-12-12 X:X (X/X) - 2017-12-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.12.17 ab 21 Uhr\",\n  \"ref_time\": \"2017-11-20T10:59:50\",\n  \"gold_parse\": \"Interval[]{2017-12-02 21:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.6. Abends\",\n  \"ref_time\": \"2017-06-02T10:24:49\",\n  \"gold_parse\": \"Time[]{2017-06-13 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02 AUG nachmittags\",\n  \"ref_time\": \"2017-07-03T12:15:22\",\n  \"gold_parse\": \"Time[]{2017-08-02 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.05.2017 früh\",\n  \"ref_time\": \"2017-05-16T05:42:09\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag nächste Woche\",\n  \"ref_time\": \"2017-11-10T09:19:56\",\n  \"gold_parse\": \"Time[]{2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday 20/10/2017\",\n  \"ref_time\": \"2017-09-11T11:23:21\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"01.02.18\",\n  \"ref_time\": \"2017-11-15T10:27:09\",\n  \"gold_parse\": \"Time[]{2018-02-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 5.07. gegen 20 Uhr\",\n  \"ref_time\": \"2017-06-28T16:53:53\",\n  \"gold_parse\": \"Time[]{2017-07-05 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.2017\",\n  \"ref_time\": \"2017-05-23T11:30:35\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.11\",\n  \"ref_time\": \"2017-10-31T06:52:13\",\n  \"gold_parse\": \"Time[]{2017-11-01 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.05. - 17.05.18\",\n  \"ref_time\": \"2017-11-14T14:09:47\",\n  \"gold_parse\": \"Interval[]{2018-05-15 X:X (X/X) - 2018-05-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30th July\",\n  \"ref_time\": \"2017-07-19T07:19:29\",\n  \"gold_parse\": \"Time[]{2017-07-30 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Dienstag 15. August 2017 7:34 Uhr\",\n  \"ref_time\": \"2017-08-14T13:16:54\",\n  \"gold_parse\": \"Time[]{2017-08-15 07:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26/07 2017 abends\",\n  \"ref_time\": \"2017-06-12T07:33:11\",\n  \"gold_parse\": \"Time[]{2017-07-26 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.11.2017 frühestens gegen 17.00 h\",\n  \"ref_time\": \"2017-11-21T08:00:55\",\n  \"gold_parse\": \"Interval[]{2017-11-28 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Sonntag, 29.7.\",\n  \"ref_time\": \"2017-07-19T11:33:57\",\n  \"gold_parse\": \"Time[]{2017-07-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04.10. - 06.10.2017\",\n  \"ref_time\": \"2017-08-30T09:09:28\",\n  \"gold_parse\": \"Interval[]{2017-10-04 X:X (X/X) - 2017-10-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04.07.\",\n  \"ref_time\": \"2017-05-31T12:09:33\",\n  \"gold_parse\": \"Time[]{2017-07-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"nächsten Montag um 14 Uhr\",\n  \"ref_time\": \"2017-11-10T13:17:54\",\n  \"gold_parse\": \"Time[]{2017-11-13 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.06.2017\",\n  \"ref_time\": \"2017-06-09T09:40:55\",\n  \"gold_parse\": \"Time[]{2017-06-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.9. mittags\",\n  \"ref_time\": \"2017-08-23T09:40:37\",\n  \"gold_parse\": \"Time[]{2017-09-28 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"ab 18Uhr am 10.10\",\n  \"ref_time\": \"2017-10-02T08:42:52\",\n  \"gold_parse\": \"Interval[]{2017-10-10 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-10-16T12:40:25\",\n  \"gold_parse\": \"Time[]{2017-10-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Dienstag, 28.11.2017 20:00\",\n  \"ref_time\": \"2017-11-21T07:44:53\",\n  \"gold_parse\": \"Time[]{2017-11-28 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 06.10. 08:05 Uhr\",\n  \"ref_time\": \"2017-08-16T10:17:35\",\n  \"gold_parse\": \"Time[]{2017-10-06 08:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 14.11. auf den 15.11.\",\n  \"ref_time\": \"2017-10-16T11:21:50\",\n  \"gold_parse\": \"Interval[]{2017-11-14 X:X (X/X) - 2017-11-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.07.2017 um 09:30\",\n  \"ref_time\": \"2017-06-14T07:30:41\",\n  \"gold_parse\": \"Time[]{2017-07-05 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag, 18.08. 16:39\",\n  \"ref_time\": \"2017-08-15T12:11:03\",\n  \"gold_parse\": \"Time[]{2017-08-18 16:39 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.09.2017 after 19:00\",\n  \"ref_time\": \"2017-05-31T14:27:42\",\n  \"gold_parse\": \"Interval[]{2017-09-14 19:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 26.09 (späten Nachmittag/Abend\",\n  \"ref_time\": \"2017-08-29T14:08:14\",\n  \"gold_parse\": \"Interval[]{2017-09-26 X:X (X/lateafternoon) - 2017-09-26 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.08-25.08\",\n  \"ref_time\": \"2017-08-14T13:14:54\",\n  \"gold_parse\": \"Interval[]{2017-08-23 X:X (X/X) - 2017-08-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.12.2017 spätestens 10:00 Uhr\",\n  \"ref_time\": \"2017-11-21T15:08:19\",\n  \"gold_parse\": \"Interval[]{None - 2017-12-01 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.06.2017 vormittags\",\n  \"ref_time\": \"2017-05-17T08:28:04\",\n  \"gold_parse\": \"Time[]{2017-06-30 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08.17 nachmittags\",\n  \"ref_time\": \"2017-08-04T12:23:27\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09.\",\n  \"ref_time\": \"2017-08-21T17:08:39\",\n  \"gold_parse\": \"Time[]{2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-11-21T13:56:19\",\n  \"gold_parse\": \"Time[]{2017-11-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.02.2018\",\n  \"ref_time\": \"2017-11-06T14:11:51\",\n  \"gold_parse\": \"Time[]{2018-02-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8.6.2017\",\n  \"ref_time\": \"2017-05-31T14:31:45\",\n  \"gold_parse\": \"Time[]{2017-06-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14 OCT 22:40\",\n  \"ref_time\": \"2017-10-05T07:42:13\",\n  \"gold_parse\": \"Time[]{2017-10-14 22:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Do., 28.09.2017 17:30\",\n  \"ref_time\": \"2017-09-07T12:32:56\",\n  \"gold_parse\": \"Time[]{2017-09-28 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi 17.1.18 um 9h\",\n  \"ref_time\": \"2017-11-27T11:02:27\",\n  \"gold_parse\": \"Time[]{2018-01-17 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag, 20.08. am Nachmittag\",\n  \"ref_time\": \"2017-08-02T14:40:35\",\n  \"gold_parse\": \"Time[]{2017-08-20 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.09.17 - 14.09.17 18:00 - 20:00\",\n  \"ref_time\": \"2017-08-11T11:31:27\",\n  \"gold_parse\": \"Interval[]{2017-09-14 18:00 (X/X) - 2017-09-14 20:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Vom 21.06-22.06\",\n  \"ref_time\": \"2017-06-21T13:23:57\",\n  \"gold_parse\": \"Interval[]{2017-06-21 X:X (X/X) - 2017-06-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 4.7. Ganz früh\",\n  \"ref_time\": \"2017-06-07T09:50:09\",\n  \"gold_parse\": \"Time[]{2017-07-04 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag\",\n  \"ref_time\": \"2017-11-05T14:30:26\",\n  \"gold_parse\": \"Time[]{2017-11-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"So, 17.09.2017 11:35\",\n  \"ref_time\": \"2017-08-23T12:14:24\",\n  \"gold_parse\": \"Time[]{2017-09-17 11:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag 03.10.17 ab 18 Uhr\",\n  \"ref_time\": \"2017-09-29T07:06:35\",\n  \"gold_parse\": \"Interval[]{2017-10-03 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.Sept evening\",\n  \"ref_time\": \"2017-09-26T09:41:34\",\n  \"gold_parse\": \"Time[]{2017-09-29 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.10 - 11.10\",\n  \"ref_time\": \"2017-09-15T15:05:57\",\n  \"gold_parse\": \"Interval[]{2017-10-10 X:X (X/X) - 2017-10-11 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20. Juni 2017 12:05h\",\n  \"ref_time\": \"2017-05-15T10:24:31\",\n  \"gold_parse\": \"Time[]{2017-06-20 12:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31 January 2017\",\n  \"ref_time\": \"2017-10-23T19:48:26\",\n  \"gold_parse\": \"Time[]{2017-01-31 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag 10.07 ab 12 Uhr\",\n  \"ref_time\": \"2017-07-04T13:43:18\",\n  \"gold_parse\": \"Interval[]{2017-07-10 12:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14 June Wed, 1920pm\",\n  \"ref_time\": \"2017-06-08T06:43:53\",\n  \"gold_parse\": \"Time[]{2017-06-14 19:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am nächsten Tag mittags\",\n  \"ref_time\": \"2017-09-11T16:22:10\",\n  \"gold_parse\": \"Time[]{2017-09-28 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 20.06., 14:50 Uhr\",\n  \"ref_time\": \"2017-05-24T07:09:41\",\n  \"gold_parse\": \"Time[]{2017-06-20 14:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017\",\n  \"ref_time\": \"2017-10-19T06:59:14\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.07. um ca. 6:50 Uhr\",\n  \"ref_time\": \"2017-06-26T13:00:13\",\n  \"gold_parse\": \"Time[]{2017-07-19 06:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 7. Juli nachmittags\",\n  \"ref_time\": \"2017-06-28T06:29:29\",\n  \"gold_parse\": \"Time[]{2017-07-07 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 22.11.2017 17:55 Uhr\",\n  \"ref_time\": \"2017-11-08T10:29:19\",\n  \"gold_parse\": \"Time[]{2017-11-22 17:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon, Jul 31 7:30 AM\",\n  \"ref_time\": \"2017-07-25T13:33:14\",\n  \"gold_parse\": \"Time[]{2017-07-31 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.06.2017 06:21\",\n  \"ref_time\": \"2017-06-13T07:21:35\",\n  \"gold_parse\": \"Time[]{2017-06-23 06:21 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15 NOV, 17:35\",\n  \"ref_time\": \"2017-11-14T04:09:13\",\n  \"gold_parse\": \"Time[]{2017-11-15 17:35 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.05-20.05\",\n  \"ref_time\": \"2017-05-10T09:50:33\",\n  \"gold_parse\": \"Interval[]{2017-05-16 X:X (X/X) - 2017-05-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.11.-17.11.\",\n  \"ref_time\": \"2017-11-07T08:11:48\",\n  \"gold_parse\": \"Interval[]{2017-11-15 X:X (X/X) - 2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Afternoon\",\n  \"ref_time\": \"2017-06-12T13:24:04\",\n  \"gold_parse\": \"Time[]{2017-06-15 X:X (X/afternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 12.06.2017 18:00 - 19:05\",\n  \"ref_time\": \"2017-06-08T11:07:05\",\n  \"gold_parse\": \"Interval[]{2017-06-12 18:00 (X/X) - 2017-06-12 19:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07:42\",\n  \"ref_time\": \"2017-07-05T13:14:16\",\n  \"gold_parse\": \"Time[]{2017-07-06 07:42 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.06.2017 ab 05:08 Uhr\",\n  \"ref_time\": \"2017-06-19T11:25:46\",\n  \"gold_parse\": \"Time[]{2017-06-21 05:08 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 09.-10.10.\",\n  \"ref_time\": \"2017-09-28T13:18:49\",\n  \"gold_parse\": \"Interval[]{2017-10-09 X:X (X/X) - 2017-10-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 22.05.17\",\n  \"ref_time\": \"2017-05-16T07:49:38\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.05.17 Abend\",\n  \"ref_time\": \"2017-05-12T13:00:59\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.2017 früher Flug\",\n  \"ref_time\": \"2017-10-24T11:23:09\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 10.7.2017 morgens\",\n  \"ref_time\": \"2017-07-03T18:14:27\",\n  \"gold_parse\": \"Time[]{2017-07-10 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi. 26.07.2017\",\n  \"ref_time\": \"2017-07-24T15:43:19\",\n  \"gold_parse\": \"Time[]{2017-07-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.9 nachmittags\",\n  \"ref_time\": \"2017-06-19T10:52:32\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06 Jun\",\n  \"ref_time\": \"2017-05-22T12:00:21\",\n  \"gold_parse\": \"Time[]{2017-06-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 26.10. - Vormittags\",\n  \"ref_time\": \"2017-10-16T10:35:58\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute eine Übernachtung\",\n  \"ref_time\": \"2017-09-05T12:57:24\",\n  \"gold_parse\": \"Interval[]{2017-09-05 X:X (X/X) - 2017-09-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 18. auf den 19.10.\",\n  \"ref_time\": \"2017-10-16T14:51:25\",\n  \"gold_parse\": \"Interval[]{2017-10-18 X:X (X/X) - 2017-10-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11. - 24.11.2017\",\n  \"ref_time\": \"2017-08-28T07:48:46\",\n  \"gold_parse\": \"Interval[]{2017-11-20 X:X (X/X) - 2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thu, Oct 26 9:05 AM - 10:50 AM\",\n  \"ref_time\": \"2017-10-23T08:26:47\",\n  \"gold_parse\": \"Interval[]{2017-10-26 09:05 (X/X) - 2017-10-26 10:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday, 15 September 2017 13:55\",\n  \"ref_time\": \"2017-09-04T06:55:16\",\n  \"gold_parse\": \"Time[]{2017-09-15 13:55 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"19.6.\",\n  \"ref_time\": \"2017-06-02T11:21:29\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19-20.11.17\",\n  \"ref_time\": \"2017-09-01T06:40:28\",\n  \"gold_parse\": \"Interval[]{2017-11-19 X:X (X/X) - 2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.12.2017\",\n  \"ref_time\": \"2017-11-20T19:46:29\",\n  \"gold_parse\": \"Time[]{2017-12-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.06.2017\",\n  \"ref_time\": \"2017-05-19T06:33:58\",\n  \"gold_parse\": \"Time[]{2017-06-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sun Nov 12\",\n  \"ref_time\": \"2017-10-23T11:30:25\",\n  \"gold_parse\": \"Time[]{2017-11-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mi, 08.11.2017 21:49\",\n  \"ref_time\": \"2017-11-07T16:36:59\",\n  \"gold_parse\": \"Time[]{2017-11-08 21:49 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstagabend spaeter\",\n  \"ref_time\": \"2017-09-05T07:16:26\",\n  \"gold_parse\": \"Time[]{2017-09-07 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 12/09 late evening the last flight\",\n  \"ref_time\": \"2017-08-24T08:17:14\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/last)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 12. auf den 13.12.2017\",\n  \"ref_time\": \"2017-11-23T14:28:19\",\n  \"gold_parse\": \"Interval[]{2017-12-12 X:X (X/X) - 2017-12-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11APR 0740 - 0910\",\n  \"ref_time\": \"2017-05-23T09:01:20\",\n  \"gold_parse\": \"Interval[]{2017-04-11 07:40 (X/X) - 2017-04-11 09:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch 06.09.2017\",\n  \"ref_time\": \"2017-08-28T11:33:16\",\n  \"gold_parse\": \"Time[]{2017-09-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 21 August\",\n  \"ref_time\": \"2017-08-11T14:32:00\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.10. um 07:00 Uhr\",\n  \"ref_time\": \"2017-10-05T08:01:19\",\n  \"gold_parse\": \"Time[]{2017-10-10 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"around 2pmTuesday\",\n  \"ref_time\": \"2017-08-29T20:39:57\",\n  \"gold_parse\": \"Time[]{2017-09-05 14:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.06. - 28.06.18\",\n  \"ref_time\": \"2017-11-14T14:09:47\",\n  \"gold_parse\": \"Interval[]{2018-06-26 X:X (X/X) - 2018-06-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9. Juni 2017 10 Uhr\",\n  \"ref_time\": \"2017-05-24T17:35:38\",\n  \"gold_parse\": \"Time[]{2017-06-09 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.6.\",\n  \"ref_time\": \"2017-05-29T08:50:04\",\n  \"gold_parse\": \"Time[]{2017-06-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25 SEP, 10:30\",\n  \"ref_time\": \"2017-09-19T09:55:48\",\n  \"gold_parse\": \"Time[]{2017-09-25 10:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag\",\n  \"ref_time\": \"2017-05-23T14:27:50\",\n  \"gold_parse\": \"Time[]{2017-05-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.7\",\n  \"ref_time\": \"2017-07-11T20:21:25\",\n  \"gold_parse\": \"Time[]{2017-07-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1845-1955\",\n  \"ref_time\": \"2017-09-25T08:17:32\",\n  \"gold_parse\": \"Interval[]{2017-09-29 18:45 (X/X) - 2017-09-29 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.09.\",\n  \"ref_time\": \"2017-09-08T08:51:32\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.8.17 früh\",\n  \"ref_time\": \"2017-07-25T07:38:50\",\n  \"gold_parse\": \"Time[]{2017-08-11 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.12.-06.12.2017\",\n  \"ref_time\": \"2017-11-29T11:28:43\",\n  \"gold_parse\": \"Interval[]{2017-12-05 X:X (X/X) - 2017-12-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon, Sep 18 3:40 AM+1 - 8:50 AM+1\",\n  \"ref_time\": \"2017-09-06T08:31:37\",\n  \"gold_parse\": \"Interval[]{2017-09-19 03:40 (X/X) - 2017-09-19 08:50 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.9. morgens gg 9\",\n  \"ref_time\": \"2017-08-23T09:40:37\",\n  \"gold_parse\": \"Time[]{2017-09-27 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.09.2017\",\n  \"ref_time\": \"2017-09-19T05:49:05\",\n  \"gold_parse\": \"Time[]{2017-09-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.09.2017 - 14.09.2017\",\n  \"ref_time\": \"2017-05-31T14:27:42\",\n  \"gold_parse\": \"Interval[]{2017-09-12 X:X (X/X) - 2017-09-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"eine Übernachtung\",\n  \"ref_time\": \"2017-10-09T08:37:35\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10 November\",\n  \"ref_time\": \"2017-11-06T10:57:20\",\n  \"gold_parse\": \"Time[]{2017-11-10 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"05.11.2017 17:00 Uhr\",\n  \"ref_time\": \"2017-09-27T10:44:24\",\n  \"gold_parse\": \"Time[]{2017-11-05 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.11.2017 ca. ab 17:30Uhr\",\n  \"ref_time\": \"2017-10-19T15:05:52\",\n  \"gold_parse\": \"Interval[]{2017-11-07 17:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.10\",\n  \"ref_time\": \"2017-10-11T08:04:38\",\n  \"gold_parse\": \"Time[]{2017-10-19 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mon, Jul 3 6:10 PM - 7:55 PM\",\n  \"ref_time\": \"2017-06-27T15:40:38\",\n  \"gold_parse\": \"Interval[]{2017-07-03 18:10 (X/X) - 2017-07-03 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7.12.2017 um 19:05 Uhr\",\n  \"ref_time\": \"2017-08-23T07:19:50\",\n  \"gold_parse\": \"Time[]{2017-12-07 19:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 03.0 bis 9:45 Uhr\",\n  \"ref_time\": \"2017-06-30T17:50:42\",\n  \"gold_parse\": \"Interval[]{None - 2017-07-03 09:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 2.08.2017\",\n  \"ref_time\": \"2017-07-28T06:04:29\",\n  \"gold_parse\": \"Time[]{2017-08-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.09.-07.09.2017 gegen 9:00 Uhr\",\n  \"ref_time\": \"2017-08-23T09:05:20\",\n  \"gold_parse\": \"Time[]{2017-09-06 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.08 Abendflug\",\n  \"ref_time\": \"2017-08-15T13:48:10\",\n  \"gold_parse\": \"Time[]{2017-08-22 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 27.06.2017 19:20\",\n  \"ref_time\": \"2017-05-31T08:15:55\",\n  \"gold_parse\": \"Time[]{2017-06-27 19:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.09.2017 8:25 Uhr\",\n  \"ref_time\": \"2017-08-17T14:45:38\",\n  \"gold_parse\": \"Time[]{2017-09-11 08:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.10.2017 19:00\",\n  \"ref_time\": \"2017-09-29T10:11:26\",\n  \"gold_parse\": \"Time[]{2017-10-12 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.10.2017 ca. 9.00\",\n  \"ref_time\": \"2017-08-07T07:58:46\",\n  \"gold_parse\": \"Time[]{2017-10-01 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.-06.07.2017\",\n  \"ref_time\": \"2017-06-13T14:09:33\",\n  \"gold_parse\": \"Interval[]{2017-07-02 X:X (X/X) - 2017-07-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 01.03.2018\",\n  \"ref_time\": \"2017-11-16T09:29:29\",\n  \"gold_parse\": \"Time[]{2018-03-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30 May 2305-0715+1\",\n  \"ref_time\": \"2017-05-23T16:47:40\",\n  \"gold_parse\": \"Interval[]{2017-05-30 23:05 (X/X) - 2017-05-31 07:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"06.11.2017 bis 08.11.2017\",\n  \"ref_time\": \"2017-11-02T07:52:31\",\n  \"gold_parse\": \"Interval[]{2017-11-06 X:X (X/X) - 2017-11-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.06.2017\",\n  \"ref_time\": \"2017-05-31T07:03:35\",\n  \"gold_parse\": \"Time[]{2017-06-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi. 14. Jun. 20:40\",\n  \"ref_time\": \"2017-05-31T09:50:43\",\n  \"gold_parse\": \"Time[]{2017-06-14 20:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 16.10. - 18.10.2017\",\n  \"ref_time\": \"2017-10-16T06:23:59\",\n  \"gold_parse\": \"Interval[]{2017-10-16 X:X (X/X) - 2017-10-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"spät am 02.11.2017\",\n  \"ref_time\": \"2017-10-26T17:35:19\",\n  \"gold_parse\": \"Time[]{2017-11-02 X:X (X/lateevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.10.2017 - 07:00 Uhr\",\n  \"ref_time\": \"2017-09-11T07:19:59\",\n  \"gold_parse\": \"Time[]{2017-10-16 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 24. - 26.09.\",\n  \"ref_time\": \"2017-09-14T08:48:55\",\n  \"gold_parse\": \"Interval[]{2017-09-24 X:X (X/X) - 2017-09-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 22.12.2017\",\n  \"ref_time\": \"2017-09-11T11:46:47\",\n  \"gold_parse\": \"Time[]{2017-12-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"kommenden Mittwoch den 02.August 2017 07:40\",\n  \"ref_time\": \"2017-07-25T15:21:27\",\n  \"gold_parse\": \"Time[]{2017-08-02 07:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on the 25th in the evening\",\n  \"ref_time\": \"2017-06-07T10:09:16\",\n  \"gold_parse\": \"Time[]{2017-06-25 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"02.09.17 früh\",\n  \"ref_time\": \"2017-08-02T06:34:31\",\n  \"gold_parse\": \"Time[]{2017-09-02 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.10.2017 12:25 Uhr\",\n  \"ref_time\": \"2017-09-29T10:29:37\",\n  \"gold_parse\": \"Time[]{2017-10-27 12:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.11.2017 12:45 - 13:35 Uhr\",\n  \"ref_time\": \"2017-10-17T08:22:14\",\n  \"gold_parse\": \"Interval[]{2017-11-08 12:45 (X/X) - 2017-11-08 13:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.11.2017\",\n  \"ref_time\": \"2017-11-08T08:54:17\",\n  \"gold_parse\": \"Time[]{2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.10.\",\n  \"ref_time\": \"2017-10-11T08:16:02\",\n  \"gold_parse\": \"Time[]{2017-10-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19th Jan. late\",\n  \"ref_time\": \"2017-11-24T10:43:42\",\n  \"gold_parse\": \"Time[]{2018-01-19 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Donnerstag gegen 21 Uhr\",\n  \"ref_time\": \"2017-09-18T07:48:21\",\n  \"gold_parse\": \"Time[]{2017-09-28 21:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.08.2017 14:55\",\n  \"ref_time\": \"2017-08-01T11:09:32\",\n  \"gold_parse\": \"Time[]{2017-08-08 14:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 19.09.17 nach 20 Uhr\",\n  \"ref_time\": \"2017-09-13T11:51:16\",\n  \"gold_parse\": \"Interval[]{2017-09-19 20:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.07.2017\",\n  \"ref_time\": \"2017-06-27T11:35:23\",\n  \"gold_parse\": \"Time[]{2017-07-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.10.2017\",\n  \"ref_time\": \"2017-09-28T09:12:13\",\n  \"gold_parse\": \"Time[]{2017-10-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 05.07.17 ca. 18:20\",\n  \"ref_time\": \"2017-06-29T10:17:25\",\n  \"gold_parse\": \"Time[]{2017-07-05 18:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag\",\n  \"ref_time\": \"2017-06-02T10:23:48\",\n  \"gold_parse\": \"Time[]{2017-06-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mitwoch 3 Januari 2017 15:55\",\n  \"ref_time\": \"2017-11-03T14:08:00\",\n  \"gold_parse\": \"Time[]{2018-01-03 15:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.10.2017 um 17:25h\",\n  \"ref_time\": \"2017-08-04T06:40:06\",\n  \"gold_parse\": \"Time[]{2017-10-05 17:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.10.2017\",\n  \"ref_time\": \"2017-10-18T14:58:09\",\n  \"gold_parse\": \"Time[]{2017-10-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, den 19.09.2017 abends\",\n  \"ref_time\": \"2017-09-13T07:26:35\",\n  \"gold_parse\": \"Time[]{2017-09-19 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 15.12.2017 ab 12:00 Uhr\",\n  \"ref_time\": \"2017-10-26T09:09:45\",\n  \"gold_parse\": \"Interval[]{2017-12-15 12:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"KW 45 Donnerstag, den 09.11.2017\",\n  \"ref_time\": \"2017-11-03T13:47:33\",\n  \"gold_parse\": \"Time[]{2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.-29.11\",\n  \"ref_time\": \"2017-11-27T07:36:18\",\n  \"gold_parse\": \"Interval[]{2017-11-28 X:X (X/X) - 2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7th of November, 2017\",\n  \"ref_time\": \"2017-10-29T15:56:00\",\n  \"gold_parse\": \"Time[]{2017-11-07 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.10.17\",\n  \"ref_time\": \"2017-09-20T08:40:18\",\n  \"gold_parse\": \"Time[]{2017-10-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag 29.09\",\n  \"ref_time\": \"2017-09-26T10:47:24\",\n  \"gold_parse\": \"Time[]{2017-09-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 30.05.\",\n  \"ref_time\": \"2017-05-16T08:08:46\",\n  \"gold_parse\": \"Time[]{2017-05-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 20.11. 2017\",\n  \"ref_time\": \"2017-11-16T17:07:22\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"abends ab 18 Uhr\",\n  \"ref_time\": \"2017-11-01T13:40:52\",\n  \"gold_parse\": \"Interval[]{2017-12-01 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2. August 16.45\",\n  \"ref_time\": \"2017-07-10T10:57:08\",\n  \"gold_parse\": \"Time[]{2017-08-02 16:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.6 gegen 19:30\",\n  \"ref_time\": \"2017-06-20T09:12:42\",\n  \"gold_parse\": \"Time[]{2017-06-23 19:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.10.17 ab 16:30\",\n  \"ref_time\": \"2017-10-09T09:34:19\",\n  \"gold_parse\": \"Interval[]{2017-10-11 16:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag morgen\",\n  \"ref_time\": \"2017-07-20T14:53:09\",\n  \"gold_parse\": \"Time[]{2017-07-24 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday 25th October\",\n  \"ref_time\": \"2017-07-28T09:21:51\",\n  \"gold_parse\": \"Time[]{2017-10-25 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18.05.17 15:28\",\n  \"ref_time\": \"2017-05-10T15:57:17\",\n  \"gold_parse\": \"Time[]{2017-05-18 15:28 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.-07.12.\",\n  \"ref_time\": \"2017-11-08T10:47:33\",\n  \"gold_parse\": \"Interval[]{2017-12-05 X:X (X/X) - 2017-12-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19/09 at 9:15 PM\",\n  \"ref_time\": \"2017-09-12T08:07:41\",\n  \"gold_parse\": \"Time[]{2017-09-19 21:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11:30 Di. 12 Sep 2017\",\n  \"ref_time\": \"2017-08-11T13:10:02\",\n  \"gold_parse\": \"Time[]{2017-09-12 11:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.6. bis 10:30h\",\n  \"ref_time\": \"2017-06-12T10:00:06\",\n  \"gold_parse\": \"Interval[]{None - 2017-06-27 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.10.17 ab 14:00 Uhr\",\n  \"ref_time\": \"2017-09-25T08:23:35\",\n  \"gold_parse\": \"Interval[]{2017-10-13 14:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.5. morgens\",\n  \"ref_time\": \"2017-05-16T15:27:01\",\n  \"gold_parse\": \"Time[]{2017-05-24 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.11.\",\n  \"ref_time\": \"2017-10-16T15:02:31\",\n  \"gold_parse\": \"Time[]{2017-11-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.07.2017\",\n  \"ref_time\": \"2017-06-27T16:00:05\",\n  \"gold_parse\": \"Time[]{2017-07-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"3.9.\",\n  \"ref_time\": \"2017-08-16T10:47:56\",\n  \"gold_parse\": \"Time[]{2017-09-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.09.2017\",\n  \"ref_time\": \"2017-07-28T12:01:47\",\n  \"gold_parse\": \"Time[]{2017-09-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"den 7.12. auf den 8.12.\",\n  \"ref_time\": \"2017-08-04T10:57:25\",\n  \"gold_parse\": \"Interval[]{2017-12-07 X:X (X/X) - 2017-12-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16 Oct\",\n  \"ref_time\": \"2017-10-11T08:49:17\",\n  \"gold_parse\": \"Time[]{2017-10-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24 Oct 0645-0750\",\n  \"ref_time\": \"2017-10-23T07:13:13\",\n  \"gold_parse\": \"Interval[]{2017-10-24 06:45 (X/X) - 2017-10-24 07:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.10.2017 gegen 13::00 Uhr\",\n  \"ref_time\": \"2017-09-12T09:33:02\",\n  \"gold_parse\": \"Time[]{2017-10-12 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-05-29T12:54:58\",\n  \"gold_parse\": \"Time[]{2017-05-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thu 22 Jun 14:55 - 16:20\",\n  \"ref_time\": \"2017-05-22T12:28:30\",\n  \"gold_parse\": \"Interval[]{2017-06-22 14:55 (X/X) - 2017-06-22 16:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.6 abends\",\n  \"ref_time\": \"2017-06-14T13:56:09\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mittwoch, 27.09. 06:30\",\n  \"ref_time\": \"2017-09-20T17:50:34\",\n  \"gold_parse\": \"Time[]{2017-09-27 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 8.11. gegen 18:00\",\n  \"ref_time\": \"2017-10-02T13:57:02\",\n  \"gold_parse\": \"Time[]{2017-11-08 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.07. bis 18.07.17\",\n  \"ref_time\": \"2017-07-11T09:36:59\",\n  \"gold_parse\": \"Interval[]{2017-07-17 X:X (X/X) - 2017-07-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.10.2017\",\n  \"ref_time\": \"2017-09-28T15:50:54\",\n  \"gold_parse\": \"Time[]{2017-10-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fri Sep 8th 7:00 PM\",\n  \"ref_time\": \"2017-08-29T08:43:49\",\n  \"gold_parse\": \"Time[]{2017-09-08 19:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"morgen um 06:40 Uhr\",\n  \"ref_time\": \"2017-08-21T13:32:28\",\n  \"gold_parse\": \"Time[]{2017-08-22 06:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.9. ca 7:30 Uhr\",\n  \"ref_time\": \"2017-07-11T11:06:57\",\n  \"gold_parse\": \"Time[]{2017-09-12 07:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.11.17\",\n  \"ref_time\": \"2017-10-17T15:22:29\",\n  \"gold_parse\": \"Time[]{2017-11-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.06.2017 abends\",\n  \"ref_time\": \"2017-06-06T05:21:44\",\n  \"gold_parse\": \"Time[]{2017-06-14 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 18.09 bis 19.09\",\n  \"ref_time\": \"2017-08-18T08:51:26\",\n  \"gold_parse\": \"Interval[]{2017-09-18 X:X (X/X) - 2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"ab 20:00 11.10\",\n  \"ref_time\": \"2017-07-13T14:33:12\",\n  \"gold_parse\": \"Interval[]{2017-10-11 20:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9 - 10 October\",\n  \"ref_time\": \"2017-10-03T20:24:48\",\n  \"gold_parse\": \"Interval[]{2017-10-09 X:X (X/X) - 2017-10-10 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 07. - 08.09.\",\n  \"ref_time\": \"2017-08-29T09:46:48\",\n  \"gold_parse\": \"Interval[]{2017-09-07 X:X (X/X) - 2017-09-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.10.2017 morgens\",\n  \"ref_time\": \"2017-09-29T15:06:51\",\n  \"gold_parse\": \"Time[]{2017-10-05 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13AUG 09:10\",\n  \"ref_time\": \"2017-05-19T08:51:30\",\n  \"gold_parse\": \"Time[]{2017-08-13 09:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27/08  1605-1800\",\n  \"ref_time\": \"2017-08-11T06:26:42\",\n  \"gold_parse\": \"Interval[]{2017-08-27 16:05 (X/X) - 2017-08-27 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Jan 1\",\n  \"ref_time\": \"2017-09-17T14:18:42\",\n  \"gold_parse\": \"Time[]{2018-01-01 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.05.2017 bis 19.05.2015\",\n  \"ref_time\": \"2017-05-11T09:39:18\",\n  \"gold_parse\": \"Interval[]{2017-05-15 X:X (X/X) - 2017-05-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute bis morgen\",\n  \"ref_time\": \"2017-07-18T14:22:33\",\n  \"gold_parse\": \"Interval[]{2017-07-18 X:X (X/X) - 2017-07-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.06.17 18:34\",\n  \"ref_time\": \"2017-06-27T08:35:36\",\n  \"gold_parse\": \"Time[]{2017-06-29 18:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Dienstag späten Abend\",\n  \"ref_time\": \"2017-06-09T13:36:53\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, den 11.07. etwa ab 6 Uhr morgens\",\n  \"ref_time\": \"2017-07-06T12:35:14\",\n  \"gold_parse\": \"Interval[]{2017-07-11 06:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi 13. Sep 09:30\",\n  \"ref_time\": \"2017-07-25T12:26:26\",\n  \"gold_parse\": \"Time[]{2017-09-13 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"wednesday in the morning\",\n  \"ref_time\": \"2017-05-11T10:03:19\",\n  \"gold_parse\": \"Time[]{2017-05-17 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"19.10 nach 19 Uhr\",\n  \"ref_time\": \"2017-10-16T16:38:50\",\n  \"gold_parse\": \"Interval[]{2017-10-19 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.07.2017 letzte\",\n  \"ref_time\": \"2017-06-19T11:51:01\",\n  \"gold_parse\": \"Time[]{2017-07-29 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 25.09.17 später Nachmittag\",\n  \"ref_time\": \"2017-08-08T09:45:24\",\n  \"gold_parse\": \"Time[]{2017-09-25 X:X (X/lateafternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.11.2017 10:00 Uhr\",\n  \"ref_time\": \"2017-10-09T10:26:55\",\n  \"gold_parse\": \"Time[]{2017-11-08 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.09. 06.45 Uhr\",\n  \"ref_time\": \"2017-08-31T10:49:15\",\n  \"gold_parse\": \"Time[]{2017-09-06 06:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 07.11.17 17:00 Uhr\",\n  \"ref_time\": \"2017-11-02T09:32:30\",\n  \"gold_parse\": \"Time[]{2017-11-07 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.2017\",\n  \"ref_time\": \"2017-10-26T07:49:15\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 29.5 am Abend\",\n  \"ref_time\": \"2017-05-24T14:06:33\",\n  \"gold_parse\": \"Time[]{2017-05-29 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Donnerstag, 23.11.2017 gegen 17:30 Uhr\",\n  \"ref_time\": \"2017-11-07T10:48:21\",\n  \"gold_parse\": \"Time[]{2017-11-23 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.06.17\",\n  \"ref_time\": \"2017-05-18T13:55:22\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.5. morgens\",\n  \"ref_time\": \"2017-05-15T06:09:26\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.11.17\",\n  \"ref_time\": \"2017-11-16T08:31:55\",\n  \"gold_parse\": \"Time[]{2017-11-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.11.2017 13:27 Uhr - 16:28 Uhr\",\n  \"ref_time\": \"2017-11-07T11:14:04\",\n  \"gold_parse\": \"Interval[]{2017-11-14 13:27 (X/X) - 2017-11-14 16:28 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute 15:49\",\n  \"ref_time\": \"2017-09-13T09:27:12\",\n  \"gold_parse\": \"Time[]{2017-09-13 15:49 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 22.9. vor 9.00\",\n  \"ref_time\": \"2017-09-13T07:01:18\",\n  \"gold_parse\": \"Interval[]{None - 2017-09-22 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 18:45 Uhr am 29.11.2017\",\n  \"ref_time\": \"2017-10-10T06:57:23\",\n  \"gold_parse\": \"Time[]{2017-11-29 18:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.08.2017\",\n  \"ref_time\": \"2017-08-16T08:08:38\",\n  \"gold_parse\": \"Time[]{2017-08-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi. 07.06.2017\",\n  \"ref_time\": \"2017-06-06T08:29:34\",\n  \"gold_parse\": \"Time[]{2017-06-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag den 18.05.2017 gegen 15 Uhr ein\",\n  \"ref_time\": \"2017-05-15T09:54:22\",\n  \"gold_parse\": \"Time[]{2017-05-18 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.08.2017\",\n  \"ref_time\": \"2017-07-25T07:04:12\",\n  \"gold_parse\": \"Time[]{2017-08-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from 16 to 17 November 2017\",\n  \"ref_time\": \"2017-10-25T12:56:44\",\n  \"gold_parse\": \"Interval[]{2017-11-16 X:X (X/X) - 2017-11-17 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 20.10 ziemlich früh\",\n  \"ref_time\": \"2017-09-20T18:30:53\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 17.11.2017\",\n  \"ref_time\": \"2017-11-02T08:25:23\",\n  \"gold_parse\": \"Time[]{2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 06.01.2017\",\n  \"ref_time\": \"2017-11-15T18:36:20\",\n  \"gold_parse\": \"Time[]{2018-01-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di. 30.05.2017\",\n  \"ref_time\": \"2017-05-30T08:13:00\",\n  \"gold_parse\": \"Time[]{2017-05-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.12.\",\n  \"ref_time\": \"2017-11-03T13:20:36\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.07.2017  09 00 Uhr\",\n  \"ref_time\": \"2017-07-04T13:28:12\",\n  \"gold_parse\": \"Time[]{2017-07-10 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.09. 19.00 Uhr\",\n  \"ref_time\": \"2017-09-14T11:32:57\",\n  \"gold_parse\": \"Time[]{2017-09-19 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.09.2017 8 Uhr\",\n  \"ref_time\": \"2017-09-05T11:05:18\",\n  \"gold_parse\": \"Time[]{2017-09-07 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21/09 2205-0455\",\n  \"ref_time\": \"2017-08-11T06:30:46\",\n  \"gold_parse\": \"Interval[]{2017-09-21 22:05 (X/X) - 2017-09-22 04:55 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"1 night\",\n  \"ref_time\": \"2017-07-21T05:22:51\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.08.2017 ab 19:00 Uhr\",\n  \"ref_time\": \"2017-07-28T07:51:09\",\n  \"gold_parse\": \"Interval[]{2017-08-10 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.09.2017\",\n  \"ref_time\": \"2017-07-26T12:25:43\",\n  \"gold_parse\": \"Time[]{2017-09-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1.7. - 30.9.\",\n  \"ref_time\": \"2017-06-17T21:13:11\",\n  \"gold_parse\": \"Interval[]{2017-07-01 X:X (X/X) - 2017-09-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8. September\",\n  \"ref_time\": \"2017-09-01T15:55:18\",\n  \"gold_parse\": \"Time[]{2017-09-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8 June lunchtime / in the early afternoon\",\n  \"ref_time\": \"2017-06-06T07:15:45\",\n  \"gold_parse\": \"Time[]{2017-06-08 X:X (X/earlyafternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"06.09.2016 - Nachmittags ab 16:00\",\n  \"ref_time\": \"2017-09-01T14:07:15\",\n  \"gold_parse\": \"Interval[]{2017-09-06 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1.12.\",\n  \"ref_time\": \"2017-11-14T11:22:58\",\n  \"gold_parse\": \"Time[]{2017-12-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.08.2017 18:00 Uhr\",\n  \"ref_time\": \"2017-08-01T07:34:55\",\n  \"gold_parse\": \"Time[]{2017-08-21 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 20.4.2018 am Nachmittag\",\n  \"ref_time\": \"2017-10-12T06:48:07\",\n  \"gold_parse\": \"Time[]{2018-04-20 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thurs 2 Nov 2015\",\n  \"ref_time\": \"2017-10-29T18:23:09\",\n  \"gold_parse\": \"Time[]{2017-11-02 20:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag 30.10. 07.00 Uhr\",\n  \"ref_time\": \"2017-10-27T10:40:51\",\n  \"gold_parse\": \"Time[]{2017-10-30 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.07. 13-14 Uhr\",\n  \"ref_time\": \"2017-07-03T14:36:52\",\n  \"gold_parse\": \"Interval[]{2017-07-15 13:00 (X/X) - 2017-07-15 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07.2017 um 20:40h\",\n  \"ref_time\": \"2017-06-12T16:20:28\",\n  \"gold_parse\": \"Time[]{2017-07-20 20:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 30. Juni 2017\",\n  \"ref_time\": \"2017-06-23T09:53:14\",\n  \"gold_parse\": \"Time[]{2017-06-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 20. - 21.09.2017\",\n  \"ref_time\": \"2017-09-18T12:29:32\",\n  \"gold_parse\": \"Interval[]{2017-09-20 X:X (X/X) - 2017-09-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"eine Übernachtung\",\n  \"ref_time\": \"2017-10-18T12:42:21\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.10.\",\n  \"ref_time\": \"2017-09-28T08:51:54\",\n  \"gold_parse\": \"Time[]{2017-10-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am Mittwoch, den 28.06.\",\n  \"ref_time\": \"2017-06-19T12:47:42\",\n  \"gold_parse\": \"Time[]{2017-06-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 4.11.2017 um 13:40\",\n  \"ref_time\": \"2017-10-20T11:57:45\",\n  \"gold_parse\": \"Time[]{2017-11-04 13:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.2017 16:45 - 17:50\",\n  \"ref_time\": \"2017-08-30T10:04:11\",\n  \"gold_parse\": \"Interval[]{2017-09-05 16:45 (X/X) - 2017-09-05 17:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10.17 spätestens 9:30 Uhr\",\n  \"ref_time\": \"2017-10-17T15:00:20\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-23 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, den 24. Oktober 17 spätestens 8:15\",\n  \"ref_time\": \"2017-10-18T12:25:12\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-24 08:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.08. ab 19:00 Uhr\",\n  \"ref_time\": \"2017-08-22T15:07:39\",\n  \"gold_parse\": \"Interval[]{2017-08-28 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 09.05.2018\",\n  \"ref_time\": \"2017-11-16T09:29:29\",\n  \"gold_parse\": \"Time[]{2018-05-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.17 morgens\",\n  \"ref_time\": \"2017-09-11T16:22:10\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 13.10. ab 19 Uhr\",\n  \"ref_time\": \"2017-09-25T12:07:09\",\n  \"gold_parse\": \"Interval[]{2017-10-13 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr 3.11. Ab 19.00\",\n  \"ref_time\": \"2017-09-22T00:14:16\",\n  \"gold_parse\": \"Interval[]{2017-11-03 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 07.11.2017 bis zum 09.11.2017\",\n  \"ref_time\": \"2017-11-07T13:29:57\",\n  \"gold_parse\": \"Interval[]{2017-11-07 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 12 october\",\n  \"ref_time\": \"2017-09-22T10:40:47\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"June 28 at 2305-0715\",\n  \"ref_time\": \"2017-06-13T12:19:37\",\n  \"gold_parse\": \"Interval[]{2017-06-28 23:05 (X/X) - 2017-06-29 07:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 05.07., 16:15 Uhr\",\n  \"ref_time\": \"2017-05-24T07:06:39\",\n  \"gold_parse\": \"Time[]{2017-07-05 16:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.09.2017 18:20 Uhr - 19:35 Uhr\",\n  \"ref_time\": \"2017-08-21T13:35:29\",\n  \"gold_parse\": \"Interval[]{2017-09-20 18:20 (X/X) - 2017-09-20 19:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07. 12:17\",\n  \"ref_time\": \"2017-07-19T07:56:31\",\n  \"gold_parse\": \"Time[]{2017-07-20 12:17 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 20.7. 19:25h\",\n  \"ref_time\": \"2017-07-11T16:24:32\",\n  \"gold_parse\": \"Time[]{2017-07-20 19:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 31.5. 17:05\",\n  \"ref_time\": \"2017-05-22T20:51:51\",\n  \"gold_parse\": \"Time[]{2017-05-31 17:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.2017 10:30 Uhr\",\n  \"ref_time\": \"2017-09-01T11:07:30\",\n  \"gold_parse\": \"Time[]{2017-09-05 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30th July 11:30\",\n  \"ref_time\": \"2017-07-21T06:33:53\",\n  \"gold_parse\": \"Time[]{2017-07-30 11:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.12.2017 um 19:05 Uhr\",\n  \"ref_time\": \"2017-08-23T07:19:50\",\n  \"gold_parse\": \"Time[]{2017-12-21 19:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.17 7:10 Uhr\",\n  \"ref_time\": \"2017-05-23T06:46:59\",\n  \"gold_parse\": \"Time[]{2017-05-31 07:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.11.2017 at around 12:30\",\n  \"ref_time\": \"2017-11-02T07:39:31\",\n  \"gold_parse\": \"Time[]{2017-11-10 12:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"31.5. ab ca. 18:00\",\n  \"ref_time\": \"2017-05-26T09:15:17\",\n  \"gold_parse\": \"Interval[]{2017-05-31 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 07.11.2017 bis zum 09.11.2017\",\n  \"ref_time\": \"2017-11-07T13:29:57\",\n  \"gold_parse\": \"Interval[]{2017-11-07 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 13/11 morgens\",\n  \"ref_time\": \"2017-11-06T14:09:35\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 15.-18.10.\",\n  \"ref_time\": \"2017-09-20T12:02:54\",\n  \"gold_parse\": \"Interval[]{2017-10-15 X:X (X/X) - 2017-10-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.9. in the evening\",\n  \"ref_time\": \"2017-09-01T10:41:16\",\n  \"gold_parse\": \"Time[]{2017-09-20 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Mittwoch, den 13.09. um 20:40\",\n  \"ref_time\": \"2017-08-25T07:23:18\",\n  \"gold_parse\": \"Time[]{2017-09-13 20:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29 syys 2017, 17:35\",\n  \"ref_time\": \"2017-09-10T15:57:30\",\n  \"gold_parse\": \"Time[]{2017-09-27 17:35 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"06. November 2017 vormittags\",\n  \"ref_time\": \"2017-10-24T12:48:58\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sunday 19th November\",\n  \"ref_time\": \"2017-11-13T11:23:47\",\n  \"gold_parse\": \"Time[]{2017-11-19 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"29.09. bis 03.10.2017\",\n  \"ref_time\": \"2017-08-23T04:55:47\",\n  \"gold_parse\": \"Interval[]{2017-09-29 X:X (X/X) - 2017-10-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 16.10.2017 ab 19 Uhr\",\n  \"ref_time\": \"2017-10-26T12:27:28\",\n  \"gold_parse\": \"Interval[]{2017-10-16 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"So-MO\",\n  \"ref_time\": \"2017-09-27T12:27:48\",\n  \"gold_parse\": \"Interval[]{2017-10-08 X:X (X/X) - 2017-10-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wed in the afternoon\",\n  \"ref_time\": \"2017-07-24T10:41:18\",\n  \"gold_parse\": \"Time[]{2017-07-26 X:X (X/afternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.10.17 - 16.10.17\",\n  \"ref_time\": \"2017-08-28T06:35:48\",\n  \"gold_parse\": \"Interval[]{2017-10-15 X:X (X/X) - 2017-10-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.07. 2017 ab 17:00 Uhr\",\n  \"ref_time\": \"2017-06-13T12:03:32\",\n  \"gold_parse\": \"Interval[]{2017-07-05 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 12.-13.06.2017\",\n  \"ref_time\": \"2017-05-23T09:54:52\",\n  \"gold_parse\": \"Interval[]{2017-06-12 X:X (X/X) - 2017-06-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2.6. 13.00 Uhr\",\n  \"ref_time\": \"2017-06-01T11:48:35\",\n  \"gold_parse\": \"Time[]{2017-06-02 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 27.11.2017-29.11.2017\",\n  \"ref_time\": \"2017-11-13T15:40:01\",\n  \"gold_parse\": \"Interval[]{2017-11-27 X:X (X/X) - 2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.08.17 - 04.08.17\",\n  \"ref_time\": \"2017-07-31T05:58:04\",\n  \"gold_parse\": \"Interval[]{2017-08-01 X:X (X/X) - 2017-08-04 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18 Uhr\",\n  \"ref_time\": \"2017-10-10T11:55:24\",\n  \"gold_parse\": \"Time[]{2017-10-12 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.09.2017 abends\",\n  \"ref_time\": \"2017-09-01T07:07:48\",\n  \"gold_parse\": \"Time[]{2017-09-05 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mittwoch 28.6. 11:40h\",\n  \"ref_time\": \"2017-06-19T09:06:22\",\n  \"gold_parse\": \"Time[]{2017-06-28 11:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 25.09. - 27.09.2017\",\n  \"ref_time\": \"2017-07-05T08:48:39\",\n  \"gold_parse\": \"Interval[]{2017-09-25 X:X (X/X) - 2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29 Aug evening\",\n  \"ref_time\": \"2017-08-21T09:10:52\",\n  \"gold_parse\": \"Time[]{2017-08-29 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 18 September morgens früh\",\n  \"ref_time\": \"2017-08-21T10:09:57\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 18:00 Uhr\",\n  \"ref_time\": \"2017-09-05T09:48:10\",\n  \"gold_parse\": \"Interval[]{2017-09-11 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"ab 08:00 Uhr\",\n  \"ref_time\": \"2017-06-14T15:35:56\",\n  \"gold_parse\": \"Interval[]{2017-06-15 08:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag ca 17/18 Uhr\",\n  \"ref_time\": \"2017-08-05T16:03:54\",\n  \"gold_parse\": \"Interval[]{2017-08-25 17:00 (X/X) - 2017-08-25 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.08.2017 Nachmittags/abends\",\n  \"ref_time\": \"2017-07-13T14:19:32\",\n  \"gold_parse\": \"Interval[]{2017-08-22 X:X (X/afternoon) - 2017-08-22 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10. Oktober 18:05 h\",\n  \"ref_time\": \"2017-08-14T13:56:10\",\n  \"gold_parse\": \"Time[]{2017-10-10 18:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 12.10.2017 14:50\",\n  \"ref_time\": \"2017-07-27T13:59:20\",\n  \"gold_parse\": \"Time[]{2017-10-12 14:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25/09 0750-0930\",\n  \"ref_time\": \"2017-09-15T16:21:39\",\n  \"gold_parse\": \"Interval[]{2017-09-25 07:50 (X/X) - 2017-09-25 09:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"02.12. um 15:55h\",\n  \"ref_time\": \"2017-10-24T09:22:13\",\n  \"gold_parse\": \"Time[]{2017-12-02 15:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.-17.01.\",\n  \"ref_time\": \"2017-09-26T16:03:48\",\n  \"gold_parse\": \"Interval[]{2018-01-15 X:X (X/X) - 2018-01-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.6. - 15.6.\",\n  \"ref_time\": \"2017-05-23T14:47:58\",\n  \"gold_parse\": \"Interval[]{2017-06-13 X:X (X/X) - 2017-06-15 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"01.06.2017 09:00 Uhr\",\n  \"ref_time\": \"2017-05-31T08:07:20\",\n  \"gold_parse\": \"Time[]{2017-06-01 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12 October earliest flight\",\n  \"ref_time\": \"2017-10-03T20:24:48\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/first)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Montag, den 17.07. 09:50\",\n  \"ref_time\": \"2017-07-13T16:04:00\",\n  \"gold_parse\": \"Time[]{2017-07-17 09:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag, 3.11.2017 spätestens 11:30\",\n  \"ref_time\": \"2017-10-11T11:52:25\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-03 11:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"thursady 19th October in the evening\",\n  \"ref_time\": \"2017-09-28T09:09:13\",\n  \"gold_parse\": \"Time[]{2017-10-19 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.11. - 28.11.\",\n  \"ref_time\": \"2017-11-14T11:40:27\",\n  \"gold_parse\": \"Interval[]{2017-11-26 X:X (X/X) - 2017-11-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.11. um 18:00 Uhr\",\n  \"ref_time\": \"2017-11-08T14:01:10\",\n  \"gold_parse\": \"Time[]{2017-11-16 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12:20 Uhr\",\n  \"ref_time\": \"2017-07-26T13:12:26\",\n  \"gold_parse\": \"Time[]{2017-09-11 12:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9 loka 22:45\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-09 22:45 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"21.06.2017 10.15 Uhr\",\n  \"ref_time\": \"2017-06-12T09:48:00\",\n  \"gold_parse\": \"Time[]{2017-06-21 10:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.08.2017 bis 04.08.2017\",\n  \"ref_time\": \"2017-08-01T07:48:22\",\n  \"gold_parse\": \"Interval[]{2017-08-03 X:X (X/X) - 2017-08-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.11. 07:03\",\n  \"ref_time\": \"2017-11-24T10:11:32\",\n  \"gold_parse\": \"Time[]{2017-11-28 07:03 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 10.10 etwa 10:30am\",\n  \"ref_time\": \"2017-10-07T17:11:02\",\n  \"gold_parse\": \"Time[]{2017-10-10 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 17.8. 16:15\",\n  \"ref_time\": \"2017-08-10T09:11:54\",\n  \"gold_parse\": \"Time[]{2017-08-17 16:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.10.2017 12:40\",\n  \"ref_time\": \"2017-09-15T12:17:47\",\n  \"gold_parse\": \"Time[]{2017-10-18 12:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.12.2017\",\n  \"ref_time\": \"2017-11-20T07:46:09\",\n  \"gold_parse\": \"Time[]{2017-12-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18 Aug 1005\",\n  \"ref_time\": \"2017-07-20T15:58:53\",\n  \"gold_parse\": \"Time[]{2017-08-18 10:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 15.08. - 16.08.2017\",\n  \"ref_time\": \"2017-08-07T13:31:14\",\n  \"gold_parse\": \"Interval[]{2017-08-15 X:X (X/X) - 2017-08-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"eine Übernachtung\",\n  \"ref_time\": \"2017-10-24T12:40:56\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.11.2017 frühestens 18:00 Uhr\",\n  \"ref_time\": \"2017-10-27T08:25:15\",\n  \"gold_parse\": \"Interval[]{2017-11-21 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"So., 22. Okt. 15:20 - 16:15\",\n  \"ref_time\": \"2017-10-02T08:23:37\",\n  \"gold_parse\": \"Interval[]{2017-10-22 15:20 (X/X) - 2017-10-22 16:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 13. November früh\",\n  \"ref_time\": \"2017-11-01T13:10:03\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 16.10. - 18.10.2017\",\n  \"ref_time\": \"2017-10-16T06:23:59\",\n  \"gold_parse\": \"Interval[]{2017-10-16 X:X (X/X) - 2017-10-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.10-12.10.2017\",\n  \"ref_time\": \"2017-10-05T07:38:12\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 12.09.2017 between 5-9 am\",\n  \"ref_time\": \"2017-09-05T13:13:30\",\n  \"gold_parse\": \"Interval[]{2017-09-12 05:00 (X/X) - 2017-09-12 09:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"01.11. - 03.11.17\",\n  \"ref_time\": \"2017-09-26T13:47:08\",\n  \"gold_parse\": \"Interval[]{2017-11-01 X:X (X/X) - 2017-11-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.2017 20.45 Uhr\",\n  \"ref_time\": \"2017-08-17T07:34:24\",\n  \"gold_parse\": \"Time[]{2017-09-27 20:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 09. August 11.05 CET -12.05 UTC\",\n  \"ref_time\": \"2017-08-03T10:35:06\",\n  \"gold_parse\": \"Interval[]{2017-08-09 11:05 (X/X) - 2017-08-09 14:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag den 07.08.2017 07:55 - 08:50 Uhr\",\n  \"ref_time\": \"2017-08-03T11:10:20\",\n  \"gold_parse\": \"Interval[]{2017-08-07 07:55 (X/X) - 2017-08-07 08:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"June 29th at 7am\",\n  \"ref_time\": \"2017-06-20T08:23:36\",\n  \"gold_parse\": \"Time[]{2017-05-29 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, den 30.6. um 11:00 Uhr\",\n  \"ref_time\": \"2017-06-27T13:45:30\",\n  \"gold_parse\": \"Time[]{2017-06-30 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.12 gegen 9:00 Uhr\",\n  \"ref_time\": \"2017-11-21T09:54:14\",\n  \"gold_parse\": \"Time[]{2017-12-15 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.09. ca. 07:00\",\n  \"ref_time\": \"2017-08-29T09:11:27\",\n  \"gold_parse\": \"Time[]{2017-09-13 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.08.2017\",\n  \"ref_time\": \"2017-06-30T09:10:07\",\n  \"gold_parse\": \"Time[]{2017-08-10 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 14.06. spätesten\",\n  \"ref_time\": \"2017-06-09T13:46:57\",\n  \"gold_parse\": \"Time[]{2017-06-14 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 15. Juni Abends, ab 18h\",\n  \"ref_time\": \"2017-05-26T10:06:07\",\n  \"gold_parse\": \"Interval[]{2017-06-15 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Abend (ca 19 Uhr)  des 22.11.\",\n  \"ref_time\": \"2017-11-03T12:59:36\",\n  \"gold_parse\": \"Time[]{2017-11-22 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-06-01T07:12:37\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 27.10.2017\",\n  \"ref_time\": \"2017-10-20T08:36:16\",\n  \"gold_parse\": \"Time[]{2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.11. ab 17 Uhr\",\n  \"ref_time\": \"2017-11-02T11:31:36\",\n  \"gold_parse\": \"Interval[]{2017-11-22 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag 24.11. bis spätestens 13:00 Uhr\",\n  \"ref_time\": \"2017-11-10T08:28:48\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-24 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.5.2017 9:45\",\n  \"ref_time\": \"2017-05-17T15:59:31\",\n  \"gold_parse\": \"Time[]{2017-05-22 09:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 09.08.2017 Abends\",\n  \"ref_time\": \"2017-07-27T09:50:13\",\n  \"gold_parse\": \"Time[]{2017-08-09 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 22.01.2018 vormittags\",\n  \"ref_time\": \"2017-10-19T08:57:52\",\n  \"gold_parse\": \"Time[]{2018-01-22 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.7.\",\n  \"ref_time\": \"2017-06-08T13:28:04\",\n  \"gold_parse\": \"Time[]{2017-07-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Heute\",\n  \"ref_time\": \"2017-08-07T13:59:24\",\n  \"gold_parse\": \"Time[]{2017-08-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"July 11 at 14:10\",\n  \"ref_time\": \"2017-06-15T14:27:58\",\n  \"gold_parse\": \"Time[]{2017-07-11 14:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"November 8th 07:00-09:10\",\n  \"ref_time\": \"2017-11-02T07:10:05\",\n  \"gold_parse\": \"Interval[]{2017-11-08 07:00 (X/X) - 2017-11-08 09:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"28/10 morgens\",\n  \"ref_time\": \"2017-10-20T09:36:41\",\n  \"gold_parse\": \"Time[]{2017-10-28 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.11. 17:25Uhr\",\n  \"ref_time\": \"2017-10-26T11:36:59\",\n  \"gold_parse\": \"Time[]{2017-11-19 17:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"kommenden Montag ca. 17 Uhr\",\n  \"ref_time\": \"2017-06-16T11:26:18\",\n  \"gold_parse\": \"Time[]{2017-06-19 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.09.17 17:50\",\n  \"ref_time\": \"2017-08-21T09:02:48\",\n  \"gold_parse\": \"Time[]{2017-09-09 17:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr 18.8. 19:10\",\n  \"ref_time\": \"2017-08-14T17:37:59\",\n  \"gold_parse\": \"Time[]{2017-08-18 19:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.10 early in the morning (around 7-8\",\n  \"ref_time\": \"2017-10-03T10:34:40\",\n  \"gold_parse\": \"Interval[]{2017-10-05 07:00 (X/X) - 2017-10-05 08:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"19. Juli 8.39\",\n  \"ref_time\": \"2017-07-03T16:28:20\",\n  \"gold_parse\": \"Time[]{2017-07-19 08:39 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.09. 06.30 Uhr\",\n  \"ref_time\": \"2017-08-22T07:25:12\",\n  \"gold_parse\": \"Time[]{2017-09-26 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"abends\",\n  \"ref_time\": \"2017-07-14T03:15:20\",\n  \"gold_parse\": \"Time[]{2017-07-20 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.10.17 12 Uhr\",\n  \"ref_time\": \"2017-10-17T07:04:59\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-24 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 29.08. Abends\",\n  \"ref_time\": \"2017-08-22T15:07:39\",\n  \"gold_parse\": \"Time[]{2017-08-29 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 21.09.17 Zwischen 15 und 18 Uhr\",\n  \"ref_time\": \"2017-09-06T11:50:28\",\n  \"gold_parse\": \"Interval[]{2017-09-21 15:00 (X/X) - 2017-09-21 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27 July 1100\",\n  \"ref_time\": \"2017-07-20T15:50:49\",\n  \"gold_parse\": \"Time[]{2017-07-27 11:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.11. 20:45Uhr\",\n  \"ref_time\": \"2017-10-26T10:36:38\",\n  \"gold_parse\": \"Time[]{2017-11-16 20:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2 Nov 1815\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-02 18:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"22.11. ab 17 Uhr\",\n  \"ref_time\": \"2017-11-02T11:31:36\",\n  \"gold_parse\": \"Interval[]{2017-11-22 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17 August 13.00\",\n  \"ref_time\": \"2017-08-04T07:06:28\",\n  \"gold_parse\": \"Time[]{2017-08-17 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.11-26.11\",\n  \"ref_time\": \"2017-11-21T09:37:10\",\n  \"gold_parse\": \"Interval[]{2017-11-25 X:X (X/X) - 2017-11-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11/12 last flight\",\n  \"ref_time\": \"2017-11-28T08:47:28\",\n  \"gold_parse\": \"Time[]{2017-12-11 X:X (X/last)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"28.08.2017\",\n  \"ref_time\": \"2017-08-24T14:33:06\",\n  \"gold_parse\": \"Time[]{2017-08-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.09. morgens um 07:05\",\n  \"ref_time\": \"2017-07-13T11:05:22\",\n  \"gold_parse\": \"Time[]{2017-09-19 07:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27. Nov. 2017 6:50 Uhr\",\n  \"ref_time\": \"2017-08-08T14:12:29\",\n  \"gold_parse\": \"Time[]{2017-11-27 06:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.9.raus ab 16:30 Uhr\",\n  \"ref_time\": \"2017-09-05T14:08:01\",\n  \"gold_parse\": \"Interval[]{2017-09-19 16:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.12.17\",\n  \"ref_time\": \"2017-11-24T08:44:59\",\n  \"gold_parse\": \"Time[]{2017-12-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 30.10 14:52h bis 19:14h\",\n  \"ref_time\": \"2017-10-27T14:09:58\",\n  \"gold_parse\": \"Interval[]{2017-10-30 15:52 (X/X) - 2017-10-30 19:14 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from 15 to 16 November 2017\",\n  \"ref_time\": \"2017-10-25T12:56:44\",\n  \"gold_parse\": \"Interval[]{2017-11-15 X:X (X/X) - 2017-11-16 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Mo., 19.06.2017 16:55\",\n  \"ref_time\": \"2017-06-10T08:38:27\",\n  \"gold_parse\": \"Time[]{2017-06-19 16:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 12.07.2017 um 06:34 Uhr\",\n  \"ref_time\": \"2017-07-05T12:49:04\",\n  \"gold_parse\": \"Time[]{2017-07-12 06:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen ca. 19 Uhr\",\n  \"ref_time\": \"2017-09-26T08:26:07\",\n  \"gold_parse\": \"Time[]{2017-09-27 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.11.\",\n  \"ref_time\": \"2017-11-08T14:56:34\",\n  \"gold_parse\": \"Time[]{2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag (12.09.17) abends\",\n  \"ref_time\": \"2017-09-10T16:31:45\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8th of June around 7pm\",\n  \"ref_time\": \"2017-06-01T10:14:40\",\n  \"gold_parse\": \"Time[]{2017-06-08 19:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"1 day\",\n  \"ref_time\": \"2017-11-03T15:07:20\",\n  \"gold_parse\": \"Interval[]{2017-11-06 X:X (X/X) - 2017-11-07 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"09.11.17 20:53\",\n  \"ref_time\": \"2017-11-06T08:48:13\",\n  \"gold_parse\": \"Time[]{2017-11-09 20:53 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstagnachmittag\",\n  \"ref_time\": \"2017-07-14T03:15:20\",\n  \"gold_parse\": \"Time[]{2017-07-20 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Thursday 23rd November around 6.30 p.m\",\n  \"ref_time\": \"2017-10-18T15:34:42\",\n  \"gold_parse\": \"Time[]{2017-11-23 18:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11.08.17 freitags ca. 16-17 Uhr\",\n  \"ref_time\": \"2017-07-11T10:57:53\",\n  \"gold_parse\": \"Interval[]{2017-08-11 16:00 (X/X) - 2017-08-11 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday November 16th around 14:30-15:00\",\n  \"ref_time\": \"2017-11-14T10:50:19\",\n  \"gold_parse\": \"Interval[]{2017-11-16 14:30 (X/X) - 2017-11-16 15:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"06.07.2017 21:05 Uhr\",\n  \"ref_time\": \"2017-06-13T07:12:31\",\n  \"gold_parse\": \"Time[]{2017-07-06 21:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Wednesday 6th of September around 5\",\n  \"ref_time\": \"2017-08-21T08:57:09\",\n  \"gold_parse\": \"Time[]{2017-09-06 17:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 25.11.17 07:01\",\n  \"ref_time\": \"2017-11-21T08:49:04\",\n  \"gold_parse\": \"Time[]{2017-11-25 07:01 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"ab 22 Uhr\",\n  \"ref_time\": \"2017-06-29T06:46:27\",\n  \"gold_parse\": \"Interval[]{2017-07-04 22:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20:00 Uhr\",\n  \"ref_time\": \"2017-08-23T07:19:50\",\n  \"gold_parse\": \"Time[]{2017-11-16 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.08.2017 18:00 Uhr\",\n  \"ref_time\": \"2017-08-01T07:35:55\",\n  \"gold_parse\": \"Time[]{2017-08-21 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.2017 ab 18:00 Uhr\",\n  \"ref_time\": \"2017-05-16T08:27:18\",\n  \"gold_parse\": \"Interval[]{2017-05-31 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"erster Flug 29/05\",\n  \"ref_time\": \"2017-05-22T13:23:22\",\n  \"gold_parse\": \"Time[]{2017-05-29 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 14.10 14:55\",\n  \"ref_time\": \"2017-08-31T12:47:31\",\n  \"gold_parse\": \"Time[]{2017-10-14 14:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Fr\",\n  \"ref_time\": \"2017-07-03T14:26:05\",\n  \"gold_parse\": \"Time[]{2017-07-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 15.01.-16.01.2018\",\n  \"ref_time\": \"2017-11-29T11:19:40\",\n  \"gold_parse\": \"Interval[]{2018-01-15 X:X (X/X) - 2018-01-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09.2017 09:50 Uhr\",\n  \"ref_time\": \"2017-08-07T09:03:34\",\n  \"gold_parse\": \"Time[]{2017-09-19 09:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.06.2017\",\n  \"ref_time\": \"2017-05-16T10:59:39\",\n  \"gold_parse\": \"Time[]{2017-06-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 14/12/2017 6:00PM\",\n  \"ref_time\": \"2017-11-17T09:52:14\",\n  \"gold_parse\": \"Time[]{2017-12-14 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.11.2017 09:01 Uhr\",\n  \"ref_time\": \"2017-11-03T06:25:28\",\n  \"gold_parse\": \"Time[]{2017-11-10 09:01 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.11.2017 17:17 Uhr\",\n  \"ref_time\": \"2017-09-27T09:42:08\",\n  \"gold_parse\": \"Time[]{2017-11-07 17:17 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1 night\",\n  \"ref_time\": \"2017-10-24T12:30:29\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 14.06. spätesten\",\n  \"ref_time\": \"2017-06-09T13:46:57\",\n  \"gold_parse\": \"Time[]{2017-06-14 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28. Juli später nachmittags\",\n  \"ref_time\": \"2017-07-14T09:25:35\",\n  \"gold_parse\": \"Time[]{2017-07-28 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag 19th November 18h45\",\n  \"ref_time\": \"2017-11-01T14:08:02\",\n  \"gold_parse\": \"Time[]{2017-11-19 18:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 24.10.\",\n  \"ref_time\": \"2017-10-06T12:36:24\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Tuesday, June 20, after 13:00\",\n  \"ref_time\": \"2017-06-10T15:11:50\",\n  \"gold_parse\": \"Interval[]{2017-06-20 13:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"17.10.\",\n  \"ref_time\": \"2017-10-09T12:04:19\",\n  \"gold_parse\": \"Time[]{2017-10-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday 27th of October\",\n  \"ref_time\": \"2017-08-22T14:54:12\",\n  \"gold_parse\": \"Time[]{2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Von 18-20.05.\",\n  \"ref_time\": \"2017-05-10T14:33:46\",\n  \"gold_parse\": \"Interval[]{2017-05-18 X:X (X/X) - 2017-05-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.6 - 16.6\",\n  \"ref_time\": \"2017-05-28T20:40:14\",\n  \"gold_parse\": \"Interval[]{2017-06-12 X:X (X/X) - 2017-06-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 12. Juli 2017 gegen 18 Uhr\",\n  \"ref_time\": \"2017-07-06T12:49:21\",\n  \"gold_parse\": \"Time[]{2017-07-12 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.01.\",\n  \"ref_time\": \"2017-11-02T11:30:22\",\n  \"gold_parse\": \"Time[]{2018-01-02 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 10-11.09.17\",\n  \"ref_time\": \"2017-09-08T09:32:03\",\n  \"gold_parse\": \"Interval[]{2017-09-10 X:X (X/X) - 2017-09-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"today 12.10\",\n  \"ref_time\": \"2017-10-12T05:43:08\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.10.2017 bis 27.10.2017\",\n  \"ref_time\": \"2017-09-05T14:48:27\",\n  \"gold_parse\": \"Interval[]{2017-10-23 X:X (X/X) - 2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 3:30\",\n  \"ref_time\": \"2017-06-02T14:46:13\",\n  \"gold_parse\": \"Time[]{2017-06-29 03:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"From July 18th to July 21st\",\n  \"ref_time\": \"2017-07-14T10:43:29\",\n  \"gold_parse\": \"Interval[]{2017-07-18 X:X (X/X) - 2017-07-21 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"vom 12.9 abends bis 15.9 mittags\",\n  \"ref_time\": \"2017-07-18T13:51:21\",\n  \"gold_parse\": \"Interval[]{2017-09-12 X:X (X/evening) - 2017-09-15 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.5., 12:55\",\n  \"ref_time\": \"2017-05-19T16:25:14\",\n  \"gold_parse\": \"Time[]{2017-05-26 12:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"3.9.\",\n  \"ref_time\": \"2017-08-16T10:47:56\",\n  \"gold_parse\": \"Time[]{2017-09-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 29.10.\",\n  \"ref_time\": \"2017-10-24T13:44:54\",\n  \"gold_parse\": \"Time[]{2017-10-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.09.2017 18:00-19:00 Uhr\",\n  \"ref_time\": \"2017-08-24T06:48:30\",\n  \"gold_parse\": \"Interval[]{2017-09-13 18:00 (X/X) - 2017-09-13 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 3.7. 5:35 Uhr\",\n  \"ref_time\": \"2017-06-02T14:46:13\",\n  \"gold_parse\": \"Time[]{2017-07-03 05:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"between 21 and 22.11.2017\",\n  \"ref_time\": \"2017-11-14T10:45:44\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-22 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.09. ab 16:11\",\n  \"ref_time\": \"2017-09-15T14:19:25\",\n  \"gold_parse\": \"Time[]{2017-09-20 16:11 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19/06\",\n  \"ref_time\": \"2017-05-12T16:18:17\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05/09 - 08/09\",\n  \"ref_time\": \"2017-09-04T10:25:15\",\n  \"gold_parse\": \"Interval[]{2017-09-05 X:X (X/X) - 2017-09-08 X:X (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"08.07.2017\",\n  \"ref_time\": \"2017-07-04T11:32:47\",\n  \"gold_parse\": \"Time[]{2017-07-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17:30 Uhr 04.07.2017\",\n  \"ref_time\": \"2017-06-12T12:45:48\",\n  \"gold_parse\": \"Time[]{2017-07-04 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.2017 11:00 Uhr\",\n  \"ref_time\": \"2017-08-18T08:14:06\",\n  \"gold_parse\": \"Time[]{2017-09-05 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on sep 27\",\n  \"ref_time\": \"2017-09-20T10:54:19\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"August 18 5:35 pm\",\n  \"ref_time\": \"2017-07-04T08:58:19\",\n  \"gold_parse\": \"Time[]{2017-08-18 17:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"week 36\",\n  \"ref_time\": \"2017-08-15T17:43:29\",\n  \"gold_parse\": \"Interval[]{2017-09-04 X:X (X/X) - 2017-09-10 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mo 09.10.17 08:16\",\n  \"ref_time\": \"2017-09-29T08:46:55\",\n  \"gold_parse\": \"Time[]{2017-10-09 08:16 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.05.2017 bis 31.05.2017\",\n  \"ref_time\": \"2017-05-29T13:45:48\",\n  \"gold_parse\": \"Interval[]{2017-05-30 X:X (X/X) - 2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.11.2017 18:04\",\n  \"ref_time\": \"2017-11-27T07:44:54\",\n  \"gold_parse\": \"Time[]{2017-11-28 18:04 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.06. ab 13:00h\",\n  \"ref_time\": \"2017-05-24T06:11:08\",\n  \"gold_parse\": \"Interval[]{2017-06-02 13:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 25.09 bis 26.09.\",\n  \"ref_time\": \"2017-09-05T12:44:58\",\n  \"gold_parse\": \"Interval[]{2017-09-25 X:X (X/X) - 2017-09-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.2017 10:30 Uhr\",\n  \"ref_time\": \"2017-09-01T11:07:30\",\n  \"gold_parse\": \"Time[]{2017-09-05 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.12 - 17.12\",\n  \"ref_time\": \"2017-11-28T12:41:35\",\n  \"gold_parse\": \"Interval[]{2017-12-13 X:X (X/X) - 2017-12-17 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"29 SEP, 18:40\",\n  \"ref_time\": \"2017-09-10T15:57:30\",\n  \"gold_parse\": \"Time[]{2017-09-29 18:40 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"04.09.2017\",\n  \"ref_time\": \"2017-08-10T08:30:41\",\n  \"gold_parse\": \"Time[]{2017-09-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9 Nov 1815\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-09 18:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.09.\",\n  \"ref_time\": \"2017-09-25T12:21:15\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28.11. 17:03\",\n  \"ref_time\": \"2017-11-27T15:16:11\",\n  \"gold_parse\": \"Time[]{2017-11-28 17:03 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 11.07.2017 von 09:15h bis Mittwoch, den 12.07.2017 15:30h\",\n  \"ref_time\": \"2017-07-06T08:34:31\",\n  \"gold_parse\": \"Interval[]{2017-07-11 09:15 (X/X) - 2017-07-12 15:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1. Juni 14:15\",\n  \"ref_time\": \"2017-05-12T15:32:31\",\n  \"gold_parse\": \"Time[]{2017-06-01 14:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24. - 26.10.2017\",\n  \"ref_time\": \"2017-10-24T09:03:07\",\n  \"gold_parse\": \"Interval[]{2017-10-24 X:X (X/X) - 2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag den 03.08.2017 um 12:15\",\n  \"ref_time\": \"2017-07-31T09:12:08\",\n  \"gold_parse\": \"Time[]{2017-08-03 12:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 14-15-10\",\n  \"ref_time\": \"2017-10-13T06:20:34\",\n  \"gold_parse\": \"Interval[]{2017-10-14 X:X (X/X) - 2017-10-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Thursday the 30 of Nov. early\",\n  \"ref_time\": \"2017-09-22T12:12:02\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.10.2017 abends\",\n  \"ref_time\": \"2017-10-20T10:14:00\",\n  \"gold_parse\": \"Time[]{2017-10-25 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag, 16.10, bis Donnerstag 19.10\",\n  \"ref_time\": \"2017-10-13T10:05:05\",\n  \"gold_parse\": \"Interval[]{2017-10-16 X:X (X/X) - 2017-10-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 7.8. 8.30 - 9.30h\",\n  \"ref_time\": \"2017-07-26T10:22:54\",\n  \"gold_parse\": \"Interval[]{2017-08-07 08:30 (X/X) - 2017-08-07 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.06.17 am 01.07 morgens/vormittags\",\n  \"ref_time\": \"2017-05-19T08:35:23\",\n  \"gold_parse\": \"Time[]{2017-07-01 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 21.09.\",\n  \"ref_time\": \"2017-09-07T15:01:43\",\n  \"gold_parse\": \"Time[]{2017-09-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 8.11.2017 um 15:05h\",\n  \"ref_time\": \"2017-10-27T08:56:23\",\n  \"gold_parse\": \"Time[]{2017-11-08 15:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 21.06-22.06\",\n  \"ref_time\": \"2017-06-19T11:35:54\",\n  \"gold_parse\": \"Interval[]{2017-06-21 X:X (X/X) - 2017-06-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"2017-10-25 17:02\",\n  \"ref_time\": \"2017-10-23T08:57:24\",\n  \"gold_parse\": \"Time[]{2017-10-25 17:02 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Evening of 8 Nov\",\n  \"ref_time\": \"2017-08-25T09:43:25\",\n  \"gold_parse\": \"Time[]{2017-11-08 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.10.2017 8:20 - 9:30 Uhr\",\n  \"ref_time\": \"2017-10-06T12:13:14\",\n  \"gold_parse\": \"Interval[]{2017-10-10 08:20 (X/X) - 2017-10-10 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.9.2017 18:00\",\n  \"ref_time\": \"2017-09-25T06:14:47\",\n  \"gold_parse\": \"Time[]{2017-09-25 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Oct 31 1055-1215\",\n  \"ref_time\": \"2017-10-26T15:49:51\",\n  \"gold_parse\": \"Interval[]{2017-10-31 10:55 (X/X) - 2017-10-31 12:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"01.06.201\",\n  \"ref_time\": \"2017-05-23T11:18:33\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.01.2018 bis 03.02.3018\",\n  \"ref_time\": \"2017-10-23T04:05:01\",\n  \"gold_parse\": \"Interval[]{2018-01-30 X:X (X/X) - 2018-02-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag morgens\",\n  \"ref_time\": \"2017-08-24T07:40:51\",\n  \"gold_parse\": \"Time[]{2017-08-29 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am Donnerstag, den 20.07.2017 zwischen 08:00 Uhr und 09:00 Uhr\",\n  \"ref_time\": \"2017-07-17T10:34:32\",\n  \"gold_parse\": \"Interval[]{2017-07-20 08:00 (X/X) - 2017-07-20 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Samstag Nachmittag 27.5\",\n  \"ref_time\": \"2017-05-19T07:43:59\",\n  \"gold_parse\": \"Time[]{2017-05-27 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07.2017 22:10 Uhr\",\n  \"ref_time\": \"2017-06-23T12:40:07\",\n  \"gold_parse\": \"Time[]{2017-07-20 22:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr. 9.6.2017 um ca. 21.05 Uhr\",\n  \"ref_time\": \"2017-05-18T11:59:34\",\n  \"gold_parse\": \"Time[]{2017-06-09 21:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27/11 in the morning\",\n  \"ref_time\": \"2017-11-17T14:00:05\",\n  \"gold_parse\": \"Time[]{2017-11-27 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"05/09 - 08/09\",\n  \"ref_time\": \"2017-09-04T10:25:15\",\n  \"gold_parse\": \"Interval[]{2017-09-05 X:X (X/X) - 2017-09-08 X:X (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"Tue, Dec 12 7:20 AM - 8:25 AM\",\n  \"ref_time\": \"2017-11-28T14:09:36\",\n  \"gold_parse\": \"Interval[]{2017-12-12 07:20 (X/X) - 2017-12-12 08:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08/10/2017\",\n  \"ref_time\": \"2017-09-07T10:27:33\",\n  \"gold_parse\": \"Time[]{2017-10-08 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.7. 0900-1005\",\n  \"ref_time\": \"2017-07-06T07:43:34\",\n  \"gold_parse\": \"Interval[]{2017-07-14 09:00 (X/X) - 2017-07-14 10:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nachmittags / abends\",\n  \"ref_time\": \"2017-10-17T12:00:48\",\n  \"gold_parse\": \"Interval[]{2017-10-18 X:X (X/afternoon) - 2017-10-18 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.06.2017 ab 16:00 Uhr\",\n  \"ref_time\": \"2017-06-22T07:23:17\",\n  \"gold_parse\": \"Interval[]{2017-06-29 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 28. Juli 18:34\",\n  \"ref_time\": \"2017-08-02T11:02:57\",\n  \"gold_parse\": \"Time[]{2017-07-28 18:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen, 24.10.2017\",\n  \"ref_time\": \"2017-10-23T09:52:15\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.11.17\",\n  \"ref_time\": \"2017-11-07T15:16:11\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.08.2017 nachmittags\",\n  \"ref_time\": \"2017-07-26T08:36:02\",\n  \"gold_parse\": \"Time[]{2017-08-20 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-06-07T15:12:13\",\n  \"gold_parse\": \"Time[]{2017-06-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo. 07.08.2017\",\n  \"ref_time\": \"2017-08-04T07:11:28\",\n  \"gold_parse\": \"Time[]{2017-08-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.11.\",\n  \"ref_time\": \"2017-11-10T19:12:43\",\n  \"gold_parse\": \"Time[]{2017-11-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15/11 3pm\",\n  \"ref_time\": \"2017-10-16T12:42:25\",\n  \"gold_parse\": \"Time[]{2017-11-15 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.11.2017 Ab 17:00\",\n  \"ref_time\": \"2017-11-13T10:08:20\",\n  \"gold_parse\": \"Interval[]{2017-11-24 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.08.2017\",\n  \"ref_time\": \"2017-08-09T12:26:59\",\n  \"gold_parse\": \"Time[]{2017-08-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13:00 Uhr 28.11.2017\",\n  \"ref_time\": \"2017-11-26T19:22:42\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1.9. Mittag\",\n  \"ref_time\": \"2017-08-30T12:42:40\",\n  \"gold_parse\": \"Time[]{2017-09-01 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.8.17\",\n  \"ref_time\": \"2017-08-30T17:28:42\",\n  \"gold_parse\": \"Time[]{2017-08-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 04.06.2018\",\n  \"ref_time\": \"2017-11-16T09:29:29\",\n  \"gold_parse\": \"Time[]{2018-06-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.09.\",\n  \"ref_time\": \"2017-09-04T14:04:24\",\n  \"gold_parse\": \"Time[]{2017-09-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from 13 to 14 November 2017\",\n  \"ref_time\": \"2017-10-25T12:56:44\",\n  \"gold_parse\": \"Interval[]{2017-10-13 X:X (X/X) - 2017-10-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag, den 16.10.2017\",\n  \"ref_time\": \"2017-10-11T18:54:03\",\n  \"gold_parse\": \"Time[]{2017-10-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 17.6\",\n  \"ref_time\": \"2017-05-28T20:27:09\",\n  \"gold_parse\": \"Time[]{2017-06-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09.\",\n  \"ref_time\": \"2017-09-18T12:41:37\",\n  \"gold_parse\": \"Time[]{2017-09-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.11. ca. 10:30 Uhr\",\n  \"ref_time\": \"2017-10-30T14:14:24\",\n  \"gold_parse\": \"Time[]{2017-11-06 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17 of September on Sunday night\",\n  \"ref_time\": \"2017-09-07T13:55:55\",\n  \"gold_parse\": \"Time[]{2017-09-17 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"27.07.2017\",\n  \"ref_time\": \"2017-07-24T10:20:08\",\n  \"gold_parse\": \"Time[]{2017-07-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.2017, 15:00 Uhr, - 03.06.2017, 15:00 Uhr\",\n  \"ref_time\": \"2017-05-29T07:36:12\",\n  \"gold_parse\": \"Interval[]{2017-05-31 15:00 (X/X) - 2017-06-03 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.10.17\",\n  \"ref_time\": \"2017-09-28T12:32:26\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 28.7-29.07\",\n  \"ref_time\": \"2017-07-19T18:47:52\",\n  \"gold_parse\": \"Interval[]{2017-07-28 X:X (X/X) - 2017-07-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.9-27.09.2017\",\n  \"ref_time\": \"2017-09-18T12:46:43\",\n  \"gold_parse\": \"Interval[]{2017-09-26 X:X (X/X) - 2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.10.2017 ab MIttag\",\n  \"ref_time\": \"2017-08-17T13:29:22\",\n  \"gold_parse\": \"Time[]{2017-10-22 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"an 09.10. ab 13.10.2017\",\n  \"ref_time\": \"2017-10-05T13:14:20\",\n  \"gold_parse\": \"Interval[]{2017-10-09 X:X (X/X) - 2017-10-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.08.2017 06:50\",\n  \"ref_time\": \"2017-08-01T11:09:32\",\n  \"gold_parse\": \"Time[]{2017-08-08 06:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.05.\",\n  \"ref_time\": \"2017-05-18T14:05:26\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.11.2017\",\n  \"ref_time\": \"2017-11-08T11:02:56\",\n  \"gold_parse\": \"Time[]{2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.08.17\",\n  \"ref_time\": \"2017-08-01T12:54:37\",\n  \"gold_parse\": \"Time[]{2017-08-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.12. gegen 9.00 Uhr\",\n  \"ref_time\": \"2017-11-29T18:39:21\",\n  \"gold_parse\": \"Time[]{2017-12-18 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, 20.7. 19:55h\",\n  \"ref_time\": \"2017-07-11T16:24:32\",\n  \"gold_parse\": \"Time[]{2017-07-20 19:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.12.2017 11:15 - 12:15\",\n  \"ref_time\": \"2017-11-27T14:52:20\",\n  \"gold_parse\": \"Interval[]{2017-12-05 11:15 (X/X) - 2017-12-05 12:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.12 gegen 9:00 Uhr\",\n  \"ref_time\": \"2017-11-21T09:54:14\",\n  \"gold_parse\": \"Time[]{2017-12-15 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.6. late\",\n  \"ref_time\": \"2017-05-25T18:08:30\",\n  \"gold_parse\": \"Time[]{2017-06-06 X:X (X/latenight)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"4.10. 11:45\",\n  \"ref_time\": \"2017-09-25T14:20:43\",\n  \"gold_parse\": \"Time[]{2017-10-04 11:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.08 ab 16 Uhr\",\n  \"ref_time\": \"2017-08-03T11:43:00\",\n  \"gold_parse\": \"Interval[]{2017-08-10 16:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from 12 to 13 November 2017\",\n  \"ref_time\": \"2017-10-25T12:56:44\",\n  \"gold_parse\": \"Interval[]{2017-10-12 X:X (X/X) - 2017-10-13 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 7.12.2017 morgens\",\n  \"ref_time\": \"2017-10-04T08:12:42\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29. November 20:20\",\n  \"ref_time\": \"2017-11-22T07:06:12\",\n  \"gold_parse\": \"Time[]{2017-11-29 20:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.06.2017 17:30 Uhr\",\n  \"ref_time\": \"2017-06-12T11:06:22\",\n  \"gold_parse\": \"Time[]{2017-06-22 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24th October in the evening\",\n  \"ref_time\": \"2017-09-19T09:22:24\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"08.11.2017 morgens spätestens 8 Uhr\",\n  \"ref_time\": \"2017-10-23T10:11:24\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-08 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.05. - 24.05.\",\n  \"ref_time\": \"2017-05-17T11:01:25\",\n  \"gold_parse\": \"Interval[]{2017-05-23 X:X (X/X) - 2017-05-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30 May 2305-0715+1\",\n  \"ref_time\": \"2017-05-23T16:47:40\",\n  \"gold_parse\": \"Interval[]{2017-05-30 23:05 (X/X) - 2017-05-31 07:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"30.11. um 19:00h\",\n  \"ref_time\": \"2017-10-23T08:36:51\",\n  \"gold_parse\": \"Time[]{2017-11-30 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.09. 12:00\",\n  \"ref_time\": \"2017-08-03T15:42:56\",\n  \"gold_parse\": \"Time[]{2017-09-26 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 16/08 late afternoon\",\n  \"ref_time\": \"2017-08-08T16:10:02\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/lateafternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.09. 09:55 Uhr\",\n  \"ref_time\": \"2017-09-12T09:14:21\",\n  \"gold_parse\": \"Time[]{2017-09-16 09:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.11. gegen Abend\",\n  \"ref_time\": \"2017-09-18T22:28:35\",\n  \"gold_parse\": \"Time[]{2017-11-01 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04.10.2017 ab ca 15.00 Uhr - ca 18.00 Uhr\",\n  \"ref_time\": \"2017-10-04T06:28:15\",\n  \"gold_parse\": \"Interval[]{2017-10-04 15:00 (X/X) - 2017-10-04 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag 23.11, 20.27h\",\n  \"ref_time\": \"2017-11-21T10:38:19\",\n  \"gold_parse\": \"Time[]{2017-11-23 20:27 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1.1.1997\",\n  \"ref_time\": \"2017-08-04T15:22:08\",\n  \"gold_parse\": \"Time[]{1997-01-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Monday 20th November\",\n  \"ref_time\": \"2017-10-18T15:34:42\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mon, Sep 18 6:10 PM - 8:55 PM\",\n  \"ref_time\": \"2017-09-13T07:21:32\",\n  \"gold_parse\": \"Interval[]{2017-09-18 18:10 (X/X) - 2017-09-18 20:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.08.2017\",\n  \"ref_time\": \"2017-09-06T07:36:40\",\n  \"gold_parse\": \"Time[]{2017-08-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.09.17 - 14.09.17 14:00 - 16:00\",\n  \"ref_time\": \"2017-08-11T11:31:27\",\n  \"gold_parse\": \"Interval[]{2017-09-14 14:00 (X/X) - 2017-09-14 16:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"02.10.2017 17:30 Uhr\",\n  \"ref_time\": \"2017-09-27T09:13:32\",\n  \"gold_parse\": \"Time[]{2017-10-02 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.08.2017 Vormittags\",\n  \"ref_time\": \"2017-07-05T11:53:05\",\n  \"gold_parse\": \"Time[]{2017-08-05 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Jun 7 at 05.10am\",\n  \"ref_time\": \"2017-06-05T10:50:37\",\n  \"gold_parse\": \"Time[]{2017-06-07 05:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"30-31 oct\",\n  \"ref_time\": \"2017-10-13T10:44:22\",\n  \"gold_parse\": \"Interval[]{2017-10-30 X:X (X/X) - 2017-10-31 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 12.09.17\",\n  \"ref_time\": \"2017-08-31T08:20:42\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday August 18th 15:55-16:55\",\n  \"ref_time\": \"2017-08-09T13:20:08\",\n  \"gold_parse\": \"Interval[]{2017-08-18 15:55 (X/X) - 2017-08-18 16:55 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"19.09.2017 - 21.09.2017\",\n  \"ref_time\": \"2017-09-11T11:47:44\",\n  \"gold_parse\": \"Interval[]{2017-09-19 X:X (X/X) - 2017-09-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.07.17 9:00 Uhr\",\n  \"ref_time\": \"2017-07-07T14:52:10\",\n  \"gold_parse\": \"Time[]{2017-07-13 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mittwoch, den 12. Juli am Abend\",\n  \"ref_time\": \"2017-07-07T10:47:26\",\n  \"gold_parse\": \"Time[]{2017-07-12 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.8. 12:00\",\n  \"ref_time\": \"2017-08-22T09:38:03\",\n  \"gold_parse\": \"Time[]{2017-08-29 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr um 16:25 Uhr\",\n  \"ref_time\": \"2017-11-29T13:42:37\",\n  \"gold_parse\": \"Time[]{2017-12-08 16:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi, 19.7.2017 früh morgens\",\n  \"ref_time\": \"2017-07-14T07:31:38\",\n  \"gold_parse\": \"Time[]{2017-07-19 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from 19th - 23rd of November\",\n  \"ref_time\": \"2017-11-15T11:42:14\",\n  \"gold_parse\": \"Interval[]{2017-11-19 X:X (X/X) - 2017-11-23 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"heute 30.08\",\n  \"ref_time\": \"2017-08-30T07:15:11\",\n  \"gold_parse\": \"Time[]{2017-08-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.6., 23:10\",\n  \"ref_time\": \"2017-06-07T10:41:26\",\n  \"gold_parse\": \"Time[]{2017-06-11 23:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08. - 09.11.2017\",\n  \"ref_time\": \"2017-11-06T11:03:48\",\n  \"gold_parse\": \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do. 14.9 Abends\",\n  \"ref_time\": \"2017-08-23T07:22:10\",\n  \"gold_parse\": \"Time[]{2017-09-14 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nov 18 around 10-11am\",\n  \"ref_time\": \"2017-11-13T15:08:36\",\n  \"gold_parse\": \"Interval[]{2017-11-18 10:00 (X/X) - 2017-11-18 11:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Donnerstag, 21.09.2017 abends\",\n  \"ref_time\": \"2017-08-22T07:53:54\",\n  \"gold_parse\": \"Time[]{2017-09-21 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.06. Spätanreise\",\n  \"ref_time\": \"2017-05-30T06:56:49\",\n  \"gold_parse\": \"Time[]{2017-06-01 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgens 12.10.2017\",\n  \"ref_time\": \"2017-10-04T11:29:12\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 13.11.2017 um 17.30 Uhr\",\n  \"ref_time\": \"2017-11-03T14:52:58\",\n  \"gold_parse\": \"Time[]{2017-11-13 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.07. ab 09:00 Uhr\",\n  \"ref_time\": \"2017-07-24T08:13:32\",\n  \"gold_parse\": \"Interval[]{2017-07-26 09:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.09.17\",\n  \"ref_time\": \"2017-07-31T15:59:37\",\n  \"gold_parse\": \"Time[]{2017-09-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morning of the 11th of June\",\n  \"ref_time\": \"2017-05-23T14:01:02\",\n  \"gold_parse\": \"Time[]{2017-06-11 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25th September\",\n  \"ref_time\": \"2017-09-07T10:03:03\",\n  \"gold_parse\": \"Time[]{2017-09-25 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Freitag\",\n  \"ref_time\": \"2017-11-12T15:07:37\",\n  \"gold_parse\": \"Time[]{2017-11-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.11.2017 20.00 Uhr\",\n  \"ref_time\": \"2017-11-06T08:50:51\",\n  \"gold_parse\": \"Time[]{2017-11-10 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27. Nov. 2017 17:00\",\n  \"ref_time\": \"2017-10-10T09:23:21\",\n  \"gold_parse\": \"Time[]{2017-11-27 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.12.2017 13:05\",\n  \"ref_time\": \"2017-11-16T12:27:41\",\n  \"gold_parse\": \"Time[]{2017-12-05 13:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6.10. 20:20\",\n  \"ref_time\": \"2017-09-25T14:20:43\",\n  \"gold_parse\": \"Time[]{2017-10-06 20:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 2nd and 3rd night\",\n  \"ref_time\": \"2017-10-24T13:42:29\",\n  \"gold_parse\": \"Interval[]{2017-11-02 X:X (X/X) - 2017-11-03 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 13.09 um ca. 18:00 Uhr\",\n  \"ref_time\": \"2017-09-01T12:51:12\",\n  \"gold_parse\": \"Time[]{2017-09-13 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.07. ab 17 Uhr\",\n  \"ref_time\": \"2017-06-07T09:02:11\",\n  \"gold_parse\": \"Interval[]{2017-07-02 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 26.06. 13:38h\",\n  \"ref_time\": \"2017-06-24T07:38:35\",\n  \"gold_parse\": \"Time[]{2017-06-26 13:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen gegen Mittag\",\n  \"ref_time\": \"2017-06-10T16:32:53\",\n  \"gold_parse\": \"Time[]{2017-06-11 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017\",\n  \"ref_time\": \"2017-10-24T11:43:53\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17.05.17\",\n  \"ref_time\": \"2017-05-16T08:17:54\",\n  \"gold_parse\": \"Time[]{2017-05-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27 SEP,\",\n  \"ref_time\": \"2017-09-10T15:57:30\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"Freitag, 11.08.2017 ca. 10:00 Uhr\",\n  \"ref_time\": \"2017-08-04T08:41:48\",\n  \"gold_parse\": \"Time[]{2017-08-11 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 04. - 05.11.\",\n  \"ref_time\": \"2017-10-25T14:57:13\",\n  \"gold_parse\": \"Interval[]{2017-11-04 X:X (X/X) - 2017-11-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28th Sep\",\n  \"ref_time\": \"2017-09-08T17:14:10\",\n  \"gold_parse\": \"Time[]{2017-09-28 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Wed, Oct 11 8:30 PM - 9:47 PM\",\n  \"ref_time\": \"2017-09-19T17:01:37\",\n  \"gold_parse\": \"Interval[]{2017-10-11 08:30 (X/X) - 2017-10-11 09:47 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Do. 06.07.\",\n  \"ref_time\": \"2017-05-29T14:11:17\",\n  \"gold_parse\": \"Time[]{2017-07-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday 28/06 around 15:20\",\n  \"ref_time\": \"2017-07-20T15:24:21\",\n  \"gold_parse\": \"Time[]{2017-06-28 15:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-11-30T10:11:23\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7.11. bis 8.11.17\",\n  \"ref_time\": \"2017-10-10T20:51:54\",\n  \"gold_parse\": \"Interval[]{2017-11-07 X:X (X/X) - 2017-11-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.09.17 19:40   20:50 Uhr\",\n  \"ref_time\": \"2017-09-05T12:27:53\",\n  \"gold_parse\": \"Interval[]{2017-09-18 19:40 (X/X) - 2017-09-18 20:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 3.12.\",\n  \"ref_time\": \"2017-10-19T16:23:07\",\n  \"gold_parse\": \"Time[]{2017-12-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.11.\",\n  \"ref_time\": \"2017-10-30T16:22:20\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"jetzt\",\n  \"ref_time\": \"2017-05-24T18:49:27\",\n  \"gold_parse\": \"Time[]{2017-05-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday 08.12.1707\",\n  \"ref_time\": \"2017-11-25T09:44:04\",\n  \"gold_parse\": \"Time[]{2017-12-08 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"22.01.2018 morgens\",\n  \"ref_time\": \"2017-09-26T10:38:22\",\n  \"gold_parse\": \"Time[]{2018-01-22 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"4.9.2017 afternoon 16.00-17.30\",\n  \"ref_time\": \"2017-08-23T05:58:36\",\n  \"gold_parse\": \"Interval[]{2017-09-04 16:00 (X/X) - 2017-09-04 17:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"kommenden Freitag 06.10.2017 09:30h/10:00h\",\n  \"ref_time\": \"2017-10-04T09:11:03\",\n  \"gold_parse\": \"Interval[]{2017-10-06 09:30 (X/X) - 2017-10-06 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 06/08 evening\",\n  \"ref_time\": \"2017-07-31T09:04:05\",\n  \"gold_parse\": \"Time[]{2017-08-06 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 30.11. um 20:30 Uhr\",\n  \"ref_time\": \"2017-11-09T09:37:56\",\n  \"gold_parse\": \"Time[]{2017-11-30 20:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17 MAY, 19:25\",\n  \"ref_time\": \"2017-10-23T09:29:04\",\n  \"gold_parse\": \"Time[]{2018-05-17 19:25 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Samstag, den 30.10. gegen 19:00 Uhr\",\n  \"ref_time\": \"2017-09-26T03:49:16\",\n  \"gold_parse\": \"Time[]{2017-10-30 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mon 26th June 07:50-10:00\",\n  \"ref_time\": \"2017-06-20T11:10:56\",\n  \"gold_parse\": \"Interval[]{2017-06-26 07:50 (X/X) - 2017-06-26 10:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.12.17\",\n  \"ref_time\": \"2017-11-24T08:44:59\",\n  \"gold_parse\": \"Time[]{2017-12-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 21.08-25.08\",\n  \"ref_time\": \"2017-08-18T13:41:51\",\n  \"gold_parse\": \"Interval[]{2017-08-21 X:X (X/X) - 2017-08-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 22.11.2017 ab 17:15 h\",\n  \"ref_time\": \"2017-11-14T14:45:07\",\n  \"gold_parse\": \"Interval[]{2017-11-22 17:15 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.05.17 21:22\",\n  \"ref_time\": \"2017-05-22T17:45:33\",\n  \"gold_parse\": \"Time[]{2017-05-23 21:22 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.06. um 20.45-22:25\",\n  \"ref_time\": \"2017-06-07T13:40:28\",\n  \"gold_parse\": \"Interval[]{2017-06-18 20:45 (X/X) - 2017-06-18 22:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Donnerstag, den 29.06.2017 gegen 08:00 Uhr\",\n  \"ref_time\": \"2017-06-13T14:36:43\",\n  \"gold_parse\": \"Time[]{2017-06-29 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag\",\n  \"ref_time\": \"2017-06-16T09:12:56\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"diese Woche Sonntag\",\n  \"ref_time\": \"2017-07-24T12:59:26\",\n  \"gold_parse\": \"Time[]{2017-07-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 20:40 Uhr am 27.11.2017\",\n  \"ref_time\": \"2017-10-10T06:50:20\",\n  \"gold_parse\": \"Time[]{2017-11-27 20:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16. August abends\",\n  \"ref_time\": \"2017-07-31T11:42:06\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17:45 Uhr\",\n  \"ref_time\": \"2017-11-20T11:57:58\",\n  \"gold_parse\": \"Time[]{2017-11-28 17:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Vom 17.11.-19.11.2017\",\n  \"ref_time\": \"2017-11-13T10:20:54\",\n  \"gold_parse\": \"Interval[]{2017-11-17 X:X (X/X) - 2017-11-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1 day\",\n  \"ref_time\": \"2017-11-03T15:07:20\",\n  \"gold_parse\": \"Interval[]{2017-11-07 X:X (X/X) - 2017-11-08 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26.10.17 nachts\",\n  \"ref_time\": \"2017-07-05T13:01:11\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/night)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23. Oktober mittags\",\n  \"ref_time\": \"2017-09-25T12:06:10\",\n  \"gold_parse\": \"Time[]{2017-10-23 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 13.09.17 ab 11:30 Uhr\",\n  \"ref_time\": \"2017-09-08T14:55:15\",\n  \"gold_parse\": \"Interval[]{2017-09-13 11:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag dem 11.06\",\n  \"ref_time\": \"2017-06-07T17:11:00\",\n  \"gold_parse\": \"Time[]{2017-06-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07. 12:17\",\n  \"ref_time\": \"2017-07-19T07:56:31\",\n  \"gold_parse\": \"Time[]{2017-07-20 12:17 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 11.09.2017 bis 13.09.2017\",\n  \"ref_time\": \"2017-09-06T10:18:38\",\n  \"gold_parse\": \"Interval[]{2017-09-11 X:X (X/X) - 2017-09-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-08-31T14:31:34\",\n  \"gold_parse\": \"Time[]{2017-08-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo. 19. Jun. 10:05\",\n  \"ref_time\": \"2017-06-18T11:30:46\",\n  \"gold_parse\": \"Time[]{2017-06-19 10:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo. 20.11.2017\",\n  \"ref_time\": \"2017-11-20T12:32:35\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28-29.06\",\n  \"ref_time\": \"2017-06-14T07:04:17\",\n  \"gold_parse\": \"Interval[]{2017-06-28 X:X (X/X) - 2017-06-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14.11.2017 ab 18:30 Uhr\",\n  \"ref_time\": \"2017-09-28T10:12:15\",\n  \"gold_parse\": \"Interval[]{2017-11-14 18:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.11.2017 14:50 Uhr\",\n  \"ref_time\": \"2017-10-11T08:04:37\",\n  \"gold_parse\": \"Time[]{2017-11-02 14:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10.11. Abends\",\n  \"ref_time\": \"2017-09-18T22:28:35\",\n  \"gold_parse\": \"Time[]{2017-11-10 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag 5.11\",\n  \"ref_time\": \"2017-11-03T11:55:32\",\n  \"gold_parse\": \"Time[]{2017-11-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.09 morgens\",\n  \"ref_time\": \"2017-09-11T14:35:44\",\n  \"gold_parse\": \"Time[]{2017-09-20 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch 01.11.\",\n  \"ref_time\": \"2017-10-31T16:29:39\",\n  \"gold_parse\": \"Time[]{2017-11-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.08.\",\n  \"ref_time\": \"2017-05-16T10:59:39\",\n  \"gold_parse\": \"Time[]{2017-08-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13AUG 09:10\",\n  \"ref_time\": \"2017-05-19T08:51:30\",\n  \"gold_parse\": \"Time[]{2017-08-13 09:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 31. Januar ab 8:00 Uhr\",\n  \"ref_time\": \"2017-09-26T09:01:01\",\n  \"gold_parse\": \"Interval[]{2018-01-31 08:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 05.10.2017 ab 15 Uhr\",\n  \"ref_time\": \"2017-09-13T10:44:24\",\n  \"gold_parse\": \"Interval[]{2017-10-05 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am Fr., 27.10.17, 19:50 Uhr\",\n  \"ref_time\": \"2017-09-27T10:44:24\",\n  \"gold_parse\": \"Time[]{2017-10-27 19:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"week 36\",\n  \"ref_time\": \"2017-08-15T17:43:29\",\n  \"gold_parse\": \"Interval[]{2017-09-04 X:X (X/X) - 2017-09-10 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 29.11.\",\n  \"ref_time\": \"2017-09-25T15:59:52\",\n  \"gold_parse\": \"Time[]{2017-11-29 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.09 gegen Mittag\",\n  \"ref_time\": \"2017-08-31T07:16:55\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 04. Oktober morgens so früh wie möglich\",\n  \"ref_time\": \"2017-09-22T10:04:17\",\n  \"gold_parse\": \"Time[]{2017-10-04 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.7. ab 6.59 Uhr\",\n  \"ref_time\": \"2017-07-16T11:49:02\",\n  \"gold_parse\": \"Interval[]{2017-07-20 06:59 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.11. 17:14 - 21:03 Uhr\",\n  \"ref_time\": \"2017-11-22T12:41:56\",\n  \"gold_parse\": \"Interval[]{2017-11-29 17:14 (X/X) - 2017-11-29 21:03 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.09.17\",\n  \"ref_time\": \"2017-08-29T07:07:34\",\n  \"gold_parse\": \"Time[]{2017-09-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"letztem Flug am Montag 20 oder 21.11.2017\",\n  \"ref_time\": \"2017-10-26T06:18:07\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag morgens\",\n  \"ref_time\": \"2017-10-05T07:08:53\",\n  \"gold_parse\": \"Time[]{2017-10-10 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22 July Sunday 1650\",\n  \"ref_time\": \"2017-07-18T04:43:31\",\n  \"gold_parse\": \"Time[]{2017-07-22 16:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 31.05\",\n  \"ref_time\": \"2017-05-24T14:58:54\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9 June, Friday 0845am\",\n  \"ref_time\": \"2017-05-23T08:51:04\",\n  \"gold_parse\": \"Time[]{2017-06-09 08:45 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.08.2017 ab 10:00 Uhr\",\n  \"ref_time\": \"2017-08-21T10:17:59\",\n  \"gold_parse\": \"Time[]{2017-08-23 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sunday morning\",\n  \"ref_time\": \"2017-08-29T08:13:19\",\n  \"gold_parse\": \"Time[]{2017-08-31 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Freitag, 21.07.17 08.35 Uhr\",\n  \"ref_time\": \"2017-06-26T08:01:09\",\n  \"gold_parse\": \"Time[]{2017-07-21 08:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.09.2017\",\n  \"ref_time\": \"2017-09-19T08:06:30\",\n  \"gold_parse\": \"Time[]{2017-09-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.08.2017 08:38 Uhr\",\n  \"ref_time\": \"2017-07-21T09:45:39\",\n  \"gold_parse\": \"Time[]{2017-08-05 08:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.10.2017 21.00\",\n  \"ref_time\": \"2017-10-10T16:05:34\",\n  \"gold_parse\": \"Time[]{2017-10-29 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.10.2017 um 18.00 Uhr\",\n  \"ref_time\": \"2017-10-13T09:01:04\",\n  \"gold_parse\": \"Time[]{2017-10-16 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.11. ca. 18.00 h\",\n  \"ref_time\": \"2017-11-07T10:30:09\",\n  \"gold_parse\": \"Time[]{2017-11-29 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wed afternoon 29 Nov\",\n  \"ref_time\": \"2017-11-27T08:39:11\",\n  \"gold_parse\": \"Time[]{2017-11-29 X:X (X/afternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Dienstag 19.09.2017 ca 20Uhr\",\n  \"ref_time\": \"2017-06-08T13:20:00\",\n  \"gold_parse\": \"Time[]{2017-09-19 20:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08.17 nachmittags\",\n  \"ref_time\": \"2017-08-04T12:23:27\",\n  \"gold_parse\": \"Time[]{2017-08-16 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.09.2017 - 21.09.2017\",\n  \"ref_time\": \"2017-09-11T11:47:44\",\n  \"gold_parse\": \"Interval[]{2017-09-19 X:X (X/X) - 2017-09-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag, 8. September 2017 bis 12:00 Uhr\",\n  \"ref_time\": \"2017-07-24T07:53:26\",\n  \"gold_parse\": \"Interval[]{None - 2017-09-08 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"8 Nov 1015\",\n  \"ref_time\": \"2017-08-25T12:15:35\",\n  \"gold_parse\": \"Time[]{2017-11-09 10:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"2. August 16.45\",\n  \"ref_time\": \"2017-07-10T10:57:08\",\n  \"gold_parse\": \"Time[]{2017-08-02 16:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.7. etwa 16 Uhr\",\n  \"ref_time\": \"2017-07-05T08:57:57\",\n  \"gold_parse\": \"Time[]{2017-07-25 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-05-31T11:03:46\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di. 18.07.2017\",\n  \"ref_time\": \"2017-07-16T16:26:23\",\n  \"gold_parse\": \"Time[]{2017-07-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from today 9th of Aug to Fri 11th of Aug\",\n  \"ref_time\": \"2017-08-09T09:08:59\",\n  \"gold_parse\": \"Interval[]{2017-08-09 X:X (X/X) - 2017-08-11 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"19.10.2017\",\n  \"ref_time\": \"2017-09-20T12:14:25\",\n  \"gold_parse\": \"Time[]{2017-10-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17 Juli ca. 17.30h\",\n  \"ref_time\": \"2017-07-05T09:42:39\",\n  \"gold_parse\": \"Time[]{2017-07-17 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.11.2017\",\n  \"ref_time\": \"2017-11-07T14:54:10\",\n  \"gold_parse\": \"Time[]{2017-11-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday early morning\",\n  \"ref_time\": \"2017-06-15T08:25:30\",\n  \"gold_parse\": \"Time[]{2017-06-27 X:X (X/earlymorning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag den 31.07.2017 ca. 14:00 Uhr bis zum 04.08.2017\",\n  \"ref_time\": \"2017-07-25T11:23:56\",\n  \"gold_parse\": \"Interval[]{2017-07-31 14:00 (X/X) - 2017-08-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 18:40 Uhr am 22.09.2017\",\n  \"ref_time\": \"2017-09-13T11:25:41\",\n  \"gold_parse\": \"Time[]{2017-09-22 18:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.08.2017 13:27 Uhr\",\n  \"ref_time\": \"2017-07-21T09:45:39\",\n  \"gold_parse\": \"Time[]{2017-08-03 13:27 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Thursday 23rd November around 6.30 p.m\",\n  \"ref_time\": \"2017-10-18T15:34:42\",\n  \"gold_parse\": \"Time[]{2017-11-23 18:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Mi, 13.09.17 um 10:30 Uhr\",\n  \"ref_time\": \"2017-08-31T07:35:03\",\n  \"gold_parse\": \"Time[]{2017-09-13 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"bis 19. September abends/spät abends\",\n  \"ref_time\": \"2017-09-04T09:24:48\",\n  \"gold_parse\": \"Interval[]{2017-09-19 X:X (X/evening) - 2017-09-19 X:X (X/lateevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.09.\",\n  \"ref_time\": \"2017-08-31T07:55:15\",\n  \"gold_parse\": \"Time[]{2017-09-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Montag, den 24.07. 09:50\",\n  \"ref_time\": \"2017-07-20T12:50:31\",\n  \"gold_parse\": \"Time[]{2017-07-24 09:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.2017 23:11 Uhr\",\n  \"ref_time\": \"2017-05-15T13:10:23\",\n  \"gold_parse\": \"Time[]{2017-05-31 23:11 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1 Dec 0710\",\n  \"ref_time\": \"2017-11-20T19:42:36\",\n  \"gold_parse\": \"Time[]{2017-12-01 07:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.9. um 11:00 Uhr\",\n  \"ref_time\": \"2017-09-01T09:36:44\",\n  \"gold_parse\": \"Time[]{2017-09-14 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.01.2018\",\n  \"ref_time\": \"2017-11-24T09:29:00\",\n  \"gold_parse\": \"Time[]{2018-01-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.07.2017 vormittags\",\n  \"ref_time\": \"2017-06-27T16:00:05\",\n  \"gold_parse\": \"Time[]{2017-07-13 X:X (X/noon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.08.17 07.23\",\n  \"ref_time\": \"2017-08-01T14:15:33\",\n  \"gold_parse\": \"Time[]{2017-08-03 07:23 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.8. ca 11/12 Uhr\",\n  \"ref_time\": \"2017-05-22T08:31:35\",\n  \"gold_parse\": \"Interval[]{2017-08-12 11:00 (X/X) - 2017-08-12 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"spät 25.09.17\",\n  \"ref_time\": \"2017-08-30T11:37:43\",\n  \"gold_parse\": \"Time[]{2017-09-25 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"after 15:00 on Sunday 17\",\n  \"ref_time\": \"2017-11-09T16:48:56\",\n  \"gold_parse\": \"Interval[]{2017-12-17 15:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Samstag abends am 7.10\",\n  \"ref_time\": \"2017-09-28T07:09:30\",\n  \"gold_parse\": \"Time[]{2017-10-07 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13 Nov\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-13 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.09.2017 morgens\",\n  \"ref_time\": \"2017-09-06T13:58:42\",\n  \"gold_parse\": \"Time[]{2017-09-25 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.11.\",\n  \"ref_time\": \"2017-11-04T14:10:07\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15/09\",\n  \"ref_time\": \"2017-08-18T10:55:13\",\n  \"gold_parse\": \"Time[]{2017-09-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"after 17:00 on Tuesday 19\",\n  \"ref_time\": \"2017-11-09T16:48:56\",\n  \"gold_parse\": \"Interval[]{2017-12-19 17:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"08.11.2017 06:38 Uhr\",\n  \"ref_time\": \"2017-10-12T07:07:16\",\n  \"gold_parse\": \"Time[]{2017-11-08 06:38 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12-11-2017\",\n  \"ref_time\": \"2017-10-18T18:45:37\",\n  \"gold_parse\": \"Time[]{2017-11-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Dienstag, den 08.08.2017 ab 17:00h\",\n  \"ref_time\": \"2017-08-03T15:17:43\",\n  \"gold_parse\": \"Interval[]{2017-08-08 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on the 22nd - 29th of August\",\n  \"ref_time\": \"2017-08-11T13:03:58\",\n  \"gold_parse\": \"Interval[]{2017-08-22 X:X (X/X) - 2017-08-29 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.9. 12:10\",\n  \"ref_time\": \"2017-09-12T14:17:43\",\n  \"gold_parse\": \"Time[]{2017-09-14 12:10 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"28.07.17 um 20:45 Uhr\",\n  \"ref_time\": \"2017-06-22T15:50:40\",\n  \"gold_parse\": \"Time[]{2017-07-28 20:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25 SEP, 15:50\",\n  \"ref_time\": \"2017-09-10T15:46:24\",\n  \"gold_parse\": \"Time[]{2017-09-25 15:50 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"9. Juni 2017 10 Uhr\",\n  \"ref_time\": \"2017-05-24T17:35:38\",\n  \"gold_parse\": \"Time[]{2017-06-09 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.10.17\",\n  \"ref_time\": \"2017-09-01T07:03:47\",\n  \"gold_parse\": \"Time[]{2017-10-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag ab 17.00 Uhr\",\n  \"ref_time\": \"2017-10-19T06:03:26\",\n  \"gold_parse\": \"Interval[]{2017-11-10 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday morning\",\n  \"ref_time\": \"2017-07-13T07:10:58\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sa. 09.12.2017 ca. 13:00 Uhr\",\n  \"ref_time\": \"2017-11-28T14:05:46\",\n  \"gold_parse\": \"Time[]{2017-12-09 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Tuesday 14th November 2017\",\n  \"ref_time\": \"2017-10-04T09:30:12\",\n  \"gold_parse\": \"Time[]{2017-11-14 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Jun 7 at 2215-2350\",\n  \"ref_time\": \"2017-06-06T13:04:24\",\n  \"gold_parse\": \"Interval[]{2017-06-07 22:15 (X/X) - 2017-06-07 23:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"early Thursday 30.11.2017\",\n  \"ref_time\": \"2017-11-27T08:35:45\",\n  \"gold_parse\": \"Time[]{2017-11-30 X:X (X/earlymorning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.8.\",\n  \"ref_time\": \"2017-08-10T12:56:43\",\n  \"gold_parse\": \"Time[]{2017-08-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"as early as possible on Friday morning\",\n  \"ref_time\": \"2017-10-24T15:27:27\",\n  \"gold_parse\": \"Time[]{2017-11-03 X:X (X/earlymorning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11.11.2017 12:10 Uhr\",\n  \"ref_time\": \"2017-07-28T06:51:00\",\n  \"gold_parse\": \"Time[]{2017-11-11 12:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7.12.\",\n  \"ref_time\": \"2017-11-20T09:50:25\",\n  \"gold_parse\": \"Time[]{2017-12-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.11.17\",\n  \"ref_time\": \"2017-10-17T15:22:29\",\n  \"gold_parse\": \"Time[]{2017-11-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.07.2015\",\n  \"ref_time\": \"2017-06-23T12:37:05\",\n  \"gold_parse\": \"Time[]{2017-07-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.-21.12.\",\n  \"ref_time\": \"2017-09-01T13:05:27\",\n  \"gold_parse\": \"Interval[]{2017-12-19 X:X (X/X) - 2017-12-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24/09 9 Uhr\",\n  \"ref_time\": \"2017-08-31T10:05:26\",\n  \"gold_parse\": \"Time[]{2017-09-24 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04AUG 18:20\",\n  \"ref_time\": \"2017-05-19T08:51:30\",\n  \"gold_parse\": \"Time[]{2017-08-04 18:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.06. frühesten\",\n  \"ref_time\": \"2017-06-09T13:10:49\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.08.2017\",\n  \"ref_time\": \"2017-07-26T12:25:43\",\n  \"gold_parse\": \"Time[]{2017-08-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06. September 8:10 - 9:15\",\n  \"ref_time\": \"2017-08-25T15:23:46\",\n  \"gold_parse\": \"Interval[]{2017-09-06 08:10 (X/X) - 2017-09-06 09:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 03.09.\",\n  \"ref_time\": \"2017-08-24T06:32:22\",\n  \"gold_parse\": \"Time[]{2017-09-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.09.2017 17:40 Uhr\",\n  \"ref_time\": \"2017-09-19T07:12:55\",\n  \"gold_parse\": \"Time[]{2017-09-21 17:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 24.10.12017 morgens\",\n  \"ref_time\": \"2017-09-04T10:48:27\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.10.2017 frühestens ab 20:00 Uhr\",\n  \"ref_time\": \"2017-07-25T12:13:20\",\n  \"gold_parse\": \"Interval[]{2017-10-11 20:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag ab 19:00\",\n  \"ref_time\": \"2017-09-20T07:22:59\",\n  \"gold_parse\": \"Interval[]{2017-09-24 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"evening of Friday, June 23rd\",\n  \"ref_time\": \"2017-06-15T15:47:32\",\n  \"gold_parse\": \"Time[]{2017-06-23 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Freitag 15.12.2017\",\n  \"ref_time\": \"2017-11-28T15:49:33\",\n  \"gold_parse\": \"Time[]{2017-12-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von 17.10.-19.10.17\",\n  \"ref_time\": \"2017-10-16T07:35:59\",\n  \"gold_parse\": \"Interval[]{2017-10-17 X:X (X/X) - 2017-10-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.08.2017\",\n  \"ref_time\": \"2017-07-18T08:28:58\",\n  \"gold_parse\": \"Time[]{2017-08-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr., 04.08.2017 10.00\",\n  \"ref_time\": \"2017-07-27T09:28:06\",\n  \"gold_parse\": \"Time[]{2017-08-04 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di., 5. Dez. 8:45 Uhr - 10:00 Uhr\",\n  \"ref_time\": \"2017-11-01T12:43:18\",\n  \"gold_parse\": \"Interval[]{2017-12-05 08:45 (X/X) - 2017-12-05 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 12.09.2017 between 5-9 am\",\n  \"ref_time\": \"2017-09-06T09:39:08\",\n  \"gold_parse\": \"Interval[]{2017-09-12 05:00 (X/X) - 2017-09-12 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.10.2017 nach 06:00 Uhr\",\n  \"ref_time\": \"2017-10-10T05:43:58\",\n  \"gold_parse\": \"Interval[]{2017-10-25 06:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"01.08.2017 08:00 - 10:00 Uhr\",\n  \"ref_time\": \"2017-07-18T10:19:48\",\n  \"gold_parse\": \"Interval[]{2017-08-01 08:00 (X/X) - 2017-08-01 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.12.2017 19:50\",\n  \"ref_time\": \"2017-10-27T11:38:34\",\n  \"gold_parse\": \"Time[]{2017-12-06 19:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.08. spätestens um 9:30 Uhr\",\n  \"ref_time\": \"2017-08-04T07:25:31\",\n  \"gold_parse\": \"Interval[]{None - 2017-08-08 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10 approximately 9.00 a.m.\",\n  \"ref_time\": \"2017-10-02T13:56:00\",\n  \"gold_parse\": \"Time[]{2017-10-10 09:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"13.12.2017\",\n  \"ref_time\": \"2017-11-27T14:52:20\",\n  \"gold_parse\": \"Time[]{2017-12-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12 loka 15:05\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-12 15:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"from 25.10. to 26.10.\",\n  \"ref_time\": \"2017-10-25T05:19:21\",\n  \"gold_parse\": \"Interval[]{2017-10-25 X:X (X/X) - 2017-10-26 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.10.\",\n  \"ref_time\": \"2017-10-11T13:00:00\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.12 11.10 Uhr\",\n  \"ref_time\": \"2017-10-05T10:13:07\",\n  \"gold_parse\": \"Time[]{2017-12-01 11:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.2017 ab 18:00 Uhr\",\n  \"ref_time\": \"2017-05-16T08:27:18\",\n  \"gold_parse\": \"Interval[]{2017-05-31 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitag\",\n  \"ref_time\": \"2017-08-27T08:22:47\",\n  \"gold_parse\": \"Time[]{2017-09-01 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nacht vom 5. auf den 6. Dezember\",\n  \"ref_time\": \"2017-11-24T09:48:28\",\n  \"gold_parse\": \"Interval[]{2017-12-05 X:X (X/X) - 2017-12-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Thursday 26.10\",\n  \"ref_time\": \"2017-10-23T11:18:24\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"6.11.\",\n  \"ref_time\": \"2017-10-22T19:45:48\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"um 17:55 Uhr am 22.09.2017\",\n  \"ref_time\": \"2017-09-13T11:25:41\",\n  \"gold_parse\": \"Time[]{2017-09-22 17:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.10.2017\",\n  \"ref_time\": \"2017-10-11T08:32:09\",\n  \"gold_parse\": \"Time[]{2017-10-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"9 loka 21:45\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-09 21:45 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Sonntag 25. Juni, ca. 12\",\n  \"ref_time\": \"2017-06-19T07:05:59\",\n  \"gold_parse\": \"Time[]{2017-06-25 12:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.2017\",\n  \"ref_time\": \"2017-09-22T13:26:45\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.09.\",\n  \"ref_time\": \"2017-09-21T07:58:16\",\n  \"gold_parse\": \"Time[]{2017-09-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.11.2017 07:00 Uhr - 07:45 Uhr\",\n  \"ref_time\": \"2017-11-03T10:04:03\",\n  \"gold_parse\": \"Interval[]{2017-11-16 07:00 (X/X) - 2017-11-16 07:45 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.06.2017 09:05 Uhr\",\n  \"ref_time\": \"2017-06-13T07:23:41\",\n  \"gold_parse\": \"Time[]{2017-06-29 09:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"October 25th 07:30am\",\n  \"ref_time\": \"2017-10-04T09:39:12\",\n  \"gold_parse\": \"Time[]{2017-10-25 07:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"on June 17th after 3 pm.\",\n  \"ref_time\": \"2017-05-16T18:40:30\",\n  \"gold_parse\": \"Interval[]{2017-06-17 15:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.11.2017 früh\",\n  \"ref_time\": \"2017-11-21T10:06:41\",\n  \"gold_parse\": \"Time[]{2017-11-23 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.06.2017 bis 15:00 Uhr\",\n  \"ref_time\": \"2017-06-02T12:10:50\",\n  \"gold_parse\": \"Interval[]{None - 2017-06-06 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.06.2017 06:30 Uhr\",\n  \"ref_time\": \"2017-05-15T07:07:58\",\n  \"gold_parse\": \"Time[]{2017-06-02 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.07. 07:25h\",\n  \"ref_time\": \"2017-07-21T11:00:35\",\n  \"gold_parse\": \"Time[]{2017-07-24 07:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 19 Juni früh\",\n  \"ref_time\": \"2017-06-13T13:05:02\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on the 12th of October\",\n  \"ref_time\": \"2017-10-05T14:14:05\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"28/08 afternoon\",\n  \"ref_time\": \"2017-08-14T15:42:42\",\n  \"gold_parse\": \"Time[]{2017-08-28 X:X (X/afternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 03.11.2017 gegen 18:00 bis 19:00 Uhr\",\n  \"ref_time\": \"2017-10-22T02:42:23\",\n  \"gold_parse\": \"Interval[]{2017-11-03 18:00 (X/X) - 2017-11-03 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 23.11. um 07:03\",\n  \"ref_time\": \"2017-11-16T07:49:28\",\n  \"gold_parse\": \"Time[]{2017-11-23 07:03 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 20.11.2017 um 08:40 Uhr\",\n  \"ref_time\": \"2017-11-08T13:44:18\",\n  \"gold_parse\": \"Time[]{2017-11-20 08:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 15.10.2017 bis 18.10.2017\",\n  \"ref_time\": \"2017-10-13T11:30:54\",\n  \"gold_parse\": \"Interval[]{2017-10-15 X:X (X/X) - 2017-10-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.06.17 vormittags\",\n  \"ref_time\": \"2017-05-23T10:55:24\",\n  \"gold_parse\": \"Time[]{2017-06-29 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 13.06. gegen 22.00 Uhr\",\n  \"ref_time\": \"2017-06-09T15:39:12\",\n  \"gold_parse\": \"Time[]{2017-06-13 22:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.07. um ca. 22:10 Uhr\",\n  \"ref_time\": \"2017-06-26T13:00:13\",\n  \"gold_parse\": \"Time[]{2017-07-19 22:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27 Aug 1440\",\n  \"ref_time\": \"2017-07-25T07:19:36\",\n  \"gold_parse\": \"Time[]{2017-08-27 14:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.10. 10:22\",\n  \"ref_time\": \"2017-09-28T15:50:54\",\n  \"gold_parse\": \"Time[]{2017-10-10 10:22 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18th september 2017 - 06:25-08:05\",\n  \"ref_time\": \"2017-09-05T12:25:53\",\n  \"gold_parse\": \"Interval[]{2017-09-18 06:25 (X/X) - 2017-09-18 08:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.07. ca. 16.00h\",\n  \"ref_time\": \"2017-07-21T11:00:35\",\n  \"gold_parse\": \"Time[]{2017-07-25 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Wednesday July 19th evening\",\n  \"ref_time\": \"2017-06-19T09:54:53\",\n  \"gold_parse\": \"Time[]{2016-07-19 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am Donnerstag den 23. November Abends\",\n  \"ref_time\": \"2017-11-14T17:29:49\",\n  \"gold_parse\": \"Time[]{2017-11-23 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21. August ca. 15 Uhr\",\n  \"ref_time\": \"2017-07-28T17:16:58\",\n  \"gold_parse\": \"Time[]{2017-08-21 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.10.2017\",\n  \"ref_time\": \"2017-08-02T06:59:41\",\n  \"gold_parse\": \"Time[]{2017-10-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.10.2017 ab 8:00 Uhr\",\n  \"ref_time\": \"2017-10-20T11:04:40\",\n  \"gold_parse\": \"Interval[]{2017-10-27 08:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.10\",\n  \"ref_time\": \"2017-10-11T08:11:02\",\n  \"gold_parse\": \"Time[]{2017-10-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag, 26.01.2018 - ab 15.00 Uhr\",\n  \"ref_time\": \"2017-09-26T12:18:01\",\n  \"gold_parse\": \"Interval[]{2017-01-26 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute 17:00\",\n  \"ref_time\": \"2017-10-06T08:03:32\",\n  \"gold_parse\": \"Time[]{2017-10-06 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.-27.10.2017\",\n  \"ref_time\": \"2017-09-19T12:19:44\",\n  \"gold_parse\": \"Interval[]{2017-10-26 X:X (X/X) - 2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.07.2017\",\n  \"ref_time\": \"2017-06-22T08:33:33\",\n  \"gold_parse\": \"Time[]{2017-07-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04.09.2017 07:20Uhr\",\n  \"ref_time\": \"2017-07-05T06:04:05\",\n  \"gold_parse\": \"Time[]{2017-09-04 07:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag 19.9. gegen 8:00 Uhr\",\n  \"ref_time\": \"2017-09-11T08:21:28\",\n  \"gold_parse\": \"Time[]{2017-09-19 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04./05.07.17\",\n  \"ref_time\": \"2017-06-29T12:33:48\",\n  \"gold_parse\": \"Interval[]{2017-07-04 X:X (X/X) - 2017-07-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1.12 morgens/vormittag\",\n  \"ref_time\": \"2017-11-25T16:46:58\",\n  \"gold_parse\": \"Interval[]{2017-12-01 X:X (X/morning) - 2017-12-01 X:X (X/earlynoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 20. bis 23.07\",\n  \"ref_time\": \"2017-07-18T05:48:17\",\n  \"gold_parse\": \"Interval[]{2017-07-20 X:X (X/X) - 2017-07-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"So, 23.07.17 bis 9 Uhr\",\n  \"ref_time\": \"2017-07-14T14:12:10\",\n  \"gold_parse\": \"Interval[]{None - 2017-07-23 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.07. um ca. 20:30 Uhr\",\n  \"ref_time\": \"2017-06-26T13:00:13\",\n  \"gold_parse\": \"Time[]{2017-07-19 20:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.10\",\n  \"ref_time\": \"2017-10-09T11:50:10\",\n  \"gold_parse\": \"Time[]{2017-10-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.7.17 um 12.05 Uhr\",\n  \"ref_time\": \"2017-07-21T17:02:05\",\n  \"gold_parse\": \"Time[]{2017-07-27 12:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.08.2017 21:35 Uhr\",\n  \"ref_time\": \"2017-08-01T06:17:48\",\n  \"gold_parse\": \"Time[]{2017-08-22 21:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 30.11. ab 20:00 Uhr\",\n  \"ref_time\": \"2017-11-17T14:26:49\",\n  \"gold_parse\": \"Interval[]{2017-11-30 20:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on nov 6th\",\n  \"ref_time\": \"2017-10-24T16:16:26\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 17.07.2017 15:00-17:00 Uhr\",\n  \"ref_time\": \"2017-07-11T11:53:20\",\n  \"gold_parse\": \"Interval[]{2017-07-17 15:00 (X/X) - 2017-07-17 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"1 Nacht\",\n  \"ref_time\": \"2017-06-07T09:36:05\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"abends\",\n  \"ref_time\": \"2017-10-03T13:51:16\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.08.2017\",\n  \"ref_time\": \"2017-08-08T09:19:35\",\n  \"gold_parse\": \"Time[]{2017-08-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag 10. Dezember 12:05-13:05\",\n  \"ref_time\": \"2017-11-27T14:53:34\",\n  \"gold_parse\": \"Interval[]{2017-12-10 12:05 (X/X) - 2017-12-10 13:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag früh\",\n  \"ref_time\": \"2017-10-28T13:58:54\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.11.2017 spätestens um 10:30 Uhr\",\n  \"ref_time\": \"2017-11-22T10:40:56\",\n  \"gold_parse\": \"Interval[]{None - 2017-11-29 10:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi, 08.11.2017 10:06\",\n  \"ref_time\": \"2017-10-26T05:55:16\",\n  \"gold_parse\": \"Time[]{2017-11-08 10:06 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen\",\n  \"ref_time\": \"2017-07-16T17:38:40\",\n  \"gold_parse\": \"Time[]{2017-07-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Freitag, 15.9.2017 ab ca. 15.00 / 16.00 Uhr\",\n  \"ref_time\": \"2017-07-14T10:05:38\",\n  \"gold_parse\": \"Interval[]{2017-09-15 15:00 (X/X) - 2017-09-15 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute auf morgen\",\n  \"ref_time\": \"2017-10-10T11:43:21\",\n  \"gold_parse\": \"Interval[]{2017-10-10 X:X (X/X) - 2017-10-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"08.08.17 ab 15:00 Uhr\",\n  \"ref_time\": \"2017-07-31T12:44:24\",\n  \"gold_parse\": \"Interval[]{2017-08-08 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 04.09.2017 16:18\",\n  \"ref_time\": \"2017-08-21T13:37:30\",\n  \"gold_parse\": \"Time[]{2017-09-04 16:18 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 26.08. zwischen 09.00 - 13.00 Uhr\",\n  \"ref_time\": \"2017-07-06T13:30:57\",\n  \"gold_parse\": \"Interval[]{2017-08-26 09:00 (X/X) - 2017-08-26 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.-13.09.17\",\n  \"ref_time\": \"2017-08-28T11:51:23\",\n  \"gold_parse\": \"Interval[]{2017-09-11 X:X (X/X) - 2017-09-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Jun 21 Wed at 1105am\",\n  \"ref_time\": \"2017-06-25T17:46:46\",\n  \"gold_parse\": \"Time[]{2017-06-21 11:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.10.2017 am frühen Abend\",\n  \"ref_time\": \"2017-09-07T06:42:40\",\n  \"gold_parse\": \"Time[]{2017-10-27 X:X (X/earlyevening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.11.-24.11.17\",\n  \"ref_time\": \"2017-11-17T12:58:04\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 21.10.\",\n  \"ref_time\": \"2017-10-06T12:36:24\",\n  \"gold_parse\": \"Time[]{2017-10-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Dienstag späten Abend\",\n  \"ref_time\": \"2017-06-09T13:36:53\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10. 2017 (Montag 21:55 - 00:25\",\n  \"ref_time\": \"2017-09-20T12:36:33\",\n  \"gold_parse\": \"Interval[]{2017-10-23 21:55 (X/X) - 2017-10-24 00:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag 26.09.2017 15:51\",\n  \"ref_time\": \"2017-09-14T08:49:54\",\n  \"gold_parse\": \"Time[]{2017-09-26 15:51 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 19.10.2017 bis 20.10.2017\",\n  \"ref_time\": \"2017-07-04T12:16:06\",\n  \"gold_parse\": \"Interval[]{2017-10-19 X:X (X/X) - 2017-10-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.10.-26.10.\",\n  \"ref_time\": \"2017-10-02T08:18:34\",\n  \"gold_parse\": \"Interval[]{2017-10-23 X:X (X/X) - 2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.09. frühestens 18 Uhr\",\n  \"ref_time\": \"2017-09-06T09:02:24\",\n  \"gold_parse\": \"Interval[]{2017-09-13 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.11.\",\n  \"ref_time\": \"2017-09-25T14:34:50\",\n  \"gold_parse\": \"Time[]{2017-11-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sun 28 May 10:45 - 11:35\",\n  \"ref_time\": \"2017-05-22T12:28:30\",\n  \"gold_parse\": \"Interval[]{2017-05-28 10:45 (X/X) - 2017-05-28 11:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Montag 21.08\",\n  \"ref_time\": \"2017-08-15T08:28:26\",\n  \"gold_parse\": \"Time[]{2017-08-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Mi., den 18.10. am Abend (18-19 Uhr\",\n  \"ref_time\": \"2017-10-10T15:10:50\",\n  \"gold_parse\": \"Interval[]{2017-10-18 18:00 (X/X) - 2017-10-18 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"02.07.2017 Nachmittags\",\n  \"ref_time\": \"2017-06-01T06:42:27\",\n  \"gold_parse\": \"Time[]{2017-07-02 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.10.2017 bis:     10:00 Uhr\",\n  \"ref_time\": \"2017-10-20T08:26:48\",\n  \"gold_parse\": \"Interval[]{None - 2017-10-24 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 15.05.2017 ab 08:00 Uhr ab 19:00 Uhr\",\n  \"ref_time\": \"2017-05-10T14:06:17\",\n  \"gold_parse\": \"Interval[]{2017-05-15 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.09.17 ab 19:00\",\n  \"ref_time\": \"2017-09-08T13:34:03\",\n  \"gold_parse\": \"Interval[]{2017-09-26 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18.11 11:20\",\n  \"ref_time\": \"2017-11-16T18:17:55\",\n  \"gold_parse\": \"Time[]{2017-11-18 11:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.08.17 ab 05:34\",\n  \"ref_time\": \"2017-08-14T11:45:02\",\n  \"gold_parse\": \"Time[]{2017-08-16 05:34 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Kommenden Freitag morgens\",\n  \"ref_time\": \"2017-11-18T09:52:11\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Donnerstag, den 16.11. um 17.30h\",\n  \"ref_time\": \"2017-11-09T10:40:26\",\n  \"gold_parse\": \"Time[]{2017-11-16 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.08.2017 10.00 Uhr\",\n  \"ref_time\": \"2017-08-28T09:03:54\",\n  \"gold_parse\": \"Time[]{2017-08-29 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07.2017 22:10 Uhr\",\n  \"ref_time\": \"2017-06-23T12:40:07\",\n  \"gold_parse\": \"Time[]{2017-07-20 22:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 15.12. 18:50 Uhr\",\n  \"ref_time\": \"2017-11-23T14:13:17\",\n  \"gold_parse\": \"Time[]{2017-12-15 18:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 01.08.2017 ab 17:30 Uhr\",\n  \"ref_time\": \"2017-07-24T10:14:55\",\n  \"gold_parse\": \"Time[]{2017-08-01 17:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017\",\n  \"ref_time\": \"2017-09-26T13:44:07\",\n  \"gold_parse\": \"Time[]{2017-10-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.11. - 23.11.\",\n  \"ref_time\": \"2017-11-14T13:48:38\",\n  \"gold_parse\": \"Interval[]{2017-11-21 X:X (X/X) - 2017-11-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.06. ab 17 Uhr\",\n  \"ref_time\": \"2017-05-30T11:06:44\",\n  \"gold_parse\": \"Interval[]{2017-06-07 17:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, den 20.09. morgens\",\n  \"ref_time\": \"2017-09-13T07:26:35\",\n  \"gold_parse\": \"Time[]{2017-09-20 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"23.09 abends\",\n  \"ref_time\": \"2017-09-06T12:17:42\",\n  \"gold_parse\": \"Time[]{2017-09-23 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11.2017 17:00 Uhr\",\n  \"ref_time\": \"2017-10-11T10:08:05\",\n  \"gold_parse\": \"Time[]{2017-11-27 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo, 20.11. ca. 18.00Uhr\",\n  \"ref_time\": \"2017-11-19T04:44:14\",\n  \"gold_parse\": \"Time[]{2017-11-20 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12./13.\",\n  \"ref_time\": \"2017-11-15T07:48:33\",\n  \"gold_parse\": \"Interval[]{2017-12-12 X:X (X/X) - 2017-12-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von heute 19. - 21.06.2017\",\n  \"ref_time\": \"2017-06-19T11:32:50\",\n  \"gold_parse\": \"Interval[]{2017-06-19 X:X (X/X) - 2017-06-21 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.11.2017, 15h50\",\n  \"ref_time\": \"2017-11-09T16:40:57\",\n  \"gold_parse\": \"Time[]{2017-11-13 15:50 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.07.2017\",\n  \"ref_time\": \"2017-06-19T11:51:01\",\n  \"gold_parse\": \"Time[]{2017-07-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 31. ca 17 Uhr\",\n  \"ref_time\": \"2017-11-15T18:32:47\",\n  \"gold_parse\": \"Time[]{2017-11-30 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Jan 8, 2018 0905-1340\",\n  \"ref_time\": \"2017-11-29T14:38:44\",\n  \"gold_parse\": \"Interval[]{2018-01-08 09:05 (X/X) - 2018-01-08 13:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 16.08.17 um ca. 06:30 Uhr\",\n  \"ref_time\": \"2017-08-11T08:53:53\",\n  \"gold_parse\": \"Time[]{2017-08-16 06:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on September 23\",\n  \"ref_time\": \"2017-08-30T11:54:52\",\n  \"gold_parse\": \"Time[]{2017-09-23 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mo, 20.11. ca. 14.00Uhr\",\n  \"ref_time\": \"2017-11-19T04:44:14\",\n  \"gold_parse\": \"Time[]{2017-11-20 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen\",\n  \"ref_time\": \"2017-11-23T11:28:58\",\n  \"gold_parse\": \"Time[]{2017-11-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di, 21.11.17 10:49\",\n  \"ref_time\": \"2017-11-16T12:19:19\",\n  \"gold_parse\": \"Time[]{2017-11-21 10:49 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"14-15.11.2017\",\n  \"ref_time\": \"2017-11-09T08:41:57\",\n  \"gold_parse\": \"Interval[]{2017-11-14 X:X (X/X) - 2017-11-15 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"15.05.\",\n  \"ref_time\": \"2017-05-11T12:18:59\",\n  \"gold_parse\": \"Time[]{2017-05-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Thursday 21st in the late afternoon\",\n  \"ref_time\": \"2017-09-12T10:04:23\",\n  \"gold_parse\": \"Time[]{2017-09-21 X:X (X/lateafternoon)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"23.06.2017 ca. 10Uhr morgens\",\n  \"ref_time\": \"2017-06-02T09:41:12\",\n  \"gold_parse\": \"Time[]{2017-06-23 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"tomorrow evening Tue 28. Nov 2017\",\n  \"ref_time\": \"2017-11-27T19:37:43\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Sa. 15.07.2017\",\n  \"ref_time\": \"2017-07-13T20:48:02\",\n  \"gold_parse\": \"Time[]{2017-07-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sa. 09.12.2017 ca. 13:00 Uhr\",\n  \"ref_time\": \"2017-11-28T14:05:46\",\n  \"gold_parse\": \"Time[]{2017-12-09 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.09. so spät wie möglich\",\n  \"ref_time\": \"2017-09-07T10:38:37\",\n  \"gold_parse\": \"Time[]{2017-09-21 X:X (X/last)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24 - 29\",\n  \"ref_time\": \"2017-08-30T10:02:11\",\n  \"gold_parse\": \"Interval[]{2017-09-24 X:X (X/X) - 2017-09-29 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"25.11.2017 zwischen 07:00 - 11:00 Uhr\",\n  \"ref_time\": \"2017-11-20T09:05:29\",\n  \"gold_parse\": \"Interval[]{2017-11-25 07:00 (X/X) - 2017-11-25 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.11.17 20:32\",\n  \"ref_time\": \"2017-11-06T08:48:13\",\n  \"gold_parse\": \"Time[]{2017-11-09 20:32 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16 Nov 2330\",\n  \"ref_time\": \"2017-08-25T12:15:35\",\n  \"gold_parse\": \"Time[]{2017-11-16 23:30 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"16.10-22.10.\",\n  \"ref_time\": \"2017-06-22T09:26:04\",\n  \"gold_parse\": \"Interval[]{2017-10-16 X:X (X/X) - 2017-10-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag 20.6. 1030-1215\",\n  \"ref_time\": \"2017-06-04T16:33:48\",\n  \"gold_parse\": \"Interval[]{2017-06-20 10:30 (X/X) - 2017-06-20 12:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morning of Wednesday, June 21st\",\n  \"ref_time\": \"2017-06-15T15:47:32\",\n  \"gold_parse\": \"Time[]{2017-06-21 X:X (X/morning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"nachmittag\",\n  \"ref_time\": \"2017-08-24T09:54:37\",\n  \"gold_parse\": \"Time[]{2017-08-25 X:X (X/afternoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.\",\n  \"ref_time\": \"2017-07-06T16:48:23\",\n  \"gold_parse\": \"Time[]{2017-07-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.06.2017 früh\",\n  \"ref_time\": \"2017-06-21T07:13:28\",\n  \"gold_parse\": \"Time[]{2017-06-22 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"25.10.2017 18:00 Uhr\",\n  \"ref_time\": \"2017-10-13T13:11:51\",\n  \"gold_parse\": \"Time[]{2017-10-25 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on the 5th Night\",\n  \"ref_time\": \"2017-10-24T12:08:03\",\n  \"gold_parse\": \"Time[]{2017-11-05 X:X (X/night)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag 18.09\",\n  \"ref_time\": \"2017-09-12T09:45:16\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nov 6th - Nov 8th\",\n  \"ref_time\": \"2017-10-18T09:02:32\",\n  \"gold_parse\": \"Interval[]{2017-11-06 X:X (X/X) - 2017-11-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"30.07.2017 Ab 20:00 Uhr\",\n  \"ref_time\": \"2017-06-19T11:51:01\",\n  \"gold_parse\": \"Interval[]{2017-07-30 20:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19 Uhr\",\n  \"ref_time\": \"2017-11-06T15:24:40\",\n  \"gold_parse\": \"Time[]{2017-11-09 19:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 20. - 22.11.2017\",\n  \"ref_time\": \"2017-11-13T13:35:03\",\n  \"gold_parse\": \"Interval[]{2017-11-20 X:X (X/X) - 2017-11-22 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Nacht vom 05.11.\",\n  \"ref_time\": \"2017-11-01T10:24:11\",\n  \"gold_parse\": \"Time[]{2017-11-05 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"18:50 05/09 (tomorrow\",\n  \"ref_time\": \"2017-09-04T10:25:15\",\n  \"gold_parse\": \"Time[]{2017-09-05 18:50 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"1.Jun at 6:34am.\",\n  \"ref_time\": \"2017-05-29T15:33:01\",\n  \"gold_parse\": \"Time[]{2017-06-01 06:34 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"from 3. to 5.10.2017\",\n  \"ref_time\": \"2017-10-02T06:20:20\",\n  \"gold_parse\": \"Interval[]{2017-10-03 X:X (X/X) - 2017-10-05 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"18th\",\n  \"ref_time\": \"2017-06-20T17:05:49\",\n  \"gold_parse\": \"Time[]{2017-08-18 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"June 18th\",\n  \"ref_time\": \"2017-06-12T08:39:41\",\n  \"gold_parse\": \"Time[]{2017-06-18 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag, 28.08.2017 um 10:55h\",\n  \"ref_time\": \"2017-07-24T15:15:56\",\n  \"gold_parse\": \"Time[]{2017-08-28 10:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on July 11 at 0705am\",\n  \"ref_time\": \"2017-07-05T09:23:08\",\n  \"gold_parse\": \"Time[]{2017-07-11 07:05 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 18.7 vormittags (vor 10:00\",\n  \"ref_time\": \"2017-07-07T12:10:14\",\n  \"gold_parse\": \"Interval[]{None - 2017-07-18 10:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag 22:40 - 1:10\",\n  \"ref_time\": \"2017-07-03T14:26:04\",\n  \"gold_parse\": \"Interval[]{2017-07-09 22:40 (X/X) - 2017-07-10 01:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24.10.2017\",\n  \"ref_time\": \"2017-10-17T12:57:20\",\n  \"gold_parse\": \"Time[]{2017-10-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fr. 01.12.2017 ca. 14:00 Uhr\",\n  \"ref_time\": \"2017-11-22T09:23:28\",\n  \"gold_parse\": \"Time[]{2017-12-01 14:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Freitagmorgen 21/07/17\",\n  \"ref_time\": \"2017-07-18T19:11:47\",\n  \"gold_parse\": \"Time[]{2017-07-21 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi. 25.10.2017\",\n  \"ref_time\": \"2017-10-11T10:05:05\",\n  \"gold_parse\": \"Time[]{2017-10-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fri 19 May 18:40 - 19:55\",\n  \"ref_time\": \"2017-05-11T17:16:49\",\n  \"gold_parse\": \"Interval[]{2017-05-19 18:40 (X/X) - 2017-05-19 19:55 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"the 11th early morning at around 7.30/8am\",\n  \"ref_time\": \"2017-09-27T19:18:24\",\n  \"gold_parse\": \"Interval[]{2017-10-11 07:30 (X/X) - 2017-10-11 08:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.11.2017 um 17:00 Uhr\",\n  \"ref_time\": \"2017-10-06T07:20:20\",\n  \"gold_parse\": \"Time[]{2017-11-27 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 29.05. ab ca. 8:00-9:00 Uhr\",\n  \"ref_time\": \"2017-05-23T10:07:56\",\n  \"gold_parse\": \"Interval[]{2017-05-29 08:00 (X/X) - 2017-05-29 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.Juni morgens\",\n  \"ref_time\": \"2017-06-06T12:00:56\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 25.07.- 26.07.17\",\n  \"ref_time\": \"2017-07-20T07:16:48\",\n  \"gold_parse\": \"Interval[]{2017-07-25 X:X (X/X) - 2017-07-26 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 22. bis 23. August 17-18 Uhr\",\n  \"ref_time\": \"2017-08-14T09:16:16\",\n  \"gold_parse\": \"Interval[]{2017-08-23 17:00 (X/X) - 2017-08-23 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.09.2017 um 15:00 Uhr\",\n  \"ref_time\": \"2017-08-31T14:28:32\",\n  \"gold_parse\": \"Time[]{2017-09-15 15:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.12.17 17:00\",\n  \"ref_time\": \"2017-11-13T10:34:59\",\n  \"gold_parse\": \"Time[]{2017-12-05 17:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.10.2017 19:10 - 22:00\",\n  \"ref_time\": \"2017-10-09T10:12:29\",\n  \"gold_parse\": \"Interval[]{2017-10-26 19:10 (X/X) - 2017-10-26 22:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"11.08\",\n  \"ref_time\": \"2017-07-21T07:43:24\",\n  \"gold_parse\": \"Time[]{2017-08-11 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.6.\",\n  \"ref_time\": \"2017-06-06T10:24:43\",\n  \"gold_parse\": \"Time[]{2017-06-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 22. Bis 23. November\",\n  \"ref_time\": \"2017-11-15T11:37:40\",\n  \"gold_parse\": \"Interval[]{2017-11-22 X:X (X/X) - 2017-11-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Monday 24th\",\n  \"ref_time\": \"2017-07-17T12:57:50\",\n  \"gold_parse\": \"Time[]{2017-07-24 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 27.09.2017 ab 07:00 Uhr\",\n  \"ref_time\": \"2017-09-20T10:34:47\",\n  \"gold_parse\": \"Interval[]{2017-09-27 07:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi 02 Aug 2017 23:50 - 05:25\",\n  \"ref_time\": \"2017-06-28T12:06:16\",\n  \"gold_parse\": \"Interval[]{2017-08-02 23:50 (X/X) - 2017-08-03 05:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi. 14. Jun. 20:13\",\n  \"ref_time\": \"2017-06-09T07:26:04\",\n  \"gold_parse\": \"Time[]{2017-06-14 20:13 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"16.9\",\n  \"ref_time\": \"2017-06-13T14:44:46\",\n  \"gold_parse\": \"Time[]{2017-09-16 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.02.2018\",\n  \"ref_time\": \"2017-10-17T05:56:05\",\n  \"gold_parse\": \"Time[]{2018-02-03 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29.09.2017 14:03\",\n  \"ref_time\": \"2017-09-19T06:36:35\",\n  \"gold_parse\": \"Time[]{2017-09-29 14:03 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Am 08.09. Frühflieger\",\n  \"ref_time\": \"2017-08-15T13:44:08\",\n  \"gold_parse\": \"Time[]{2017-09-08 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"von Montag, 11.09. bis Donnerstag 14.09.\",\n  \"ref_time\": \"2017-09-08T09:49:10\",\n  \"gold_parse\": \"Interval[]{2017-09-11 X:X (X/X) - 2017-09-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6 Nov 2359\",\n  \"ref_time\": \"2017-08-25T12:23:01\",\n  \"gold_parse\": \"Time[]{2017-11-06 23:59 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 14.09. ab 15 Uhr\",\n  \"ref_time\": \"2017-09-06T20:00:36\",\n  \"gold_parse\": \"Interval[]{2017-09-14 15:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo 09.10.17 06:20\",\n  \"ref_time\": \"2017-09-29T08:46:55\",\n  \"gold_parse\": \"Time[]{2017-10-09 06:20 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.07 um 18:25\",\n  \"ref_time\": \"2017-06-28T11:22:47\",\n  \"gold_parse\": \"Time[]{2017-07-20 18:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.07.17 (ab 18:00 Uhr\",\n  \"ref_time\": \"2017-07-05T08:43:35\",\n  \"gold_parse\": \"Interval[]{2017-07-06 18:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sunday December 3rd at 6pm.\",\n  \"ref_time\": \"2017-10-17T15:21:29\",\n  \"gold_parse\": \"Time[]{2017-12-03 18:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10.11. um ca. 18:00 Uhr\",\n  \"ref_time\": \"2017-11-08T14:01:10\",\n  \"gold_parse\": \"Time[]{2017-11-10 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"morgen ca 16:00h\",\n  \"ref_time\": \"2017-05-29T09:52:30\",\n  \"gold_parse\": \"Time[]{2017-05-30 16:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Di. 03.10.2017 19:05\",\n  \"ref_time\": \"2017-08-22T10:01:21\",\n  \"gold_parse\": \"Time[]{2017-10-03 19:05 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 12.10.2017 um 09.50\",\n  \"ref_time\": \"2017-10-09T10:54:22\",\n  \"gold_parse\": \"Time[]{2017-10-12 09:50 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag, 2. Juli abends\",\n  \"ref_time\": \"2017-05-27T07:50:19\",\n  \"gold_parse\": \"Time[]{2017-06-02 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"vom 13.09., 12:00 Uhr,  bis 14.09., 08:00 Uhr\",\n  \"ref_time\": \"2017-09-11T15:46:17\",\n  \"gold_parse\": \"Interval[]{2017-09-13 12:00 (X/X) - 2017-09-14 08:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"17 JUN 08:00\",\n  \"ref_time\": \"2017-05-23T09:39:45\",\n  \"gold_parse\": \"Time[]{2017-06-17 08:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Fri. 22 Sept. 16:25\",\n  \"ref_time\": \"2017-09-08T07:58:44\",\n  \"gold_parse\": \"Time[]{2017-09-22 16:25 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.9. um 11:00 Uhr\",\n  \"ref_time\": \"2017-09-01T09:36:44\",\n  \"gold_parse\": \"Time[]{2017-09-14 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 19.9. ab 18.25\",\n  \"ref_time\": \"2017-09-12T18:13:07\",\n  \"gold_parse\": \"Interval[]{2017-09-19 18:25 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20.06.2017 12:47 Uhr\",\n  \"ref_time\": \"2017-06-13T09:49:31\",\n  \"gold_parse\": \"Time[]{2017-06-20 12:47 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mi 13. Sep 09:30\",\n  \"ref_time\": \"2017-07-25T12:26:26\",\n  \"gold_parse\": \"Time[]{2017-09-13 09:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo. 11 Sept. 21:00\",\n  \"ref_time\": \"2017-09-04T16:13:06\",\n  \"gold_parse\": \"Time[]{2017-09-11 21:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13.06\",\n  \"ref_time\": \"2017-06-06T08:37:37\",\n  \"gold_parse\": \"Time[]{2017-06-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"July 26th\",\n  \"ref_time\": \"2017-06-26T09:49:16\",\n  \"gold_parse\": \"Time[]{2017-07-26 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"11 loka 09:25\",\n  \"ref_time\": \"2017-09-13T14:48:21\",\n  \"gold_parse\": \"Time[]{2017-10-11 09:25 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"von 21-23. Juni\",\n  \"ref_time\": \"2017-05-30T13:24:23\",\n  \"gold_parse\": \"Interval[]{2017-06-21 X:X (X/X) - 2017-06-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.09.\",\n  \"ref_time\": \"2017-09-01T15:47:14\",\n  \"gold_parse\": \"Time[]{2017-09-07 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.11 ab 19:00 Uhr\",\n  \"ref_time\": \"2017-10-26T10:37:49\",\n  \"gold_parse\": \"Interval[]{2017-11-12 19:00 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.09.-07.09.2017 19:40 Uhr\",\n  \"ref_time\": \"2017-08-23T09:05:20\",\n  \"gold_parse\": \"Time[]{2017-09-07 19:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Friday, 15 September 2017 13:55\",\n  \"ref_time\": \"2017-09-04T06:55:16\",\n  \"gold_parse\": \"Time[]{2017-09-15 13:55 (X/X)}\",\n  \"language\": \"other\"\n },\n {\n  \"text\": \"am 30.8. 18:00\",\n  \"ref_time\": \"2017-08-24T06:12:14\",\n  \"gold_parse\": \"Time[]{2017-08-30 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.06 07:26\",\n  \"ref_time\": \"2017-05-23T07:49:54\",\n  \"gold_parse\": \"Time[]{2017-06-06 07:26 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"heute\",\n  \"ref_time\": \"2017-08-25T05:57:35\",\n  \"gold_parse\": \"Time[]{2017-08-25 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on Tuesday evening Nov 28th\",\n  \"ref_time\": \"2017-10-26T08:50:53\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"29.11.2017 ab 18:30 Uhr\",\n  \"ref_time\": \"2017-10-11T10:35:19\",\n  \"gold_parse\": \"Interval[]{2017-11-29 18:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21/09 1810-2020\",\n  \"ref_time\": \"2017-08-11T06:30:46\",\n  \"gold_parse\": \"Interval[]{2017-09-21 18:10 (X/X) - 2017-09-21 20:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"03.11.2017 13:25 - 14:23 Uhr\",\n  \"ref_time\": \"2017-10-27T13:27:35\",\n  \"gold_parse\": \"Interval[]{2017-11-03 13:25 (X/X) - 2017-11-03 14:23 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.10.2017\",\n  \"ref_time\": \"2017-10-16T14:51:25\",\n  \"gold_parse\": \"Time[]{2017-10-27 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.09. 8:15\",\n  \"ref_time\": \"2017-09-13T12:05:22\",\n  \"gold_parse\": \"Time[]{2017-09-26 08:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13AUG 09:10\",\n  \"ref_time\": \"2017-05-19T08:51:30\",\n  \"gold_parse\": \"Time[]{2017-08-13 09:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"on 06/08 evening\",\n  \"ref_time\": \"2017-07-31T09:04:05\",\n  \"gold_parse\": \"Time[]{2017-08-06 X:X (X/evening)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Montag, 28.08.17\",\n  \"ref_time\": \"2017-05-23T12:46:25\",\n  \"gold_parse\": \"Time[]{2017-08-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 04.12.2017 18:10\",\n  \"ref_time\": \"2017-11-29T10:51:43\",\n  \"gold_parse\": \"Time[]{2017-12-04 18:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"tomorrow 18th November at 13.00\",\n  \"ref_time\": \"2017-11-17T21:08:07\",\n  \"gold_parse\": \"Time[]{2017-11-18 13:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Monday 19.06\",\n  \"ref_time\": \"2017-05-24T08:15:22\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"20.11.\",\n  \"ref_time\": \"2017-11-17T15:03:42\",\n  \"gold_parse\": \"Time[]{2017-11-20 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"May 19 at 1120pm\",\n  \"ref_time\": \"2017-05-17T06:22:34\",\n  \"gold_parse\": \"Time[]{2017-05-19 23:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"10. Oktober 19:10 h\",\n  \"ref_time\": \"2017-08-14T13:56:10\",\n  \"gold_parse\": \"Time[]{2017-10-10 19:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.11.2017 ca. ab 17:30Uhr\",\n  \"ref_time\": \"2017-10-19T15:05:52\",\n  \"gold_parse\": \"Interval[]{2017-11-07 17:30 (X/X) - None}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"20 october\",\n  \"ref_time\": \"2017-10-19T08:47:39\",\n  \"gold_parse\": \"Time[]{2017-10-20 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"14.12.17\",\n  \"ref_time\": \"2017-11-27T11:14:03\",\n  \"gold_parse\": \"Time[]{2017-12-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sonntag, den 19.11.2017\",\n  \"ref_time\": \"2017-09-26T13:42:07\",\n  \"gold_parse\": \"Time[]{2017-11-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 6.9.\",\n  \"ref_time\": \"2017-08-16T11:00:02\",\n  \"gold_parse\": \"Time[]{2017-09-06 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"early morning on Tuesday 12.12\",\n  \"ref_time\": \"2017-11-29T09:35:29\",\n  \"gold_parse\": \"Time[]{2017-12-12 X:X (X/earlymorning)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Fri 11.8\",\n  \"ref_time\": \"2017-08-08T14:50:05\",\n  \"gold_parse\": \"Time[]{2017-08-11 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Mittwoch, 22.11.2017 16:40 Uhr\",\n  \"ref_time\": \"2017-11-08T10:29:19\",\n  \"gold_parse\": \"Time[]{2017-11-22 16:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am nächsten Vormittag\",\n  \"ref_time\": \"2017-11-14T12:16:22\",\n  \"gold_parse\": \"Time[]{2017-12-06 X:X (X/earlynoon)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21/10 02:10\",\n  \"ref_time\": \"2017-08-07T11:38:37\",\n  \"gold_parse\": \"Time[]{2017-10-21 02:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12/24 02:10\",\n  \"ref_time\": \"2022-11-30T11:38:37\",\n  \"gold_parse\": \"Time[]{2022-12-24 02:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"3/24\",\n  \"ref_time\": \"2022-11-30T11:38:37\",\n  \"gold_parse\": \"Time[]{2023-03-24 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"10/19\",\n  \"ref_time\": \"2022-11-30T11:38:37\",\n  \"gold_parse\": \"Time[]{2023-10-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6/14\",\n  \"ref_time\": \"2022-11-30T11:38:37\",\n  \"gold_parse\": \"Time[]{2023-06-14 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"7/17\",\n  \"ref_time\": \"2022-11-30T11:38:37\",\n  \"gold_parse\": \"Time[]{2023-07-17 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05-06.10.17\",\n  \"ref_time\": \"2017-10-04T14:05:51\",\n  \"gold_parse\": \"Interval[]{2017-10-05 X:X (X/X) - 2017-10-06 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 11.10. morgens\",\n  \"ref_time\": \"2017-09-28T15:30:35\",\n  \"gold_parse\": \"Time[]{2017-10-11 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 18.9.2017\",\n  \"ref_time\": \"2017-09-07T07:08:57\",\n  \"gold_parse\": \"Time[]{2017-09-18 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Oct. 11th - October 13th\",\n  \"ref_time\": \"2017-09-27T18:50:13\",\n  \"gold_parse\": \"Interval[]{2017-10-11 X:X (X/X) - 2017-10-13 X:X (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"1.9. 17:00 the earliest\",\n  \"ref_time\": \"2017-07-31T17:32:42\",\n  \"gold_parse\": \"Interval[]{2017-09-01 17:00 (X/X) - None}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"am 22.06. um 13:00 Uhr\",\n  \"ref_time\": \"2017-06-19T16:33:33\",\n  \"gold_parse\": \"Time[]{2017-06-22 13:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"12.9. 19.06 Uhr\",\n  \"ref_time\": \"2017-09-06T16:28:50\",\n  \"gold_parse\": \"Time[]{2017-09-12 19:06 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"one night\",\n  \"ref_time\": \"2017-09-06T05:40:32\",\n  \"gold_parse\": \"Duration[]{1 nights}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"13.10.2017\",\n  \"ref_time\": \"2017-10-12T07:50:21\",\n  \"gold_parse\": \"Time[]{2017-10-13 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"13 JUL 13:30\",\n  \"ref_time\": \"2017-06-29T08:25:05\",\n  \"gold_parse\": \"Time[]{2017-07-13 13:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19th May 20:20\",\n  \"ref_time\": \"2017-05-10T11:09:25\",\n  \"gold_parse\": \"Time[]{2017-05-19 20:20 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"19.05.2017 11:00Uhr\",\n  \"ref_time\": \"2017-05-15T12:41:41\",\n  \"gold_parse\": \"Time[]{2017-05-19 11:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.-09.08.2017\",\n  \"ref_time\": \"2017-07-18T08:02:41\",\n  \"gold_parse\": \"Interval[]{2017-08-07 X:X (X/X) - 2017-08-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mittwoch, 04.10.2017 09:00 Uhr\",\n  \"ref_time\": \"2017-10-02T13:01:23\",\n  \"gold_parse\": \"Time[]{2017-10-04 09:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Mo., 25.09.2017 11:35\",\n  \"ref_time\": \"2017-09-07T12:32:56\",\n  \"gold_parse\": \"Time[]{2017-09-25 11:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"07.09-08.09\",\n  \"ref_time\": \"2017-09-06T09:31:34\",\n  \"gold_parse\": \"Interval[]{2017-09-07 X:X (X/X) - 2017-09-08 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"28.11.\",\n  \"ref_time\": \"2017-10-30T16:22:20\",\n  \"gold_parse\": \"Time[]{2017-11-28 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am Dienstag, 11.07. morgens\",\n  \"ref_time\": \"2017-07-05T08:46:38\",\n  \"gold_parse\": \"Time[]{2017-07-11 X:X (X/morning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.08. - 09.09.2017\",\n  \"ref_time\": \"2017-07-31T12:34:08\",\n  \"gold_parse\": \"Interval[]{2017-08-26 X:X (X/X) - 2017-09-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Sep 7th, 9am - Sep 7th, 11pm\",\n  \"ref_time\": \"2017-07-12T07:17:33\",\n  \"gold_parse\": \"Interval[]{2017-09-07 09:00 (X/X) - 2017-09-07 23:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Vom 11.-12.12.2017\",\n  \"ref_time\": \"2017-11-20T06:53:47\",\n  \"gold_parse\": \"Interval[]{2017-12-11 X:X (X/X) - 2017-12-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"21.09 Uhr\",\n  \"ref_time\": \"2017-10-11T12:42:56\",\n  \"gold_parse\": \"Time[]{2017-10-18 21:09 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19. Juni\",\n  \"ref_time\": \"2017-06-04T16:39:54\",\n  \"gold_parse\": \"Time[]{2017-06-19 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Dienstag, 31.10.2017 15:25\",\n  \"ref_time\": \"2017-10-26T11:53:15\",\n  \"gold_parse\": \"Time[]{2017-10-31 15:25 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.08. früh morgens\",\n  \"ref_time\": \"2017-08-16T10:21:36\",\n  \"gold_parse\": \"Time[]{2017-08-26 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.11.2017 um 18:00 - 19:10\",\n  \"ref_time\": \"2017-10-19T08:51:43\",\n  \"gold_parse\": \"Interval[]{2017-11-19 18:00 (X/X) - 2017-11-19 19:10 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"27.11.2017 06:40 Uhr\",\n  \"ref_time\": \"2017-11-10T08:30:02\",\n  \"gold_parse\": \"Time[]{2017-11-27 06:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"09.06. bis 12.06.2017\",\n  \"ref_time\": \"2017-05-12T13:22:07\",\n  \"gold_parse\": \"Interval[]{2017-06-09 X:X (X/X) - 2017-06-12 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"6:40am THURSDAY, 29th\",\n  \"ref_time\": \"2017-06-26T10:34:18\",\n  \"gold_parse\": \"Time[]{2017-06-29 06:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"Abends\",\n  \"ref_time\": \"2017-06-01T06:42:27\",\n  \"gold_parse\": \"Time[]{2017-07-02 X:X (X/evening)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"04 JUN 09:35\",\n  \"ref_time\": \"2017-05-17T09:16:24\",\n  \"gold_parse\": \"Time[]{2017-06-04 09:35 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"29. September 18 Uhr\",\n  \"ref_time\": \"2017-09-15T16:06:25\",\n  \"gold_parse\": \"Time[]{2017-09-29 18:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"am 16.10.2017 ersten\",\n  \"ref_time\": \"2017-10-09T09:54:25\",\n  \"gold_parse\": \"Time[]{2017-10-16 X:X (X/first)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"May 23\",\n  \"ref_time\": \"2017-05-21T20:46:09\",\n  \"gold_parse\": \"Time[]{2017-05-23 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"05.11.2017 15:40\",\n  \"ref_time\": \"2017-10-16T08:39:23\",\n  \"gold_parse\": \"Time[]{2017-11-06 15:40 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"24 Aug 1915-2015\",\n  \"ref_time\": \"2017-08-12T16:43:06\",\n  \"gold_parse\": \"Interval[]{2017-08-24 19:15 (X/X) - 2017-08-24 20:15 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"July 7th 7-9am\",\n  \"ref_time\": \"2017-07-03T12:40:32\",\n  \"gold_parse\": \"Interval[]{2017-07-07 07:00 (X/X) - 2017-07-07 09:00 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"2 Nächte\",\n  \"ref_time\": \"2017-06-28T09:25:50\",\n  \"gold_parse\": \"Interval[]{2017-06-28 X:X (X/X) - 2017-06-30 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Von 8.11 - 9.11\",\n  \"ref_time\": \"2017-11-07T13:20:43\",\n  \"gold_parse\": \"Interval[]{2017-11-08 X:X (X/X) - 2017-11-09 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"31.05.\",\n  \"ref_time\": \"2017-05-23T05:36:16\",\n  \"gold_parse\": \"Time[]{2017-05-31 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"03.09 - 04.09\",\n  \"ref_time\": \"2017-09-01T06:41:28\",\n  \"gold_parse\": \"Interval[]{2017-09-03 X:X (X/X) - 2017-09-04 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"15.10.\",\n  \"ref_time\": \"2017-07-14T15:22:48\",\n  \"gold_parse\": \"Time[]{2017-10-15 X:X (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"06.12.2017 21:15\",\n  \"ref_time\": \"2017-10-27T11:38:34\",\n  \"gold_parse\": \"Time[]{2017-12-06 21:15 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"19.02.2018 07:00 Uhr\",\n  \"ref_time\": \"2017-10-12T12:16:31\",\n  \"gold_parse\": \"Time[]{2018-02-19 07:00 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"Fri 18 Aug 1500-1735\",\n  \"ref_time\": \"2017-07-24T07:50:25\",\n  \"gold_parse\": \"Interval[]{2017-08-18 15:00 (X/X) - 2017-08-18 17:35 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"26/09 1210-1340\",\n  \"ref_time\": \"2017-09-15T16:21:39\",\n  \"gold_parse\": \"Interval[]{2017-09-26 12:10 (X/X) - 2017-09-26 13:40 (X/X)}\",\n  \"language\": \"en\"\n },\n {\n  \"text\": \"27.10.2017 18:30 Uhr\",\n  \"ref_time\": \"2017-10-02T11:09:18\",\n  \"gold_parse\": \"Time[]{2017-10-27 18:30 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"26.07.17 13:09\",\n  \"ref_time\": \"2017-07-24T09:55:47\",\n  \"gold_parse\": \"Time[]{2017-07-26 13:09 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"from Jul24 to Jul 25th\",\n  \"ref_time\": \"2017-07-18T18:50:36\",\n  \"gold_parse\": \"Interval[]{2017-07-24 X:X (X/X) - 2017-07-25 X:X (X/X)}\",\n  \"language\": \"en\"\n }\n]\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = python -msphinx\nSPHINXPROJ    = ctparse\nSOURCEDIR     = .\nBUILDDIR      = _build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n"
  },
  {
    "path": "docs/authors.rst",
    "content": ".. include:: ../AUTHORS.rst\n"
  },
  {
    "path": "docs/conf.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n#\n# ctparse documentation build configuration file, created by\n# sphinx-quickstart on Fri Jun  9 13:47:02 2017.\n#\n# This file is execfile()d with the current directory set to its\n# containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\n# If extensions (or modules to document with autodoc) are in another\n# directory, add these directories to sys.path here. If the directory is\n# relative to the documentation root, use os.path.abspath to make it\n# absolute, like shown here.\n#\nimport os\nimport sys\nsys.path.insert(0, os.path.abspath('..'))\n\nimport ctparse  # noqa\n\n# -- General configuration ---------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx.ext.napoleon']\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of string:\n#\n# source_suffix = ['.rst', '.md']\nsource_suffix = '.rst'\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# General information about the project.\nproject = u'ctparse - Parse natural language time expressions'\ncopyright = u\"2018, Sebastian Mika, Comtravo GmbH\"\nauthor = u\"Sebastian Mika - Comtravo\"\n\n# The version info for the project you're documenting, acts as replacement\n# for |version| and |release|, also used in various other places throughout\n# the built documents.\n#\n# The short X.Y version.\nversion = ctparse.__version__\n# The full version, including alpha/beta/rc tags.\nrelease = ctparse.__version__\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = None\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This patterns also effect to html_static_path and html_extra_path\nexclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'sphinx'\n\n# If true, `todo` and `todoList` produce output, else they produce nothing.\ntodo_include_todos = False\n\n\n# -- Options for HTML output -------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = 'sphinx_rtd_theme'\n\n# Theme options are theme-specific and customize the look and feel of a\n# theme further.  For a list of options available for each theme, see the\n# documentation.\n#\n# html_theme_options = {}\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\n\n\n# -- Options for HTMLHelp output ---------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'ctparsedoc'\n\n\n# -- Options for LaTeX output ------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    #\n    # 'papersize': 'letterpaper',\n\n    # The font size ('10pt', '11pt' or '12pt').\n    #\n    # 'pointsize': '10pt',\n\n    # Additional stuff for the LaTeX preamble.\n    #\n    # 'preamble': '',\n\n    # Latex figure (float) alignment\n    #\n    # 'figure_align': 'htbp',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title, author, documentclass\n# [howto, manual, or own class]).\nlatex_documents = [\n    (master_doc, 'ctparse.tex',\n     u'ctparse - Parse natural language time expressions in pytho Documentation',\n     u'Sebastian Mika', 'manual'),\n]\n\n\n# -- Options for manual page output ------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    (master_doc, 'ctparse',\n     u'ctparse - Parse natural language time expressions Documentation',\n     [author], 1)\n]\n\n\n# -- Options for Texinfo output ----------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (master_doc, 'ctparse',\n     u'ctparse - Parse natural language time expressions Documentation',\n     author,\n     'ctparse',\n     'One line description of project.',\n     'Miscellaneous'),\n]\n"
  },
  {
    "path": "docs/contributing.rst",
    "content": ".. include:: ../CONTRIBUTING.rst\n"
  },
  {
    "path": "docs/ctparse.rst",
    "content": "ctparse package\n===============\n\nSubpackages\n-----------\n\n.. toctree::\n\n   ctparse.time\n\nSubmodules\n----------\n\nctparse.corpus module\n---------------------\n\n.. automodule:: ctparse.corpus\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.count\\_vectorizer module\n--------------------------------\n\n.. automodule:: ctparse.count_vectorizer\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.ctparse module\n----------------------\n\n.. automodule:: ctparse.ctparse\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.loader module\n---------------------\n\n.. automodule:: ctparse.loader\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.nb\\_estimator module\n----------------------------\n\n.. automodule:: ctparse.nb_estimator\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.nb\\_scorer module\n-------------------------\n\n.. automodule:: ctparse.nb_scorer\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.partial\\_parse module\n-----------------------------\n\n.. automodule:: ctparse.partial_parse\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.pipeline module\n-----------------------\n\n.. automodule:: ctparse.pipeline\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.rule module\n-------------------\n\n.. automodule:: ctparse.rule\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.scorer module\n---------------------\n\n.. automodule:: ctparse.scorer\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.timers module\n---------------------\n\n.. automodule:: ctparse.timers\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nctparse.types module\n--------------------\n\n.. automodule:: ctparse.types\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\n\nModule contents\n---------------\n\n.. automodule:: ctparse\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/ctparse.time.rst",
    "content": "ctparse.time package\n====================\n\nSubmodules\n----------\n\nctparse.time.corpus module\n--------------------------\n\n.. automodule:: ctparse.time.corpus\n    :members:\n    :undoc-members:\n    :show-inheritance:\n\nctparse.time.rules module\n-------------------------\n\n.. automodule:: ctparse.time.rules\n    :members:\n    :undoc-members:\n    :show-inheritance:\n\n\nModule contents\n---------------\n\n.. automodule:: ctparse.time\n    :members:\n    :undoc-members:\n    :show-inheritance:\n"
  },
  {
    "path": "docs/dataset.rst",
    "content": ".. include:: ../datasets/README.rst"
  },
  {
    "path": "docs/history.rst",
    "content": ".. include:: ../HISTORY.rst\n"
  },
  {
    "path": "docs/index.rst",
    "content": "Welcome to the ctparse documentation!\n=====================================\n\n.. toctree::\n   :maxdepth: 2\n   :caption: Contents:\n\n   readme\n   installation\n   usage\n   dataset\n   contributing\n   modules\n   authors\n   history\n\nIndices and tables\n==================\n* :ref:`genindex`\n* :ref:`modindex`\n* :ref:`search`\n"
  },
  {
    "path": "docs/installation.rst",
    "content": ".. highlight:: shell\n\n============\nInstallation\n============\n\n\nStable release\n--------------\n\nTo install ctparse - Parse natural language time expressions in pytho, run this command in your terminal:\n\n.. code-block:: console\n\n    $ pip install ctparse\n\nThis is the preferred method to install ctparse - Parse natural language time expressions in pytho, as it will always install the most recent stable release.\n\nIf you don't have `pip`_ installed, this `Python installation guide`_ can guide\nyou through the process.\n\n.. _pip: https://pip.pypa.io\n.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/\n\n\nFrom sources\n------------\n\nThe sources for ctparse - Parse natural language time expressions in pytho can be downloaded from the `Github repo`_.\n\nYou can either clone the public repository:\n\n.. code-block:: console\n\n    $ git clone git://github.com/comtravo/ctparse\n\nOr download the `tarball`_:\n\n.. code-block:: console\n\n    $ curl  -OL https://github.com/comtravo/ctparse/tarball/master\n\nOnce you have a copy of the source, you can install it with:\n\n.. code-block:: console\n\n    $ python setup.py install\n\n\n.. _Github repo: https://github.com/comtravo/ctparse\n.. _tarball: https://github.com/comtravo/ctparse/tarball/master\n"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\n\npushd %~dp0\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=python -msphinx\n)\nset SOURCEDIR=.\nset BUILDDIR=_build\nset SPHINXPROJ=ctparse\n\nif \"%1\" == \"\" goto help\n\n%SPHINXBUILD% >NUL 2>NUL\nif errorlevel 9009 (\n\techo.\n\techo.The Sphinx module was not found. Make sure you have Sphinx installed,\n\techo.then set the SPHINXBUILD environment variable to point to the full\n\techo.path of the 'sphinx-build' executable. Alternatively you may add the\n\techo.Sphinx directory to PATH.\n\techo.\n\techo.If you don't have Sphinx installed, grab it from\n\techo.http://sphinx-doc.org/\n\texit /b 1\n)\n\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\ngoto end\n\n:help\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\n\n:end\npopd\n"
  },
  {
    "path": "docs/modules.rst",
    "content": "ctparse\n=======\n\n.. toctree::\n   :maxdepth: 4\n\n   ctparse\n"
  },
  {
    "path": "docs/readme.rst",
    "content": ".. include:: ../README.rst\n"
  },
  {
    "path": "docs/usage.rst",
    "content": "=====\nUsage\n=====\n\nTo use ctparse simply import the main ``ctparse`` function::\n\n    \n    from datetime import datetime\n    from ctparse import ctparse\n\n    ctparse('today', datetime(2018, 7, 8), timeout=1)\n    \nThe output for the above code is `2018-07-08 X:X (X/X) s=2.273 p=(149, 'ruleToday')`\n\nFor more details on the parameters please see the docstrings.\n"
  },
  {
    "path": "mypy.ini",
    "content": "[mypy]\n# Specify the target platform details in config, so your developers are\n# free to run mypy on Windows, Linux, or macOS and get consistent\n# results.\npython_version=3.6\nplatform=linux\n\n# flake8-mypy expects the two following for sensible formatting\nshow_column_numbers=True\n\n# show error messages from unrelated files\nfollow_imports=normal\n\n# suppress errors about unsatisfied imports\nignore_missing_imports=True\n\n# be strict\ndisallow_untyped_calls=True\nwarn_return_any=True\nstrict_optional=True\nwarn_no_return=True\nwarn_redundant_casts=True\nwarn_unused_ignores=True\ndisallow_any_generics=True\ndisallow_untyped_defs=True\ncheck_untyped_defs=True\n\n# No incremental mode\ncache_dir=/dev/null\n\n[mypy-ctparse.time.rules]\n# time rules check existence of fields in predicates\nstrict_optional=False\n\n[mypy-tests.*]\ndisallow_untyped_defs=False\n\n"
  },
  {
    "path": "requirements.txt",
    "content": ".\n"
  },
  {
    "path": "requirements_dev.txt",
    "content": "pip==20.1.1\nbumpversion==0.6.0\nwatchdog==0.10.2\nflake8==3.8.2\nflake8-bugbear==20.1.4\ntox==3.15.1\ncoverage==5.1\nsphinx==3.0.4\nsphinx-rtd-theme==0.4.3\n\ntwine==3.1.1\n\npytest==5.4.2\npytest-runner==5.2\npytest-cov==2.9.0\nmypy==0.770\nblack==19.10b0\n"
  },
  {
    "path": "scripts/train_default_model.py",
    "content": "\"\"\"Train a default multinomial bayes classifier\"\"\"\nimport argparse\nimport logging\n\nfrom ctparse.corpus import load_timeparse_corpus, make_partial_rule_dataset, run_corpus\nfrom ctparse.loader import DEFAULT_MODEL_FILE\nfrom ctparse.nb_scorer import save_naive_bayes, train_naive_bayes\nfrom ctparse.scorer import DummyScorer\nfrom ctparse.time import auto_corpus, corpus\n\nlogger = logging.getLogger(__name__)\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\n        \"--legacy\",\n        help=\"Use legacy dataset (ctparse.time.corpus and ctparse.time.auto_corpus as training data)\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\"--dataset\", help=\"Dataset file\")\n    return parser.parse_args()\n\n\ndef main():\n    args = parse_args()\n    logging.basicConfig(\n        level=logging.INFO, format=\"%(asctime)s %(levelname)s [%(name)s] %(message)s\"\n    )\n\n    X_combined = []\n    y_combined = []\n\n    if args.legacy:\n        logger.info(\"Loading legacy dataset\")\n        X, y = run_corpus(corpus.corpus + auto_corpus.corpus)\n        X_combined.extend(X)\n        y_combined.extend(y)\n\n    if args.dataset:\n        logger.info(\"Loading dataset {}\".format(args.dataset))\n        entries = load_timeparse_corpus(args.dataset)\n        X, y = zip(\n            *make_partial_rule_dataset(\n                entries,\n                scorer=DummyScorer(),\n                timeout=30,\n                max_stack_depth=100,\n                progress=True,\n            )\n        )\n        X_combined.extend(X)\n        y_combined.extend(y)\n\n    if len(X) == 0:\n        raise ValueError(\"Need to specify at least a dataset for training\")\n\n    mdl = train_naive_bayes(X_combined, y_combined)\n    save_naive_bayes(mdl, DEFAULT_MODEL_FILE)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "setup.cfg",
    "content": "[bumpversion]\ncurrent_version = 0.3.01\ncommit = True\ntag = True\n\n[bumpversion:file:setup.py]\nsearch = version='{current_version}'\nreplace = version='{new_version}'\n\n[bumpversion:file:ctparse/__init__.py]\nsearch = __version__ = '{current_version}'\nreplace = __version__ = '{new_version}'\n\n[bdist_wheel]\nuniversal = 1\n\n[flake8]\nexclude = docs\nmax-line-length = 80\nselect = C,E,F,W,B,B950\nignore = E203,E266,E501,W503\nmypy_config = mypy.ini\n\n[aliases]\ntest = pytest\n\n;[tool:pytest]\n;collect_ignore = ['setup.py']\n\n[coverage:run]\ninclude = ctparse/*\n\n[coverage:report]\nshow_missing = True\nfail_under = 95\n"
  },
  {
    "path": "setup.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\"\"\"The setup script.\"\"\"\n\nfrom setuptools import setup, find_packages\n\nwith open('README.rst') as readme_file:\n    readme = readme_file.read()\n\nwith open('HISTORY.rst') as history_file:\n    history = history_file.read()\n\nrequirements = []\n\nsetup_requirements = ['pytest-runner', ]\n\ntest_requirements = ['pytest', ]\n\nsetup(\n    author=\"Sebastian Mika/Comtravo\",\n    author_email='sebastian.mika@comtravo.com',\n    classifiers=[\n        'Development Status :: 3 - Alpha',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: MIT License',\n        'Natural Language :: English',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Programming Language :: Python :: 3.8',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n        'Topic :: Text Processing :: Linguistic',\n    ],\n    description=\"Parse natural language time expressions in python\",\n    install_requires=[\n        'python-dateutil>=2.7.3,<3.0.0',\n        'regex>=2018.6.6',\n        'tqdm>=4.23.4,<5.0.0'\n    ],\n    license=\"MIT license\",\n    long_description=readme + '\\n\\n' + history,\n    include_package_data=True,\n    keywords='quickadd',\n    name='quickadd',\n    packages=find_packages(include=['ctparse*']),\n    package_dir={'ctparse': 'ctparse'},\n    package_data={'ctparse': ['models/model.pbz', 'py.typed']},\n    setup_requires=setup_requirements,\n    test_suite='tests',\n    tests_require=test_requirements,\n    url='https://github.com/inferense/quickadd',\n    version='0.6.5',\n    zip_safe=False,\n)\n"
  },
  {
    "path": "tests/__init__.py",
    "content": ""
  },
  {
    "path": "tests/test_corpus.py",
    "content": "from datetime import datetime\n\nimport pytest\n\nfrom ctparse.corpus import (\n    TimeParseEntry,\n    load_timeparse_corpus,\n    make_partial_rule_dataset,\n    parse_nb_string,\n    run_corpus,\n)\nfrom ctparse.scorer import DummyScorer\nfrom ctparse.time.corpus import corpus\nfrom ctparse.types import Interval, Time\n\nCORPUS_JSON = \"\"\"\n[\n {\n  \"text\": \"Donnerstag, den 05.10. ca 6:55\",\n  \"ref_time\": \"2017-09-25T16:06:55\",\n  \"gold_parse\": \"Time[]{2017-10-05 06:55 (X/X)}\",\n  \"language\": \"de\"\n },\n {\n  \"text\": \"22.05.2017 früh\",\n  \"ref_time\": \"2017-05-16T05:42:09\",\n  \"gold_parse\": \"Time[]{2017-05-22 X:X (X/earlymorning)}\",\n  \"language\": \"de\"\n }\n]\n\"\"\"\n\n\ndef test_run_corpus() -> None:\n    \"\"\"The corpus passes if ctparse generates the desired\n    solution for each test at least once. Otherwise it fails.\n    \"\"\"\n    X, y = run_corpus(corpus)\n    assert isinstance(y[0], bool)\n    assert isinstance(X[0][0], str)\n\n\ndef test_run_corpus_failure() -> None:\n    fail_corpus = [(\"never produced\", \"2015-12-12T12:30\", (\"today\", \"heute\"))]\n    with pytest.raises(Exception):\n        run_corpus(fail_corpus)\n\n\ndef test_make_partial_rule_dataset() -> None:\n    ts = datetime(year=2019, month=10, day=1)\n    entries = [\n        TimeParseEntry(\n            \"today at 5 pm\", ts, Time(year=2019, month=10, day=1, hour=17, minute=0)\n        )\n    ]\n\n    X, y = zip(\n        *make_partial_rule_dataset(\n            entries, timeout=0, max_stack_depth=0, scorer=DummyScorer()\n        )\n    )\n    assert isinstance(y[0], bool)\n    assert isinstance(X[0][0], str)\n\n\ndef test_parse_nb_string() -> None:\n    t = Time(year=1, month=1, day=1, hour=1, minute=1, DOW=1, POD=\"pod\")\n\n    assert t == parse_nb_string(\"Time[]{0001-01-01 01:01 (1/pod)}\")\n    assert Interval(Time(), Time()) == parse_nb_string(\n        \"Interval[]{X-X-X X:X (X/X) - X-X-X X:X (X/X)}\"\n    )\n\n\ndef test_load_timeparse_corpus(tmp_path) -> None:\n    path = tmp_path / \"test.json\"\n    path.write_text(CORPUS_JSON, encoding=\"utf-8\")\n\n    result = load_timeparse_corpus(str(path))\n\n    assert len(result) == 2\n"
  },
  {
    "path": "tests/test_count_vectorizer.py",
    "content": "import pytest\nfrom ctparse.count_vectorizer import CountVectorizer\n\n\n@pytest.mark.parametrize(\n    \"ngrams,doc,result\",\n    [\n        ((1, 1), [\"a\", \"b\", \"c\"], [\"a\", \"b\", \"c\"]),\n        ((1, 2), [\"a\", \"b\", \"c\"], [\"a\", \"b\", \"c\", \"a b\", \"b c\"]),\n        ((2, 2), [\"a\", \"b\", \"c\"], [\"a b\", \"b c\"]),\n        ((1, 3), [\"a\", \"b\"], [\"a\", \"b\", \"a b\"]),\n        ((2, 3), [\"a\", \"b\"], [\"a b\"]),\n    ],\n)\ndef test_ngrams(ngrams, doc, result):\n    assert CountVectorizer._create_ngrams(ngrams, [doc]) == [result]\n\n\ndef test_count_vectorizer_fit_and_transform():\n    cv = CountVectorizer((1, 2))\n    cv = cv.fit([[\"a\", \"b\", \"c\"], [\"c\", \"d\"]])\n    assert cv.vocabulary\n    assert cv.transform([[\"b\"]]) == [{cv.vocabulary[\"b\"]: 1, 6: 0}]\n\n\ndef test_count_vectorizer_fit_transform():\n    cv = CountVectorizer((1, 2))\n    X = cv.fit_transform([[\"a\", \"b\"], [\"b\", \"c\"]])\n    assert cv.vocabulary\n    assert X == [\n        {\n            cv.vocabulary[\"a\"]: 1,\n            cv.vocabulary[\"b\"]: 1,\n            cv.vocabulary[\"a b\"]: 1,\n            len(cv.vocabulary) - 1: 0,\n        },\n        {cv.vocabulary[\"b\"]: 1, cv.vocabulary[\"c\"]: 1, cv.vocabulary[\"b c\"]: 1},\n    ]\n\n\ndef test_count_vectorizer_transform_no_fit():\n    cv = CountVectorizer((1, 2))\n    with pytest.raises(ValueError):\n        cv.transform([[\"a\"]])\n"
  },
  {
    "path": "tests/test_ctparse.py",
    "content": "from datetime import datetime\nfrom ctparse.ctparse import ctparse, ctparse_gen, _match_rule\nfrom ctparse.types import Interval, Time, Artifact\n\n\ndef test_ctparse():\n    txt = \"12.12.2020\"\n    res = ctparse(txt)\n    assert res\n    assert res.resolution == Time(year=2020, month=12, day=12)\n    assert str(res)\n    assert repr(res)\n\n    # non sense gives no result\n    assert ctparse(\"gargelbabel\") is None\n    txt = \"12.12.\"\n    res = ctparse(txt, ts=datetime(2020, 12, 1))\n    assert res\n    assert res.resolution == Time(year=2020, month=12, day=12)\n\n    gres = ctparse_gen(txt, ts=datetime(2020, 12, 1))\n    first_res = next(gres)\n    assert first_res\n    assert first_res.resolution == Time(year=2020, month=12, day=12)\n\n\ndef test_ctparse_timeout():\n    # timeout in ctparse: should rather mock the logger and see\n    # whether the timeout was hit, but cannot get it mocked\n    txt = \"tomorrow 8 yesterday Sep 9 9 12 2023 1923\"\n    ctparse(txt, timeout=0.0001)\n\n\ndef test_match_rule():\n    def rule(a: Artifact) -> bool:\n        return True\n\n    assert list(_match_rule([], [rule])) == []\n    assert list(_match_rule([Artifact()], [])) == []\n\n\ndef test_latent_time():\n    parse = ctparse(\"8:00 pm\", ts=datetime(2020, 1, 1, 7, 0), latent_time=False)\n    assert parse\n    assert parse.resolution == Time(None, None, None, 20, 00)\n\n    parse = ctparse(\"8:00 pm\", ts=datetime(2020, 1, 1, 7, 0), latent_time=True)\n    assert parse\n    assert parse.resolution == Time(2020, 1, 1, 20, 00)\n\n\ndef test_latent_time_interval():\n    parse = ctparse(\n        \"8:00 pm - 9:00 pm\", ts=datetime(2020, 1, 1, 7, 0), latent_time=False\n    )\n    assert parse\n    assert parse.resolution == Interval(\n        Time(None, None, None, 20, 00), Time(None, None, None, 21, 00)\n    )\n\n    parse = ctparse(\n        \"8:00 pm - 9:00 pm\", ts=datetime(2020, 1, 1, 7, 0), latent_time=True\n    )\n    assert parse\n    assert parse.resolution == Interval(\n        Time(2020, 1, 1, 20, 00), Time(2020, 1, 1, 21, 00)\n    )\n"
  },
  {
    "path": "tests/test_partialparse.py",
    "content": "import datetime\nfrom typing import Any, Callable\n\nimport pytest\nimport regex\n\nfrom ctparse.partial_parse import PartialParse, _seq_match\nfrom ctparse.types import RegexMatch, Time\n\n\ndef test_partial_parse() -> None:\n    match_a = regex.match(\"(?<R1>a)\", \"ab\")\n    match_b = next(regex.finditer(\"(?<R2>b)\", \"ab\"))\n\n    pp = PartialParse.from_regex_matches(\n        (RegexMatch(1, match_a), RegexMatch(2, match_b))\n    )\n\n    assert len(pp.prod) == 2\n    assert len(pp.rules) == 2\n\n    assert isinstance(pp.score, float)\n\n    def mock_rule(ts: datetime.datetime, a: Time) -> Time:\n        return Time()\n\n    pp2 = pp.apply_rule(\n        datetime.datetime(day=1, month=1, year=2015), mock_rule, \"mock_rule\", (0, 1)\n    )\n\n    assert pp != pp2\n\n    with pytest.raises(ValueError):\n        PartialParse((), ())\n\n\ndef test_seq_match() -> None:\n    # NOTE: we are testing a private function because the algorithm\n    # is quite complex\n\n    def make_rm(i: int) -> Callable[[Any], bool]:\n        def _regex_match(s: Any) -> bool:\n            return bool(s == i)\n\n        return _regex_match\n\n    # empty sequence, empty pattern: matches on a single empty sequence\n    assert list(_seq_match([], [])) == [[]]\n    # non empty sequence, empty pattern matches on an empty sequence\n    assert list(_seq_match([\"a\", \"b\"], [])) == [[]]\n    # non empty sequence, non empty pattern that does not apper: no match\n    assert list(_seq_match([\"a\", \"b\"], [make_rm(1)])) == []\n    # empty sequence, non empty pattern: no match\n    assert list(_seq_match([], [make_rm(1)])) == []\n    # sequence shorter than pattern: no match\n    assert list(_seq_match([\"a\"], [make_rm(1), make_rm(2)])) == []\n    # seq = pat\n    assert list(_seq_match([1], [make_rm(1)])) == [[0]]\n    assert list(_seq_match([1, 2, 3], [make_rm(1)])) == [[0]]\n    assert list(_seq_match([1, 2, 3], [make_rm(2)])) == [[1]]\n    assert list(_seq_match([1, 2, 3], [make_rm(3)])) == [[2]]\n    assert list(_seq_match([1, 2, \"a\"], [make_rm(1), make_rm(2)])) == [[0, 1]]\n    assert list(_seq_match([1, \"a\", 3], [make_rm(1), _identity, make_rm(3)])) == [\n        [0, 2]\n    ]\n    assert list(_seq_match([\"a\", 2, 3], [make_rm(2), make_rm(3)])) == [[1, 2]]\n    # starts with non regex\n    assert list(_seq_match([1, 2], [_identity, make_rm(1), make_rm(2)])) == []\n    assert list(_seq_match([\"a\", 1, 2], [_identity, make_rm(1), make_rm(2)])) == [\n        [1, 2]\n    ]\n    # ends with non regex\n    assert list(_seq_match([1, 2], [make_rm(1), make_rm(2), _identity])) == []\n    assert list(_seq_match([1, 2, \"a\"], [make_rm(1), make_rm(2), _identity])) == [\n        [0, 1]\n    ]\n    # repeated pattern\n    assert list(_seq_match([1, 2, 1, 2, 2], [make_rm(1), make_rm(2)])) == [\n        [0, 1],\n        [0, 3],\n        [0, 4],\n        [2, 3],\n        [2, 4],\n    ]\n    assert list(_seq_match([1, 2, 1, 2, 2], [make_rm(1), _identity, make_rm(2)])) == [\n        [0, 3],\n        [0, 4],\n        [2, 4],\n    ]\n    assert list(_seq_match([1, 2, 1, 2, 2], [_identity, make_rm(1), make_rm(2)])) == [\n        [2, 3],\n        [2, 4],\n    ]\n    assert list(_seq_match([1, 2, 1, 2, 2], [make_rm(1), make_rm(2), _identity])) == [\n        [0, 1],\n        [0, 3],\n        [2, 3],\n    ]\n    assert (\n        list(\n            _seq_match(\n                [1, 2, 1, 2, 2],\n                [_identity, make_rm(1), _identity, make_rm(2), _identity],\n            )\n        )\n        == []\n    )\n    assert list(\n        _seq_match(\n            [1, 2, 1, 2, 2, 3],\n            [_identity, make_rm(1), _identity, make_rm(2), _identity],\n        )\n    ) == [[2, 4]]\n\n\ndef _identity(x: Any) -> bool:\n    return True\n"
  },
  {
    "path": "tests/test_regressions.py",
    "content": "\"\"\"This file contains regression tests for commonly parsed time expressions\"\"\"\nimport ctparse\nfrom datetime import datetime\n\n\ndef test_military_time():\n    result = ctparse.ctparse(\"3 March 2020\", ts=datetime(2020, 2, 25))\n    assert result\n    assert str(result.resolution) == \"2020-03-03 X:X (X/X)\"\n\n\ndef test_parse_years_ahead():\n    result = ctparse.ctparse(\"3 March 2023\", ts=datetime(2020, 2, 25))\n    assert result\n    assert str(result.resolution) == \"2023-03-03 X:X (X/X)\"\n"
  },
  {
    "path": "tests/test_rule.py",
    "content": "from unittest import TestCase\nimport regex\nfrom ctparse.types import RegexMatch, Artifact\nfrom ctparse.rule import dimension, predicate, regex_match, rule\n\n\nclass TestClassA(Artifact):\n    predA = 1\n\n\nclass TestClassB(Artifact):\n    pass\n\n\nclass TestRule(TestCase):\n    def test_empty_regex_match_not_allowed(self):\n        with self.assertRaises(ValueError):\n            rule(r\"\")\n        with self.assertRaises(ValueError):\n            rule(r\"[a-z]*\")\n        self.assertIsNotNone(\n            rule(\n                r\"This long string must not match as this expression \"\n                \"will be part of the system unless ctparse is reloaded\"\n            )\n        )\n\n    def test_consecutive_regex_not_allowed(self):\n        with self.assertRaises(ValueError):\n            rule(r\"one\", r\"two\")\n\n    def test_regex_match(self):\n        m = next(regex.finditer(\"(?P<R1>x)\", \"x\"))\n        r = RegexMatch(1, m)\n        self.assertTrue(regex_match(1)(r))\n        self.assertFalse(regex_match(1)(TestClassA()))\n\n    def test_dimension(self):\n        self.assertTrue(dimension(TestClassA)(TestClassA()))\n        self.assertFalse(dimension(TestClassA)(TestClassB()))\n\n    def test_predicate(self):\n        self.assertTrue(predicate(\"predA\")(TestClassA()))\n        self.assertFalse(predicate(\"predA\")(TestClassB()))\n"
  },
  {
    "path": "tests/test_scorer.py",
    "content": "import datetime\nimport random\nimport bz2\nimport pickle\n\nfrom ctparse.nb_scorer import NaiveBayesScorer, train_naive_bayes, save_naive_bayes\nfrom ctparse.partial_parse import PartialParse\nfrom ctparse.scorer import DummyScorer, RandomScorer\nfrom ctparse.count_vectorizer import CountVectorizer\nfrom ctparse.nb_estimator import MultinomialNaiveBayes\nfrom ctparse.pipeline import CTParsePipeline\nfrom ctparse.types import Interval, Time\n\n\ndef test_dummy():\n    scorer = DummyScorer()\n    pp = PartialParse((Time(), Interval()), (\"rule1\", \"rule2\"))\n\n    assert scorer.score(\"a\", datetime.datetime(2019, 1, 1), pp) == 0.0\n    assert scorer.score_final(\"a\", datetime.datetime(2019, 1, 1), pp, pp.prod[0]) == 0.0\n\n\ndef test_random():\n    rng = random.Random(42)\n    scorer = RandomScorer(rng)\n\n    pp = PartialParse((Time(), Interval()), (\"rule1\", \"rule2\"))\n\n    assert 0.0 <= scorer.score(\"a\", datetime.datetime(2019, 1, 1), pp) <= 1.0\n    assert (\n        0.0\n        <= scorer.score_final(\"a\", datetime.datetime(2019, 1, 1), pp, pp.prod[1])\n        <= 1.0\n    )\n\n\ndef test_nbscorer():\n    # We only test that it runs just fine\n    X = [(\"a\", \"b\"), (\"a\",), (\"b\"), (\"a\", \"b\", \"a\", \"b\")]\n    y = [False, True, True, False]\n\n    model = train_naive_bayes(X, y)\n    scorer = NaiveBayesScorer(model)\n\n    pp = PartialParse((Time(), Interval()), (\"rule1\", \"rule2\"))\n\n    pp.prod[0].mstart = 0\n    pp.prod[1].mend = 1\n\n    pp.prod[0].mend = 1\n    pp.prod[1].mend = 2\n\n    assert 0.0 <= scorer.score(\"ab\", datetime.datetime(2019, 1, 1), pp) <= 1.0\n    assert (\n        0.0\n        <= scorer.score_final(\"ab\", datetime.datetime(2019, 1, 1), pp, pp.prod[1])\n        <= 1.0\n    )\n\n\ndef test_naive_bayes_from_file(tmp_path):\n    nb = NaiveBayesScorer(\n        CTParsePipeline(CountVectorizer((1, 1)), MultinomialNaiveBayes())\n    )\n    path = tmp_path / \"model.pkl\"\n    with bz2.open(path, \"w\") as f:\n        pickle.dump(nb, f)\n    nb = NaiveBayesScorer.from_model_file(path)\n    assert nb\n\n\ndef test_save_naive_bayes(tmp_path):\n    path = tmp_path / \"model.pkl\"\n    model = CTParsePipeline(CountVectorizer((1, 1)), MultinomialNaiveBayes())\n    save_naive_bayes(model, path)\n"
  },
  {
    "path": "tests/test_time_rules.py",
    "content": "from unittest import TestCase\n\nfrom ctparse.types import Time\nfrom ctparse.time.rules import (\n    ruleDateDate,\n    ruleDOMDate,\n    ruleDateTimeDateTime,\n    ruleDOYDate,\n    ruleQuarterBeforeHH,\n    ruleQuarterAfterHH,\n)\n\n\nclass TestRules(TestCase):\n    def test_ruleDateDate(self):\n        t1 = Time(year=2017)\n        t2 = Time(year=2015)\n        self.assertIsNone(ruleDateDate(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=12)\n        t2 = Time(year=2017, month=11)\n        self.assertIsNone(ruleDateDate(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=12, day=31)\n        t2 = Time(year=2017, month=12, day=30)\n        self.assertIsNone(ruleDateDate(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=12, day=31)\n        t2 = Time(year=2017, month=12, day=31)\n        self.assertIsNone(ruleDateDate(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=12, day=30)\n        t2 = Time(year=2017, month=12, day=31)\n        self.assertIsNotNone(ruleDateDate(None, t1, None, t2))\n\n    def test_ruleDOMDate(self):\n        t1 = Time(day=30)\n        t2 = Time(year=2015, month=1, day=29)\n        self.assertIsNone(ruleDOMDate(None, t1, None, t2))\n\n        t1 = Time(day=30)\n        t2 = Time(year=2015, month=1, day=30)\n        self.assertIsNone(ruleDOMDate(None, t1, None, t2))\n\n        t1 = Time(day=29)\n        t2 = Time(year=2015, month=1, day=30)\n        self.assertIsNotNone(ruleDOMDate(None, t1, None, t2))\n\n    def test_ruleDateTimeDateTime(self):\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2016, month=4, day=12, hour=12, minute=30)\n        self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2017, month=3, day=12, hour=12, minute=30)\n        self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2017, month=4, day=11, hour=12, minute=30)\n        self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2017, month=4, day=12, hour=11, minute=30)\n        self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2017, month=4, day=12, hour=12, minute=29)\n        self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n        t1 = Time(year=2017, month=4, day=12, hour=12, minute=30)\n        t2 = Time(year=2017, month=4, day=12, hour=12, minute=31)\n        self.assertIsNotNone(ruleDateTimeDateTime(None, t1, None, t2))\n\n    def test_ruleDOYDate(self):\n        t1 = Time(month=4, day=12)\n        t2 = Time(year=2017, month=4, day=12)\n        self.assertIsNone(ruleDOYDate(None, t1, None, t2))\n\n        t1 = Time(month=4, day=12)\n        t2 = Time(year=2017, month=4, day=13)\n        self.assertIsNotNone(ruleDOYDate(None, t1, None, t2))\n\n    def test_ruleQuarterBeforeHH(self):\n        t1 = Time(hour=12, minute=1)\n        self.assertIsNone(ruleQuarterBeforeHH(None, None, t1))\n\n    def test_ruleQuarterAferHH(self):\n        t1 = Time(hour=12, minute=1)\n        self.assertIsNone(ruleQuarterAfterHH(None, None, t1))\n"
  },
  {
    "path": "tests/test_timers.py",
    "content": "from ctparse.timers import timeout, CTParseTimeoutError, timeit\nfrom unittest import TestCase\nimport time\n\n\nclass TimersTest(TestCase):\n    def test_timeout(self):\n        t_fun = timeout(0.5)\n        with self.assertRaises(CTParseTimeoutError):\n            time.sleep(1.0)\n            t_fun()\n        t_fun = timeout(0)\n        t_fun()  # all good\n\n    def test_timeit(self):\n        def fun(x):\n            return x * x\n\n        result, elapsed = timeit(fun)(3)\n        self.assertEqual(result, 9)\n        self.assertIsInstance(elapsed, float)\n"
  },
  {
    "path": "tests/test_types.py",
    "content": "from unittest import TestCase\nimport regex\nfrom datetime import datetime\nfrom ctparse.types import Artifact, RegexMatch, Time, Interval\n\n\nclass TestArtifact(TestCase):\n    def test_init(self):\n        a = Artifact()\n        self.assertEqual(a.mstart, 0)\n        self.assertEqual(a.mend, 0)\n        self.assertEqual(len(a), 0)\n        self.assertTrue(a)\n\n    def test_eq(self):\n        a = Artifact()\n        b = Artifact()\n        self.assertEqual(a, b)\n\n        a = Time(2017, 12, 12, 12, 12, 4, \"morning\")\n        b = Time(2017, 12, 12, 12, 12, 4, \"morning\")\n        self.assertEqual(a, b)\n\n        a = Time(2017, 12, 12, 12, 12, 4, \"morning\")\n        b = Time(2017, 12, 12, 12, 12, 3, \"morning\")\n        self.assertNotEqual(a, b)\n\n        a = Time()\n        b = Interval()\n        self.assertNotEqual(a, b)\n\n    def test_update_span(self):\n        a1 = Artifact()\n        a2 = Artifact()\n        a3 = Artifact()\n        a2.mstart = 10\n        a3.mend = 100\n        a1.update_span(a2, a3)\n        self.assertEqual(a1.mstart, 10)\n        self.assertEqual(a1.mend, 100)\n        self.assertEqual(len(a1), 90)\n\n    def test_repr(self):\n        a = Artifact()\n        self.assertEqual(repr(a), \"Artifact[0-0]{}\")\n\n    def test_nb_str(self):\n        a = Artifact()\n        self.assertEqual(a.nb_str(), \"Artifact[]{}\")\n\n\nclass TestRegexMatch(TestCase):\n    def test_init(self):\n        m = next(regex.finditer(r\"(?P<R1>match me)\", \"xxx match me xxx\"))\n        r = RegexMatch(1, m)\n        self.assertEqual(r.mstart, 4)\n        self.assertEqual(r.mend, 12)\n        self.assertEqual(len(r), 8)\n        self.assertEqual(r._text, \"match me\")\n        self.assertEqual(repr(r), \"RegexMatch[4-12]{1:match me}\")\n        self.assertEqual(r.nb_str(), \"RegexMatch[]{1:match me}\")\n\n\nclass TestTime(TestCase):\n    def test_init(self):\n        self.assertIsNotNone(Time())\n\n    def test_isDOY(self):\n        self.assertTrue(Time(month=1, day=1).isDOY)\n        self.assertFalse(Time(year=1).isDOY)\n\n    def test_isDOM(self):\n        self.assertTrue(Time(day=1).isDOM)\n        self.assertFalse(Time(month=1).isDOM)\n\n    def test_isHour(self):\n        self.assertTrue(Time(hour=1).isHour)\n        self.assertFalse(Time(hour=1, minute=1).isHour)\n        self.assertFalse(Time(hour=1, month=1).isHour)\n\n    def test_isDOW(self):\n        self.assertTrue(Time(DOW=1).isDOW)\n        self.assertFalse(Time().isDOW)\n\n    def test_isMonth(self):\n        self.assertTrue(Time(month=1).isMonth)\n        self.assertFalse(Time(day=1).isMonth)\n        self.assertFalse(Time(year=1).isMonth)\n\n    def test_isPOD(self):\n        self.assertTrue(Time(POD=\"morning\").isPOD)\n        self.assertFalse(Time(day=1).isPOD)\n        self.assertFalse(Time(year=1).isPOD)\n\n    def test_isTOD(self):\n        self.assertTrue(Time(hour=1, minute=1).isTOD)\n        self.assertTrue(Time(hour=1).isTOD)\n        self.assertFalse(Time(minute=1).isTOD)\n        self.assertFalse(Time().isTOD)\n\n    def test_isDate(self):\n        self.assertTrue(Time(year=1, month=1, day=1).isDate)\n        self.assertFalse(Time(year=1, month=1).isDate)\n        self.assertFalse(Time(year=1, day=1).isDate)\n        self.assertFalse(Time(day=1, month=1).isDate)\n        self.assertFalse(Time(year=1, month=1, day=1, hour=1).isDate)\n\n    def test_isDateTime(self):\n        self.assertTrue(Time(year=1, month=1, day=1, hour=1).isDateTime)\n        self.assertFalse(Time(year=1, month=1, day=1).isDateTime)\n\n    def test_isYear(self):\n        self.assertTrue(Time(year=1).isYear)\n        self.assertFalse(Time(year=1, month=1).isYear)\n\n    def test_hasDate(self):\n        self.assertTrue(Time(year=1, month=1, day=1).hasDate)\n        self.assertFalse(Time(year=1, month=1).isDate)\n        self.assertFalse(Time(year=1, day=1).isDate)\n        self.assertFalse(Time(day=1, month=1).isDate)\n        self.assertTrue(Time(year=1, month=1, day=1, hour=1).hasDate)\n\n    def test_hasTime(self):\n        self.assertTrue(Time(hour=1, minute=1, day=1, month=1, year=1).hasTime)\n        self.assertTrue(Time(hour=1, day=1, month=1, year=1).hasTime)\n        self.assertFalse(Time(day=1, month=1, year=1).hasTime)\n\n    def test_hasPOD(self):\n        self.assertTrue(Time(POD=\"pod\").hasPOD)\n        self.assertFalse(Time(day=1, month=1, year=1).hasPOD)\n\n    def test_repr(self):\n        t = Time(year=1, month=1, day=1, hour=1, minute=1, DOW=1, POD=\"pod\")\n        self.assertEqual(repr(t), \"Time[0-0]{0001-01-01 01:01 (1/pod)}\")\n\n    def test_from_str(self):\n        # Complete time\n        t = Time(year=1, month=1, day=1, hour=1, minute=1, DOW=1, POD=\"pod\")\n        t_str = str(t)\n        t_back = Time.from_str(t_str)\n        self.assertEqual(t, t_back)\n\n        # Incomplete time\n        t = Time(year=None, month=1, day=1, hour=None, minute=None, DOW=None, POD=\"pod\")\n        t_str = str(t)\n        t_back = Time.from_str(t_str)\n        self.assertEqual(t, t_back)\n\n        # Zeroed time\n        t = Time()\n        t_str = str(t)\n        t_back = Time.from_str(t_str)\n        self.assertEqual(t, t_back)\n\n        # Mistake\n        with self.assertRaises(ValueError):\n            Time.from_str(\"0001-01-01 01-01 (1/pod)\")\n\n    def test_start(self):\n        t = Time()\n        self.assertEqual(t.start, Time(hour=0, minute=0))\n        t = Time(year=2012, month=1, day=1)\n        self.assertEqual(t.start, Time(2012, 1, 1, 0, 0))\n        t = Time(year=2012, month=1, day=1, hour=12)\n        self.assertEqual(t.start, Time(2012, 1, 1, 12, 0))\n        t = Time(year=2012, month=1, day=1, hour=12, minute=20)\n        self.assertEqual(t.start, Time(2012, 1, 1, 12, 20))\n        t = Time(year=2012, month=1, day=1, POD=\"last\")\n        self.assertEqual(t.start, Time(2012, 1, 1, 23, 00))\n\n    def test_end(self):\n        t = Time()\n        self.assertEqual(t.end, Time(hour=23, minute=59))\n        t = Time(year=2012, month=1, day=1)\n        self.assertEqual(t.end, Time(2012, 1, 1, 23, 59))\n        t = Time(year=2012, month=1, day=1, hour=12)\n        self.assertEqual(t.end, Time(2012, 1, 1, 12, 59))\n        t = Time(year=2012, month=1, day=1, hour=12, minute=20)\n        self.assertEqual(t.end, Time(2012, 1, 1, 12, 20))\n        t = Time(year=2012, month=1, day=1, POD=\"last\")\n        self.assertEqual(t.end, Time(2012, 1, 1, 23, 59))\n\n    def test_dt(self):\n        t = Time(2015, 12, 12, 12, 12)\n        self.assertEqual(t.dt, datetime(2015, 12, 12, 12, 12))\n        t = Time(2015, 12, 12, 12)\n        self.assertEqual(t.dt, datetime(2015, 12, 12, 12))\n        t = Time(2015, 12, 12)\n        self.assertEqual(t.dt, datetime(2015, 12, 12))\n\n        with self.assertRaises(ValueError):\n            t = Time(year=2012, month=12, hour=12, minute=12)\n            t.dt\n\n\nclass TestInterval(TestCase):\n    def test_init(self):\n        self.assertIsNotNone(Interval())\n\n    def test_isTimeInterval(self):\n        self.assertTrue(Interval(Time(hour=1), Time(hour=2)).isTimeInterval)\n\n    def test_repr(self):\n        self.assertEqual(\n            repr(Interval(Time(), Time())),\n            \"Interval[0-0]{X-X-X X:X (X/X) - X-X-X X:X (X/X)}\",\n        )\n\n    def test_from_str(self):\n        # Complete interval\n        t1 = Time(year=1, month=1, day=1, hour=1, minute=1, DOW=1, POD=\"pod\")\n        t2 = Time(year=2, month=1, day=1, hour=1, minute=1, DOW=1, POD=\"pod\")\n        interval = Interval(t1, t2)\n        i_back = Interval.from_str(str(interval))\n        self.assertEqual(interval, i_back)\n\n        # Incomplete interval\n        interval = Interval(None, t2)\n        i_back = Interval.from_str(str(interval))\n        self.assertEqual(interval, i_back)\n\n        # Zeroed interval\n        interval = Interval()\n        i_back = Interval.from_str(str(interval))\n        self.assertEqual(interval, i_back)\n\n        # Mistake\n        with self.assertRaises(ValueError):\n            Interval.from_str(\"X-X-X X: X(X/X) -X-X-X X: X(X/X)\")\n\n    def test_start(self):\n        i = Interval(Time(2013, 1, 1), Time(2013, 1, 2))\n        self.assertEqual(i.start, Time(2013, 1, 1, 0, 0))\n\n        i = Interval(Time(2013, 1, 1), None)\n        self.assertEqual(i.start, Time(2013, 1, 1, 0, 0))\n\n        i = Interval(None, Time(2013, 1, 2))\n        self.assertIsNone(i.start)\n\n    def test_end(self):\n        i = Interval(Time(2013, 1, 1), Time(2013, 1, 2))\n        self.assertEqual(i.end, Time(2013, 1, 2, 23, 59))\n\n        i = Interval(None, Time(2013, 1, 2))\n        self.assertEqual(i.end, Time(2013, 1, 2, 23, 59))\n\n        i = Interval(Time(2013, 1, 1), None)\n        self.assertIsNone(i.end)\n"
  },
  {
    "path": "tox.ini",
    "content": "[tox]\nenvlist = py36, py37, py38\n\n[travis]\npython =\n    3.8: py38\n    3.7: py37\n    3.6: py36\n\n[testenv]\nwhitelist_externals= make\nsetenv =\n    PYTHONPATH = {toxinidir}\ndeps = -r{toxinidir}/requirements_dev.txt\ncommands =\n    pip install -U pip\n    make lint\n    py.test --cov=ctparse --basetemp={envtmpdir}"
  }
]