wira.indra commited on
Commit
ca67adc
1 Parent(s): acee695

add twitter feature

Browse files
Files changed (1) hide show
  1. app.py +25 -1
app.py CHANGED
@@ -1,6 +1,7 @@
1
  from transformers import pipeline
2
  import matplotlib.pyplot as plt
3
  import twitter_scraper as ts
 
4
 
5
  import gradio as gr
6
 
@@ -17,7 +18,8 @@ sentiment_pipeline = pipeline(
17
  ner_pipeline = pipeline(
18
  "ner",
19
  model=pretrained_ner,
20
- tokenizer=pretrained_ner
 
21
  )
22
 
23
  examples = [
@@ -50,6 +52,23 @@ def sentiment_df(df):
50
  df['Score'] = scores
51
  return df
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  def twitter_analyzer(keyword, max_tweets):
55
  df = ts.scrape_tweets(keyword, max_tweets=max_tweets)
@@ -59,6 +78,11 @@ def twitter_analyzer(keyword, max_tweets):
59
  df.groupby(["Label"])["Text"].count().plot.pie(autopct="%.1f%%", figsize=(6,6))
60
  return fig, df[["URL", "Text", "Label", "Score"]]
61
 
 
 
 
 
 
62
  if __name__ == "__main__":
63
 
64
  with gr.Blocks() as demo:
 
1
  from transformers import pipeline
2
  import matplotlib.pyplot as plt
3
  import twitter_scraper as ts
4
+ import pandas as pd
5
 
6
  import gradio as gr
7
 
 
18
  ner_pipeline = pipeline(
19
  "ner",
20
  model=pretrained_ner,
21
+ tokenizer=pretrained_ner,
22
+ grouped_entities=True
23
  )
24
 
25
  examples = [
 
52
  df['Score'] = scores
53
  return df
54
 
55
+ def ner_df(df):
56
+ text_list = list(df["Text"].astype(str).values)
57
+ label_list = list(df["Label"].astype(str).values)
58
+ result = [ner(text) for text in text_list]
59
+ terms = []
60
+ sentiments = []
61
+ ent = ['PER', 'NOR']
62
+ for i, preds in enumerate(result):
63
+ for pred in preds['entities']:
64
+ if pred['entity_group'] in ent:
65
+ terms.append(pred['word'])
66
+ sentiments.append(label_list[i])
67
+ df_ner = pd.DataFrame(columns=['Entity', 'Sentiment'])
68
+ df_ner['Entity'] = terms
69
+ df_ner['Sentiment'] = sentiments
70
+ return df_ner
71
+
72
 
73
  def twitter_analyzer(keyword, max_tweets):
74
  df = ts.scrape_tweets(keyword, max_tweets=max_tweets)
 
78
  df.groupby(["Label"])["Text"].count().plot.pie(autopct="%.1f%%", figsize=(6,6))
79
  return fig, df[["URL", "Text", "Label", "Score"]]
80
 
81
+ def ner_analyzer(keyword, df_ner):
82
+ df_ner = df_ner[df_ner.line_race != keyword]
83
+ fig = plt.figure()
84
+ return fig
85
+
86
  if __name__ == "__main__":
87
 
88
  with gr.Blocks() as demo: