<commit_before>(

  "numbers und"
[(integer 1 9) #"und" (integer 20 90 #(#{20 30 40 50 60 70 80 90} (:value %)))]
  {:dim :number
  :integer true
  :value (+ (:value %1) (:value %3))}

   ;;
 ;; Integers
 ;;
 
  "integer (0..19)"
  #"(?i)(keine?|keine?s|keiner?|keinen|null|nichts|eins?(er)?|zwei|dreizehn|drei|vierzehn|vier|fünf|sechzehn|sechs|siebzehn|sieben|achtzehn|acht|neunzehn|neun|elf|zwölf|füfzehn)"
  ; fourteen must be before four, or it won't work because the regex will stop at four
  {:dim :number
   :integer true
   :value (get {"keines" 0 "keiner" 0 "keinen" 0 "null" 0 "nichts" 0 "ein" 1 "eins" 1 "eine" 1 "einer" 1 "zwei" 2 "drei" 3 "vier" 4 "fünf" 5
              "sechs" 6 "sieben" 7 "acht" 8 "neun" 9 "zehn" 10 "elf" 11
              "zwölf" 12 "dreizehn" 13 "vierzehn" 14 "fünfzehn" 15 "sechzehn" 16
              "siebzehn" 17 "achtzehn" 18 "neunzehn" 19}
              (-> %1 :groups first .toLowerCase))}
  
  "ten"
  #"(?i)zehn"
  {:dim :number :integer true :value 10 :grain 1}
  
  "dozen"
  #"(?i)dutzend"
  {:dim :number :integer true :value 12 :grain 1 :grouping true} ;;restrict composition and prevent "2 12"

  "hundred"
  #"(?i)hunderte?"
  {:dim :number :integer true :value 100 :grain 2}

  "thousand"
  #"(?i)tausende?"
  {:dim :number :integer true :value 1000 :grain 3}

  "million"
  #"(?i)million(en)?"
  {:dim :number :integer true :value 1000000 :grain 6}

  "couple"
  #"(?i)(ein )?paar"
  {:dim :number :integer true :value 2}
  
  "few" ; TODO set assumption
  #"(?i)mehrere"
  {:dim :number :integer true :precision :approximate :value 3}

  "integer (20..90)"
  #"(?i)(zwanzig|dreissig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig)"
  {:dim :number
   :integer true
   :value (get {"zwanzig" 20 "dreissig" 30 "vierzig" 40 "fünfzig" 50 "sechzig" 60
              "siebzig" 70 "achtzig" 80 "neunzig" 90}
             (-> %1 :groups first .toLowerCase))
   :grain 1}

 ; "integer 21..99"
 ; [(integer 10 90 #(#{20 30 40 50 60 70 80 90} (:value %))) (integer 1 9)]
 ; {:dim :number
 ;  :integer true
 ;  :value (+ (:value %1) (:value %2))}

  "integer (numeric)"<commit_msg>taking a stab at this<commit_after>(

  "numbers und"
[(integer 1 9) #"und" (integer 20 90 #(#{20 30 40 50 60 70 80 90} (:value %)))]
  {:dim :number
  :integer true
  :value (+ (:value %1) (:value %3))}

   ;;
 ;; Integers
 ;;
 
  "integer (0..19)"
  #"(?i)(keine?|keine?s|keiner?|keinen|null|nichts|eins?(er)?|zwei|dreizehn|drei|vierzehn|vier|fünf|sechzehn|sechs|siebzehn|sieben|achtzehn|acht|neunzehn|neun|elf|zwölf|füfzehn)"
  ; fourteen must be before four, or it won't work because the regex will stop at four
  {:dim :number
   :integer true
   :value (get {"keines" 0 "keiner" 0 "keinen" 0 "null" 0 "nichts" 0 "ein" 1 "eins" 1 "eine" 1 "einer" 1 "zwei" 2 "drei" 3 "vier" 4 "fünf" 5
              "sechs" 6 "sieben" 7 "acht" 8 "neun" 9 "zehn" 10 "elf" 11
              "zwölf" 12 "dreizehn" 13 "vierzehn" 14 "fünfzehn" 15 "sechzehn" 16
              "siebzehn" 17 "achtzehn" 18 "neunzehn" 19}
              (-> %1 :groups first .toLowerCase))}
  
  "ten"
  #"(?i)zehn"
  {:dim :number :integer true :value 10 :grain 1}
  
  "dozen"
  #"(?i)dutzend"
  {:dim :number :integer true :value 12 :grain 1 :grouping true} ;;restrict composition and prevent "2 12"

  "hundred"
  #"(?i)hunderte?"
  {:dim :number :integer true :value 100 :grain 2}

  "thousand"
  #"(?i)tausende?"
  {:dim :number :integer true :value 1000 :grain 3}

  "million"
  #"(?i)million(en)?"
  {:dim :number :integer true :value 1000000 :grain 6}

  "couple"
  #"(?i)(ein )?paar"
  {:dim :number :integer true :value 2}
  
  "few" ; TODO set assumption
  #"(?i)mehrere"
  {:dim :number :integer true :precision :approximate :value 3}

  "integer (20..90)"
  #"(?i)(zwanzig|dreissig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig)"
  {:dim :number
   :integer true
   :value (get {"zwanzig" 20 "dreissig" 30 "vierzig" 40 "fünfzig" 50 "sechzig" 60
              "siebzig" 70 "achtzig" 80 "neunzig" 90}
             (-> %1 :groups first .toLowerCase))
   :grain 1}

 "integer ([2-9][1-9])"
 #"(?i)(ein|zwei|drei|vier|fünf|sechs|sieben|acht|neun)und(zwanzig|dreissig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig)"
 {:dim :number
  :integer true
  :value (+ (get {"ein" 1 "zwei" 2 "drei" 3 "vier" 4 "fünf" 5
                  "sechs" 6 "sieben" 7 "acht" 8 "neun" 9}
                 (-> %1 :groups first .toLowerCase))
            (get {"zwanzig" 20 "dreissig" 30 "vierzig" 40 "fünfzig" 50
                  "sechzig" 60 "siebzig" 70 "achtzig" 80 "neunzig" 90}
                 (-> %2 :groups first .toLowerCase)))}

 ; "integer 21..99"
 ; [(integer 10 90 #(#{20 30 40 50 60 70 80 90} (:value %))) (integer 1 9)]
 ; {:dim :number
 ;  :integer true
 ;  :value (+ (:value %1) (:value %2))}

  "integer (numeric)"
{'fraction_non_alphanumeric': 0.18143986683312527, 'fraction_numerical': 0.0659592176446109, 'mean_word_length': 3.37, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2480291', 'n_tokens_mistral': 2340, 'n_tokens_neox': 1975, 'n_words': 557}