Specify a tokenizer including options that will be given
15 | each text on stdin and should return tokenized output on
16 | stdout. Not applicable when reading from stdin."""
17 |
18 | from __future__ import division, print_function, unicode_literals
19 | import io
20 | import os
21 | try:
22 | import re2 as re
23 | except ImportError:
24 | import re
25 | import sys
26 | import math
27 | import string
28 | import getopt
29 | import subprocess
30 | import collections
31 | from readability.langdata import LANGDATA
32 | if sys.version[0] >= '3':
33 | unicode = str # pylint: disable=invalid-name,redefined-builtin
34 |
35 | PARARE = re.compile('\n\n+')
36 | SENTRE = re.compile('[^\n]+(?:\n|$)')
37 | PUNCTRE = re.compile("^[%s]+$" % re.escape(string.punctuation))
38 |
39 | # Match dashes at start of line, or any quotation mark used for direct speech
40 | # if used as separate token (rules out contractions, possessives, and hyphens
41 | # within words, given correct tokenization).
42 | DIRECTSPEECHRE = re.compile(
43 | "^\\s*[-\u2012-\u2015\u2022\u2043].*$" # dashes
44 | "|(?:^| )['\"\u2018-\u201b\u2039\u203a\u02bc" # single quotes
45 | "\u201c-\u201f\u00ab\u00bb](?: |$)") # double quotes
46 | # The following quotation marks are recognize.
47 | # dashes/bullet points:
48 | # U+2012 FIGURE DASH
49 | # U+2013 EN DASH
50 | # U+2014 EM DASH
51 | # U+2015 HORIZONTAL BAR
52 | # U+2022 BULLET
53 | # U+2043 HYPHEN BULLET
54 |
55 | # single/double quotes:
56 | # U+2018 left single quotation mark
57 | # U+2019 right single quotation mark
58 | # U+201A single low-9 quotation mark
59 | # U+201B single high-reversed-9 quotation mark
60 | # U+2039 single left-pointing angle quotation mark
61 | # U+203A single right-pointing angle quotation mark
62 | # U+02BC modifier letter apostrophe
63 | # U+201C left double quotation mark
64 | # U+201D right double quotation mark
65 | # U+201E double low-9 quotation mark
66 | # U+201F double high-reversed-9 quotation mark
67 | # U+00AB left-pointing double angle quotation mark
68 | # U+00BB right-pointing double angle quotation mark
69 |
70 |
71 | def getmeasures(text, lang='en', merge=False):
72 | """Collect surface characteristics of a tokenized text.
73 |
74 | >>> text = "A tokenized sentence .\\nAnother sentence ."
75 | >>> result = getmeasures(text)
76 | >>> result['sentence info']['words'] == 5
77 | True
78 |
79 | :param text: a single unicode string or an iterable of lines,
80 | one sentence per line of space separated tokens.
81 | :param lang: a language code to select the syllabification procedure and
82 | word types to count.
83 | :param merge: if ``True``, return a dictionary results into a single
84 | dictionary of key-value pairs.
85 | :returns: a two-level ordered dictionary with measurements."""
86 | characters = 0
87 | words = 0
88 | syllables = 0
89 | complex_words = 0
90 | complex_words_dc = 0
91 | long_words = 0
92 | paragraphs = 0
93 | sentences = 0
94 | directspeech = 0
95 | vocabulary = set()
96 | syllcounter = LANGDATA[lang]['syllables']
97 | wordusageregexps = LANGDATA[lang]['words']
98 | beginningsregexps = LANGDATA[lang]['beginnings']
99 | basicwords = LANGDATA[lang].get('basicwords', frozenset())
100 |
101 | wordusage = collections.OrderedDict([(name, 0) for name, regexp
102 | in wordusageregexps.items()])
103 | beginnings = collections.OrderedDict([(name, 0) for name, regexp
104 | in beginningsregexps.items()])
105 |
106 | if isinstance(text, bytes):
107 | raise ValueError('Expected: unicode string or an iterable of lines')
108 | elif isinstance(text, unicode):
109 | # Collect surface characteristics from a string.
110 | # NB: only recognizes UNIX newlines.
111 | paragraphs = sum(1 for _ in PARARE.finditer(text)) + 1
112 | for sent in SENTRE.findall(text):
113 | sentences += 1
114 | directspeech += DIRECTSPEECHRE.search(sent) is not None
115 | # paragraphs = text.count('\n\n')
116 | # sentences = text.count('\n') - paragraphs
117 | for token in text.split():
118 | if PUNCTRE.match(token) is not None:
119 | continue
120 | vocabulary.add(token)
121 | words += 1
122 | characters += len(token)
123 | syll = syllcounter(token)
124 | syllables += syll
125 | if len(token) >= 7:
126 | long_words += 1
127 |
128 | # ignore proper nouns and numbers
129 | if not token[0].isupper() and not token.isdigit():
130 | if syll >= 3:
131 | complex_words += 1
132 | if token.lower() not in basicwords:
133 | complex_words_dc += 1
134 |
135 | for name, regexp in wordusageregexps.items():
136 | wordusage[name] += sum(1 for _ in regexp.finditer(text))
137 | for name, regexp in beginningsregexps.items():
138 | beginnings[name] += sum(1 for _ in regexp.finditer(text))
139 | else: # Collect surface characteristics from an iterable.
140 | prevempty = True
141 | for sent in text:
142 | sent = sent.strip()
143 |
144 | if prevempty and sent:
145 | paragraphs += 1
146 | elif not sent:
147 | prevempty = True
148 | continue
149 | prevempty = False
150 |
151 | sentences += 1
152 | directspeech += DIRECTSPEECHRE.search(sent) is not None
153 | for token in sent.split():
154 | if PUNCTRE.match(token) is not None:
155 | continue
156 | vocabulary.add(token)
157 | words += 1
158 | characters += len(token)
159 | syll = syllcounter(token)
160 | syllables += syll
161 | if len(token) >= 7:
162 | long_words += 1
163 |
164 | # ignore proper nouns and numbers
165 | if not token[0].isupper() and not token.isdigit():
166 | if syll >= 3:
167 | complex_words += 1
168 | if token.lower() not in basicwords:
169 | complex_words_dc += 1
170 |
171 | for name, regexp in wordusageregexps.items():
172 | wordusage[name] += sum(1 for _ in regexp.finditer(sent))
173 | for name, regexp in beginningsregexps.items():
174 | beginnings[name] += regexp.match(sent) is not None
175 |
176 | if not words:
177 | raise ValueError("I can't do this, there's no words there!")
178 |
179 | stats = collections.OrderedDict([
180 | ('characters_per_word', characters / words),
181 | ('syll_per_word', syllables / words),
182 | ('words_per_sentence', words / sentences),
183 | ('sentences_per_paragraph', sentences / paragraphs),
184 | ('type_token_ratio', len(vocabulary) / words),
185 | ('directspeech_ratio', directspeech / sentences),
186 | ('characters', characters),
187 | ('syllables', syllables),
188 | ('words', words),
189 | ('wordtypes', len(vocabulary)),
190 | ('sentences', sentences),
191 | ('paragraphs', paragraphs),
192 | ('long_words', long_words),
193 | ('complex_words', complex_words),
194 | ])
195 | readability = collections.OrderedDict([
196 | ('Kincaid', KincaidGradeLevel(syllables, words, sentences)),
197 | ('ARI', ARI(characters, words, sentences)),
198 | ('Coleman-Liau',
199 | ColemanLiauIndex(characters, words, sentences)),
200 | ('FleschReadingEase',
201 | FleschReadingEase(syllables, words, sentences)),
202 | ('GunningFogIndex',
203 | GunningFogIndex(words, complex_words, sentences)),
204 | ('LIX', LIX(words, long_words, sentences)),
205 | ('SMOGIndex', SMOGIndex(complex_words, sentences)),
206 | ('RIX', RIX(long_words, sentences)),
207 | ])
208 | if basicwords:
209 | stats['complex_words_dc'] = complex_words_dc
210 | readability['DaleChallIndex'] = DaleChallIndex(
211 | words, complex_words_dc, sentences)
212 | if merge:
213 | readability.update(stats)
214 | readability.update(wordusage)
215 | readability.update(beginnings)
216 | return readability
217 | return collections.OrderedDict([
218 | ('readability grades', readability),
219 | ('sentence info', stats),
220 | ('word usage', wordusage),
221 | ('sentence beginnings', beginnings),
222 | ])
223 |
224 |
225 | def getdataframe(filenames, lang='en', encoding='utf8', tokenizer=None):
226 | """Return a pandas DataFrame with readability measures for a list of files.
227 | """
228 | import pandas
229 | filenames = list(filenames)
230 |
231 | return pandas.DataFrame([getmeasures(
232 | applytokenizer(name, tokenizer, encoding),
233 | lang=lang,
234 | merge=True)
235 | for name in filenames], index=filenames)
236 |
237 |
238 | def applytokenizer(filename, tokenizer, encoding):
239 | """Run the tokenizer command on a file, if given, and return text."""
240 | if tokenizer is None:
241 | return io.open(filename, encoding=encoding).read()
242 | proc = subprocess.Popen(
243 | tokenizer.split(),
244 | stdin=subprocess.PIPE,
245 | stdout=subprocess.PIPE,
246 | stderr=subprocess.PIPE)
247 | out, _err = proc.communicate(open(filename).read())
248 | return out.decode(encoding)
249 |
250 |
251 | def KincaidGradeLevel(syllables, words, sentences):
252 | return 11.8 * (syllables / words) + 0.39 * ((words / sentences)) - 15.59
253 |
254 |
255 | def ARI(characters, words, sentences):
256 | return 4.71 * (characters / words) + 0.5 * (words / sentences) - 21.43
257 |
258 |
259 | def ColemanLiauIndex(characters, words, sentences):
260 | return (5.879851 * characters / words - 29.587280 * sentences / words
261 | - 15.800804)
262 |
263 | def FleschReadingEase(syllables, words, sentences):
264 | return 206.835 - 84.6 * (syllables / words) - 1.015 * (words / sentences)
265 |
266 |
267 | def GunningFogIndex(words, complex_words, sentences):
268 | return 0.4 * (((words / sentences)) + (100 * (complex_words / words)))
269 |
270 |
271 | def LIX(words, long_words, sentences):
272 | return words / sentences + (100 * long_words) / words
273 |
274 |
275 | def SMOGIndex(complex_words, sentences):
276 | return math.sqrt(complex_words * (30 / sentences)) + 3
277 |
278 |
279 | def RIX(long_words, sentences):
280 | return long_words / sentences
281 |
282 |
283 | def DaleChallIndex(words, complex_words_dc, sentences):
284 | complex_prc = complex_words_dc / words * 100
285 | score = 0.1579 * complex_prc + 0.0496 * words / sentences
286 | if complex_prc <= 5:
287 | score += 3.6365
288 | return score
289 |
290 |
291 | def main():
292 | shortoptions = 'hL:'
293 | options = 'help csv lang= tokenizer='.split()
294 | cmd = os.path.basename(sys.argv[0])
295 | usage = __doc__ % dict(cmd=cmd, lang=', '.join(LANGDATA))
296 | try:
297 | opts, args = getopt.gnu_getopt(sys.argv[1:], shortoptions, options)
298 | except getopt.GetoptError as err:
299 | print('error: %r\n%s' % (err, usage))
300 | sys.exit(2)
301 | opts = dict(opts)
302 | lang = opts.get('--lang', opts.get('-L', 'en'))
303 |
304 | if '--help' in opts or '-h' in opts:
305 | print(usage)
306 | return
307 | elif '--csv' in opts:
308 | result = getdataframe(args, lang=lang,
309 | tokenizer=opts.get('--tokenizer'))
310 | result.to_csv(sys.stdout)
311 | return
312 | elif len(args) == 0 or args == ['-']:
313 | text = io.TextIOWrapper(sys.stdin.buffer, encoding='utf8')
314 | elif len(args) == 1:
315 | text = applytokenizer(args[0], opts.get('--tokenizer'), 'utf8')
316 | else:
317 | raise ValueError('expected 0 or 1 file argument.')
318 | try:
319 | for cat, data in getmeasures(text, lang).items():
320 | print('%s:' % cat)
321 | for key, val in data.items():
322 | print((' %-25s %12.2f' % (key + ':', val)
323 | ).rstrip('0 ').rstrip('.'))
324 | except KeyboardInterrupt:
325 | sys.exit(1)
326 |
327 |
328 | __all__ = ['getmeasures', 'getdataframe']
329 |
330 | if __name__ == "__main__":
331 | main()
332 |
--------------------------------------------------------------------------------
/readability/langdata.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | """Language specific data and functions."""
3 |
4 | from __future__ import unicode_literals
5 | try:
6 | import re2 as re
7 | except ImportError:
8 | import re
9 | import collections
10 |
11 | VOWELS = 'aoeuiäàâáåãëéèêóòöôõðùúüìíïî' # y is special case; true for en.
12 |
13 | specialsyllables_en = """\
14 | tottered 2
15 | chummed 1
16 | peeped 1
17 | moustaches 2
18 | shamefully 3
19 | messieurs 2
20 | satiated 4
21 | sailmaker 4
22 | sheered 1
23 | disinterred 3
24 | propitiatory 6
25 | bepatched 2
26 | particularized 5
27 | caressed 2
28 | trespassed 2
29 | sepulchre 3
30 | flapped 1
31 | hemispheres 3
32 | pencilled 2
33 | motioned 2
34 | poleman 2
35 | slandered 2
36 | sombre 2
37 | etc 4
38 | sidespring 2
39 | mimes 1
40 | effaces 2
41 | mr 2
42 | mrs 2
43 | ms 1
44 | dr 2
45 | st 1
46 | sr 2
47 | jr 2
48 | truckle 2
49 | foamed 1
50 | fringed 2
51 | clattered 2
52 | capered 2
53 | mangroves 2
54 | suavely 2
55 | reclined 2
56 | brutes 1
57 | effaced 2
58 | quivered 2
59 | h'm 1
60 | veriest 3
61 | sententiously 4
62 | deafened 2
63 | manoeuvred 3
64 | unstained 2
65 | gaped 1
66 | stammered 2
67 | shivered 2
68 | discoloured 3
69 | gravesend 2
70 | 60 2
71 | lb 1
72 | unexpressed 3
73 | greyish 2
74 | unostentatious 5
75 | """
76 |
77 | fallback_cache = {}
78 | _fallback_subsyl = ["cial", "tia", "cius", "cious", "gui", "ion", "iou",
79 | "sia$", ".ely$"]
80 | _fallback_addsyl = ["ia", "riet", "dien", "iu", "io", "ii",
81 | "[aeiouy]bl$", "mbl$",
82 | "[aeiou]{3}",
83 | "^mc", "ism$",
84 | "(.)(?!\\1)([aeiouy])\\2l$",
85 | "[^l]llien",
86 | "^coad.", "^coag.", "^coal.", "^coax.",
87 | "(.)(?!\\1)[gq]ua(.)(?!\\2)[aeiou]",
88 | "dnt$"]
89 | fallback_subsyl = [re.compile(a) for a in _fallback_subsyl]
90 | fallback_addsyl = [re.compile(a) for a in _fallback_addsyl]
91 |
92 |
93 | def _normalize_word(word):
94 | return word.strip().lower()
95 |
96 | # Read syllable overrides and populate cache with them
97 | for line in specialsyllables_en.splitlines():
98 | line = line.strip()
99 | if line:
100 | toks = line.split()
101 | assert len(toks) == 2
102 | fallback_cache[_normalize_word(toks[0])] = int(toks[1])
103 |
104 |
105 | def countsyllables_en(word):
106 | """Fallback syllable counter.
107 |
108 | This is based on the algorithm in Greg Fast's perl module
109 | Lingua::EN::Syllable."""
110 | if not word:
111 | return 0
112 |
113 | # Remove final silent 'e'
114 | if word[-1] == "e":
115 | word = word[:-1]
116 |
117 | # Check for a cached syllable count
118 | if word in fallback_cache:
119 | return fallback_cache[word]
120 |
121 | # Count vowel groups
122 | result = 0
123 | prev_was_vowel = False
124 | for char in word:
125 | is_vowel = char in VOWELS or char == 'y'
126 | if is_vowel and not prev_was_vowel:
127 | result += 1
128 | prev_was_vowel = is_vowel
129 |
130 | # Add & subtract syllables
131 | for r in fallback_addsyl:
132 | if r.search(word):
133 | result += 1
134 | for r in fallback_subsyl:
135 | if r.search(word):
136 | result -= 1
137 |
138 | # Cache the syllable count
139 | fallback_cache[word] = result
140 |
141 | return result
142 |
143 |
144 | def countsyllables_nlde(word):
145 | """Count syllables for Dutch / German words by counting vowel-consonant or
146 | consonant-vowel pairs, depending on the first character being a vowel or
147 | not. If it is, a trailing e will be handled with a special rule."""
148 | result = 0
149 | prev_was_vowel = word[0] in VOWELS
150 | for char in word[1:]:
151 | is_vowel = char in VOWELS
152 | if prev_was_vowel and not is_vowel:
153 | result += 1
154 | prev_was_vowel = is_vowel
155 |
156 | if (len(word) > 1 and word[0] in VOWELS
157 | and word.endswith('e') and not word[-2] in VOWELS):
158 | result += 1
159 | return result or 1
160 |
161 |
162 | conjuction_en = r'and|but|or|yet|nor'
163 | preposition_en = (
164 | 'board|about|above|according to|across from'
165 | '|after|against|alongside|alongside of|along with'
166 | '|amid|among|apart from|around|aside from|at|away from'
167 | '|back of|because of|before|behind|below|beneath|beside'
168 | '|besides|between|beyond|but|by means of'
169 | '|concerning|considering|despite|down|down from|during'
170 | '|except|except for|excepting for|from among'
171 | '|from between|from under|in addition to|in behalf of'
172 | '|in front of|in place of|in regard to|inside of|inside'
173 | '|in spite of|instead of|into|like|near to|off'
174 | '|on account of|on behalf of|onto|on top of|on|opposite'
175 | '|out of|out|outside|outside of|over to|over|owing to'
176 | '|past|prior to|regarding|round about|round'
177 | '|since|subsequent to|together|with|throughout|through'
178 | '|till|toward|under|underneath|until|unto|up'
179 | '|up to|upon|with|within|without|across|along'
180 | '|by|of|in|to|near|of|from')
181 | pronoun_en = (
182 | 'i|me|we|us|you|he|him|she|her|it|they'
183 | '|them|thou|thee|ye|myself|yourself|himself'
184 | '|herself|itself|ourselves|yourselves|themselves'
185 | '|oneself|my|mine|his|hers|yours|ours|theirs|its'
186 | '|our|that|their|these|this|those|your')
187 | words_en = collections.OrderedDict([
188 | ('tobeverb', re.compile(
189 | r'\b(be|being|was|were|been|are|is)\b', re.IGNORECASE)),
190 | ('auxverb', re.compile(
191 | r"\b(will|shall|cannot|may|need to|would|should"
192 | r"|could|might|must|ought|ought to|can't|can)\b", re.IGNORECASE)),
193 | ('conjunction', re.compile(
194 | '\\b(%s)\\b' % conjuction_en, re.IGNORECASE)),
195 | ('pronoun', re.compile(
196 | '\\b(%s)\\b' % pronoun_en, re.IGNORECASE)),
197 | ('preposition', re.compile(
198 | '\\b(%s)\\b' % preposition_en, re.IGNORECASE)),
199 | # a bit limited, but this is exactly what the original style(1) did:
200 | ('nominalization', re.compile(
201 | r'\b\w{3,}(tion|ment|ence|ance)\b', re.IGNORECASE | re.UNICODE)),
202 | ])
203 |
204 | beginnings_en = collections.OrderedDict([
205 | ('pronoun', re.compile(
206 | '(^|\\n)(%s)\\b' % pronoun_en, re.IGNORECASE)),
207 | ('interrogative', re.compile(
208 | r'(^|\n)(why|who|what|whom|when|where|how)\b', re.IGNORECASE)),
209 | ('article', re.compile(
210 | r'(^|\n)(the|a|an)\b', re.IGNORECASE)),
211 | ('subordination', re.compile(
212 | r"(^|\n)(after|because|lest|till|'til|although"
213 | r"|before|now that|unless|as|even if|provided that|provided"
214 | r"|until|as if|even though|since|as long as|so that"
215 | r"|whenever|as much as|if|than|as soon as|inasmuch"
216 | r"|in order that|though|while)\b", re.IGNORECASE)),
217 | ('conjunction', re.compile(
218 | '(^|\\n)(%s)\\b' % conjuction_en, re.IGNORECASE)),
219 | ('preposition', re.compile(
220 | '(^|\\n)(%s)\\b' % preposition_en, re.IGNORECASE)),
221 | ])
222 |
223 | conjuction_nl = 'en|maar|of|want|dus|noch'
224 | preposition_nl = (
225 | "à|aan|ad|achter|behalve|beneden|betreffende|bij"
226 | "|binnen|blijkens|boven|buiten|circa|conform|contra"
227 | "|cum|dankzij|door|gedurende|gezien|hangende|in"
228 | "|ingevolge|inzake|jegens|krachtens|langs|met|middels"
229 | "|mits|na|naar|naast|nabij|namens|niettegenstaande"
230 | "|nopens|om|omstreeks|omtrent|ondanks|onder|ongeacht"
231 | "|onverminderd|op|over|overeenkomstig|per|plus|richting"
232 | "|qua|rond|rondom|sedert|staande|te|tegen|tegenover"
233 | "|ten|ter|tijdens|tot|tussen|uit|uitgezonderd|van"
234 | "|vanaf|vanuit|vanwege|versus|via|volgens|voor"
235 | "|voorbij|wegens|zonder")
236 | pronoun_nl = (
237 | # persoonlijk voornaamwoord
238 | "ik|jij|je|u|hij|hem|zij|ze|haar|het"
239 | "|wij|we|ons|jullie|hen|hun"
240 | # wederkerend voornaamwoord
241 | "mij|me|mijzelf|mezelf|je|jezelf|uzelf"
242 | "|zich|zichzelf|haarzelf|onszelf"
243 | "|elkaar|elkaars|elkander|elkanders|mekaar|mekaars"
244 | # pers. vnw: archaisch
245 | "gij|ge"
246 | "|mijnen|deinen|zijnen|haren|onzen|uwen|hunnen|haren"
247 | "|mijner|deiner|zijner|harer|onzer|uwer|hunner|harer"
248 | "|mijnes|deines|zijnes|hares|onzes|uwes|hunnes|hares")
249 | words_nl = collections.OrderedDict([
250 | ('tobeverb', re.compile(
251 | r'\b(ben|bent|is|zijn|was|waren)\b', re.IGNORECASE)),
252 | ('auxverb', re.compile(
253 | "\\b("
254 | # NB: past perfect forms of these verbs
255 | # ('gehad', 'geweest', 'geworden') are not auxiliary.
256 | # with past perfect verb
257 | "heb|hebt|heeft|hebben|had|hadden"
258 | "|word|wordt|worden|werd|werden"
259 | # "|ben|bent|is|zijn|was|waren"
260 | # with infinitive
261 | "|zal|zult|zullen|zou|zouden"
262 | "|kan|kan|kunt|kunnen|kon|konden"
263 | "|wil|wilt|willen|wilde|wilden|wou|wouden"
264 | "|moet|moeten|moest|moesten"
265 | # "|mag|mogen|mocht|mochten"
266 | # "|hoef|hoeft|hoeven|hoefde|hoefden"
267 | # "|doe|doet|doen|deed|deden"
268 | ")\\b", re.IGNORECASE)),
269 | ('conjunction', re.compile(
270 | '\\b(%s)\\b' % conjuction_nl, re.IGNORECASE)),
271 | ('pronoun', re.compile(
272 | '\\b(%s)\\b' % pronoun_nl, re.IGNORECASE)),
273 | ('preposition', re.compile(
274 | '\\b(%s)\\b' % preposition_nl, re.IGNORECASE)),
275 | # a bit limited, but this is exactly what the original style(1) did:
276 | ('nominalization', re.compile(
277 | r'\b.{3,}(tie|heid|ing|end|ende)\b', re.IGNORECASE)),
278 | ])
279 | beginnings_nl = collections.OrderedDict([
280 | ('pronoun', re.compile(
281 | '(^|\\n)(%s)\\b' % pronoun_nl, re.IGNORECASE)),
282 | ('interrogative', re.compile(
283 | r'(^|\n)(wie|wat|waar|waarom|wanneer|hoe|welk|welke)\b',
284 | re.IGNORECASE)),
285 | ('article', re.compile(
286 | r"(^|\n)(de|het|een|'t)\b", re.IGNORECASE)),
287 | ('subordination', re.compile(
288 | "(^|\\n)("
289 | # onderschikkende voegwoorden
290 | "aangezien|als|alsof|behalve|daar|daarom|dat"
291 | "|derhalve|doch|doordat|hoewel|indien|mits|nadat"
292 | "|noch|ofschoon|omdat|ondanks|opdat|sedert|sinds"
293 | "|tenzij|terwijl|toen|totdat|voordat|wanneer"
294 | "|zoals|zodat|zodra|zonder dat"
295 | # infitief constructies
296 | "|om te)\\b", re.IGNORECASE)),
297 | ('conjunction', re.compile(
298 | '(^|\\n)(%s)\\b' % conjuction_nl, re.IGNORECASE)),
299 | ('preposition', re.compile(
300 | '(^|\\n)(%s)\\b' % preposition_nl, re.IGNORECASE)),
301 | ])
302 |
303 | conjuction_de = ('und|oder|aber|sondern|doch|nur|bloß|denn'
304 | 'weder|noch|sowie')
305 | preposition_de = (
306 | 'aus|außer|bei|mit|nach|seit|von|zu'
307 | '|bis|durch|für|gegen|ohne|um|an|auf'
308 | '|hinter|in|neben|über|unter|vor|zwischen'
309 | '|anstatt|statt|trotz|während|wegen')
310 | pronoun_de = (
311 | 'ich|du|er|sie|es|wir|ihr' # sie # Nominativ
312 | '|mich|dich|ihn|uns|euch' # sie # Akkusativ
313 | '|mir|dir|ihm|ihnen' # uns euch ihr # Dativ
314 | '|mein|dein|sein|unser|euer' # ihr # Genitiv
315 | '|meiner|deiner|seiner|unserer|eurer|ihrer' # Genitiv
316 | '|meine|deine|seine|unsere|eure|ihre' # Genitiv
317 | '|meines|deines|seines|unseres|eures|ihres' # Genitiv
318 | '|meinem|deinem|seinem|unserem|eurem|ihrem' # Genitiv
319 | '|meinen|deinen|seinen|unseren|euren|ihren' # Genitiv
320 | )
321 | words_de = collections.OrderedDict([
322 | ('tobeverb', re.compile("\\b("
323 | "sein|bin|bist|ist|sind|seid|war|warst|wart"
324 | "|waren|gewesen|wäre|wärst|wär|wären|wärt|wäret"
325 | ")\\b", re.IGNORECASE)),
326 | ('auxverb', re.compile("\\b("
327 | "haben|habe|hast|hat|habt|gehabt|hätte|hättest"
328 | "|hätten|hättet"
329 | "|werden|werde|wirst|wird|werdet|geworden|würde"
330 | "|würdest|würden|würdet"
331 | "|können|kann|kannst|könnt|konnte|konntest|konnten"
332 | "|konntet|gekonnt|könnte|könntest|könnten|könntet"
333 | "|müssen|muss|muß|musst|müsst|musste|musstest|mussten"
334 | "|gemusst|müsste|müsstest|müssten|müsstet"
335 | "|sollen|soll|sollst|sollt|sollte|solltest|solltet"
336 | "|sollten|gesollt"
337 | ")\\b", re.IGNORECASE)),
338 | ('conjunction', re.compile(
339 | '\\b(%s)\\b' % conjuction_de, re.IGNORECASE)),
340 | ('pronoun', re.compile(
341 | '\\b(%s)\\b' % pronoun_de, re.IGNORECASE)),
342 | ('preposition', re.compile(
343 | '\\b(%s)\\b' % preposition_de, re.IGNORECASE)),
344 | ('nominalization', re.compile(
345 | r'\b.{3,}(ung|heit|keit|nis|tum)\b', re.IGNORECASE)),
346 | ])
347 | beginnings_de = collections.OrderedDict([
348 | ('pronoun', re.compile(
349 | '(^|\\n)(%s)\\b' % pronoun_de, re.IGNORECASE)),
350 | ('interrogative', re.compile(
351 | r'(^|\n)(wer|was|wem|wen|wessen|wo|wie|warum|weshalb|wann'
352 | r'|wieso|weswegen)\b', re.IGNORECASE)),
353 | ('article', re.compile(
354 | r"(^|\n)(der|die|das|des|dem|den|ein|eine|einer|eines|einem|einen)\b",
355 | re.IGNORECASE)),
356 | ('subordination', re.compile("(^|\\n)("
357 | # bei Nebensätzen
358 | "als|als dass|als daß|als ob|anstatt dass|anstatt daß"
359 | "|ausser dass|ausser daß|ausser wenn|bevor|bis|da|damit"
360 | "|dass|daß|ehe|falls|indem|je|nachdem|ob|obgleich"
361 | "|obschon|obwohl|ohne dass|ohne daß|seit|so daß|sodass"
362 | "|sobald|sofern|solange|so oft|statt dass|statt daß"
363 | "|während|weil|wenn|wenn auch|wenngleich|wie|wie wenn"
364 | "|wiewohl|wobei|wohingegen|zumal"
365 | # bei Infinitivgruppen
366 | "|als zu|anstatt zu|ausser zu|ohne zu|statt zu|um zu"
367 | ")\\b", re.IGNORECASE)),
368 | ('conjunction', re.compile(
369 | '(^|\\n)(%s)\\b' % conjuction_de, re.IGNORECASE)),
370 | ('preposition', re.compile(
371 | '(^|\\n)(%s)\\b' % preposition_de, re.IGNORECASE)),
372 | ])
373 |
374 | # Long Dale-Chall word list of 3000 words recognized by 80 % of fifth graders
375 | basicwords_en = frozenset("""
376 | n't 'm 'll 'd 's 're 've
377 | t m ll d s re ve don shouldn aren didn hadn hasn haven isn needn shan wasn
378 | a able aboard about above absent accept accident account
379 | ache aching acorn acre across act acts add address admire adventure afar afraid
380 | after afternoon afterward afterwards again against age aged ago agree ah ahead
381 | aid aim air airfield airplane airport airship airy alarm alike alive all alley
382 | alligator allow almost alone along aloud already also always am America
383 | American among amount an and angel anger angry animal another answer ant any
384 | anybody anyhow anyone anything anyway anywhere apart apartment ape apiece
385 | appear apple April apron are aren't arise arithmetic arm armful army arose
386 | around arrange arrive arrived arrow art artist as ash ashes aside ask asleep at
387 | ate attack attend attention August aunt author auto automobile autumn avenue
388 | awake awaken away awful awfully awhile ax axe baa babe babies back background
389 | backward backwards bacon bad badge badly bag bake baker bakery baking ball
390 | balloon banana band bandage bang banjo bank banker bar barber bare barefoot
391 | barely bark barn barrel base baseball basement basket bat batch bath bathe
392 | bathing bathroom bathtub battle battleship bay be beach bead beam bean bear
393 | beard beast beat beating beautiful beautify beauty became because become
394 | becoming bed bedbug bedroom bedspread bedtime bee beech beef beefsteak beehive
395 | been beer beet before beg began beggar begged begin beginning begun behave
396 | behind being believe bell belong below belt bench bend beneath bent berries
397 | berry beside besides best bet better between bib bible bicycle bid big bigger
398 | bill billboard bin bind bird birth birthday biscuit bit bite biting bitter
399 | black blackberry blackbird blackboard blackness blacksmith blame blank blanket
400 | blast blaze bleed bless blessing blew blind blindfold blinds block blood bloom
401 | blossom blot blow blue blueberry bluebird blush board boast boat bob bobwhite
402 | bodies body boil boiler bold bone bonnet boo book bookcase bookkeeper boom boot
403 | born borrow boss both bother bottle bottom bought bounce bow bowl bow-wow box
404 | boxcar boxer boxes boy boyhood bracelet brain brake bran branch brass brave
405 | bread break breakfast breast breath breathe breeze brick bride bridge bright
406 | brightness bring broad broadcast broke broken brook broom brother brought brown
407 | brush bubble bucket buckle bud buffalo bug buggy build building built bulb bull
408 | bullet bum bumblebee bump bun bunch bundle bunny burn burst bury bus bush
409 | bushel business busy but butcher butt butter buttercup butterfly buttermilk
410 | butterscotch button buttonhole buy buzz by bye cab cabbage cabin cabinet cackle
411 | cage cake calendar calf call caller calling came camel camp campfire can canal
412 | canary candle candlestick candy cane cannon cannot canoe can't canyon cap cape
413 | capital captain car card cardboard care careful careless carelessness carload
414 | carpenter carpet carriage carrot carry cart carve case cash cashier castle cat
415 | catbird catch catcher caterpillar catfish catsup cattle caught cause cave
416 | ceiling cell cellar cent center cereal certain certainly chain chair chalk
417 | champion chance change chap charge charm chart chase chatter cheap cheat check
418 | checkers cheek cheer cheese cherry chest chew chick chicken chief child
419 | childhood children chill chilly chimney chin china chip chipmunk chocolate
420 | choice choose chop chorus chose chosen christen Christmas church churn
421 | cigarette circle circus citizen city clang clap class classmate classroom claw
422 | clay clean cleaner clear clerk clever click cliff climb clip cloak clock close
423 | closet cloth clothes clothing cloud cloudy clover clown club cluck clump coach
424 | coal coast coat cob cobbler cocoa coconut cocoon cod codfish coffee coffeepot
425 | coin cold collar college color colored colt column comb come comfort comic
426 | coming company compare conductor cone connect coo cook cooked cooking cookie
427 | cookies cool cooler coop copper copy cord cork corn corner correct cost cot
428 | cottage cotton couch cough could couldn't count counter country county course
429 | court cousin cover cow coward cowardly cowboy cozy crab crack cracker cradle
430 | cramps cranberry crank cranky crash crawl crazy cream creamy creek creep crept
431 | cried croak crook crooked crop cross crossing cross-eyed crow crowd crowded
432 | crown cruel crumb crumble crush crust cry cries cub cuff cup cuff cup cupboard
433 | cupful cure curl curly curtain curve cushion custard customer cut cute cutting
434 | dab dad daddy daily dairy daisy dam damage dame damp dance dancer dancing dandy
435 | danger dangerous dare dark darkness darling darn dart dash date daughter dawn
436 | day daybreak daytime dead deaf deal dear death December decide deck deed deep
437 | deer defeat defend defense delight den dentist depend deposit describe desert
438 | deserve desire desk destroy devil dew diamond did didn't die died dies
439 | difference different dig dim dime dine ding-dong dinner dip direct direction
440 | dirt dirty discover dish dislike dismiss ditch dive diver divide do dock doctor
441 | does doesn't dog doll dollar dolly done donkey don't door doorbell doorknob
442 | doorstep dope dot double dough dove down downstairs downtown dozen drag drain
443 | drank draw drawer draw drawing dream dress dresser dressmaker drew dried drift
444 | drill drink drip drive driven driver drop drove drown drowsy drub drum drunk
445 | dry duck due dug dull dumb dump during dust dusty duty dwarf dwell dwelt dying
446 | each eager eagle ear early earn earth east eastern easy eat eaten edge egg eh
447 | eight eighteen eighth eighty either elbow elder eldest electric electricity
448 | elephant eleven elf elm else elsewhere empty end ending enemy engine engineer
449 | English enjoy enough enter envelope equal erase eraser errand escape eve even
450 | evening ever every everybody everyday everyone everything everywhere evil exact
451 | except exchange excited exciting excuse exit expect explain extra eye eyebrow
452 | fable face facing fact factory fail faint fair fairy faith fake fall false
453 | family fan fancy far faraway fare farmer farm farming far-off farther fashion
454 | fast fasten fat father fault favor favorite fear feast feather February fed
455 | feed feel feet fell fellow felt fence fever few fib fiddle field fife fifteen
456 | fifth fifty fig fight figure file fill film finally find fine finger finish
457 | fire firearm firecracker fireplace fireworks firing first fish fisherman fist
458 | fit fits five fix flag flake flame flap flash flashlight flat flea flesh flew
459 | flies flight flip flip-flop float flock flood floor flop flour flow flower
460 | flowery flutter fly foam fog foggy fold folks follow following fond food fool
461 | foolish foot football footprint for forehead forest forget forgive forgot
462 | forgotten fork form fort forth fortune forty forward fought found fountain four
463 | fourteen fourth fox frame free freedom freeze freight French fresh fret Friday
464 | fried friend friendly friendship frighten frog from front frost frown froze
465 | fruit fry fudge fuel full fully fun funny fur furniture further fuzzy gain
466 | gallon gallop game gang garage garbage garden gas gasoline gate gather gave gay
467 | gear geese general gentle gentleman gentlemen geography get getting giant gift
468 | gingerbread girl give given giving glad gladly glance glass glasses gleam glide
469 | glory glove glow glue go going goes goal goat gobble God god godmother gold
470 | golden goldfish golf gone good goods goodbye good-by goodbye good-bye
471 | good-looking goodness goody goose gooseberry got govern government gown grab
472 | gracious grade grain grand grandchild grandchildren granddaughter grandfather
473 | grandma grandmother grandpa grandson grandstand grape grapes grapefruit grass
474 | grasshopper grateful grave gravel graveyard gravy gray graze grease great green
475 | greet grew grind groan grocery ground group grove grow guard guess guest guide
476 | gulf gum gun gunpowder guy ha habit had hadn't hail hair haircut hairpin half
477 | hall halt ham hammer hand handful handkerchief handle handwriting hang happen
478 | happily happiness happy harbor hard hardly hardship hardware hare hark harm
479 | harness harp harvest has hasn't haste hasten hasty hat hatch hatchet hate haul
480 | have haven't having hawk hay hayfield haystack he head headache heal health
481 | healthy heap hear hearing heard heart heat heater heaven heavy he'd heel height
482 | held hell he'll hello helmet help helper helpful hem hen henhouse her hers herd
483 | here here's hero herself he's hey hickory hid hidden hide high highway hill
484 | hillside hilltop hilly him himself hind hint hip hire his hiss history hit
485 | hitch hive ho hoe hog hold holder hole holiday hollow holy home homely homesick
486 | honest honey honeybee honeymoon honk honor hood hoof hook hoop hop hope hopeful
487 | hopeless horn horse horseback horseshoe hose hospital host hot hotel hound hour
488 | house housetop housewife housework how however howl hug huge hum humble hump
489 | hundred hung hunger hungry hunk hunt hunter hurrah hurried hurry hurt husband
490 | hush hut hymn I ice icy I'd idea ideal if ill I'll I'm important impossible
491 | improve in inch inches income indeed Indian indoors ink inn insect inside
492 | instant instead insult intend interested interesting into invite iron is island
493 | isn't it its it's itself I've ivory ivy jacket jacks jail jam January jar jaw
494 | jay jelly jellyfish jerk jig job jockey join joke joking jolly journey joy
495 | joyful joyous judge jug juice juicy July jump June junior junk just keen keep
496 | kept kettle key kick kid kill killed kind kindly kindness king kingdom kiss
497 | kitchen kite kitten kitty knee kneel knew knife knit knives knob knock knot
498 | know known lace lad ladder ladies lady laid lake lamb lame lamp land lane
499 | language lantern lap lard large lash lass last late laugh laundry law lawn
500 | lawyer lay lazy lead leader leaf leak lean leap learn learned least leather
501 | leave leaving led left leg lemon lemonade lend length less lesson let let's
502 | letter letting lettuce level liberty library lice lick lid lie life lift light
503 | lightness lightning like likely liking lily limb lime limp line linen lion lip
504 | list listen lit little live lives lively liver living lizard load loaf loan
505 | loaves lock locomotive log lone lonely lonesome long look lookout loop loose
506 | lord lose loser loss lost lot loud love lovely lover low luck lucky lumber lump
507 | lunch lying ma machine machinery mad made magazine magic maid mail mailbox
508 | mailman major make making male mama mamma man manager mane manger many map
509 | maple marble march March mare mark market marriage married marry mask mast
510 | master mat match matter mattress may May maybe mayor maypole me meadow meal
511 | mean means meant measure meat medicine meet meeting melt member men mend meow
512 | merry mess message met metal mew mice middle midnight might mighty mile milk
513 | milkman mill miler million mind mine miner mint minute mirror mischief miss
514 | Miss misspell mistake misty mitt mitten mix moment Monday money monkey month
515 | moo moon moonlight moose mop more morning morrow moss most mostly mother motor
516 | mount mountain mouse mouth move movie movies moving mow Mr. Mrs. much mud muddy
517 | mug mule multiply murder music must my myself nail name nap napkin narrow nasty
518 | naughty navy near nearby nearly neat neck necktie need needle needn't Negro
519 | neighbor neighborhood neither nerve nest net never nevermore new news newspaper
520 | next nibble nice nickel night nightgown nine nineteen ninety no nobody nod
521 | noise noisy none noon nor north northern nose not note nothing notice November
522 | now nowhere number nurse nut oak oar oatmeal oats obey ocean o'clock October
523 | odd of off offer office officer often oh oil old old-fashioned on once one
524 | onion only onward open or orange orchard order ore organ other otherwise ouch
525 | ought our ours ourselves out outdoors outfit outlaw outline outside outward
526 | oven over overalls overcoat overeat overhead overhear overnight overturn owe
527 | owing owl own owner ox pa pace pack package pad page paid pail pain painful
528 | paint painter painting pair pal palace pale pan pancake pane pansy pants papa
529 | paper parade pardon parent park part partly partner party pass passenger past
530 | paste pasture pat patch path patter pave pavement paw pay payment pea peas
531 | peace peaceful peach peaches peak peanut pear pearl peck peek peel peep peg pen
532 | pencil penny people pepper peppermint perfume perhaps person pet phone piano
533 | pick pickle picnic picture pie piece pig pigeon piggy pile pill pillow pin pine
534 | pineapple pink pint pipe pistol pit pitch pitcher pity place plain plan plane
535 | plant plate platform platter play player playground playhouse playmate
536 | plaything pleasant please pleasure plenty plow plug plum pocket pocketbook poem
537 | point poison poke pole police policeman polish polite pond ponies pony pool
538 | poor pop popcorn popped porch pork possible post postage postman pot potato
539 | potatoes pound pour powder power powerful praise pray prayer prepare present
540 | pretty price prick prince princess print prison prize promise proper protect
541 | proud prove prune public puddle puff pull pump pumpkin punch punish pup pupil
542 | puppy pure purple purse push puss pussy pussycat put putting puzzle quack quart
543 | quarter queen queer question quick quickly quiet quilt quit quite rabbit race
544 | rack radio radish rag rail railroad railway rain rainy rainbow raise raisin
545 | rake ram ran ranch rang rap rapidly rat rate rather rattle raw ray reach read
546 | reader reading ready real really reap rear reason rebuild receive recess record
547 | red redbird redbreast refuse reindeer rejoice remain remember remind remove
548 | rent repair repay repeat report rest return review reward rib ribbon rice rich
549 | rid riddle ride rider riding right rim ring rip ripe rise rising river road
550 | roadside roar roast rob robber robe robin rock rocky rocket rode roll roller
551 | roof room rooster root rope rose rosebud rot rotten rough round route row
552 | rowboat royal rub rubbed rubber rubbish rug rule ruler rumble run rung runner
553 | running rush rust rusty rye sack sad saddle sadness safe safety said sail
554 | sailboat sailor saint salad sale salt same sand sandy sandwich sang sank sap
555 | sash sat satin satisfactory Saturday sausage savage save savings saw say scab
556 | scales scare scarf school schoolboy schoolhouse schoolmaster schoolroom scorch
557 | score scrap scrape scratch scream screen screw scrub sea seal seam search
558 | season seat second secret see seeing seed seek seem seen seesaw select self
559 | selfish sell send sense sent sentence separate September servant serve service
560 | set setting settle settlement seven seventeen seventh seventy several sew shade
561 | shadow shady shake shaker shaking shall shame shan't shape share sharp shave
562 | she she'd she'll she's shear shears shed sheep sheet shelf shell shepherd shine
563 | shining shiny ship shirt shock shoe shoemaker shone shook shoot shop shopping
564 | shore short shot should shoulder shouldn't shout shovel show shower shut shy
565 | sick sickness side sidewalk sideways sigh sight sign silence silent silk sill
566 | silly silver simple sin since sing singer single sink sip sir sis sissy sister
567 | sit sitting six sixteen sixth sixty size skate skater ski skin skip skirt sky
568 | slam slap slate slave sled sleep sleepy sleeve sleigh slept slice slid slide
569 | sling slip slipped slipper slippery slit slow slowly sly smack small smart
570 | smell smile smoke smooth snail snake snap snapping sneeze snow snowy snowball
571 | snowflake snuff snug so soak soap sob socks sod soda sofa soft soil sold
572 | soldier sole some somebody somehow someone something sometime sometimes
573 | somewhere son song soon sore sorrow sorry sort soul sound soup sour south
574 | southern space spade spank sparrow speak speaker spear speech speed spell
575 | spelling spend spent spider spike spill spin spinach spirit spit splash spoil
576 | spoke spook spoon sport spot spread spring springtime sprinkle square squash
577 | squeak squeeze squirrel stable stack stage stair stall stamp stand star stare
578 | start starve state station stay steak steal steam steamboat steamer steel steep
579 | steeple steer stem step stepping stick sticky stiff still stillness sting stir
580 | stitch stock stocking stole stone stood stool stoop stop stopped stopping store
581 | stork stories storm stormy story stove straight strange stranger strap straw
582 | strawberry stream street stretch string strip stripes strong stuck study stuff
583 | stump stung subject such suck sudden suffer sugar suit sum summer sun Sunday
584 | sunflower sung sunk sunlight sunny sunrise sunset sunshine supper suppose sure
585 | surely surface surprise swallow swam swamp swan swat swear sweat sweater sweep
586 | sweet sweetness sweetheart swell swept swift swim swimming swing switch sword
587 | swore table tablecloth tablespoon tablet tack tag tail tailor take taken taking
588 | tale talk talker tall tame tan tank tap tape tar tardy task taste taught tax
589 | tea teach teacher team tear tease teaspoon teeth telephone tell temper ten
590 | tennis tent term terrible test than thank thanks thankful Thanksgiving that
591 | that's the theater thee their them then there these they they'd they'll they're
592 | they've thick thief thimble thin thing think third thirsty thirteen thirty this
593 | thorn those though thought thousand thread three threw throat throne through
594 | throw thrown thumb thunder Thursday thy tick ticket tickle tie tiger tight till
595 | time tin tinkle tiny tip tiptoe tire tired title to toad toadstool toast
596 | tobacco today toe together toilet told tomato tomorrow ton tone tongue tonight
597 | too took tool toot tooth toothbrush toothpick top tore torn toss touch tow
598 | toward towards towel tower town toy trace track trade train tramp trap tray
599 | treasure treat tree trick tricycle tried trim trip trolley trouble truck true
600 | truly trunk trust truth try tub Tuesday tug tulip tumble tune tunnel turkey
601 | turn turtle twelve twenty twice twig twin two ugly umbrella uncle under
602 | understand underwear undress unfair unfinished unfold unfriendly unhappy unhurt
603 | uniform United States unkind unknown unless unpleasant until unwilling up upon
604 | upper upset upside upstairs uptown upward us use used usefulç valentine valley
605 | valuable value vase vegetable velvet very vessel victory view village vine
606 | violet visit visitor voice vote wag wagon waist wait wake waken walk wall
607 | walnut want war warm warn was wash washer washtub wasn't waste watch watchman
608 | water watermelon waterproof wave wax way wayside we weak weakness weaken wealth
609 | weapon wear weary weather weave web we'd wedding Wednesday wee weed week we'll
610 | weep weigh welcome well went were we're west western wet we've whale what
611 | what's wheat wheel when whenever where which while whip whipped whirl whisky
612 | whiskey whisper whistle white who who'd whole who'll whom who's whose why
613 | wicked wide wife wiggle wild wildcat will willing willow win wind windy
614 | windmill window wine wing wink winner winter wipe wire wise wish wit witch with
615 | without woke wolf woman women won wonder wonderful won't wood wooden woodpecker
616 | woods wool woolen word wore work worker workman world worm worn worry worse
617 | worst worth would wouldn't wound wove wrap wrapped wreck wren wring write
618 | writing written wrong wrote wrung yard yarn year yell yellow yes yesterday yet
619 | yolk yonder you you'd you'll young youngster your yours you're yourself
620 | yourselves youth you've
621 | """.lower().split())
622 |
623 | # 3000 most frequent word tokens in Sonar 500 corpus
624 | basicwords_nl = frozenset("""
625 | . de , van het een en in dat is op te zijn voor met ik die niet ) ( : " maar er
626 | ' aan - ook je als om ? hij ze bij dan nog was naar uit of door we heeft over
627 | wat al tot worden meer hebben wordt geen wel jaar kan ! dit nu zich zo hun deze
628 | werd moet mijn haar na kunnen zou veel tegen ... 1 had ; twee heb zal daar toch
629 | andere goed eerste wil moeten waar mensen / onder nieuwe gaat gaan 2 dus hem u
630 | ons me ben weer hier alleen toen omdat hoe doen zegt onze alle heel tussen
631 | maken mij grote eens '' zij waren uur komt iets komen staat zoals euro wij 3
632 | drie af * volgens tijd want altijd één zelf wie zonder mee weet man vooral
633 | eigen ja tweede enkele leven zelfs plaats keer zien toe dag alles jaren laten
634 | the 4 men echt werden zullen willen nooit weg 0 % zeker kinderen laatste kon
635 | tijdens net week kwam terug mag .. 5 land krijgen europese staan per werk
636 | zeggen binnen minder even procent aantal steeds laat niets blijft 6 miljoen
637 | beter samen ging blijven werken zo'n elkaar zit verder anders rond nederland
638 | ten hadden gewoon lang artikel vier misschien via geven vandaag zei iedereen \]
639 | eerst moest jij re goede waarom 10 sinds pas geleden weten later hele geld
640 | wereld zouden mogelijk hen iemand vraag brussel groot belgië vrouw doet houden
641 | deel bijna elke vinden echter huis gisteren vaak \[ vanaf nodig maakt kreeg
642 | opnieuw vind allemaal zitten snel vlaamse nemen ter volgende vijf krijgt achter
643 | der maanden dagen minister stad erg uw denk natuurlijk da la politie nee derde
644 | belgische nederlandse weinig amerikaanse terwijl ligt ga zeer a helemaal
645 | geweest vorig hebt den 7 duidelijk kleine 20 commissie regering vrouwen daarom
646 | gemaakt wanneer manier jullie beste spelen enige vindt 8 waarin naam soms
647 | eigenlijk verschillende groep zie begin paar tien lijkt bijvoorbeeld eerder
648 | gedaan graag weken onderzoek gezien geval mogen bent 15 europa oude voorzitter
649 | partij vragen geeft genoeg seizoen enkel landen open vorige bovendien frank
650 | meteen vlaanderen wilde moment welke kans zes politieke antwerpen zondag zaken
651 | club stond raad bedrijf mannen elk 12 brengen buiten ooit beetje grootste hand
652 | naast slechts 9 ziet probleem bekend nieuw titel niemand problemen vader maakte
653 | school 25 zaterdag vrij ander markt dood 11 gent thuis morgen dezelfde moeilijk
654 | denken aldus jonge einde daarna le 't bestaat moeder stellen eind vast jan
655 | blijkt boven kijken zetten water boek vanuit muziek 30 zaak kind ouders deed
656 | zowel 14 wedstrijd ` 18 vond bedrijven ploeg zoveel gemeente meeste afgelopen
657 | soort punten meest kunt maand les quote geworden & extra zodat sociale meter
658 | film gebruik gebruikt doe beide kom liggen franse halen vroeg zag gezegd
659 | president politiek dingen uiteindelijk langs = hoop valt houdt september b
660 | sommige miljard lange best d belang des vlaams familie zeg liet zat hoofd | ge
661 | 13 bezig à helft nationale neemt juni 16 zorgen ervan sterk jongeren auto et
662 | mei stuk daarmee handen januari niks lid kwamen konden druk trouwens ongeveer
663 | start immers frankrijk 17 internationale nieuws recht vele p belangrijk prijs
664 | 2004 oktober bank rol overheid waarop informatie foto burgemeester waarbij ogen
665 | langer vroeger betalen mooi parlement brugge juist echte kant verhaal bepaalde
666 | zichzelf beginnen waarvan volledig verordening inderdaad basis nadat klein hoge
667 | juli zin lopen duitse wist mens zoon economische anderen hetzelfde radio oorlog
668 | werkt toekomst speelt 2005 's gaf horen meestal huidige reden periode stelt
669 | minuten .... acht verwacht totaal gelijk bestaan daarbij 19 vol december succes
670 | god maart 21 daarvoor hoor gehad ruim ni amsterdam begon loopt idee april
671 | begint licht > eten precies kosten bleef slecht hoog duitsland vorm betekent
672 | eeuw financiële vallen rest ver vrijdag zeven woord jou peter kort grond
673 | premier programma bleek wachten genomen 24 spelers 50 22 gegeven terecht 100
674 | gebied ronde verenigde belangrijke zware partijen plaatsen z'n nr. aandacht
675 | november nam waardoor punt rode gelukkig rust dienst nummer plan staten woorden
676 | kijk publiek hoewel rekening dacht gemeenschap situatie zoek unie volgend
677 | voorbije mocht feit zoeken gebeurt intussen new weekend kamer 23 moesten klaar
678 | koning leden doel trekken gebruiken zwaar verkiezingen britse helpen leren + i
679 | belangrijkste vs trainer centrum gekomen gevonden kregen augustus vierde kennen
680 | waarschijnlijk namen dollar mooie volgen dochter «ik waarmee 2003 daarvan
681 | vertelt buitenlandse lijst komende spreken 2000 gevolg tegenover korte proberen
682 | half vrije maandag top won zet gevallen gingen onderwijs straat vlak steun and
683 | winnen daardoor beeld vrienden maatregelen denkt ene bijzonder nederlands
684 | ruimte vormen leggen europees liep geschiedenis finale gevoel inwoners ondanks
685 | volgt niveau 2001 februari praten hard geloof richting strijd leuk buurt cd&v
686 | blz. heer paul gratis antwoord betrokken voorlopig gekregen 2002 wellicht
687 | verloren volk begonnen directeur gebracht vld lol economie speelde project --
688 | schepen info winst organisatie voetbal werknemers stemmen 40 verschil momenteel
689 | gebeuren brengt wet systeem internet hoger kilometer leuven nacht oud tom alsof
690 | marc viel liever kopen actie woensdag kun betreft ieder sport wonen gehouden
691 | bevolking kerk wegens fc akkoord vraagt straks cijfers lezen orde algemeen
692 | leiden beleid bart normaal uiteraard ma twintig rijden kost hart jongens
693 | producten wagen oog richtlijn l én irak 28 meisje samenwerking blijkbaar kent
694 | hulp erop klanten jongen namelijk macht 26 hoogte nie 27 schrijven graden
695 | genoemd nauwelijks anderlecht verleden boeken waarde heen oplossing 2006
696 | ziekenhuis du eén luc reeks vriend provincie lokale contact controle donderdag
697 | vanavond witte overigens overal avond geboren deur kiezen ondertussen besluit
698 | keuze hield voldoende blij bepaald media sterke zomer zwarte zee geef rechter
699 | liefde lijn bestuur nou team taal beroep tekst resultaat regio to wou
700 | resultaten oostende dinsdag krant termijn voorbeeld indien slag vertrouwen
701 | doelpunten stand kennis s voorstel inmiddels hoeveel wijze 31 geweld vergeten
702 | david voorbij vervolgens dieren mening gezet groter dankzij woning frans voeren
703 | brand foto's bezoek «de m gesteld telkens 60 hé vertellen leeftijd ontwikkeling
704 | ervaring cultuur geldt lag plannen krijg meisjes aandeel gevraagd km kunst
705 | liefst nogal ervoor china leger lidstaten leerlingen haalde kracht bracht
706 | sprake dicht johan dergelijke ne aandelen crisis los stap groen meerderheid
707 | bezoekers kritiek gewonnen parijs actief eindelijk bedoeling halve persoon ken
708 | tevreden legt iedere delen beslissing 29 relatie kop personen gezicht schreef
709 | betere leek israël leider behalve noemen fout mechelen slechte jong geheel
710 | wacht john daarnaast verkocht gevolgen daarin trekt bang negen bieden c ergens
711 | universiteit klasse voorkomen gang jongste maak gegevens lichaam vervangen
712 | lekker opdracht ii stelde omgeving gebeurd neem minstens direct 2007 «we
713 | slachtoffer groei rug lucht brusselse prijzen bekende verkeer personeel raakte
714 | he gegaan gebouw patrick name kaart gij hou onlangs gewone pakken kwaliteit
715 | twaalf wilt heet scholen moeite midden links doden juiste geschreven «het
716 | verkoop kader amerika tafel voelen stem website bal york voorzien regels sector
717 | museum gesloten advies slachtoffers hoeft biedt contract kansen verkopen jouw
718 | openbare k last plus italiaanse band spel wedstrijden rechtbank verband alvast
719 | indruk hoort activiteiten genk federale 80 gezin antwerpse hoogste un italië
720 | bouwen productie politici voorstellen proces mogelijke beslist spanje _ neer
721 | invloed dertig middelen verslag spreekt gespeeld dirk word opgenomen pb
722 | vastgesteld gebeurde omzet geloven zette 70 leiding zoiets klinkt justitie
723 | stonden telt on amper wilden inzake discussie zon for optreden algemene
724 | gemeenten o feiten peeters ministerie veld dans e moord ontstaan gevaar stoppen
725 | speciale match duur dragen belgen veiligheid aanwezig centrale beperkt trok t
726 | daarop 35 tegenwoordig onmiddellijk loop bewoners rusland hoofdstad verliezen
727 | tv veranderen verlies baan keren kwestie buitenland honderd schade vuur rustig
728 | tel. bed londen 00 brief café eenmaal fr. broer diverse jeugd kortrijk voel
729 | bush vaste gesprek bijlage 1999 merk openbaar mevrouw enorm bron maatschappij
730 | samenleving beelden wim werkte spaanse dank vanwege bedrag sp.a voelt reactie
731 | gehoord dient steden ok beschikking pijn aarde wa toepassing stel schrijft 200
732 | gekozen collega's burgers allerlei dorp hangt post erin provinciale positie cel
733 | internationaal eisen geel haalt 90 advocaat koers 1996 enorme persoonlijke
734 | verlaten kwijt zolang absoluut banken beurs gebrek vriendin goeie kabinet
735 | stappen zege nochtans energie verloor sluiten functie binnenkort positief
736 | standard vrijheid afstand plek winkel welk zorgt voormalige volle verdrag
737 | leterme sociaal hans tegelijk studenten dl rotterdam geluk zowat jammer
738 | roeselare mogelijkheden amerikanen moderne tonen bestaande reed noemt televisie
739 | makkelijk debat mis lijken haag gemiddelde carrière site officiële aanleiding
740 | veroordeeld diensten 1995 bereiken reeds eu sneller regelmatig plots eveneens
741 | geraakt westen wk zorg hof technische das leidt grotere initiatief militaire
742 | auto's betaald terrein hopen russische vijftien grens ontvangen woont pour
743 | sommigen rechten omstandigheden bureau voelde groepen vakantie bereid groene
744 | gewerkt val sfeer respect vlamingen bewijzen oh mogelijkheid gouden probeert
745 | verwachten brandweer rij volledige gemiddeld vijfde hotel rekenen bestuurder
746 | overwegende bedoeld geert wint regen perfect verantwoordelijk persoonlijk blijf
747 | voordeel vijftig product moslims dienen wind n bus comité totale opleiding
748 | redenen gesproken une kijkt risico hasselt voet deden dagelijks waarvoor
749 | beweging nadien kwaad dak bereikt voorsprong vonden gericht klassieke officieel
750 | turkije michel gemakkelijk \\ zaal hangen zaten 1998 werking drinken
751 | overwinning michael films mezelf kaarten handel stil rijk noch droog zomaar
752 | voorwaarden meneer schuld se verhalen vakbonden natuur aangezien verplicht
753 | overeenkomst bedraagt steken rapport mond nodige maakten helaas prins zuiden
754 | dossier uren diep erbij eerlijk studie as pak eigenaar slaan hogere klopt wegen
755 | genieten bergen tour charleroi betreffende bloed uitgevoerd
756 | verantwoordelijkheid jaarlijks thomas kampioen overleden sprak 2008 rechts
757 | vaker leveren coach sturen job overleg station keek you allen parket waaronder
758 | centraal deelnemers gestolen pieter reis nederlanders uitspraak alweer waard
759 | boodschap zwart verklaring engeland speler duizenden toegang tijden eg publieke
760 | gedacht opgepakt h f verboden geregeld bewust lacht angst eraan geplaatst sorry
761 | park que elf bouw zulke cd begrijpen gek ware gele bedankt vereniging voordat
762 | probeerde schrijver gevangenis islam koop hoopt positieve huizen laag waregem
763 | competitie kleur guy wijn versie slapen verdwenen karakter honderden overtuigd
764 | ah harde speciaal onmogelijk bos praktijk 45 albert zoekt waarheid zagen
765 | belgisch zogenaamde di gehaald tientallen noorden 1994 gisteravond koen
766 | afdeling boete lager gewond hoorde chinese rood boom aanpak 75 daarover dokter
767 | nergens beneden directie gevolgd woningen 32 ongeval wees tuin gedurende ding
768 | merken brussels stukken gebouwd rechtstreeks doelman degelijk gentse zekerheid
769 | gedrag democratie toont vooruit 500 x veilig huwelijk passen mijnheer
770 | tentoonstelling aalst lachen wakker wijzen warm baas soorten hond leeft m'n
771 | gewijzigd daders karel vóór ermee onderzoeken qui bert wallonië bezit campagne
772 | klant verdwijnen keuken doordat velen tijdje partner steven welkom ziekte
773 | bijzondere principe raken robert sk effect lichte concurrentie besloten
774 | reageren grenzen groetjes neen medewerkers materiaal ontslag engels turkse
775 | levert model gebieden ofwel lage afgesloten poging ouder hoek serieus
776 | historische voortaan bekijken vreemd vergelijking volgde kern starten veranderd
777 | onderhandelingen herman draait probeer muur jezelf restaurant agenten ogenblik
778 | noodzakelijk fiets gebouwen stijl au vrede aanvankelijk ziek taak vlucht kust
779 | aanbod kim verkeerd engelse duizend verdienen beurt vroegere vertelde 33 eiland
780 | kevin wijst sta begrip past roman onderwerp fortis kandidaten feest flink legde
781 | mate collega soldaten betrekking voeten ondernemingen opgericht moeilijke
782 | oorzaak wijk vlees hè 'n bescherming geest straf woordvoerder japan trein
783 | meerdere verschillen tenminste est traditionele draaien behandeling 1997 zover
784 | combinatie organiseren smaak ie beiden wereldoorlog computer milieu forum vormt
785 | wél gelegen vertrekken recente type limburg oudere wit lief plezier voortdurend
786 | ton manager zestig voort spoor lieten eur verbonden polen avonds bef projecten
787 | tevens j. zorgde inhoud elders reacties il gemeenteraad kende tachtig janssens
788 | uitgebreid vrijwel winnaar bewijs lees vzw veertig neus middel opvallend banen
789 | eeg baby iran instellingen gelegenheid onderneming leuke gerecht vanmorgen
790 | dikke generatie yves festival begrijp werkelijkheid toestand afrika bedoelde
791 | luik nationaal betaalt selectie financieel vielen el eric winter oudste
792 | economisch zelden afkomstig besloot evenwel commerciële reageert bevat c8 blok
793 | sluit franstalige spijt thuisploeg bedoel aanval slot ploegen kv duren mark
794 | dieven leidde vertrek ministers vandaar dichter aanslag organiseert verdere
795 | spits begroting sterker luisteren ideeën verhofstadt podium klacht veroorzaakt
796 | maria waalse plaatselijke acties n-va doelpunt israëlische willem blijken
797 | behoorlijk beschikbaar georganiseerd telefoon mochten wapens par gebaseerd live
798 | twijfel 65 eruit middag bleven 150 olympische operatie 300 oppervlakte
799 | organisaties tegenstelling it anderzijds duurt goe beschouwd drugs deuren pers
800 | oppositie afscheid binnenlandse thema 34 jezus definitief bepalingen serie
801 | louis snelheid relatief bepalen verkeerde blik ongetwijfeld winkels culturele
802 | papier joden afhankelijk olie minuut snelle kandidaat utrecht stof eer
803 | weliswaar eventueel ernstig 36 interessant oosten mama lot 99 hoeven groeien
804 | achteraf gelezen international bod plaatse afghanistan vergadering redactie
805 | prima vervoer procedure bellen helpt allez zo. b. 1992 praat 1993 sloeg belg
806 | zodra redden m. oké min onderdeel uitleg netwerk scoorde lukt willy ontdekt
807 | hoofdpunten trots tenslotte lokeren groot-brittannië uitbreiding droom p. arm
808 | fase clubs erger training filip komst tc gesprekken 46 eentje specifieke
809 | medische oprichting set behoort aanslagen houding armen missen topic studio
810 | betekenis jaarlijkse vliegen behouden mooiste getroffen berichten waarden
811 | stijging militairen programma's bijdrage stijn financiën vb visie
812 | belangstelling glas hopelijk seconden verzoek gerust sindsdien koningin vis
813 | eenvoudig haal vermijden andré meent standaard gelegd dreigt talent destijds
814 | bomen koffie da's gekocht ps draagt bestond 1991 gevaarlijk philippe d.
815 | commentaar roepen 1990 patiënten vliegtuig verjaardag gasten aanwezigheid zak
816 | chris fouten ineens fijn gezondheid theater zult 02 inzet instituut
817 | palestijnse teken werkelijk brug wisten gezond troepen uitvoering luchthaven
818 | gemeenschappen auteur reizen dames rock george verzet vrees democratische
819 | kranten gezinnen bericht kleuren vermoord koninklijke defensie benen menselijke
820 | vreemde 55 turnhout joodse allebei redelijk a. editie kindje haast kiest stukje
821 | pierre eddy jos gebleven partners jarenlang investeringen zus gelet datum
822 | standpunt vermoedelijk waarna < motor sur voorstelling vergeet maxima
823 | commissaris professor beschikken zeventig japanse minste martin erik vooraf
824 | literatuur voorkeur kwart euh schip technisch roept voorgesteld show scoren
825 | india sporen slagen tekort prachtige individuele 01 regionale gezocht inkomsten
826 | voornamelijk 38 compleet negatieve nederlaag sven lagere beveren boonen wens
827 | vermogen v. conflict goedgekeurd dubbele geslaagd 98 teksten hallo stichting
828 | toevallig goud negentig pagina tegenstander antwoorden koninkrijk 37 traditie
829 | roger mist behoren stijgen stadsbestuur letterlijk mekaar kleinere vrt westerse
830 | natuurlijke interview straten toon gsm kris goederen zekere geleid belastingen
831 | g beleggers vanmiddag haven rijdt scheidsrechter overeenkomstig streek speelden
832 | wetenschap hiervoor klachten industrie zone uitzondering richten arbeiders
833 | pakte zesde burger slaat inkomen ervaren ontwikkelen prachtig tegelijkertijd
834 | eventuele verklaarde washington tijdelijk link rand zingen bel seks kleren
835 | hiermee communautaire republiek agenda hugo onafhankelijk voert verdeeld wagens
836 | digitale momenten leiders gemeentebestuur gedachten externe heilige vannacht
837 | rome aangeboden gewezen lierse regeling waaraan an 42 hemel geheim islamitische
838 | planten ontslagen noemde tja beschermen aangepast gestuurd instelling raakt
839 | verscheen verdient concert oranje vrouwelijke spa kwartaal absolute feite stop
840 | ruzie verschenen fans verschijnen buren 250 onvoldoende geschorst fietsen
841 | duidelijke 97 voldoen idd qua interne jean ambtenaren been steunen wereldwijd
842 | supporters beslissen gewest ek verbeteren verdachte renners steeg tienen
843 | voorbereiding verandering zicht treden dromen madrid reclame interesse nood
844 | dader sterven oostenrijk aanzien world conclusie normale omhoog sloot
845 | lid-staten behoefte ontstond papa leverde management consument blauwe
846 | uitsluitend omroep heren rit ingediend durven landbouw overname langzaam beker
847 | simpel paus diens uiterlijk verteld bier evolutie begrepen brede verliest
848 | walter kantoor beschikt nummers test kamp my league geleerd 400 jacques
849 | afspraken maximaal gaven pensioen koos dringend aangehouden autoriteiten tal
850 | ernstige achtergrond dr. luister wetgeving dure dier volop 44 allochtonen
851 | hoeveelheid instantie es opgesteld daarentegen piet tenzij geluid behandeld
852 | bewezen menen contacten steve verdediging favoriete y geraken maat boeren
853 | ongeluk gelooft uitvoeren geopend stoffen afloop miljoenen schoenen c. riep
854 | anderhalf moeilijker journalisten beslag lieve adres fonds maatschappelijke
855 | gedeelte analyse meester klas tony wetenschappelijke regisseur boot katholieke
856 | c6 markten dendermonde gemeenschappelijke gast vn mede san bezoeken arts out
857 | gebruikte belangen afspraak nachts alsnog liepen investeren gelden categorie
858 | hierbij getuigen elementen blad vlot bond ramp treedt trap ring normen teveel
859 | prestatie tim bloemen verandert mol grotendeels voedsel bijdragen 85 opvolger
860 | overige gevoelens gebeurtenissen zwanger uitspraken kunstenaar zulte eindigde
861 | logisch aard verdedigen omwille berlijn communicatie waarover usd moe gestegen
862 | ontwikkeld wensen g. strategie alternatief vogels vaststelling 39 stilaan
863 | chauffeur geprobeerd zetels 43 slaap evenwicht raakten gezelschap geweldig
864 | album dubbel lagen wezen huid erover kunstenaars voormalig leest opnemen banden
865 | cercle fiscale aanleg dik deelnemen wolken verdacht united voertuig rijke u.
866 | onbekende 1000 record kristof onderzocht opklaringen warme structuur ideale
867 | ochtend veertien 48 bekeken stuur voorwaarde integratie sneeuw groeit tellen
868 | openen vertrokken oorsprong aanmerking creëren studies be v pvda km² ajax gat
869 | populair nederlander ingezet 1989 portugal belasting negatief uiterst grondwet
870 | beheer moskou vloer roken artsen bevindt stevig prestaties lijden onderzoekers
871 | stadion gedragen evenmin schuldig brood ach bijkomende formule tekenen verre
872 | luidt iii voren budget s. voorbeelden overzicht hierdoor lastig techniek vos
873 | vrachtwagen oudenaarde technologie duitsers enig gaten gelijke zwitserland
874 | koppel berg ce trouw loon collectie werkgevers koud leeg eh guido opening
875 | beperkte voorzichtig vermeld gepland fabriek rente richard toekomstige schoot
876 | eet stopt bob aandeelhouders schrik controleren christelijke toeristen city
877 | risico's 20.00 james kilo gevoerd breed geschikt vluchten oorspronkelijke
878 | sint-niklaas kapitaal kanten greep werkloosheid maal oren minst 41 schorsing
879 | rolleyes belangrijker smet inspanningen historisch pakt real getrokken
880 | kruispunt vorst that zweden trek love st. las beperken verhouding verwachtingen
881 | bestuurders liter toonde evenveel opzichte firma danny arabische verklaard
882 | breken france westerlo achterstand hoi leert raar uitslag € afrikaanse vandaan
883 | journalist klagen geslagen charles kwartier maes zakken schoon onafhankelijke
884 | liedje gewicht realiteit socialistische werkgever meldt zen stevige stemming
885 | bedragen terugkeer aa barcelona boos regel details kleiner tmf klap tis acteur
886 | passagiers aardig spanning gedachte big verscheidene vechten finales schat
887 | fransen concrete rik oproep goedkoper verenigd onzer slotte protest jo bruno
888 | uitstekend integendeel schieten imago onderdelen theorie gedwongen franstaligen
889 | locatie 20.30 overleed cda tegenstanders zevende zwakke concept martens
890 | overtuigen bronnen constant populaire boord jeroen pink fantastisch ingang
891 | linkse college amsterdamse belga religieuze opent onafhankelijkheid vieren
892 | toerisme no haat politicus 2009 congo luxemburg meegemaakt iraakse golf aankoop
893 | gooien kasteel tips coalitie mss betekenen revolutie overeenstemming redacteur
894 | bibliotheek saddam verklaart maatregel champions marcel kiezers dode «in 52
895 | brak vtm zaventem zijde overgenomen reageerde arme super hetgeen paard naartoe
896 | juridische naties zestien opmerkelijk dagelijkse vroege geweten melk vvd stilte
897 | hielden identiteit aangenomen 2010 getrouwd dertien leer pleit portefeuille dom
898 | respectievelijk duo diezelfde makkelijker stak rob broers strand vergelijken
899 | daartoe griekse staatssecretaris lijf kosovo cheer broek hout stijgt toezicht
900 | dossiers fors voordelen e-mail zichtbaar regime @ sowieso jury papieren koude
901 | melden ontwerp verkozen h. toeval dikwijls doorgaans namens verrassing
902 | bevestigd marokkaanse applaus beloften cup geheime vluchtelingen toegepast
903 | leeuw verschijnt schaal australië geïnteresseerd effectief danken armoede von
904 | scherp gewonden wetten voorts automatisch massaal vrezen bord stroom houten
905 | jongere zanger inclusief alcohol uitgesproken ruime cm geconfronteerd stelling
906 | fusie geslacht verlopen pakistan plant zuid-afrika vooruitgang verhogen knie
907 | aparte gepleegd
908 | """.split())
909 |
910 | # 1000 MFW German; http://www.wortschatz.uni-leipzig.de/Papers/top1000de.txt
911 | basicwords_de = frozenset("""
912 | der die und in den von zu das mit sich des auf für ist im dem nicht ein Die
913 | eine als auch es an werden aus er hat daß sie nach wird bei einer Der um am
914 | sind noch wie einem über einen Das so Sie zum war haben nur oder aber vor zur
915 | bis mehr durch man sein wurde sei In Prozent hatte kann gegen vom können schon
916 | wenn habe seine Mark ihre dann unter wir soll ich eines Es Jahr zwei Jahren
917 | diese dieser wieder keine Uhr seiner worden Und will zwischen Im immer
918 | Millionen Ein was sagte Er gibt alle DM diesem seit muß wurden beim doch jetzt
919 | waren drei Jahre Mit neue neuen damit bereits da Auch ihr seinen müssen ab
920 | ihrer Nach ohne sondern selbst ersten nun etwa Bei heute ihren weil ihm seien
921 | Menschen Deutschland anderen werde Ich sagt Wir Eine rund Für Aber ihn Ende
922 | jedoch Zeit sollen ins Wenn So seinem uns Stadt geht Doch sehr hier ganz erst
923 | wollen Berlin vor allem sowie hatten kein deutschen machen lassen Als
924 | Unternehmen andere ob dieses steht dabei wegen weiter denn beiden einmal etwas
925 | Wie nichts allerdings vier gut viele wo viel dort alles Auf wäre SPD kommt
926 | vergangenen denen fast fünf könnte nicht nur hätten Frau Am dafür kommen diesen
927 | letzten zwar Diese großen dazu Von Mann Da sollte würde also bisher Leben
928 | Milliarden Welt Regierung konnte ihrem Frauen während Land zehn würden stehen
929 | ja USA heißt dies zurück Kinder dessen ihnen deren sogar Frage gewesen erste
930 | gab liegt gar davon gestern geben Teil Polizei dass hätte eigenen kaum sieht
931 | große Denn weitere Was sehen macht Angaben weniger gerade läßt Geld München
932 | deutsche allen darauf wohl später könne deshalb aller kam Arbeit mich gegenüber
933 | nächsten bleibt wenig lange gemacht Wer Dies Fall mir gehen Berliner mal Weg
934 | CDU wollte sechs keinen Woche dagegen alten möglich gilt erklärte müsse Dabei
935 | könnten Geschichte zusammen finden Tag Art erhalten Man Dollar Wochen jeder nie
936 | bleiben besonders Jahres Deutschen Den Zu zunächst derzeit allein deutlich
937 | Entwicklung weiß einige sollten Präsident geworden statt Bonn Platz inzwischen
938 | Nur Freitag Um pro seines Damit Montag Europa schließlich Sonntag einfach
939 | gehört eher oft Zahl neben hält weit Partei meisten Thema zeigt Politik Aus
940 | zweiten Januar insgesamt je mußte Anfang hinter ebenfalls ging Mitarbeiter
941 | darüber vielen Ziel darf Seite fest hin erklärt Namen Haus An Frankfurt
942 | Gesellschaft Mittwoch damals Dienstag Hilfe Mai Markt Seit Tage Donnerstag
943 | halten gleich nehmen solche Entscheidung besser alte Leute Ergebnis Samstag Daß
944 | sagen System März tun Monaten kleinen lang Nicht knapp bringen wissen Kosten
945 | Erfolg bekannt findet daran künftig wer acht Grünen schnell Grund scheint
946 | Zukunft Stuttgart bin liegen politischen Gruppe Rolle stellt Juni sieben
947 | September nämlich Männer Oktober Mrd überhaupt eigene Dann gegeben Außerdem
948 | Stunden eigentlich Meter ließ Probleme vielleicht ebenso Bereich zum Beispiel
949 | Bis Höhe Familie Während Bild Ländern Informationen Frankreich Tagen schwer
950 | zuvor Vor genau April stellen neu erwartet Hamburg sicher führen Mal Über
951 | mehrere Wirtschaft Mio Programm offenbar Hier weiteren natürlich konnten stark
952 | Dezember Juli ganze kommenden Kunden bekommen eben kleine trotz wirklich Lage
953 | Länder leicht gekommen Spiel laut November kurz politische führt innerhalb
954 | unsere meint immer wieder Form Münchner AG anders ihres völlig beispielsweise
955 | gute bislang August Hand jede GmbH Film Minuten erreicht beide Musik Kritik
956 | Mitte Verfügung Buch dürfen Unter jeweils einigen Zum Umsatz spielen Daten
957 | welche müßten hieß paar nachdem Kunst Euro gebracht Problem Noch jeden Ihre
958 | Sprecher recht erneut längst europäischen Sein Eltern Beginn besteht Seine
959 | mindestens machte Jetzt bietet außerdem Bürger Trainer bald Deutsche Schon
960 | Fragen klar Durch Seiten gehören Dort erstmals Februar zeigen Titel Stück
961 | größten FDP setzt Wert Frankfurter Staat möchte daher wolle Bundesregierung
962 | lediglich Nacht Krieg Opfer Tod nimmt Firma zuletzt Werk hohen leben unter
963 | anderem Dieser Kirche weiterhin gebe gestellt Mitglieder Rahmen zweite Paris
964 | Situation gefunden Wochenende internationalen Wasser Recht sonst stand Hälfte
965 | Möglichkeit versucht blieb junge Mehrheit Straße Sache arbeiten Monate Mutter
966 | berichtet letzte Gericht wollten Ihr zwölf zumindest Wahl genug Weise Vater
967 | Bericht amerikanischen hoch beginnt Wort obwohl Kopf spielt Interesse Westen
968 | verloren Preis Erst jedem erreichen setzen spricht früher teilte Landes zudem
969 | einzelnen bereit Blick Druck Bayern Kilometer gemeinsam Bedeutung Chance
970 | Politiker Dazu Zwei besten Ansicht endlich Stelle direkt Beim Bevölkerung Viele
971 | solchen Alle solle jungen Einsatz richtig größte sofort neuer ehemaligen
972 | unserer dürfte schaffen Augen Rußland Internet Allerdings Raum Mannschaft neun
973 | kamen Ausstellung Zeiten Dem einzige meine Nun Verfahren Angebot Richtung
974 | Projekt niemand Kampf weder tatsächlich Personen dpa Heute geführt Gespräch
975 | Kreis Hamburger Schule guten Hauptstadt durchaus Zusammenarbeit darin Amt
976 | Schritt meist groß zufolge Sprache Region Punkte Vergleich genommen gleichen du
977 | Ob Soldaten Universität verschiedenen Kollegen neues Bürgermeister Angst
978 | stellte Sommer danach anderer gesagt Sicherheit Macht Bau handelt Folge Bilder
979 | lag Osten Handel sprach Aufgabe Chef frei dennoch DDR hohe Firmen bzw Koalition
980 | Mädchen Zur entwickelt fand Diskussion bringt Deshalb Hause Gefahr per zugleich
981 | früheren dadurch ganzen abend erzählt Streit Vergangenheit Parteien
982 | Verhandlungen jedenfalls gesehen französischen Trotz darunter Spieler forderte
983 | Beispiel Meinung wenigen Publikum sowohl meinte mag Auto Lösung Boden Einen
984 | Präsidenten hinaus Zwar verletzt weltweit Sohn bevor Peter mußten keiner
985 | Produktion Ort braucht Zusammenhang Kind Verein sprechen Aktien gleichzeitig
986 | London sogenannten Richter geplant Italien Mittel her freilich Mensch großer
987 | Bonner wenige öffentlichen Unterstützung dritten nahm Bundesrepublik
988 | Arbeitsplätze bedeutet Feld Dr. Bank oben gesetzt Ausland Ministerpräsident
989 | Vertreter z.B. jedes ziehen Parlament berichtete Dieses China aufgrund Stellen
990 | warum Kindern heraus heutigen Anteil Herr Öffentlichkeit Abend Selbst Liebe
991 | Neben rechnen fällt New York Industrie WELT Stuttgarter wären Vorjahr Sicht
992 | Idee Banken verlassen Leiter Bühne insbesondere offen stets Theater ändern
993 | entschieden Staaten Experten Gesetz Geschäft Tochter angesichts gelten Mehr
994 | erwarten läuft fordert Japan Sieg Ist Stimmen wählen russischen gewinnen CSU
995 | bieten Nähe jährlich Bremen Schüler Rede Funktion Zuschauer hingegen anderes
996 | Führung Besucher Drittel Moskau immerhin Vorsitzende Urteil Schließlich Kultur
997 | betonte mittlerweile Saison Konzept suchen Zahlen Roman Gewalt Köln gesamte
998 | indem EU Stunde ehemalige Auftrag entscheiden genannt tragen Börse langen
999 | häufig Chancen Vor allem Position alt Luft Studenten übernehmen stärker ohnehin
1000 | zeigte geplanten Reihe darum verhindern begann Medien verkauft Minister wichtig
1001 | amerikanische sah gesamten einst verwendet vorbei Behörden helfen Folgen
1002 | bezeichnet
1003 | """.lower().split())
1004 |
1005 | LANGDATA = dict(
1006 | en=dict(
1007 | syllables=countsyllables_en,
1008 | words=words_en,
1009 | beginnings=beginnings_en,
1010 | basicwords=basicwords_en),
1011 | nl=dict(
1012 | syllables=countsyllables_nlde,
1013 | words=words_nl,
1014 | beginnings=beginnings_nl,
1015 | basicwords=basicwords_nl),
1016 | de=dict(
1017 | syllables=countsyllables_nlde,
1018 | words=words_de,
1019 | beginnings=beginnings_de,
1020 | basicwords=basicwords_de),
1021 | )
1022 |
--------------------------------------------------------------------------------