Azza / app.py
Jingxiang Mo
debug
9522bb7
raw
history blame
2.78 kB
import os
import gradio as gr
import wikipediaapi as wk
from transformers import (
TokenClassificationPipeline,
AutoModelForTokenClassification,
AutoTokenizer,
)
from transformers.pipelines import AggregationStrategy
import numpy as np
# =====[ DEFINE PIPELINE ]===== #
class KeyphraseExtractionPipeline(TokenClassificationPipeline):
def __init__(self, model, *args, **kwargs):
super().__init__(
model=AutoModelForTokenClassification.from_pretrained(model),
tokenizer=AutoTokenizer.from_pretrained(model),
*args,
**kwargs
)
def postprocess(self, model_outputs):
results = super().postprocess(
model_outputs=model_outputs,
aggregation_strategy=AggregationStrategy.SIMPLE,
)
return np.unique([result.get("word").strip() for result in results])
# =====[ LOAD PIPELINE ]===== #
model_name = "ml6team/keyphrase-extraction-kbir-inspec"
extractor = KeyphraseExtractionPipeline(model=model_name)
text = """
Keyphrase extraction is a technique in text analysis where you extract the
important keyphrases from a document. Thanks to these keyphrases humans can
understand the content of a text very quickly and easily without reading it
completely. Keyphrase extraction was first done primarily by human annotators,
who read the text in detail and then wrote down the most important keyphrases.
The disadvantage is that if you work with a lot of documents, this process
can take a lot of time.
Here is where Artificial Intelligence comes in. Currently, classical machine
learning methods, that use statistical and linguistic features, are widely used
for the extraction process. Now with deep learning, it is possible to capture
the semantic meaning of a text even better than these classical methods.
Classical methods look at the frequency, occurrence and order of words
in the text, whereas these neural approaches can capture long-term
semantic dependencies and context of words in a text.
""".replace("\n", " ")
keyphrases = extractor(text)
print(keyphrases)
def keyphrases_out(input):
input = input.replace("\n", " ")
keyphrases = extractor(input)
out = "The Key Phrases in your text are:\n\n"
for k in keyphrases:
out += k + "\n"
return keyphrases
def wikipedia_search(input):
input = input.replace("\n", " ")
keyphrases = extractor(input)
wiki = wk.Wikipedia('en')
page = wiki.page("")
return page.summary
# for k in keyphrases:
# page = wiki.page(k)
# if page.exists():
# break
# return page.summary
# =====[ DEFINE INTERFACE ]===== #'
# demo = gr.Interface(fn=wikipedia_search, inputs = "text", outputs = "text")
# demo.launch(share=True)