AlanTsai-0329 commited on
Commit
eb1c116
ā€¢
1 Parent(s): c3c33d6

Upload 25 files

Browse files
Files changed (26) hide show
  1. .gitattributes +1 -0
  2. app/Home.py +12 -0
  3. app/pages/1_Dashboard.py +122 -0
  4. app/pages/Control/Controls.py +0 -0
  5. app/pages/Model/Load_Model.py +134 -0
  6. app/pages/Model/__pycache__/Load_Model.cpython-39.pyc +0 -0
  7. app/pages/model_param/board_classification_model/config.json +47 -0
  8. app/pages/model_param/board_classification_model/pytorch_model.bin +3 -0
  9. app/pages/model_param/board_classification_model/special_tokens_map.json +7 -0
  10. app/pages/model_param/board_classification_model/tokenizer.json +0 -0
  11. app/pages/model_param/board_classification_model/tokenizer_config.json +13 -0
  12. app/pages/model_param/board_classification_model/training_args.bin +3 -0
  13. app/pages/model_param/board_classification_model/vocab.txt +0 -0
  14. app/pages/model_param/sentiment_analysis_model/config.json +39 -0
  15. app/pages/model_param/sentiment_analysis_model/pytorch_model.bin +3 -0
  16. app/pages/model_param/sentiment_analysis_model/special_tokens_map.json +7 -0
  17. app/pages/model_param/sentiment_analysis_model/tokenizer.json +0 -0
  18. app/pages/model_param/sentiment_analysis_model/tokenizer_config.json +15 -0
  19. app/pages/model_param/sentiment_analysis_model/vocab.txt +0 -0
  20. app/pages/model_param/summarization_model/config.json +36 -0
  21. app/pages/model_param/summarization_model/generation_config.json +11 -0
  22. app/pages/model_param/summarization_model/pytorch_model.bin +3 -0
  23. app/pages/model_param/summarization_model/special_tokens_map.json +5 -0
  24. app/pages/model_param/summarization_model/spiece.model +3 -0
  25. app/pages/model_param/summarization_model/tokenizer.json +3 -0
  26. app/pages/model_param/summarization_model/tokenizer_config.json +11 -0
.gitattributes CHANGED
@@ -32,3 +32,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ app/pages/model_param/summarization_model/tokenizer.json filter=lfs diff=lfs merge=lfs -text
app/Home.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ st.header("ć€ęœŸęœ«å°ˆé”Œć€‘ę–‡å­—ē¤¦å·„")
4
+ st.subheader("PTT ē‰ˆé¢åˆ†ęžę‡‰ē”Ø")
5
+
6
+ st.header("ēµ„å“”名單")
7
+ st.markdown("""
8
+ - 111AB8005 å¼µäŗ‘姵
9
+ - 111AB8017 ꞗē¶­å©•
10
+ - 111AB8023 陳ēŽ‰ę¶µ
11
+ - 111AB8026 č””å°šå®
12
+ """)
app/pages/1_Dashboard.py ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from pages.Model import Load_Model
3
+ import warnings
4
+ warnings.filterwarnings("ignore")
5
+
6
+ st.set_page_config(
7
+ page_title="PTT ē‰ˆé¢ę‡‰ē”Ø App",
8
+ page_icon="šŸ§Š",
9
+ layout="wide",
10
+ initial_sidebar_state="expanded",
11
+ menu_items={
12
+ 'About': """ēµ„å“”名單ļ¼šå¼µäŗ‘å§µć€ęž—ē¶­å©•ć€é™³ēŽ‰ę¶µć€č””尚宏""",
13
+ }
14
+ )
15
+
16
+
17
+ sample_text = [
18
+ 'Select',
19
+ '[問卦] ꀎéŗ¼ę²’ęœ‰äŗŗåœØčØŽč«–å·„ę„­4.0äŗ†ļ¼Ÿ 兩幓前éø舉ēš„ę™‚å€™ å·„ę„­4.0ć€å¤§ę•øꓚ态AIčØŽč«–ēš„ę²øę²øꏚꏚ ꀎéŗ¼ä»Šå¹“éø舉ēš„ę™‚å€™ å„½åƒę²’ęœ‰č½åˆ°ä»»ä½•å·„ę„­4.0ēš„ę¶ˆęÆļ¼Ÿ ęœ‰å¦å—Žļ¼Ÿ å£č™Ÿč¦ęœ‰åƦčøēš„ę–¹ę³•å§ ē¾åœØåˆč·³å‡ŗ來äŗ† ę—„ęœˆå…‰ęœ¬ä¾†åœØé«˜é›„å°±ęœ‰å» äŗ†å§',
20
+ '[問卦] ęœ‰ę²’ęœ‰č·ÆäøŠēŖē„¶č®Šå¾ˆäŗ®ēš„八卦ļ¼Ÿ 小é­Æ家附čæ‘ēš„巷子 åŽŸęœ¬č·Æ過č¦ŗå¾—éƒ½ęš—ęš—ēš„ å¤§ę¦‚å°±ę˜Æ那ēØ®ę•“č·Æ꜉10ē›žē‡ˆåŖ開äø€å…©ē›žēš„ē؋åŗ¦ äøéŽå‰›å‰›ē¶“過ꙂēŖē„¶č¦ŗå¾—ę•“č·Æč®Šå¾—č¶…äŗ® åŽŸä¾†ę‰€ęœ‰ēš„ē‡ˆéƒ½ę‰“é–‹äŗ† č·Æå¤Ŗäŗ®åč€Œå„½åƒęœ‰é»žäøå¤Ŗēæ’ę…£ ęœ‰ę²’ęœ‰äŗŗ也ē™¼ē¾ē”Ÿę“»å‘Ø遭ēš„č·ÆēŖē„¶č®Šå¾—很äŗ® ęœ‰å¦å—Žļ¼Ÿ ',
21
+ 'Re: [čØŽč«–] ę“—č…¦å¤ŖęˆåŠŸ!äø­åœ‹å¤–äŗ¤å®˜å…¬ē„¶č¬›éŒÆę­·å²å•¦!!!! čÆåˆåœ‹ę†²ē«  ē¬¬äŗ”ē«  安å…Øē†äŗ‹ęœƒ ē¬¬23ę¢ č‡³ä»ŠęœŖę”¹ åŽŸę–‡äøŠč¼‰ēš„仍ē„¶ę˜Æäø­čÆę°‘åœ‹ Republic of china CHAPTER V: THE SECURITY COUNCIL COMPOSITION Article 23 The Security Council shall consist of fifteen Members of the United Nations. The Republic of China France the Union of Soviet Socialist Republics the United Kingdom of Great Britain and Northern Ireland and the United States of America shall be permanent members of the Security Council. The General Assembly shall elect ten other Members of the United Nations to be nonpermanent members of the Security Council due regard being specially paid in the first instance to the contribution of Members of the United Nations to the maintenance of international peace and security and to the other purposes of the Organization and also to equitable geographical distribution. 很儇ę€Ŗ從äø­čÆę°‘åœ‹é€€å‡ŗčÆ合國(1971) äø­ē¾Žę–·äŗ¤ä»„後 (1979) č€å…±ä»ē„¶ę²’ęœ‰é‹ē”Ø他們影éŸæ力去äæ®ę­£čÆåˆåœ‹ę†²ē« ļ¼Œę”¹ęˆä»–å€‘ęƒ³č¦ēš„ē‰ˆęœ¬ 過去čÆåˆåœ‹ę†²ē« ä¹Ÿäøę˜Æę²’ęœ‰äæ®ę­£č‰ę”ˆéŽ 但ę˜Æå°é€™å€‹ä»–å€‘č¦–å¦‚ēœ¼äø­é‡˜ć€č‚‰äø­åˆŗēš„ē¬¬23ę¢ äøŠč¼‰äø­čÆę°‘åœ‹ēš„ę–‡å­— 他們卻始ēµ‚ę²’ęœ‰č¾¦ę³•äæƒå…¶ę”¹å‹• ę˜Æäøęƒ³é‚„ę˜Æč¾¦äøåˆ°ļ¼Ÿ : äø­å…±ę“—č…¦å¤§ęˆåŠŸ : 小弟剛剛ēœ‹ē¾Žåœ‹é›»č¦–ꖰ聞 : 共åŒŖ外äŗ¤å®˜ē«Ÿē„¶äøēŸ„道共ē”¢é»Øę²’ę‰“éŽäŗŒęˆ° : 還å»ŗč­° : äø­ē¾Žå›žåˆ°äŗŒęˆ°ę™‚ęœŸē‚ŗå’Œå¹³ę­£ē¾©äø¦č‚©ä½œęˆ°ēš„é—œäæ‚ : é‚„ęåˆ°é£›č™ŽéšŠć€é™³ē“å¾·ć€å²čæŖåØå°‡č».... : äø­åœ‹ę˜Æē¬¬äø€å€‹åœØčÆåˆåœ‹ę†²ē« äøŠē°½å­—... : č²“ę»“ 這äŗ›äøéƒ½ę˜Æäø­čÆę°‘åœ‹ć€åœ‹ę°‘é»Øēš„ę­·å²å—Žļ¼Ÿ : ęœ‰ę²’ęœ‰å¦ļ¼Ÿ : č£œå€‹åœ‹å…§å ±å°Žļ¼š : 蔔英ꖇēœŸēš„č¦å„½å„½ēęƒœäø€äø‹äø­čÆę°‘åœ‹ 作ē‚ŗäø€å€‹å‰ęœē•™äø‹ä¾†č³‡ē”¢ēš„ē¹¼ę‰æ者 其åƦäø¦äøå®¹ę˜“ äøč¦č¦ŗå¾—å„½åƒę²’äŗ†äø­čÆę°‘åœ‹ä»–å€‘åščµ·äŗ‹ä¾†ę›“č¼•é¬† ꈑēš„ēœ‹ę³•ę˜ÆčÆåˆåœ‹ę†²ē« åŽŸę–‡ ꊊRepublic of China ē›“ęŽ„ę”¹ęˆChina怂åŖę˜Æäø€å€‹å‹•ä½œ äø¦äøę˜Æ什éŗ¼ę‡¶å¾—ę”¹ēš„問锌ļ¼Œę³•åœ‹äøä¹Ÿē›“ęŽ„å« Franceļ¼Ÿ ę›“å¤šēš„å› ē“ åÆčƒ½é‚„åœØčƒŒå¾Œę”æę²»å‹•ę©Ÿ ę³•ēµ±åœ°ä½ē“”ē–‘ 就這ęØ£ć€‚',
22
+ '[閒聊] č¼å¤œä¹‹å¾Œé‚„ęœƒęžęœ‹å‹ęø¬č©¦å—Žļ¼Ÿ å°±ę˜Æ啊 ä»„å¾€č¼å¤œåšé€™ä»¶äŗ‹éƒ½éœ€č¦ę—©å‚配合 åÆę˜Æē¾åœØēš„ęƒ…ę³ä¹‹å¾Œé‚„č®“ę—©å‚åŽ»åšä¹Ÿå¤Ŗę€Ŗäŗ†å§ 而äø”äŗ¬éƒ½äø€å½¹ä¹Ÿč®“č¼å¤œäøå‹•ēš„åŽŸå‰‡é­å—č”ę“Š é‚£ä¹‹å¾Œč¼å¤œé‚„ęœƒęžęœ‹å‹ęø¬č©¦å—Žļ¼Ÿ ',
23
+ 'Re: [問卦] å„¹č·Ÿęˆ‘čŖŖé‚„čµ°äøå‡ŗ來ę˜Æ什éŗ¼ę„ę€ļ¼Ÿ 因äŗŗ而ē•°ļ¼Œé€™č£”ę˜Æę©ŸęŽ°å®¢å®¶äŗŗ怂 : : å‰›č·Ÿäø€å€‹å–œę­”ēš„儳ē”Ÿå‘Šē™½äŗ† : ęˆ‘ä»„ē‚ŗęˆ‘å€‘äŗ’ęœ‰å„½ę„Ÿ : ēµęžœå„¹č·Ÿęˆ‘čŖŖå„¹é‚„čµ°äøå‡ŗ來äøŠäø€ę®µ : ęˆ‘é‚„ęœ‰ę©Ÿęœƒå—Žļ¼Ÿ : ę±‚č§£ 這ēØ®äŗ‹ęƒ…ę ¹ę“šęˆ‘ēš„äŗŗē”Ÿē¶“é©— äøę˜Æå„¹čµ°äøå‡ŗ來ļ¼Œę˜Æäøęƒ³čµ°å‡ŗä¾†ć€‚ ē†ęƒ³å¾ˆē¾Žę»æļ¼Œē¾åƦ很éŖØꄟ怂 要äøč¦å°±č©¦äø€č©¦ę‰ēŸ„道 č©¦éƒ½äøč©¦ē›“ꎄꋒēµ•ä½ ēš„ļ¼Œå°±ę˜ÆęŠŠä½ ē•¶ē™½ē™”怂 ä»Šå¤©ę‰ēœ‹ęŸę”Æå½±ē‰‡ č”—čØŖåˆ†ę‰‹ä½†ę˜Æē•¶ęœ‹å‹ēš„ęƒ…ä¾¶ äŗ¤å¾€éŽå››å¹“ć€åˆ†ę‰‹åŠå¹“ 儳ē”ŸåœØčž¢å¹•å‰é¢ē›“ꎄčŖŖäøęƒ³č·Ÿē”·ēš„ē•¶ęœ‹å‹ å¹¹åæ«ē¬‘ę­» ē”·ēš„都åæ«å“­å‡ŗ來äŗ†ļ¼Œé‚„č¦č¢«č¬›é€™ēØ®č©±ć€‚ å¦‚ęžœäøę˜Æ那個影ē‰‡č¢«åˆŖäŗ†ļ¼ˆę‡‰č©²ę˜Æč¢«å˜“ēˆ†ļ¼‰ ęˆ‘ęœƒč²¼äøŠä¾†č®“大家ēœ‹ēœ‹ äøŠčæ°å½±ē‰‡å°č±”äø­ę˜Æ WebTVasis Taiwan ēš„ ēœ‹ä»–å€‘ęœƒäøęœƒå†ę”¾å‡ŗ來 ēµč«–ļ¼š 封鎖儹ļ¼Œę‰¾äø‹äø€å€‹ć€‚ åę­£ä½ åˆäøęœƒåŽ»č‡Ŗę®ŗ ęƒ³č‡Ŗę®ŗ隔壁pęæēœ‹äø€äø‹ SOP čؘ得幫č‡Ŗå·±ęŗ–備儽後äŗ‹ļ¼Œåˆ„嚇到刄äŗŗ怂 éƒ½å¹¾ę­²äŗ† č‡Ŗå·±äøč¦ē•¶ē™½ē™”就儽äŗ† å“Ŗå¤©é‚„ęœƒäøŠč”—čØŖč¢«å…«å¦é…øę°‘å˜“ 這ēØ®äŗ‹ęƒ…ę˜Æ因ā€œäŗŗā€č€Œē•°ēš„ ē©“ē©“ꌇäŗ¤ ä½œč€… hancel (hancel) ēœ‹ęæ Gossiping ęؙ锌 Re: [問卦] 儳友å‡ŗ國äŗ¤ę›äø€å¹“ åˆ†ę‰‹ēš„ę©ŸēŽ‡å¤šå°‘ļ¼Ÿ Ꙃ間 Tue Jul 24 02:42:26 2018',
24
+ 'Re: [閒聊] č„æę–Æęæęœ‰å„³ē”Ÿč¦åŒ…養ē”·ē”Ÿ č±Ŗ久å’Ŗ꜉ēœ‹č„æę–Æē‰ˆå“©0.0 這äø‰å¹“內č±Ŗ像äø€ę¬”都å’Ŗ꜉ ę˜ÆčŖŖ哩 äŗ¤å¾€é‚„ēœ‹č„æę–Æē‰ˆ 也很åÆꆐ0.0 č·Ÿäŗ¤å¾€ę»‘äŗ¤å‹č»Ÿé«”äø€ęØ£ ēœ‹åˆ„äŗŗē™¼ę€§ę„›ę–‡ å™—ęœƒJ噠ē©ŗ虛å’Ŗ0.0 ē¾åœØē›“ꎄēœ‹ę‰“ē‚®åÆ¦ę³ ęÆ”č¼ƒę–¹ä¾æ0.0 ',
25
+ '[åÆ¦ę³] 萊莎ēš„ē…‰é‡‘å·„ęˆæ2 ēœ‹ēœ‹ē³»ļæ½ļæ½é¢äøŠęœ‰ę²’ęœ‰ę”¹å–„ä»€éŗ¼ YT: 圖儇ē¶²å€åœØē°½åęŖ” é˜æē©ŗåÆ¦ę³å° äø»č¦åÆ¦ę³PSå’Œå°‘é‡ę‰‹ę©ŸéŠęˆ²ļ¼Œå¶ēˆ¾ēŽ©ēŽ©PCéŠęˆ²ļ¼ŒęÆ”ä¾‹å¤§ę¦‚98.9:1:0.1 åÆ¦ę³ę™‚é–“ē‚ŗęÆę—„21:00~24:00 ę™‚é–“ęœƒå‰å¾Œ1äø€å°ę™‚ļ¼Œē¢ŗ定休ęÆęœƒå‰äø€å¤©ēµęŸę™‚å‘ŠēŸ„ ē›®ęؙę˜Æē”Øå˜“ę‰“BOSS Twitch : Youtube : 巓哈小屋 : ēæ’ę…£åÆ«é•·ę–‡ļ¼ŒęŠŠę–‡ē« äæå­˜åœØ這 UtsuhoReiuzi :č½‰éŒ„č‡³ēœ‹ęæ PlayStation 12/03 20:07',
26
+ '[黑ē‰¹] åøåƶ住ę»æäŗŗļ¼Œä»£č”Øåøåƶäøč²“ļ¼Ÿ ęŸÆē²‰čŖŖļ¼šę˜Žå€«ē¤¾å®…ę»æē§Ÿäŗ†ļ¼Œä»£č”Øę˜Žå€«ē¤¾å®…äøč²“ åøåÆ¶ä¹Ÿå¾ˆę¶ę‰‹ć€ä½å¾ˆę»æļ¼Œę˜Æäøę˜Æ代č”Øåøåƶ也äøč²“呢ļ¼Ÿ ęƒ³äøåˆ°å‹ę–‡å“„這éŗ¼å§”屈ļ¼ŒåŖčƒ½č·Ÿåˆ„äŗŗꓠäøč²“又住ę»æäŗŗēš„åøåƶ ',
27
+ '[ꖰ聞] é˜æäø­éƒØ長ē«Ÿę˜Æę’©å¦¹é«˜ę‰‹ļ¼é‡‘叄éšØå£é›»ęšˆčØ˜č€… é˜æäø­éƒØ長ē«Ÿę˜Æę’©å¦¹é«˜ę‰‹é‡‘å„éšØå£å°±ä¾†é›»ęšˆčØ˜č€… ē–«ęƒ…ęŒ‡ę®äø­åæƒčØ˜č€…ęœƒäøŠēø½ę˜Æę²‰ē©©ēš„ęŒ‡ę®å®˜é™³ę™‚äø­ļ¼Œ 其åƦę˜Æ個čŖæēš®å¤§ē”·å­©ļ¼Ÿé‚„ę˜Æå€‹ę’©å¦¹é«˜ę‰‹ ļ¼Ÿć€Šč‡Ŗē”±čæ½ę–°čžć€‹ęŽ”čØŖ團隊專čØŖé™³ę™‚äø­ļ¼Œé™¤äŗ†åˆ†ęžē–«ęƒ…ļ¼Œä¹Ÿę­é–‹é™³ę™‚äø­č¼ƒå°‘åœØ鏔頭前å‡ŗē¾ ēš„äø€é¢ ę­¦ę¼¢č‚ŗē‚Žļ¼ˆę–°åž‹å† ē‹€ē—…ęƒē—…ļ¼ŒCOVID19ļ¼‰ē–«ęƒ…ēˆ†ē™¼ä»„來ļ¼Œé™³ę™‚äø­äø€åŗ¦é€£ēŗŒäø»ęŒé€¾ē™¾å “čØ˜č€… ꜃ļ¼Œč¢«ę—„åŖ’形容ē‚ŗ鐵äŗŗéƒØ長ļ¼›ęŗ«å’Œć€ē†ę€§äø”äøå¤±äŗŗę–‡é—œę‡·ēš„ē™¼č؀ļ¼ŒäøåŖē©©ē©©ęŽ§åˆ¶ē–«ęƒ… ļ¼Œä¹Ÿč®“他圈ē²‰ē„”ę•ø怂 夫妻ē›øč™•åˆ°é¤Šē”Ÿä¹‹é“ é™³ę™‚äø­åēœŸåæƒč©± å½±ē‰‡äø­ļ¼Œé™³ę™‚äø­é¢å°čØ˜č€…ēš„ę’©å¦¹é‡‘å„č€ƒé©—ļ¼Œäøä½†äø€äø€ęŽ„ꋛļ¼Œé‚„展ē¾ę€„ę™ŗč‡Ŗ創防ē–«ę’© 妹金叄ļ¼Œ äøåƒ…ę’©åŠŸåč¶³äø”å¾Œå‹č¶…å¼·ļ¼Œč®“čØ˜č€…č½åˆ°éƒ½ē›“å‘¼åš‡ę­»ęˆ‘äŗ† é™³ę™‚äø­ä¹ŸåœØ專čØŖäø­é€éœ²ä»–ēš„養ē”Ÿä¹‹é“ć€ęœ€ę„›ēš„台ē£å°åƒć€å¤«å¦»ę”¾é–ƒēµ•ę‹›ļ¼Œä»„及ē–«ęƒ…éŽå¾Œęœ€ ęƒ³åšēš„äŗ‹ åæ«é»žé–‹å½±ē‰‡ļ¼Œēœ‹é™³ę™‚äø­åˆ†äŗ«é˜²ē–«ä»„外ēš„ēœŸåæƒč©±ć€‚ é˜æäø­ēœŸēš„超åÆꄛ 難ę€Ŗ꜃ꊊčØ˜č€…é›»ęšˆ ęø¾čŗ«äøŠäø‹éƒ½ę•£ē™¼å‡ŗꈐē†Ÿēš„魅力 å¦‚ęžœå†å¹“č¼•é»žę—©é»žå‡ŗ道 åÆčƒ½å°±ę˜Æę°‘é€²é»Øēš„åŠę¾¤ē›“ęØ¹ęˆ–ę˜Æé‡‘åŸŽę­¦äŗ† ',
28
+ 'Re: [姆å’Ŗ] äøŠ ęˆ‘ęƒ³ 這就ę˜Æęˆ‘č·Ÿå¤§č”›ēš„č·é›¢äŗ† å¤§č”›é€—ē¬‘協協 ꈑåŖčƒ½č®“å”å”ē½µęˆ‘ę“ä½ åŖ½ '
29
+ ]
30
+
31
+
32
+ @st.cache_resource
33
+ def load_all_model():
34
+ classify_model = Load_Model.Bert_Classify_Model()
35
+ classify_model.load_model()
36
+
37
+ senti_model = Load_Model.Sentiment_Model()
38
+ senti_model.load_model()
39
+
40
+ summarize_model = Load_Model.Summarization_Model()
41
+ summarize_model.load_model()
42
+ return classify_model, senti_model, summarize_model
43
+
44
+ def text_area_widget():
45
+ input_content = st.selectbox(
46
+ "ä½æē”ØēÆ„ä¾‹ę–‡ē« ",
47
+ sample_text,
48
+ index=0
49
+ )
50
+
51
+ if input_content == "Select":
52
+ input_content = st.text_area(
53
+ label="č«‹č¼øå…„ę–‡ē« ..."
54
+ )
55
+ else:
56
+ input_content = st.text_area(
57
+ label="č«‹č¼øå…„ę–‡ē« ...",
58
+ value=input_content
59
+ )
60
+ return input_content
61
+
62
+
63
+ def make_result_button(classify_model, senti_model, summarize_model, input_content):
64
+ if st.button("ē”¢å‡ŗꈐꞜ"):
65
+ if input_content == "":
66
+ st.error('č«‹å…ˆč¼øå…„ę‚Øęƒ³åˆ†ęžēš„ę–‡ē« ęˆ–ē›“ꎄéø꓇ēÆ„ä¾‹ę–‡ē« ļ¼', icon="šŸšØ")
67
+ else:
68
+ with st.spinner('Wait for it...'):
69
+ run_analysis(classify_model, senti_model, summarize_model, input_content)
70
+ st.balloons()
71
+
72
+ def run_analysis(classify, senti, summarize, input):
73
+ tab_summarize, tab_classify, tab_sentiment = st.tabs(["ꖇē« ę‘˜č¦", "ē‰ˆé¢é ęø¬ęˆęžœ", "ꃅē·’åˆ†ęž"])
74
+
75
+ with tab_summarize:
76
+ st.subheader("ꖇē« ę‘˜č¦")
77
+ st.caption('仄äø‹ē‚ŗę‚Øēš„ę–‡ē« ę‘˜č¦ć€‚')
78
+ st.write(summarize.run_summarize(input))
79
+
80
+ with tab_classify:
81
+ st.subheader("ē‰ˆé¢é ęø¬ęˆęžœ")
82
+ st.caption('仄äø‹ē‚ŗē‰ˆé¢é ęø¬ēš„ę©ŸēŽ‡ć€‚')
83
+ classify_result = classify.predict(input).round(4)
84
+ st.write(f"ę‚Øēš„ę–‡ē« ęœ€ęœ‰åÆčƒ½ę˜Æ {classify_result.iloc[0, 0]}ļ¼ŒåÆčƒ½ę€§ē‚ŗ {classify_result['ę©ŸēŽ‡'].max()*100:2f} %")
85
+ with st.expander("ęŸ„ēœ‹ę‰€ęœ‰ē‰ˆé¢é ęø¬ę©ŸēŽ‡"):
86
+ st.dataframe(
87
+ data=classify_result,
88
+ use_container_width=True
89
+ )
90
+
91
+ with tab_sentiment:
92
+ st.subheader("ꃅē·’åˆ†ęžęˆęžœ")
93
+ st.caption('仄äø‹ē‚ŗę‚Øēš„ę–‡ē« ęƒ…ē·’')
94
+ senti_result = senti.run_sentiment(input)[0]
95
+ st.write(f"ę‚Øēš„ę–‡ē« ęƒ…ē·’ē‚ŗ {senti_result['label']}ļ¼Œåˆ†ę•øē‚ŗ {senti_result['score']}")
96
+
97
+
98
+
99
+ def main():
100
+ # first init model
101
+ classify_model, senti_model, summarize_model = load_all_model()
102
+
103
+ # page design
104
+ head_section = st.container()
105
+ ana_section = st.container()
106
+ output_section = st.container()
107
+
108
+ with head_section:
109
+ st.title("Dashboard")
110
+ st.divider()
111
+
112
+ with ana_section:
113
+ input_content = text_area_widget()
114
+ st.divider()
115
+
116
+ with output_section:
117
+ make_result_button(classify_model, senti_model, summarize_model, input_content)
118
+
119
+
120
+
121
+ if __name__ == '__main__':
122
+ main()
app/pages/Control/Controls.py ADDED
File without changes
app/pages/Model/Load_Model.py ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ import accelerate
3
+ import numpy as np
4
+ import pandas as pd
5
+ import torch.nn.functional as F
6
+ from pathlib import Path
7
+ from transformers import AutoModelForSequenceClassification, BertTokenizerFast, pipeline
8
+
9
+ accelerator = accelerate.Accelerator(cpu=True)
10
+
11
+ class LoadException(Exception):
12
+ ...
13
+
14
+ class LoadModelException(Exception):
15
+ ...
16
+
17
+ class LoadTokenizerException(Exception):
18
+ ...
19
+
20
+ class DIR:
21
+ MODEL_DIR = Path("pages/model_param")
22
+ CLASSIFIER_MODEL_DIR = Path(f"{MODEL_DIR}/board_classification_model")
23
+ SENTIMENT_MODEL_DIR = Path(f"{MODEL_DIR}/sentiment_analysis_model")
24
+ SUMMARIZATION_MODEL_DIR = Path(f"{MODEL_DIR}/summarization_model")
25
+
26
+ class Bert_Classify_Model:
27
+ def __init__(self):
28
+ self.tokenizer_loaded = False
29
+ self.model_loaded = False
30
+
31
+ def load_model(self):
32
+ try:
33
+ self.tokenizer = BertTokenizerFast.from_pretrained(
34
+ pretrained_model_name_or_path=DIR.CLASSIFIER_MODEL_DIR,
35
+ local_files_only=True
36
+ )
37
+ self.tokenizer_loaded = True
38
+ except LoadTokenizerException:
39
+ raise "Tokenizer not loaded."
40
+
41
+ try:
42
+ self.model = AutoModelForSequenceClassification.from_pretrained(
43
+ pretrained_model_name_or_path=DIR.CLASSIFIER_MODEL_DIR,
44
+ local_files_only=True,
45
+ num_labels=4
46
+ )
47
+ self.model_loaded = True
48
+ except LoadModelException:
49
+ raise "Model not loaded."
50
+
51
+ @staticmethod
52
+ def __make_output(outputs):
53
+ id2label = {
54
+ "0": "C_Chat",
55
+ "1": "Gossiping",
56
+ "2": "HatePolotics",
57
+ "3": "Marginalman"
58
+ }
59
+
60
+ pred_prob = F.softmax(outputs.logits)
61
+ pred_prob_df = (
62
+ pd.DataFrame({
63
+ "ē‰ˆé¢": id2label.values(),
64
+ "ę©ŸēŽ‡": pred_prob[0, :].detach().numpy()
65
+ })
66
+ .sort_values(by="ę©ŸēŽ‡", ascending=False)
67
+ )
68
+ return pred_prob_df
69
+
70
+ def predict(self, text):
71
+ if (not self.tokenizer_loaded) and (not self.model_loaded):
72
+ raise LoadException("Not loaded.")
73
+
74
+ token_text = self.tokenizer(
75
+ text,
76
+ padding=True,
77
+ truncation=True,
78
+ return_tensors='pt'
79
+ )
80
+
81
+ outputs = self.model(**token_text)
82
+ result = self.__make_output(outputs)
83
+ return result
84
+
85
+
86
+ class Sentiment_Model:
87
+ def __init__(self):
88
+ self.model_loaded = False
89
+
90
+ def load_model(self):
91
+ try:
92
+ self.model = pipeline(
93
+ "sentiment-analysis",
94
+ DIR.SENTIMENT_MODEL_DIR,
95
+ )
96
+ self.model_loaded = True
97
+
98
+ except LoadModelException:
99
+ raise "Model not loaded."
100
+
101
+ def run_sentiment(self, text):
102
+ if not self.model_loaded:
103
+ raise LoadModelException("model not loaded.")
104
+ outputs = self.model(text)
105
+ return outputs
106
+
107
+ class Summarization_Model:
108
+ def __init__(self):
109
+ self.model_loaded = False
110
+
111
+ def load_model(self):
112
+ try:
113
+ self.model = pipeline(
114
+ "summarization",
115
+ DIR.SUMMARIZATION_MODEL_DIR
116
+ )
117
+ self.model_loaded = True
118
+ except LoadModelException:
119
+ raise "Model not loaded."
120
+
121
+ self.model_loaded = True
122
+
123
+ @staticmethod
124
+ def __make_output(outputs):
125
+ return outputs[0]["summary_text"]
126
+
127
+ def run_summarize(self, text):
128
+ if not self.model_loaded:
129
+ raise LoadModelException("model not loaded.")
130
+ outputs = self.model(text, max_length=1024)
131
+ result = self.__make_output(outputs)
132
+ return result
133
+
134
+
app/pages/Model/__pycache__/Load_Model.cpython-39.pyc ADDED
Binary file (4.67 kB). View file
 
app/pages/model_param/board_classification_model/config.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "ckiplab/albert-tiny-chinese",
3
+ "architectures": [
4
+ "AlbertForSequenceClassification"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.0,
7
+ "bos_token_id": 101,
8
+ "classifier_dropout_prob": 0.1,
9
+ "down_scale_factor": 1,
10
+ "embedding_size": 128,
11
+ "eos_token_id": 102,
12
+ "gap_size": 0,
13
+ "hidden_act": "gelu",
14
+ "hidden_dropout_prob": 0.0,
15
+ "hidden_size": 312,
16
+ "id2label": {
17
+ "0": "LABEL_0",
18
+ "1": "LABEL_1",
19
+ "2": "LABEL_2",
20
+ "3": "LABEL_3"
21
+ },
22
+ "initializer_range": 0.02,
23
+ "inner_group_num": 1,
24
+ "intermediate_size": 1248,
25
+ "label2id": {
26
+ "LABEL_0": 0,
27
+ "LABEL_1": 1,
28
+ "LABEL_2": 2,
29
+ "LABEL_3": 3
30
+ },
31
+ "layer_norm_eps": 1e-12,
32
+ "max_position_embeddings": 512,
33
+ "model_type": "albert",
34
+ "net_structure_type": 0,
35
+ "num_attention_heads": 12,
36
+ "num_hidden_groups": 1,
37
+ "num_hidden_layers": 4,
38
+ "num_memory_blocks": 0,
39
+ "pad_token_id": 0,
40
+ "position_embedding_type": "absolute",
41
+ "problem_type": "single_label_classification",
42
+ "tokenizer_class": "BertTokenizerFast",
43
+ "torch_dtype": "float32",
44
+ "transformers_version": "4.28.0",
45
+ "type_vocab_size": 2,
46
+ "vocab_size": 21128
47
+ }
app/pages/model_param/board_classification_model/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6a0cb8aa2000d5211faebaf9d40c945f51dece7fdceef3435349b698217157f4
3
+ size 16340421
app/pages/model_param/board_classification_model/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
app/pages/model_param/board_classification_model/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
app/pages/model_param/board_classification_model/tokenizer_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "clean_up_tokenization_spaces": true,
3
+ "cls_token": "[CLS]",
4
+ "do_lower_case": false,
5
+ "mask_token": "[MASK]",
6
+ "model_max_length": 512,
7
+ "pad_token": "[PAD]",
8
+ "sep_token": "[SEP]",
9
+ "strip_accents": null,
10
+ "tokenize_chinese_chars": true,
11
+ "tokenizer_class": "BertTokenizer",
12
+ "unk_token": "[UNK]"
13
+ }
app/pages/model_param/board_classification_model/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:546fa189039a1bdaf4bbc81c76bbfffec575c533bb90613c836d519d7ec2e832
3
+ size 3579
app/pages/model_param/board_classification_model/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
app/pages/model_param/sentiment_analysis_model/config.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "IDEA-CCNL/Erlangshen-Roberta-110M-Sentiment",
3
+ "architectures": [
4
+ "BertForSequenceClassification"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "bos_token_id": 0,
8
+ "classifier_dropout": null,
9
+ "directionality": "bidi",
10
+ "eos_token_id": 2,
11
+ "hidden_act": "gelu",
12
+ "hidden_dropout_prob": 0.1,
13
+ "hidden_size": 768,
14
+ "id2label": {
15
+ "0": "Negative",
16
+ "1": "Positive"
17
+ },
18
+ "initializer_range": 0.02,
19
+ "intermediate_size": 3072,
20
+ "label2id": null,
21
+ "layer_norm_eps": 1e-12,
22
+ "max_position_embeddings": 512,
23
+ "model_type": "bert",
24
+ "num_attention_heads": 12,
25
+ "num_hidden_layers": 12,
26
+ "output_past": true,
27
+ "pad_token_id": 1,
28
+ "pooler_fc_size": 768,
29
+ "pooler_num_attention_heads": 12,
30
+ "pooler_num_fc_layers": 3,
31
+ "pooler_size_per_head": 128,
32
+ "pooler_type": "first_token_transform",
33
+ "position_embedding_type": "absolute",
34
+ "torch_dtype": "float32",
35
+ "transformers_version": "4.28.0",
36
+ "type_vocab_size": 2,
37
+ "use_cache": true,
38
+ "vocab_size": 21128
39
+ }
app/pages/model_param/sentiment_analysis_model/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:615d7fe9040cbb298050a3a60797ced537736ef1dcf386199fa8b419098112d7
3
+ size 409146741
app/pages/model_param/sentiment_analysis_model/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
app/pages/model_param/sentiment_analysis_model/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
app/pages/model_param/sentiment_analysis_model/tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "clean_up_tokenization_spaces": true,
3
+ "cls_token": "[CLS]",
4
+ "do_basic_tokenize": true,
5
+ "do_lower_case": true,
6
+ "mask_token": "[MASK]",
7
+ "model_max_length": 1000000000000000019884624838656,
8
+ "never_split": null,
9
+ "pad_token": "[PAD]",
10
+ "sep_token": "[SEP]",
11
+ "strip_accents": null,
12
+ "tokenize_chinese_chars": true,
13
+ "tokenizer_class": "BertTokenizer",
14
+ "unk_token": "[UNK]"
15
+ }
app/pages/model_param/sentiment_analysis_model/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
app/pages/model_param/summarization_model/config.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "csebuetnlp/mT5_multilingual_XLSum",
3
+ "architectures": [
4
+ "MT5ForConditionalGeneration"
5
+ ],
6
+ "d_ff": 2048,
7
+ "d_kv": 64,
8
+ "d_model": 768,
9
+ "decoder_start_token_id": 0,
10
+ "dense_act_fn": "gelu_new",
11
+ "dropout_rate": 0.1,
12
+ "eos_token_id": 1,
13
+ "feed_forward_proj": "gated-gelu",
14
+ "initializer_factor": 1.0,
15
+ "is_encoder_decoder": true,
16
+ "is_gated_act": true,
17
+ "layer_norm_epsilon": 1e-06,
18
+ "length_penalty": 0.6,
19
+ "max_length": 84,
20
+ "model_type": "mt5",
21
+ "no_repeat_ngram_size": 2,
22
+ "num_beams": 4,
23
+ "num_decoder_layers": 12,
24
+ "num_heads": 12,
25
+ "num_layers": 12,
26
+ "output_past": true,
27
+ "pad_token_id": 0,
28
+ "relative_attention_max_distance": 128,
29
+ "relative_attention_num_buckets": 32,
30
+ "tie_word_embeddings": false,
31
+ "tokenizer_class": "T5Tokenizer",
32
+ "torch_dtype": "float32",
33
+ "transformers_version": "4.29.2",
34
+ "use_cache": true,
35
+ "vocab_size": 250112
36
+ }
app/pages/model_param/summarization_model/generation_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "decoder_start_token_id": 0,
4
+ "eos_token_id": 1,
5
+ "length_penalty": 0.6,
6
+ "max_length": 84,
7
+ "no_repeat_ngram_size": 2,
8
+ "num_beams": 4,
9
+ "pad_token_id": 0,
10
+ "transformers_version": "4.29.2"
11
+ }
app/pages/model_param/summarization_model/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:73285124713d581b135f95f92f49e70f24f6fa04f93ccf3bf8d6ed68d2f42a8c
3
+ size 2329698485
app/pages/model_param/summarization_model/special_tokens_map.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "eos_token": "</s>",
3
+ "pad_token": "<pad>",
4
+ "unk_token": "<unk>"
5
+ }
app/pages/model_param/summarization_model/spiece.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ef78f86560d809067d12bac6c09f19a462cb3af3f54d2b8acbba26e1433125d6
3
+ size 4309802
app/pages/model_param/summarization_model/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:93c3578052e1605d8332eb961bc08d72e246071974e4cc54aa6991826b802aa5
3
+ size 16330369
app/pages/model_param/summarization_model/tokenizer_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": null,
3
+ "clean_up_tokenization_spaces": true,
4
+ "eos_token": "</s>",
5
+ "extra_ids": 0,
6
+ "model_max_length": 1000000000000000019884624838656,
7
+ "pad_token": "<pad>",
8
+ "sp_model_kwargs": {},
9
+ "tokenizer_class": "T5Tokenizer",
10
+ "unk_token": "<unk>"
11
+ }