Yeb Havinga commited on
Commit
c0d67e1
1 Parent(s): d4a4e5c

Add initial app version

Browse files
Files changed (1) hide show
  1. app.py +96 -0
app.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import os
3
+
4
+ from transformers import AutoTokenizer
5
+ from transformers import AutoModelForSeq2SeqLM
6
+ from transformers import pipeline
7
+ from transformers import set_seed
8
+
9
+ debug = False
10
+
11
+ MODEL = "flax-community/t5-base-dutch-demo"
12
+ #MODEL: str = "."
13
+
14
+ DEFAULT_TEXT: str = """Bij meerdere dijken in gemeenten langs de Maas in de veiligheidsregio Limburg-Noord zijn lekkages ontstaan. Dat vertelde burgemeester van Venlo Antoin Scholten - tevens voorzitter van de veiligheidsregio - zaterdagmiddag op een persconferentie. Een bedrijventerrein aan de Prins Willem Alexanderhaven in Roermond wordt om die reden ontruimd. Scholten vraagt Nederlanders de komende dagen weg te blijven uit de regio.
15
+ "We zien dat zwakke plekken zich voordoen", aldus Scholten. "De situatie is nog onzeker. Het water is ongelofelijk grillig." Volgens hem is het onzeker of de dijken langs de Prins Willem Alexanderhaven het gaan houden. Daar zou al water doorheen sijpelen.
16
+ Vanuit Defensie staat een interventieteam paraat om hulp te bieden als het ergens onverhoopt toch misgaat. Scholten prijst ook de vele vrijwilligers die klaarstaan voor Limburg. "De vele handjes zijn hartverwarmend. Vanuit de dorpen, de kernen, de wijken."
17
+ Ook vanuit elders in Europa is hulp aangeboden, weet Scholten. "Men weet ons spontaan te vinden, zonder dat wij ook een oproep hebben gedaan om hulp."
18
+ De burgemeester riep alle ramptoeristen er opnieuw toe op nog even weg te blijven. Dat kan volgens hem tot gevaarlijke situaties leiden en de ramptoeristen lopen bovendien hulpdiensten in de weg, aldus Scholten. Jos Teeuwen, bestuurslid van Waterschap Limburg, beaamt dat er gevaarlijke situaties kunnen ontstaan. "De dijken zijn door het vocht en de grote hoeveelheden water verzwakt."
19
+ """
20
+
21
+ generator_kwargs_beam = {
22
+ "max_length": 200,
23
+ "min_length": 30,
24
+ "no_repeat_ngram_size": 2,
25
+ "early_stopping": True,
26
+ "num_beams": 5,
27
+ "length_penalty": 1.5,
28
+ "num_return_sequences": 1,
29
+ }
30
+
31
+ generator_kwargs_top_k = {
32
+ "max_length": 200,
33
+ "min_length": 30,
34
+ "no_repeat_ngram_size": 2,
35
+ "do_sample": True,
36
+ "top_k": 60,
37
+ "top_p": 0.95,
38
+ "num_return_sequences": 1,
39
+ }
40
+
41
+
42
+ class TextSummarizer:
43
+ def __init__(self):
44
+ self.tokenizer = None
45
+ self.model = None
46
+ self.generator = None
47
+ # set_seed(42)
48
+
49
+ def load(self):
50
+ os.environ["TOKENIZERS_PARALLELISM"] = "false"
51
+ self.tokenizer = AutoTokenizer.from_pretrained(MODEL)
52
+ self.model = AutoModelForSeq2SeqLM.from_pretrained(MODEL)
53
+ self.generator = pipeline(
54
+ "text2text-generation", model=self.model, tokenizer=self.tokenizer
55
+ )
56
+
57
+ def summarize(self, input_text, generate_kwargs) -> str:
58
+ if not self.generator:
59
+ self.load()
60
+ return self.generator(
61
+ input_text, return_tensors=False, return_text=True, **generate_kwargs
62
+ )[0].get("generated_text")
63
+
64
+
65
+ @st.cache(allow_output_mutation=True)
66
+ def instantiate_generator():
67
+ summarizer = TextSummarizer()
68
+ return summarizer
69
+
70
+
71
+ def main():
72
+ st.set_page_config( # Alternate names: setup_page, page, layout
73
+ page_title="Netherformer", # String or None. Strings get appended with "• Streamlit".
74
+ layout="centered", # Can be "centered" or "wide". In the future also "dashboard", etc.
75
+ initial_sidebar_state="expanded", # Can be "auto", "expanded", "collapsed"
76
+ page_icon="📰", # String, anything supported by st.image, or None.
77
+ )
78
+
79
+ generator = instantiate_generator()
80
+ # local_css("asset/css/style.css")
81
+
82
+ st.title("Netherformer")
83
+
84
+ input_text = st.text_area("Enter a Dutch news text", DEFAULT_TEXT)
85
+
86
+ if input_text:
87
+ if debug:
88
+ response = """Een bedrijventerrein aan de Prins Willem Alexanderhaven in Roermond heeft de komende dagen weg te blijven uit de regio. De burgemeester van Roermond roept alle ramptoeristen er opnieuw toe op meer dan 10.00 uur weg."""
89
+ else:
90
+ response = generator.summarize(input_text, generator_kwargs_beam)
91
+ st.header("Samenvatting:")
92
+ st.markdown(response)
93
+
94
+
95
+ if __name__ == "__main__":
96
+ main()