def test_parse(self): # Assert parsed output with Penn Treebank II tags (slash-formatted). # 1) "de zwarte kat" is a noun phrase, "op de mat" is a prepositional # noun phrase. v = nl.parser.parse("De zwarte kat zat op de mat.") self.assertEqual( v, "De/DT/B-NP/O zwarte/JJ/I-NP/O kat/NN/I-NP/O " + "zat/VBD/B-VP/O " + "op/IN/B-PP/B-PNP de/DT/B-NP/I-PNP mat/NN/I-NP/I-PNP ././O/O") # 2) "jaagt" and "vogels" lemmata are "jagen" and "vogel". v = nl.parser.parse("De zwarte kat jaagt op vogels.", lemmata=True) self.assertEqual( v, "De/DT/B-NP/O/de zwarte/JJ/I-NP/O/zwart kat/NN/I-NP/O/kat " + "jaagt/VBZ/B-VP/O/jagen " + "op/IN/B-PP/B-PNP/op vogels/NNS/B-NP/I-PNP/vogel ././O/O/.") # Assert the accuracy of the Dutch tagger. i, n = 0, 0 for sentence in open( os.path.join(PATH, "corpora", "tagged-nl-twnc.txt")).readlines(): sentence = sentence.strip() s1 = [w.split("/") for w in sentence.split(" ")] s1 = [nl.wotan2penntreebank(w, tag) for w, tag in s1] s2 = [[w for w, pos in s1]] s2 = nl.parse(s2, tokenize=False) s2 = [w.split("/") for w in s2.split(" ")] for j in range(len(s1)): if s1[j][1] == s2[j][1]: i += 1 n += 1 self.assertTrue(float(i) / n > 0.90) print("pattern.nl.parser.parse()")
def return_dim_sent(sent): """ Takes in a string sentence and checks if there are nouns in that sentence. If there are, it returns the sentence with the noun in their diminutive form. :param sent: a string containing a sentence. :return: a string containging the sentence with the nouns turned to diminutives. :rtype: str """ parsed = parse(sent, tokenize=True, tags=True, chunks=False) new_sent = [] for word, pos in parsed.split()[0]: if pos == 'NN' and not word.endswith('je'): # If the word is a noun... dim = dg.generate_diminutive(word) if new_sent[-1] == 'de': new_sent[ -1] = 'het' # correcting for article. Not perfect though. new_sent.append(dim) elif pos == 'NNS' and not word.endswith( 'jes'): # If the word is a noun in plural... root = singularize(word) dim = dg.generate_diminutive(root) new_sent.append(dim + "s") else: new_sent.append(word) return " ".join(new_sent)
def test_parse(self): # Assert parsed output with Penn Treebank II tags (slash-formatted). # 1) "de zwarte kat" is a noun phrase, "op de mat" is a prepositional # noun phrase. v = nl.parser.parse("De zwarte kat zat op de mat.") self.assertEqual(v, "De/DT/B-NP/O zwarte/JJ/I-NP/O kat/NN/I-NP/O " + "zat/VBD/B-VP/O " + "op/IN/B-PP/B-PNP de/DT/B-NP/I-PNP mat/NN/I-NP/I-PNP ././O/O" ) # 2) "jaagt" and "vogels" lemmata are "jagen" and "vogel". v = nl.parser.parse("De zwarte kat jaagt op vogels.", lemmata=True) self.assertEqual(v, "De/DT/B-NP/O/de zwarte/JJ/I-NP/O/zwart kat/NN/I-NP/O/kat " + "jaagt/VBZ/B-VP/O/jagen " + "op/IN/B-PP/B-PNP/op vogels/NNS/B-NP/I-PNP/vogel ././O/O/." ) # Assert the accuracy of the Dutch tagger. i, n = 0, 0 for sentence in open(os.path.join(PATH, "corpora", "tagged-nl-twnc.txt")).readlines(): sentence = sentence.decode("utf-8").strip() s1 = [w.split("/") for w in sentence.split(" ")] s1 = [nl.wotan2penntreebank(w, tag) for w, tag in s1] s2 = [[w for w, pos in s1]] s2 = nl.parse(s2, tokenize=False) s2 = [w.split("/") for w in s2.split(" ")] for j in range(len(s1)): if s1[j][1] == s2[j][1]: i += 1 n += 1 self.assertTrue(float(i) / n > 0.90) print("pattern.nl.parser.parse()")
def return_dim_sent(sent): """ Takes in a string sentence and checks if there are nouns in that sentence. If there are, it returns the sentence with the noun in their diminutive form. :param sent: a string containing a sentence. :return: a string containging the sentence with the nouns turned to diminutives. :rtype: str """ parsed = parse(sent, tokenize = True, tags = True, chunks = False) new_sent = [] for word, pos in parsed.split()[0]: if pos == 'NN' and not word.endswith('je'): # If the word is a noun... dim = dg.generate_diminutive(word) if new_sent[-1] == 'de': new_sent[-1] = 'het' # correcting for article. Not perfect though. new_sent.append(dim) elif pos == 'NNS' and not word.endswith('jes'): # If the word is a noun in plural... root = singularize(word) dim = dg.generate_diminutive(root) new_sent.append(dim + "s") else: new_sent.append(word) return " ".join(new_sent)
def fakenewsify(title, trends): s = parse(title) sentences = s.split() first_sentence = sentences[0] new_sentence_words = [] tags = [word_data[1] for word_data in first_sentence] tag_indices = [] for i, word_data in enumerate(first_sentence): tag = word_data[1] if tag == 'NNP': tag_indices.append(i) if len(tag_indices) == 0: return None index_to_replace = choice(tag_indices) ### random_trend_index = num random_trend_index = randint(0, len(trends) - 1) words = [word_data[0] for word_data in first_sentence] chosen_trend = trends[random_trend_index] words[index_to_replace] = chosen_trend del trends[random_trend_index] for i,word in enumerate(words): if (i==index_to_replace): new_sentence_words.append({'woord': word,'class': "special"}) else: new_sentence_words.append({'woord': word,'class': "normal"}) new_sentence = ' '.join(words) ###return [new_sentence,chosen_trend] return new_sentence_words
def process(self, document_field): """everything except nouns, adjectives, and adverbs was removed""" doc = "" for sentence in parse(document_field).split(): for token in sentence: if (token[1].startswith("N") or token[1].startswith("J") or token[1].startswith("R")): doc += " " + token[0] return doc
def process(self, document_field): '''everything except nouns, adjectives, and adverbs was removed''' doc = "" for sentence in parse(document_field).split(): for token in sentence: if token[1].startswith('N') or token[1].startswith( 'J') or token[1].startswith('R'): doc += (" " + token[0]) return doc
def parseResponse(): if request.args.get('text') is None: return "" ret = [] parsed = parse(request.args.get('text'), lemmata=True) for sen in split(parsed): for word in sen.words: ret.append(u'\t'.join([word.string, word.lemma, word.type])) return u'\n'.join(ret)
def clean(doc): https_free = " ".join( [i if not i.startswith('http') else 'zzzurl' for i in doc.split()]) mention_free = " ".join([ j if not j.startswith('@') else 'zzzmention' for j in https_free.split() ]) survey_doc = nlp(mention_free) doc_ne = redact_NE(survey_doc) punc_free = ''.join(ch for ch in doc_ne.lower() if ch not in exclude) stop_free = " ".join([x for x in punc_free.split() if x not in stop]) number_free = ''.join( [k if not k.isdigit() else 'zzznumber' for k in stop_free]) normalized = " ".join([(parse(word, lemmata=True).split())[0][0][4] for word in number_free.split()]) return normalized
def split(self, paragraph): ''' We use pattern.nl to tokenize and stem all the words ''' parsed_words = parse(lower(paragraph.text.strip()), lemmata=True).split(' ') if parsed_words == ['']: return [] try: stemmed_words = map(lambda x: x.split('/')[4] , parsed_words) except Exception: pass stemmed_paragraph = ' '.join(stemmed_words) onegrams = ngrams(stemmed_paragraph, n=1) return [ word[0] for word in onegrams if word[0] not in self.common_words ]
def add_sentiments(self, smoothed=False, window_size=12, binary=False, window_type='flat'): """Add a sentiment score to each scene in this story.""" with codecs.open(self.filepath + '.txt', encoding='utf-8') as infile: text = infile.read() sentiments = [] for scene in self: sentiments.append(extract_sentiment( Sentence(parse(text[scene.start: scene.end], lemmata=True)))[0]) if smoothed: while window_size > len(self): window_size -= 2 sentiments = smooth( np.array(sentiments), window_len=window_size, window=window_type) for i, sentiment in enumerate(sentiments): self[i].sentiment = sentiment if not binary else - \ 1 if sentiment < 0 else 1
def tokenize(text, min_lemma=3, max_lemma=30, allowed_pos_tags=POS_TAGS, allowed_lemma_chars=LEMMA_CHARS): """ Tokenize and lemmatize the input text and return a generator that yields lemmas. :param text: the text to process. :param min_lemma: the minimal number of characters a lemma should contain. :param max_lemma: the maximal number of characters a lemma should contain. :param allowed_pos_tags: a compiled regex containing the POS tags that we are interested in. :param allowed_lemma_chars: a compiled regex that matches lemma's we are interested in. """ parsed = parse(text, lemmata=True, collapse=False) for sentence in parsed: for token, tag, _, _, lemma in sentence: if min_lemma <= len(lemma) <= max_lemma \ and allowed_pos_tags.match(tag)\ and allowed_lemma_chars.match(lemma): yield lemma
def prepare_text_nl(row): """ Prepares dutch text by doing the following: * Lemmatize a word * Singularize a word * Predicative a word Parameters: ----------- row : pandas dataframe A row of a pandas dataframe Returns: -------- new_message : pandas dataframe A row of a pandas dataframe """ try: message = split(parse(row.Message_Only_Text)) except: print(row.Message_Only_Text) new_message = '' for sentence in message: for word, tag in sentence.tagged: if (tag == 'MD') | ('VB' in tag): new_message += lemma(word) + ' ' elif tag == 'NNS': new_message += singularize(word) + ' ' elif 'JJ' in tag: new_message += predicative(word) + ' ' else: new_message += word + ' ' return new_message
def clean_database_njr(): # TODO: is nu copy-paste an gewone functie, beter doen. misschien integreren? # initialize new database for cleaned collection c = Connection() c[databasename].drop_collection(collectionnamecleanedNJR) # load replacement lists # replacement list 1: always replace with open(replacementlistfile, mode="r", encoding="utf-8") as fi: repldict = json.load(fi, object_pairs_hook=OrderedDict) replpatterns = set(re.compile("\\b" + k + "\\b") for k in repldict) # replacement list 2: replace if already replaced according to list 1 with open(replacementlistlastnamesfile, mode="r", encoding="utf-8") as fi: repldictpersons = json.load(fi, object_pairs_hook=OrderedDict) # replacement list 3: replace only if another expression is mentioned with open(replacementlistsindienfile, mode="r", encoding="utf-8") as fi: repldictindien = json.load(fi, object_pairs_hook=OrderedDict) allarticles = collection.find() aantal = collection.count() i = 0 for art in allarticles: i += 1 print("\r", i, "/", aantal, " or ", int(i / aantal * 100), "%", end=' ') sys.stdout.flush() thisartorig = art["text"].replace("\n", " ") # hier is t dus interessant from pattern.nl import parse thisart="" for zin in parse(thisartorig).split(): for token in zin: if token[1].startswith('N') or token[1].startswith('J') or token[1].startswith('R'): #print token[0],token[1] thisart+=(" "+token[0]) #print thisart numbsub = 0 for pat in replpatterns: subst = pat.subn(repldict[pat.pattern[2:-2]], thisart) #[2:-2] to strip the \b thisart = subst[0] numbsub += subst[1] # only if sth has been substituted at all, check if it's a last name that has to be substituted as well # functie 1b: als iemand een keer met z'n volledige naam genoemd wordt, ook de volgende keren dat alleen z'n achternaam wordt genoemd deze vervangen if numbsub > 0: for k, v in repldictpersons.items(): #print "For",k,", there are",len(v),"rules." for vv in v: if vv in thisart: thisart = re.sub("\\b" + k + "\\b", vv, thisart) #print "Replaced",k,"by",vv for k, v in repldictindien.items(): if re.findall("\\b" + k + "\\b",thisart): for vv in v: #print "checking vv",vv,"and k",k thisart = re.sub("\\b" + vv[0] + "\\b", vv[1], thisart) #print "Replaced", vv[0], "by", vv[1], "because", k, "was mentioned" thisart = remove_punctuation(thisart.lower()) stops = [line.strip().lower() for line in open(stopwordsfile, mode="r", encoding="utf-8")] tas = thisart.split() thisart = "" for woord in tas: if (woord not in stops) and (not woord.isdigit()): thisart = " ".join([thisart, woord]) # replace original text with modified text and put the whole item in the cleaned collection art["text"] = thisart article_id = collectioncleanedNJR.insert(art)
def clean_database_njr(): # load replacement lists # replacement list 1: always replace with open(replacementlistfile, mode="r", encoding="utf-8") as fi: repldict = json.load(fi, object_pairs_hook=OrderedDict) replpatterns = set(re.compile("\\b" + k + "\\b") for k in repldict) # replacement list 2: replace if already replaced according to list 1 with open(replacementlistlastnamesfile, mode="r", encoding="utf-8") as fi: repldictpersons = json.load(fi, object_pairs_hook=OrderedDict) # replacement list 3: replace only if another expression is mentioned with open(replacementlistsindienfile, mode="r", encoding="utf-8") as fi: repldictindien = json.load(fi, object_pairs_hook=OrderedDict) allarticles = collection.find(subset).batch_size( 30 ) # batch size = no of articles that we are sure can be processed in 10 minutes. defaults to 100, that can be problematic aantal = collection.find(subset).count() i = 0 for art in allarticles: i += 1 print "\r", i, "/", aantal, " or ", int(i / aantal * 100), "%", sys.stdout.flush() try: thisartorig = art["text"].replace("\n", " ") except: # do nothing with this article if it does not have any text print print 'Weird, this article did not have any text body, skipping it' print continue numbsub = 0 for pat in replpatterns: subst = pat.subn(repldict[pat.pattern[2:-2]], thisartorig) #[2:-2] to strip the \b thisartorig = subst[0] numbsub += subst[1] # only if sth has been substituted at all, check if it's a last name that has to be substituted as well # functie 1b: als iemand een keer met z'n volledige naam genoemd wordt, ook de volgende keren dat alleen z'n achternaam wordt genoemd deze vervangen if numbsub > 0: for k, v in repldictpersons.items(): #print "For",k,", there are",len(v),"rules." for vv in v: if vv in thisartorig: thisartorig = re.sub("\\b" + k + "\\b", vv, thisartorig) #print "Replaced",k,"by",vv for k, v in repldictindien.items(): if re.findall("\\b" + k + "\\b", thisartorig): for vv in v: #print "checking vv",vv,"and k",k thisartorig = re.sub("\\b" + vv[0] + "\\b", vv[1], thisartorig) #print "Replaced", vv[0], "by", vv[1], "because", k, "was mentioned" from pattern.nl import parse thisart = "" for zin in parse(thisartorig).split(): for token in zin: if token[1].startswith('N') or token[1].startswith( 'J') or token[1].startswith('R'): #print token[0],token[1] thisart += (" " + token[0]) thisart = remove_punctuation(thisart.lower()) stops = [ line.strip().lower() for line in open(stopwordsfile, mode="r", encoding="utf-8") ] tas = thisart.split() thisart = "" for woord in tas: if (woord not in stops) and (not woord.isdigit()): thisart = " ".join([thisart, woord]) r = collection.update({'_id': art['_id']}, {"$set": { 'textclean_njr': thisart }}) print r
def ocr_correct(sentences=False, lang="nl"): """ """ dictionary = enchant.Dict(lang) ngram_model = load_ngram(lang) if not sentences: sentences = unescape(u""" In verband met den NIEUWJAARSDAG zal dit blad a.s. Vrijdag 1 Januari niet verschijnen. Het eerstvolgend No. van „De Graafschap-Bode" verschijnt derhalve A.S. MAANDAG 4 JANUARI 1932. H.H. Adverteerders en Correspondenten verdoeken wij beleefd, daarmede rekening te willen houden. DE UITGEEFSTER. [ Lijders aan Maagpijn! I | Maagkramp, Zuur, Hartwater en siechte spijs- ; * vertering zullen baat vinden bij het gebruik • ■ van Maagpoeder van Apotheker BOOM. ; ■ Verkrijgbaar In de meeste Apotheken en • « Drogistwinkel i ƒ 1.25 per verzegelde doos. • |V■ ' • mmmwm as Rente over het jaar 1931 kan vanaf jjj p 2 Januari 1932 op de Spaarbank- $ boekjes, worden bijgeschreven. % GEMEENTE-SPAARBANK I fS . DOETINCHEM. $ m 'w. PORTRET-ATELIERS Fa. BRINCKER-v. GALEN, is het adres voor goede en mooie PORTRETTEN. 24818 • Hamburgcrstr. 19A, Tel. 164 DOETINCHEM. : ■ - j" viiSTO^G"'"'"] * De Laxeerpillen van Apotheker BOOM ver- J * drijven overtollige gal en slijm, zuiveren het ; ; bloed en bevorderen een goeden stoelgang. ! ! Verkrijgbaar in de meeste apotheken en dro- ; ; gistwinkels è 30 en 55 ct. per verzegelde doos. ! i Gratis en franco wordt op aanvraag een ! S proefdoosje toegezonden door firma A. M. S _ A ra tiem. ï Berichten Lijmers. BERGH.— Vergadering Raad gemeente Woensdag December, voormiddags uur. Afwezig heer Spekking. Punt Ingekomen stukken. Secretaris leest diverse ingekomen stukken voor, waarvan enkele voor kennisgeving worden aangenomen andere terzijde gelegd voor latere behandeling. Punt Benoeming Alg. Burgerlijk Armbestuur. Periodiek aftredend heer Winters. Voorgedragen worden benoeming: WIIUCJs; LSUCIIUWUVUI. Benoemd wordt heer Winters. Punt Eenige voorgestelde wijzigingen begrooting gemeente over 1931 worden goedgekeurd. Punt Rekening 1930 Gasthuis 's-Heerenberg. rekening Gasthuis 's-Heerenberg over 1930 wordt goedkeuring aangeboden. heer gedacht, Gasthuis wijziging pachten gebracht hebben. sprekers spijt heeft daar niets vernomen. Spr. bepleit noodzakelijkheid pachtverlaging. Spr. heeft gehoord, gratis kunstmest gegeven doch acht spr. niet zoo'n belang; grond jaartje buiten desnoods. heer Berntsen acht opmerkingen heer Wilmes zeer terecht. Spr. gelooft ook, menschen meer geholpen worden pachtverlaging gratis kunstmest. heer voelt voor pachtverlaging. Besloten wordt bovenstaande opmerkingen kennis Gasthuisbestuur brengen. Besloten wordt rekening 1930 Gasthuis goed keuren. Eindcijfers Algemeene rekening ontvangst 74939.14, uitgaaf 63988.1 S'/J. Voordeelig slot 10.950.98>/2- Eindcijfers bijzondere rekening ontvangst 4274.5814, uitgaaf 10760.66. Nadeelig slot 6486.07 Punt Begrooting 1932 Gasthuis. Besloten wordt ingediende begrooting voor 1932 Gasthuis 's-Heerenberg goed keuren. eindcijfers algemeene begrooting luiden: ontvangst uitgaaf 21952 bijzondere begrooting ontvangst 3761.—, uitgaaf 9836.75. Nadeelig slot 6075.75. Punt Rekening 1930 Instelling voorkoming Armoede. ue?e rekening wordt aangeboden goedgekeurd. eindcijfers luiden: ontvangst 6469.80, uitgaaf 5522.32. Voordeeiig ;aido 947.68. Punt Begrooting 1932 vorengenoemde Instelling. Aangeboden goedgekeurd wordt begrooting over 1932. eindcijfer luidt uitgaaf ontvangst 7017,61. Punt aanvulling leerlingenlijst onder punt genoemde instelling wordt goedgekeurd. Punt Leening 30.000.—. Voorgesteld wordt 30.000 leenen .egen rente hoogstens koers Mij.1 voor Jemeente*crediet Amsterdam. leening noodig voor aanbrengen archief Gemeentehuis, wegenverbetering, aankoop materieel voor wegenverbetering werkverschaffing. licht toe, mogelijk Januari a.s. Rijkssubsidie voor werkloOzepzorg anders minder wordt. heer stelt voor werkverschaffing Januari a.s. geval voort zetten risico verminderd subsidie voor rekening gemeente nemen. zegt, bedoeling heer Brar.ts: Wordt wegenwals voorgestelde leening bestreden? Voorz.: Neen. heer bepleit aanschaffen wals maar stellen. heer Kupors achf aanschaffing wals zeer belang gemeente; -vals behoeft niet alleen nieuwe wegen, doch oude wegen gebruikt worden. heer Ditzhuyzen voelt voor spoedige uitvoering door commissie voor werkverruiming geadviseerde werken. Besloten wordt voorgestelde geldleening gaan. Punt Afstand strooken grond voor wegenverbetering. Voorgesteld wordt rtrooken grond aanvaarden voor verbet:ring wegen 's-Heerenberg, Beek toerbeek. heer Ditzhuyzen zegt, niet gronden Braamt Kilder voorstel genoemd worden; waar afstand dezer grondvn over eenige dagen feit zijn, ctelt spr. voor deze strooken grond thans nemen Raadsbesluit noemen. voorstel wordt aangenomen, aangevuld voorstel heer Ditzhuyzen. Punt Voorstel I.z. aankoop grond voor bouw cadaverhuisje woningen voor sociaal achterlijken verworpen. stellen voor perceel grond koopen Lengel, groot ruim H.A. Gasthuis 's-Heerenberg, prijs 2100; pacht jaar. bedoeling dezen grond cadaverhuisje woningen voor sociaal-achterlijken bouwen. heer Bern aeht verkeerde methode Gasthuis steeds gronden tracht verkoopen, gelegen buiten 'a-Heerenberg, bedoeling armen 's-Heerenberg kwijt raken.De heer begrijpt :ilet, meente niet publiceert courant, grond nnnkoopen. zijn particulieren instellingen genoeg, grond willen verkoopen. lijkt net, alsof alleen Gasthuis! grond verkoopen. Spr. tegen voorstel, omdat geen publiciteit gegeven voorgenomen grondaankoop omdat prijs hoog heer Ditzhuyzen vorige sprekers eens. Bovendien lijkt spr, niet gewenscht noodslachtplaats perceel grond zetten, waar woningen voor sociaal achterlijken komen staap. Weth. Thuis zegt, misverstand aanwezig Gasthuis biedt geen grond aan, doch gevraagd bedoelden grond verkoopen. Gasthuis houdt grond liever zelf. liook vorri Minf urnn noUlotl Itwt lIVI lllVk UVtttbll) Gasthuis sociaal achterlijken naar andere parochie tracht schuiven, omdat deze menschen, wanneer 's-Heerenberg zouden blijven wonen, laste Gasthuis zouden komen. Voorz. licht toe, grond hard noodig wonen menschen woningen wijze, welke onmenschelijk noemen Daarvoor woningbouw hard noodig. Spr. wijst buitengewoon moeilijk grond koopen; voor woningen voor sociaal-achterlijken heeft niemand grond koop! Daarom bleef niets anders over beroep doen Gasthuis, gemeente grond helpen. Spr. wijst grond Zeddam veel duurder was; grond Lengel, aangewezen door 'icer Roording, klein. Spr. hoopt, Raad grondaankoop besluiten, daar hard noodig beklagenswaardige menschen helpen menschwaardiger woningen. heer Berntsen zegt, alleen grond 's-Heerenberg Gasthuis koopen, omdat armen, komen wonen straks laste vallen Gasthuis. Voorz. zegt, naar zijn overtuiging Gasthuis 's-Heerenberg geen grond heeft liggen tegen denzelfden prijs. heer Berntsen hiermede niet eens. Voorz. zegt, combinatie cadaverhuisje-noodslachtplaats woningen voor sociaalachterlijken geen bezwaar oplevert, daar terrein groot genoeg heer Roording wijst stukken grond Klaassen, welke liggen. Gasthuis heeft veel meer grond. Spr. tegen voorgestelden grondaankoop. heer Berntsen vreest, geheel Lengel dupe wordt voorstel; menschen bouwen woningen vernielen maar vruchten veld. heer Elshof raadt voorstel houden volgende vergadering alsnog oproep voor rondaankoop doen. Voorz. betoogt, grondaankoop niet langer uitgesteld worden. voorstel grondaankoop wordt hierna verworpen 10—3 stemmen. Vóór stemmen beide wethouders heer Kupers; blanco heer Diecker. Punt Vergoeding leermiddelen geweigerd. Schoolbestuur Kilder verzoekt vergoeding voor aanschaffing leermiddelen, bedrag circa 241.—. stellen voor aanvrage niet willigen. heer Elshof bepleit inwilliging verzoek; heer Gerretsen steunt het. heer betoogt, schoolbesturen zuinig :mogelijk moeten zijn aanvragen. De-aangevraagde, leermiddelen pcht spr. luxe. heer Elshof zegt, schoolbestuur toch weigerende beslissing beroep gaan. Waarom moet gemeente eerst gedwongen worden? Spr. acht aangevraagde leer» middeien geen weeide. Weth. Thuis zegt, schoolbesturen reeds aangeschreven zijn vooral zuinig zijn aanvragen. gaat voorts onderhavige aanvrage niet niet luxe aanvrage valt echter r.iet onder „eerste volgens 0.-wet, doch moet bestreden worden gewone jaarlijkscke vergoeding voor instandhouding school, welke ƒ„B.— leerling jaar bedraagt. heer Berntsen vreest leelijke jezichten belastingbetalers, Raad nakkeKjk aanvragen schoolbesturen inwilligt. $pr. onderwijs gaarne terwille, doch moet belastingdruk denken. heer Elshof zegt, Inspecteur mondeling Pastoor verklaard heeft, bedoelde leermiddelen noodig waren. heer Ditzhuyzen heeft eens deskundige gehoord, schoolbesturen vergoeding leerling ruimschoots kunnen; fpr. daarom tegen aangevraagde subsidie. Voorz. brengt hierna voorstel stemming aanvrage niet willigen. Hiertoe wordt besloten stemmen. Tegen heeren Elshof, Wilmes Gerretsen. Punt Vastgesteld wordt verordening, regelende beroep geweigerde bouwvergunningen, bedoeld art. Woningwet. Punt Reglement Spaar- Voorschotbank. Voorgesteld wordt vast stellen Raad overgelegd reglement voor Spaar- Voorschotbank. heer Berntsen stelt voor commissie benoemen voor onderzoek voorgestelde reglement. heer Ditzhuyzen acht beter reglement nemen, omdat spoed kunnen afschrilt krijgen noodig volgende zitting eens wijzigingen voorstellen. Hiertoe wordt besloten. Punt Onbewoonbaarverklaring. Besloten wordt onbewoonbaarverklaring woning 's-Heerenberg 428, toebehoorend N.V. Huis Bergh. Punt Voorgesteld wordt WijnantU, bewoner vorenbedoelds onbewoonbaarverklaards woning, bijdrage hoogste fjoo verstrekken voor bouw 'van nieuwe woning. Dhr. Ditzhuyjen acht slaapkamer nieuwe wwjing kjein; voorts vraagt spr. voorwaarde «tellen, materialen gemeente gekocht moeten worden. Conform voorstel aangevuld hetgeen dhr. JPitjhuyzen opmerkt, woedt besloten. Punt Winkel»Tuitln?. wnkïls mogen Zondags 8-*9'/j. 11—.12 14—18 geopend ïljn. Voorgesteld wordt verordening, welke volgende regelen stelt. Kermis geld: tlui'.'n'T winkels niet. Voor wtnkels grens wordt bepaald, deze Zondags li—! 14—18. open mogen zijn.Dhr. stelt voor winket» open laten zijn B—9l/1 11—13 Zondagmorgen, toog kerkganger», inkoopen willen doen. Besloten wordt bepalen, winkels heele gemeente e-~9l/s> 14—i& Zondag open mogen zijn. Bergplaats voor vuilnis Zeddam. Gi'.debcstuur Zeddam vraagt voor terrein, waarop liet vui'lms gestort worden. achten dezen prijs hoog. Dhr. Berntsen hiermede eens; Gildebestuur heeft zelf veei belang voorgestelde regeling. vuil wordt overal Gildegrond geworpen. Spr. stelt voor voorloopig vergoeding goed keuren; spr. trachten Giloebestuur bewegen billijker houding. voorstel-B erntsen woidt aangenomen. Telefooninstaila'je Gemeentehui», etc. Volgens telefoondienst huistelefoon* installatie voor gemeente, aangesloten stadsnet, jaar 355.— kosten, ongeveer meer jaar thans telefoon kost. Deze installatie wordt zeer noodig geacht; wordt besloten. Subsidie verleend Streekcommissle bsvordering Vreemdelingenverkeer. Ingekomen adres „Streekcommissie bevordering Vreemdelingen* verkeer gemeentel» Eergh, Doetinchem, Gendringen, Hummelo Keppel Wisch ~'s-Heerenberg", adressanten verzoe j.cent inwoner jaar subsidie, waarvoor goede streekpropaganda zullen opzetten, zulks vermeerdering inkom* sten middenstand. Voorz. stelt voor adres financieel moeilijke tijden voorloopig terzijde leggen. Dhr. Berntsen hiermede eens. Spr. betoogt, b.v. ambtenaren, wier inkomen vrijwel niet gedaald aanmerking genomen mindere kosten levensonderhoud;, vacantie zullen gaan. gaat deze menschen naar deze streek trekken. Juist dezen slechten tijd vindt spr. alles voor vreemdelingenverkeer bevorderen. Bergh heeft prachtig natuurschoon. Dhr. Ditzhuyzen vorige-n spreker eens. Weth. Thuis wijst vreemdelingenverkeer middenstandsbelang Raaa gelegenheid winkeliers, hotelhou* ders eens helpen. Dhr. Berntsen merkt Gendrmgen'een voorbeeld zijn; ofschoon daar heelemaal geen vreemdelingenverkeer besloot gemeente toch subsidie voor vreemdelingen* verkeerpropaganda verkenen. Dhr. Brants staat niet enthousiast tegenover, maar niet tegenhouden- Weth. Reyers zegt, heele gemeente voeren propaganda profiteeren ;al. Voorz. legt niet voor afstel, doch slechts voor uitstel voelen. Zonder hoofdelijke stemming wordt hierna gevraagde subsidie besloten. Adres-Wehl i.ï. stichting Landbouwmlnlsterle. gemeentebestuur,"van Wehl verzoekt, act-, haesie adres regeenng, waarin instelling af?onderiijk ministerie landbouw verzocht wordt Dhr. Berntsen tegen. Spr./ ziet a<cft' adres groep ontevredenen, buiten boerenorganisafies actie voeren.. Deze Prganisaties hebben altijd'bun phcht gedaan ,bij regeering gedaan voor landbouwers, maar konden. Spr. acht organisatorisch, adres Wefcl steunen. dhr- Brants verklaart zich tegen. Dhr. Ditahuyten meent, toch niet verkeerd naast bestaande organisaties anderen voor eenzelfde doel ijveren; spr. ziet zoo, actie niet tegenover, doch naast organisaties gevoerd wordt. Dhr. Berntsen nogmaals uiteen, waar* onjuist acht adres steunen; dhr. Ditzhuyzen vindt hierin aanleiding aanhouding beslissing verzoeken voor nader onderzoek. Hiertoe wordt besloten.•" Rondvraag. I>hr. Elsliof wijst aanwexigheid van1 grint naar Siiulerdijk, tlat nutteloos hoopen ligt. Voort, ander, door heer Elshof berd; gebracht, aandacht schenken. Dhr. Gerretsen vraagt geen vergoeding uitgekeerd' wordt personen, Kilder xand gebracht hebben. heer geeft eenige inlichtingen omtrent deze kwestie. Voorz. »egt, rekeningen aannemers niet zijn ingekomen. beer Berntson vraagt, staat aanbrengen electrische lamp Gasthui» Zed&am. Voorz. zegt, vooroerciding tUCCI tIIU **•**** langs Probat Heerenberg. Voorz. aegt onderzoek toe. heer Ditzhuyzen vraagt redmi. ging goten bovendorp Zeddam. Voorz. zegt toe. beer Dieeker vraagt verbetering Wijnbergscbe naar Sinderdijk. Voorz. belooft zullen nagaan. Besloten wordt Abbenhuiis Braamt bomvpremie kennen. Hierna sluiting. ïj a.s. Feestdagen offreeren wij: alle soorten binnen- buitenlandsch GEDISTILLEERD. LIKEUREN. WIJNEN, BOERENJONGENS, ADVOCAAT, CHAMPAGNE, COGNAC, PUNCH. Perlstein DOETINCHBN. Boterolie Slaolie tegen verlaagde prijzen. PAUL WESTHOFF HUMMELO. twentsche BANK N.V.I gevestigd Amsterdam. Kapitaal Reserve 5t.500.000.— Ikantoor winterswijk.! Belast ziet) uitvoering ALLE Bankierszaken. GRATIS apparaat indien proef wilt nemen onze „SIGI" mesjetT „siGi"Man itelt introductie deze prima mesjes proefpakket mesjes beschikbaar tegen kleine vergoeding slechts 0.90 PARKET (werkelijke winkelwaarde 12.—), terwijl daarbij GRATIS (raai ver* tilverd, roestvrij scheerapparaat ontvangt beschikbaarstelling deze voorwaarden geschiedt slechts tjjdelyk alleen ontvangst onderstaande coupon, binnen dagen bezit moet zijn. toezending onder rembours 0.90 plus rembourskosten geschiedt naar volgorde ingekomen coupons. voorkoming abuizen verzoeken geen geld acnden. COUPON Verkoopkantoor „SiGi"scheerapparaten ————— Firma MEYER RIJSWIJK Z..H. Zend geld Lindelaan Postbus oom* prMlpikkM (101 maajae ratia varzltvard apparaat »««•» snor ramboura »0.00 plua rembourakoitan Naam: stfHt r.w-r.fT.< <S.v.p. duidelijk schrijven; diukwerk verzenden: cent frankeeren) ——BB—— FABER Hamburgerstraat Do^ichem. """.encode("utf-8")) misspelled_words = set() sentences = parse(sentences) bad_sentences_count = 0 good_sentence_count = 0 correctable_sentence_count = 0 correctspelled_word = 0 misspelled_word_count = 0 total_sentences_count = 0 total_word_count = 0 for sentence in split(sentences): total_sentences_count += 1 bad_sentence = False correctable_sentence = False new_sentence = u"" for chunk in sentence.chunks: for word in chunk.words: bad_sentence, \ correctable_sentence, \ new_sentence = \ analyze_word(word, bad_sentence, correctable_sentence, new_sentence, dictionary, ngram_model) if bad_sentence: print u"Bad: " + u" ".join([w.string for w in sentence.words]) bad_sentences_count += 1 elif correctable_sentence: print u"Correctable (old): " + \ u" ".join([w.string for w in sentence.words]) print u"Correctable (new): " + new_sentence correctable_sentence_count += 1 else: print u"Good: " + \ u" ".join([w.string for w in sentence.words]) good_sentence_count += 1 print("Good_sentence_count: %i" % good_sentence_count) print("Bad_sentences_count: %i" % bad_sentences_count)
import sys import json #print sys.argv[1] import HTMLParser pars = HTMLParser.HTMLParser() sentences = [] from pattern.nl import parse, split sentence = pars.unescape(sys.argv[1]) s = parse(sentence) for sentence in split(s): #print type(sentence) sentences.append(str(sentence)) print json.dumps(sentences)
def clean_database_njr(): # TODO: is nu copy-paste an gewone functie, beter doen. misschien integreren? # initialize new database for cleaned collection c = Connection() c[databasename].drop_collection(collectionnamecleanedNJR) # load replacement lists # replacement list 1: always replace with open(replacementlistfile, mode="r", encoding="utf-8") as fi: repldict = json.load(fi, object_pairs_hook=OrderedDict) replpatterns = set(re.compile("\\b" + k + "\\b") for k in repldict) # replacement list 2: replace if already replaced according to list 1 with open(replacementlistlastnamesfile, mode="r", encoding="utf-8") as fi: repldictpersons = json.load(fi, object_pairs_hook=OrderedDict) # replacement list 3: replace only if another expression is mentioned with open(replacementlistsindienfile, mode="r", encoding="utf-8") as fi: repldictindien = json.load(fi, object_pairs_hook=OrderedDict) allarticles = collection.find() aantal = collection.count() i = 0 for art in allarticles: i += 1 print("\r", i, "/", aantal, " or ", int(i / aantal * 100), "%", end=" ") sys.stdout.flush() thisartorig = art["text"].replace("\n", " ") # hier is t dus interessant from pattern.nl import parse thisart = "" for zin in parse(thisartorig).split(): for token in zin: if (token[1].startswith("N") or token[1].startswith("J") or token[1].startswith("R")): # print token[0],token[1] thisart += " " + token[0] # print thisart numbsub = 0 for pat in replpatterns: subst = pat.subn(repldict[pat.pattern[2:-2]], thisart) # [2:-2] to strip the \b thisart = subst[0] numbsub += subst[1] # only if sth has been substituted at all, check if it's a last name that has to be substituted as well # functie 1b: als iemand een keer met z'n volledige naam genoemd wordt, ook de volgende keren dat alleen z'n achternaam wordt genoemd deze vervangen if numbsub > 0: for k, v in repldictpersons.items(): # print "For",k,", there are",len(v),"rules." for vv in v: if vv in thisart: thisart = re.sub("\\b" + k + "\\b", vv, thisart) # print "Replaced",k,"by",vv for k, v in repldictindien.items(): if re.findall("\\b" + k + "\\b", thisart): for vv in v: # print "checking vv",vv,"and k",k thisart = re.sub("\\b" + vv[0] + "\\b", vv[1], thisart) # print "Replaced", vv[0], "by", vv[1], "because", k, "was mentioned" thisart = remove_punctuation(thisart.lower()) stops = [ line.strip().lower() for line in open(stopwordsfile, mode="r", encoding="utf-8") ] tas = thisart.split() thisart = "" for woord in tas: if (woord not in stops) and (not woord.isdigit()): thisart = " ".join([thisart, woord]) # replace original text with modified text and put the whole item in the cleaned collection art["text"] = thisart article_id = collectioncleanedNJR.insert(art)
def clean_database_njr(): # load replacement lists # replacement list 1: always replace with open(replacementlistfile, mode="r", encoding="utf-8") as fi: repldict = json.load(fi, object_pairs_hook=OrderedDict) replpatterns = set(re.compile("\\b" + k + "\\b") for k in repldict) # replacement list 2: replace if already replaced according to list 1 with open(replacementlistlastnamesfile, mode="r", encoding="utf-8") as fi: repldictpersons = json.load(fi, object_pairs_hook=OrderedDict) # replacement list 3: replace only if another expression is mentioned with open(replacementlistsindienfile, mode="r", encoding="utf-8") as fi: repldictindien = json.load(fi, object_pairs_hook=OrderedDict) allarticles = collection.find(subset).batch_size( 30 ) # batch size = no of articles that we are sure can be processed in 10 minutes. defaults to 100, that can be problematic aantal = collection.find(subset).count() i = 0 for art in allarticles: i += 1 print "\r", i, "/", aantal, " or ", int(i / aantal * 100), "%", sys.stdout.flush() try: thisartorig = art["text"].replace("\n", " ") except: # do nothing with this article if it does not have any text print print "Weird, this article did not have any text body, skipping it" print continue numbsub = 0 for pat in replpatterns: subst = pat.subn(repldict[pat.pattern[2:-2]], thisartorig) # [2:-2] to strip the \b thisartorig = subst[0] numbsub += subst[1] # only if sth has been substituted at all, check if it's a last name that has to be substituted as well # functie 1b: als iemand een keer met z'n volledige naam genoemd wordt, ook de volgende keren dat alleen z'n achternaam wordt genoemd deze vervangen if numbsub > 0: for k, v in repldictpersons.items(): # print "For",k,", there are",len(v),"rules." for vv in v: if vv in thisartorig: thisartorig = re.sub("\\b" + k + "\\b", vv, thisartorig) # print "Replaced",k,"by",vv for k, v in repldictindien.items(): if re.findall("\\b" + k + "\\b", thisartorig): for vv in v: # print "checking vv",vv,"and k",k thisartorig = re.sub("\\b" + vv[0] + "\\b", vv[1], thisartorig) # print "Replaced", vv[0], "by", vv[1], "because", k, "was mentioned" from pattern.nl import parse thisart = "" for zin in parse(thisartorig).split(): for token in zin: if token[1].startswith("N") or token[1].startswith("J") or token[1].startswith("R"): # print token[0],token[1] thisart += " " + token[0] thisart = remove_punctuation(thisart.lower()) stops = [line.strip().lower() for line in open(stopwordsfile, mode="r", encoding="utf-8")] tas = thisart.split() thisart = "" for woord in tas: if (woord not in stops) and (not woord.isdigit()): thisart = " ".join([thisart, woord]) r = collection.update({"_id": art["_id"]}, {"$set": {"textclean_njr": thisart}}) print r