oroszgy commited on
Commit
f214d73
1 Parent(s): 1e6b150

feat: initial commit

Browse files
Files changed (8) hide show
  1. .gitignore +143 -0
  2. README.md +8 -1
  3. examples/app.py +33 -0
  4. examples/common.py +3 -0
  5. examples/keywords.py +14 -0
  6. poetry.lock +0 -0
  7. poetry.toml +2 -0
  8. pyproject.toml +20 -0
.gitignore ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Python template
2
+ # Byte-compiled / optimized / DLL files
3
+ __pycache__/
4
+ *.py[cod]
5
+ *$py.class
6
+
7
+ # C extensions
8
+ *.so
9
+
10
+ # Distribution / packaging
11
+ .Python
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ wheels/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+ cover/
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+ db.sqlite3
63
+ db.sqlite3-journal
64
+
65
+ # Flask stuff:
66
+ instance/
67
+ .webassets-cache
68
+
69
+ # Scrapy stuff:
70
+ .scrapy
71
+
72
+ # Sphinx documentation
73
+ docs/_build/
74
+
75
+ # PyBuilder
76
+ .pybuilder/
77
+ target/
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # IPython
83
+ profile_default/
84
+ ipython_config.py
85
+
86
+ # pyenv
87
+ # For a library or package, you might want to ignore these files since the code is
88
+ # intended to run in multiple environments; otherwise, check them in:
89
+ # .python-version
90
+
91
+ # pipenv
92
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
94
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
95
+ # install all needed dependencies.
96
+ #Pipfile.lock
97
+
98
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
99
+ __pypackages__/
100
+
101
+ # Celery stuff
102
+ celerybeat-schedule
103
+ celerybeat.pid
104
+
105
+ # SageMath parsed files
106
+ *.sage.py
107
+
108
+ # Environments
109
+ .env
110
+ .venv
111
+ env/
112
+ venv/
113
+ ENV/
114
+ env.bak/
115
+ venv.bak/
116
+
117
+ # Spyder project settings
118
+ .spyderproject
119
+ .spyproject
120
+
121
+ # Rope project settings
122
+ .ropeproject
123
+
124
+ # mkdocs documentation
125
+ /site
126
+
127
+ # mypy
128
+ .mypy_cache/
129
+ .dmypy.json
130
+ dmypy.json
131
+
132
+ # Pyre type checker
133
+ .pyre/
134
+
135
+ # pytype static type analyzer
136
+ .pytype/
137
+
138
+ # Cython debug symbols
139
+ cython_debug/
140
+
141
+
142
+ # PyCharm
143
+ .idea/
README.md CHANGED
@@ -10,4 +10,11 @@ pinned: false
10
  license: apache-2.0
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces#reference
 
 
 
 
 
 
 
10
  license: apache-2.0
11
  ---
12
 
13
+ # HuSpaCy Examples
14
+
15
+ This repository presents some practical examples on using HuSpaCy for various text mining applications.
16
+
17
+
18
+ ## Development
19
+
20
+ To start the demo run: `streamlit run app.py`
examples/app.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import streamlit as st
3
+ from keywords import process as keywords
4
+
5
+ DEFAULT_TEXT = """Az elfogadott lengyel helyreállítási terv még jobban izolálja Magyarországot, gazdasági és politikai szempontból egyaránt. Mint megtudtuk, hiába mondta még márciusban Orbán, hogy a hitelrészt is kérjük az uniós pénzekből, a korábban benyújtott terveket egyelőre nem módosítottuk.
6
+
7
+ Lengyelország tavaly májusban adta be nemzeti helyreállítási tervét és idén június 1-jén kapta meg rá az Európai Bizottság jóváhagyását. Az uniós tagállamok 2020 decemberében döntötték el – a jogállamiság miatti lengyel és magyar vétófenyegetés feloldásával –, hogy egy 750 milliárd eurós alapot hoznak létre, hogy segítse a koronavírus utáni gazdasági talpráállást. Minden tagállamnak el kell készítenie a felhasználásra vonatkozó tervét, amelynek tartalmazni kell, hogy mekkora vissza nem térítendő támogatásra és mekkora hitelre tart igényt. Ezek természetesen maximált keretek. A lengyel „gazdaságélénkítési és ellenállóképesség-növelési” program értéke 35,4 milliárd euró: 23,9 milliárd támogatás és 11,5 milliárd kölcsön.
8
+
9
+ Lengyelország esetében azért húzódott ilyen sokáig az eljárás, mert előbb az Európai Bizottság, majd pedig az Európai Bíróság is úgy találta, hogy a lengyel igazságszolgáltatási reform ellentétes az uniós joggal, elsősorban az úgynevezett fegyelmi kamara miatt, amelyben túl nagy befolyása van a kormánypártnak. Ezt az akadályt kellett elhárítani, hogy meginduljanak az uniós pénzek útjából, az ehhez szükséges jogszabályt pedig a múlt héten hozták meg a lengyelek. Az Európai Bizottságnak tehát nem konkrétan a lengyel tervvel volt gondja, hanem azzal, hogy az uniós pénzek elköltésének ellenőrzését egy politikailag befolyásolt bíróság végzi el.
10
+
11
+ Ahhoz azonban, hogy a lengyelek pénzt kapjanak, további feltételeknek is meg kell felelniük, a jóváhagyó döntésében a brüsszeli testület többek közt három mérföldkövet jelölt meg:
12
+
13
+ a bírák fegyelmi rendszerének reformja, új testület létrehozásával és a fegyelmi felelősség új alapjaival – határidő 2022 második negyedév,
14
+ a Legfelsőbb Bíróság Fegyelmi Kollégiumának határozataival érintett bírák ügyeinek felülvizsgálati eljárása – határidő 2022 második negyedév,
15
+ utólagos ellenőrzés a felülvizsgálati eljárás befejezésének biztosítására – határidő 2022 negyedik negyedév.
16
+ Vagyis a jogellenesen felállított fegyelmi kamara bírákkal szembeni összes ügyét külön bíróság elé kell terjeszteni, amelynek pártatlannak kell lennie. Azt is rögzítették, hogy a bírák nem vonhatók fegyelmi felelősségre azért, mert kérdéseket tettek fel az Európai Bíróságnak és az általuk meghozott döntések tartalmáért sem.
17
+
18
+ Az első feltételt teljesítették, a másodiknak még ebben a hónapban eleget kell tenni. Ennek azért van jelentősége, mert csak akkor lehet kifizetési igényt előterjeszteni, ha az első két pontban írtak megvalósultak. Mindezt a lengyel kormány vállalta, így a keretből idén várhatóan 4 milliárd eurót fognak kapni.
19
+
20
+ Ami pedig a konkrét terveket illeti: 49 reformot és 53 beruházási projektet tartalmaz a dosszié, a források 42,7 százalékát az éghajlatváltozás elleni küzdelemre, 21,3 százalékát a digitális átállásra fordítják. Mindezzel reményeik szerint 105 000 munkahelyet teremtenek és a következő húsz évben a GDP 15 százalékos növekedését érik el.
21
+
22
+ Az eljárás hivatalos folytatása az, hogy a tagállamok négy héten belül jóváhagyják a bizottsági ajánlást. Az EUrologus figyelmét uniós források arra hívták fel, hogy ez a helyzet legalább két szempontból igen előnyös a lengyelek számára:
23
+
24
+ További mintegy 25 milliárd euró válik elérhetővé számukra, amely részben a fel nem használt hitelrészt, részben pedig az ide becsatornázott és az orosz energiáról való leválást szolgáló REPowerEU nevű alapból rájuk eső részt jelenti,
25
+ Ha a feltételeket rendben teljesítik, akkor megszűnik az ok, amiért a 7-es cikkely szerinti eljárást velük szemben folytatják. Tovább gondolva: ha ebből kikerül Lengyelország, akkor vége lesz a Magyarországgal eddig fenntartott dacszövetségnek. Tehát az EU képes lehet a legsúlyosabb szankciókat is meghozni, ha a magyar kormány továbbra is sérti a jogállamisági elveket, mert a lengyelek nem fognak pusztán azért vétózni, mert hasonló helyzetben a magyarok is vétóznának a javukra.
26
+ Ami egyébként a magyar helyreállítási tervet illeti: bizottsági tisztviselőktől úgy értesültünk, hogy a tárgyalások továbbra is folynak a jogszabályban meghatározott kritériumok alapján. Forrásunk ugyanakkor egyértelműen kijelentette, hogy a magyar tervet nem módosították az elmúlt hónapokban. Ez azért fontos, mert a magyar kormány eredetileg – tavaly áprilisban – csak a vissza nem térítendő – akkori árfolyamon számolva – 2500 milliárd forintra pályázott, de idén márciusban Orbán Viktor azt mondta, hogy a 3300 milliárd forintos hitelre is igényt tartana. Ehhez azonban módosítani kellene a tervet, de ez nem történt meg. Ráadásul ami tavaly még 2500 milliárd forint volt, az mostanra csak 2000. A vártnál kisebb gazdasági visszaesés és a robusztus növekedés miatt ugyanis kiigazították az arányokon alapuló számokat, ami mínusz 1,3 milliárd eurót jelentett. Ennek az összegnek a 70 százaléka pedig napról napra nagyobb veszélyben van. Ha ugyanis ez év végéig nem fogadják el a tagállamok a magyar tervet a bizottsági ajánlás alapján, akkor a lehívható vissza nem térítendő összeg 70 százaléka elvész – így szól a jogszabály.
27
+ A bizottsági jóváhagyást követően egy hónappal dönt a Tanács, majd két hónap áll rendelkezésre a szerződés véglegesítésére a Bizottság számára. Ez már három hónap és figyelembe kell venni a nyári szünetet is…
28
+ """
29
+
30
+ st.sidebar.title("Demo")
31
+ text: str = st.text_area("Text to analyze", DEFAULT_TEXT)
32
+ keywords_df: pd.DataFrame = keywords(text)
33
+ st.dataframe(keywords_df)
examples/common.py ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ import spacy
2
+
3
+ NLP = spacy.load("hu_core_news_lg")
examples/keywords.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import List, Tuple
2
+
3
+ import pandas as pd
4
+ from examples.common import NLP
5
+ from textacy.extract.keyterms.sgrank import sgrank as keywords
6
+
7
+
8
+ def process(text: str) -> pd.DataFrame:
9
+ doc = NLP(text)
10
+ terms: List[Tuple[str, float]] = keywords(doc, topn=10)
11
+ term_set = [t for t, _ in terms]
12
+ return pd.DataFrame([{"Keyphrase": term, "Probability": prob}
13
+ for term, prob in terms
14
+ if all(other == term or term not in other for other in term_set)])
poetry.lock ADDED
The diff for this file is too large to render. See raw diff
poetry.toml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ [virtualenvs]
2
+ in-project = true
pyproject.toml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [tool.poetry]
2
+ name = "application-examples"
3
+ version = "0.1.0"
4
+ description = "HuSpaCy Application Examples"
5
+ authors = ["Gyorgy Orosz <gyorgy@orosz.link>"]
6
+ license = "Apache 2.0"
7
+
8
+ [tool.poetry.dependencies]
9
+ python = "~3.8"
10
+ streamlit = "^1.10.0"
11
+ textacy = "^0.12.0"
12
+ hu-core-news-lg = {url = "https://huggingface.co/huspacy/hu_core_news_lg/resolve/v3.3.0/hu_core_news_lg-any-py3-none-any.whl"}
13
+ scipy = "~1.8.0"
14
+ newspaper3k = "^0.2.8"
15
+
16
+ [tool.poetry.dev-dependencies]
17
+
18
+ [build-system]
19
+ requires = ["poetry-core>=1.0.0"]
20
+ build-backend = "poetry.core.masonry.api"