Spaces:
Running
Running
| import gradio as gr | |
| import lemminflect | |
| import spacy | |
| import wikipedia | |
| from transformers import pipeline | |
| nlp = spacy.load("en_core_web_lg") | |
| sentiment_analyzer = pipeline( | |
| "sentiment-analysis", | |
| model="distilbert-base-uncased-finetuned-sst-2-english", | |
| revision="af0f99b" | |
| ) | |
| def is_positive(text): | |
| return sentiment_analyzer(text)[0]["label"] == "POSITIVE" | |
| def make_past_tense(token): | |
| if token.tag_ in ("VBP", "VBZ"): | |
| return f'{token._.inflect("VBD")} ' | |
| return token.text_with_ws | |
| def make_dystopian(term, text): | |
| doc = nlp(text) | |
| if is_positive(term): | |
| return "".join([make_past_tense(token) for token in doc]) | |
| return doc.text | |
| def get_dystopian_summary(term): | |
| if term == "": | |
| return term | |
| try: | |
| results = wikipedia.search(term, results=1) | |
| except wikipedia.exceptions.DisambiguationError as e: | |
| raise gr.Error(e.error) | |
| if len(results) == 0: | |
| raise gr.Error( | |
| f'Could not find an article on the term "{term}". ' | |
| 'Try searching for a different topic.' | |
| ) | |
| summary = wikipedia.summary( | |
| results[0], | |
| sentences=1, | |
| auto_suggest=False, | |
| redirect=True | |
| ) | |
| return make_dystopian(term, summary) | |
| def launch_demo(**kwargs): | |
| title = "Dystopedia" | |
| description = ( | |
| "Make any Wikipedia topic dystopian. Inspired by " | |
| "[this Tweet](https://twitter.com/lbcyber/status/1115015586243862528). " | |
| "Dystopedia uses [DistilBERT base uncased finetuned SST-2](https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english) " | |
| "for sentiment analysis and is subject to its limitations and biases." | |
| ) | |
| examples = [["joy"], ["hope"], ["peace"], ["Earth"], ["water"], ["food"]] | |
| gr.Interface( | |
| fn=get_dystopian_summary, | |
| inputs=gr.Textbox(label="term", placeholder="Enter a term...", max_lines=1), | |
| outputs=gr.Textbox(label="description"), | |
| title=title, | |
| description=description, | |
| examples=examples, | |
| cache_examples=True, | |
| allow_flagging="never", | |
| ).launch(**kwargs) | |
| launch_demo(show_error=True) | |