Spaces:
Runtime error
Runtime error
Hello gpt2-qa
Browse files- .gitignore +886 -0
- README.md +9 -25
- app.py +192 -0
- assets/rtl.css +22 -0
- dictionary.py +139 -0
- examples.json +152 -0
- meta.py +9 -0
- normalizer.py +81 -0
- regexes/__init__.py +0 -0
- regexes/currency.py +23 -0
- regexes/email.py +6 -0
- regexes/latin.py +13 -0
- regexes/number.py +5 -0
- regexes/persian.py +19 -0
- regexes/phone.py +6 -0
- regexes/punk.py +5 -0
- regexes/quote.py +25 -0
- regexes/url.py +38 -0
- requirements.txt +6 -0
- utils.py +35 -0
.gitignore
ADDED
@@ -0,0 +1,886 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
### VisualStudio template
|
142 |
+
## Ignore Visual Studio temporary files, build results, and
|
143 |
+
## files generated by popular Visual Studio add-ons.
|
144 |
+
##
|
145 |
+
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
146 |
+
|
147 |
+
# User-specific files
|
148 |
+
*.rsuser
|
149 |
+
*.suo
|
150 |
+
*.user
|
151 |
+
*.userosscache
|
152 |
+
*.sln.docstates
|
153 |
+
|
154 |
+
# User-specific files (MonoDevelop/Xamarin Studio)
|
155 |
+
*.userprefs
|
156 |
+
|
157 |
+
# Mono auto generated files
|
158 |
+
mono_crash.*
|
159 |
+
|
160 |
+
# Build results
|
161 |
+
[Dd]ebug/
|
162 |
+
[Dd]ebugPublic/
|
163 |
+
[Rr]elease/
|
164 |
+
[Rr]eleases/
|
165 |
+
x64/
|
166 |
+
x86/
|
167 |
+
[Ww][Ii][Nn]32/
|
168 |
+
[Aa][Rr][Mm]/
|
169 |
+
[Aa][Rr][Mm]64/
|
170 |
+
bld/
|
171 |
+
[Bb]in/
|
172 |
+
[Oo]bj/
|
173 |
+
[Ll]og/
|
174 |
+
[Ll]ogs/
|
175 |
+
|
176 |
+
# Visual Studio 2015/2017 cache/options directory
|
177 |
+
.vs/
|
178 |
+
# Uncomment if you have tasks that create the project's static files in wwwroot
|
179 |
+
#wwwroot/
|
180 |
+
|
181 |
+
# Visual Studio 2017 auto generated files
|
182 |
+
Generated\ Files/
|
183 |
+
|
184 |
+
# MSTest test Results
|
185 |
+
[Tt]est[Rr]esult*/
|
186 |
+
[Bb]uild[Ll]og.*
|
187 |
+
|
188 |
+
# NUnit
|
189 |
+
*.VisualState.xml
|
190 |
+
TestResult.xml
|
191 |
+
nunit-*.xml
|
192 |
+
|
193 |
+
# Build Results of an ATL Project
|
194 |
+
[Dd]ebugPS/
|
195 |
+
[Rr]eleasePS/
|
196 |
+
dlldata.c
|
197 |
+
|
198 |
+
# Benchmark Results
|
199 |
+
BenchmarkDotNet.Artifacts/
|
200 |
+
|
201 |
+
# .NET Core
|
202 |
+
project.lock.json
|
203 |
+
project.fragment.lock.json
|
204 |
+
artifacts/
|
205 |
+
|
206 |
+
# ASP.NET Scaffolding
|
207 |
+
ScaffoldingReadMe.txt
|
208 |
+
|
209 |
+
# StyleCop
|
210 |
+
StyleCopReport.xml
|
211 |
+
|
212 |
+
# Files built by Visual Studio
|
213 |
+
*_i.c
|
214 |
+
*_p.c
|
215 |
+
*_h.h
|
216 |
+
*.ilk
|
217 |
+
*.meta
|
218 |
+
*.obj
|
219 |
+
*.iobj
|
220 |
+
*.pch
|
221 |
+
*.pdb
|
222 |
+
*.ipdb
|
223 |
+
*.pgc
|
224 |
+
*.pgd
|
225 |
+
*.rsp
|
226 |
+
*.sbr
|
227 |
+
*.tlb
|
228 |
+
*.tli
|
229 |
+
*.tlh
|
230 |
+
*.tmp
|
231 |
+
*.tmp_proj
|
232 |
+
*_wpftmp.csproj
|
233 |
+
*.log
|
234 |
+
*.vspscc
|
235 |
+
*.vssscc
|
236 |
+
.builds
|
237 |
+
*.pidb
|
238 |
+
*.svclog
|
239 |
+
*.scc
|
240 |
+
|
241 |
+
# Chutzpah Test files
|
242 |
+
_Chutzpah*
|
243 |
+
|
244 |
+
# Visual C++ cache files
|
245 |
+
ipch/
|
246 |
+
*.aps
|
247 |
+
*.ncb
|
248 |
+
*.opendb
|
249 |
+
*.opensdf
|
250 |
+
*.sdf
|
251 |
+
*.cachefile
|
252 |
+
*.VC.db
|
253 |
+
*.VC.VC.opendb
|
254 |
+
|
255 |
+
# Visual Studio profiler
|
256 |
+
*.psess
|
257 |
+
*.vsp
|
258 |
+
*.vspx
|
259 |
+
*.sap
|
260 |
+
|
261 |
+
# Visual Studio Trace Files
|
262 |
+
*.e2e
|
263 |
+
|
264 |
+
# TFS 2012 Local Workspace
|
265 |
+
$tf/
|
266 |
+
|
267 |
+
# Guidance Automation Toolkit
|
268 |
+
*.gpState
|
269 |
+
|
270 |
+
# ReSharper is a .NET coding add-in
|
271 |
+
_ReSharper*/
|
272 |
+
*.[Rr]e[Ss]harper
|
273 |
+
*.DotSettings.user
|
274 |
+
|
275 |
+
# TeamCity is a build add-in
|
276 |
+
_TeamCity*
|
277 |
+
|
278 |
+
# DotCover is a Code Coverage Tool
|
279 |
+
*.dotCover
|
280 |
+
|
281 |
+
# AxoCover is a Code Coverage Tool
|
282 |
+
.axoCover/*
|
283 |
+
!.axoCover/settings.json
|
284 |
+
|
285 |
+
# Coverlet is a free, cross platform Code Coverage Tool
|
286 |
+
coverage*.json
|
287 |
+
coverage*.xml
|
288 |
+
coverage*.info
|
289 |
+
|
290 |
+
# Visual Studio code coverage results
|
291 |
+
*.coverage
|
292 |
+
*.coveragexml
|
293 |
+
|
294 |
+
# NCrunch
|
295 |
+
_NCrunch_*
|
296 |
+
.*crunch*.local.xml
|
297 |
+
nCrunchTemp_*
|
298 |
+
|
299 |
+
# MightyMoose
|
300 |
+
*.mm.*
|
301 |
+
AutoTest.Net/
|
302 |
+
|
303 |
+
# Web workbench (sass)
|
304 |
+
.sass-cache/
|
305 |
+
|
306 |
+
# Installshield output folder
|
307 |
+
[Ee]xpress/
|
308 |
+
|
309 |
+
# DocProject is a documentation generator add-in
|
310 |
+
DocProject/buildhelp/
|
311 |
+
DocProject/Help/*.HxT
|
312 |
+
DocProject/Help/*.HxC
|
313 |
+
DocProject/Help/*.hhc
|
314 |
+
DocProject/Help/*.hhk
|
315 |
+
DocProject/Help/*.hhp
|
316 |
+
DocProject/Help/Html2
|
317 |
+
DocProject/Help/html
|
318 |
+
|
319 |
+
# Click-Once directory
|
320 |
+
publish/
|
321 |
+
|
322 |
+
# Publish Web Output
|
323 |
+
*.[Pp]ublish.xml
|
324 |
+
*.azurePubxml
|
325 |
+
# Note: Comment the next line if you want to checkin your web deploy settings,
|
326 |
+
# but database connection strings (with potential passwords) will be unencrypted
|
327 |
+
*.pubxml
|
328 |
+
*.publishproj
|
329 |
+
|
330 |
+
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
331 |
+
# checkin your Azure Web App publish settings, but sensitive information contained
|
332 |
+
# in these scripts will be unencrypted
|
333 |
+
PublishScripts/
|
334 |
+
|
335 |
+
# NuGet Packages
|
336 |
+
*.nupkg
|
337 |
+
# NuGet Symbol Packages
|
338 |
+
*.snupkg
|
339 |
+
# The packages folder can be ignored because of Package Restore
|
340 |
+
**/[Pp]ackages/*
|
341 |
+
# except build/, which is used as an MSBuild target.
|
342 |
+
!**/[Pp]ackages/build/
|
343 |
+
# Uncomment if necessary however generally it will be regenerated when needed
|
344 |
+
#!**/[Pp]ackages/repositories.config
|
345 |
+
# NuGet v3's project.json files produces more ignorable files
|
346 |
+
*.nuget.props
|
347 |
+
*.nuget.targets
|
348 |
+
|
349 |
+
# Microsoft Azure Build Output
|
350 |
+
csx/
|
351 |
+
*.build.csdef
|
352 |
+
|
353 |
+
# Microsoft Azure Emulator
|
354 |
+
ecf/
|
355 |
+
rcf/
|
356 |
+
|
357 |
+
# Windows Store app package directories and files
|
358 |
+
AppPackages/
|
359 |
+
BundleArtifacts/
|
360 |
+
Package.StoreAssociation.xml
|
361 |
+
_pkginfo.txt
|
362 |
+
*.appx
|
363 |
+
*.appxbundle
|
364 |
+
*.appxupload
|
365 |
+
|
366 |
+
# Visual Studio cache files
|
367 |
+
# files ending in .cache can be ignored
|
368 |
+
*.[Cc]ache
|
369 |
+
# but keep track of directories ending in .cache
|
370 |
+
!?*.[Cc]ache/
|
371 |
+
|
372 |
+
# Others
|
373 |
+
ClientBin/
|
374 |
+
~$*
|
375 |
+
*~
|
376 |
+
*.dbmdl
|
377 |
+
*.dbproj.schemaview
|
378 |
+
*.jfm
|
379 |
+
*.pfx
|
380 |
+
*.publishsettings
|
381 |
+
orleans.codegen.cs
|
382 |
+
|
383 |
+
# Including strong name files can present a security risk
|
384 |
+
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
385 |
+
#*.snk
|
386 |
+
|
387 |
+
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
388 |
+
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
389 |
+
#bower_components/
|
390 |
+
|
391 |
+
# RIA/Silverlight projects
|
392 |
+
Generated_Code/
|
393 |
+
|
394 |
+
# Backup & report files from converting an old project file
|
395 |
+
# to a newer Visual Studio version. Backup files are not needed,
|
396 |
+
# because we have git ;-)
|
397 |
+
_UpgradeReport_Files/
|
398 |
+
Backup*/
|
399 |
+
UpgradeLog*.XML
|
400 |
+
UpgradeLog*.htm
|
401 |
+
ServiceFabricBackup/
|
402 |
+
*.rptproj.bak
|
403 |
+
|
404 |
+
# SQL Server files
|
405 |
+
*.mdf
|
406 |
+
*.ldf
|
407 |
+
*.ndf
|
408 |
+
|
409 |
+
# Business Intelligence projects
|
410 |
+
*.rdl.data
|
411 |
+
*.bim.layout
|
412 |
+
*.bim_*.settings
|
413 |
+
*.rptproj.rsuser
|
414 |
+
*- [Bb]ackup.rdl
|
415 |
+
*- [Bb]ackup ([0-9]).rdl
|
416 |
+
*- [Bb]ackup ([0-9][0-9]).rdl
|
417 |
+
|
418 |
+
# Microsoft Fakes
|
419 |
+
FakesAssemblies/
|
420 |
+
|
421 |
+
# GhostDoc plugin setting file
|
422 |
+
*.GhostDoc.xml
|
423 |
+
|
424 |
+
# Node.js Tools for Visual Studio
|
425 |
+
.ntvs_analysis.dat
|
426 |
+
node_modules/
|
427 |
+
|
428 |
+
# Visual Studio 6 build log
|
429 |
+
*.plg
|
430 |
+
|
431 |
+
# Visual Studio 6 workspace options file
|
432 |
+
*.opt
|
433 |
+
|
434 |
+
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
435 |
+
*.vbw
|
436 |
+
|
437 |
+
# Visual Studio LightSwitch build output
|
438 |
+
**/*.HTMLClient/GeneratedArtifacts
|
439 |
+
**/*.DesktopClient/GeneratedArtifacts
|
440 |
+
**/*.DesktopClient/ModelManifest.xml
|
441 |
+
**/*.Server/GeneratedArtifacts
|
442 |
+
**/*.Server/ModelManifest.xml
|
443 |
+
_Pvt_Extensions
|
444 |
+
|
445 |
+
# Paket dependency manager
|
446 |
+
.paket/paket.exe
|
447 |
+
paket-files/
|
448 |
+
|
449 |
+
# FAKE - F# Make
|
450 |
+
.fake/
|
451 |
+
|
452 |
+
# CodeRush personal settings
|
453 |
+
.cr/personal
|
454 |
+
|
455 |
+
# Python Tools for Visual Studio (PTVS)
|
456 |
+
__pycache__/
|
457 |
+
*.pyc
|
458 |
+
|
459 |
+
# Cake - Uncomment if you are using it
|
460 |
+
# tools/**
|
461 |
+
# !tools/packages.config
|
462 |
+
|
463 |
+
# Tabs Studio
|
464 |
+
*.tss
|
465 |
+
|
466 |
+
# Telerik's JustMock configuration file
|
467 |
+
*.jmconfig
|
468 |
+
|
469 |
+
# BizTalk build output
|
470 |
+
*.btp.cs
|
471 |
+
*.btm.cs
|
472 |
+
*.odx.cs
|
473 |
+
*.xsd.cs
|
474 |
+
|
475 |
+
# OpenCover UI analysis results
|
476 |
+
OpenCover/
|
477 |
+
|
478 |
+
# Azure Stream Analytics local run output
|
479 |
+
ASALocalRun/
|
480 |
+
|
481 |
+
# MSBuild Binary and Structured Log
|
482 |
+
*.binlog
|
483 |
+
|
484 |
+
# NVidia Nsight GPU debugger configuration file
|
485 |
+
*.nvuser
|
486 |
+
|
487 |
+
# MFractors (Xamarin productivity tool) working folder
|
488 |
+
.mfractor/
|
489 |
+
|
490 |
+
# Local History for Visual Studio
|
491 |
+
.localhistory/
|
492 |
+
|
493 |
+
# BeatPulse healthcheck temp database
|
494 |
+
healthchecksdb
|
495 |
+
|
496 |
+
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
497 |
+
MigrationBackup/
|
498 |
+
|
499 |
+
# Ionide (cross platform F# VS Code tools) working folder
|
500 |
+
.ionide/
|
501 |
+
|
502 |
+
# Fody - auto-generated XML schema
|
503 |
+
FodyWeavers.xsd
|
504 |
+
|
505 |
+
### Eclipse template
|
506 |
+
.metadata
|
507 |
+
bin/
|
508 |
+
tmp/
|
509 |
+
*.tmp
|
510 |
+
*.bak
|
511 |
+
*.swp
|
512 |
+
*~.nib
|
513 |
+
local.properties
|
514 |
+
.settings/
|
515 |
+
.loadpath
|
516 |
+
.recommenders
|
517 |
+
|
518 |
+
# External tool builders
|
519 |
+
.externalToolBuilders/
|
520 |
+
|
521 |
+
# Locally stored "Eclipse launch configurations"
|
522 |
+
*.launch
|
523 |
+
|
524 |
+
# PyDev specific (Python IDE for Eclipse)
|
525 |
+
*.pydevproject
|
526 |
+
|
527 |
+
# CDT-specific (C/C++ Development Tooling)
|
528 |
+
.cproject
|
529 |
+
|
530 |
+
# CDT- autotools
|
531 |
+
.autotools
|
532 |
+
|
533 |
+
# Java annotation processor (APT)
|
534 |
+
.factorypath
|
535 |
+
|
536 |
+
# PDT-specific (PHP Development Tools)
|
537 |
+
.buildpath
|
538 |
+
|
539 |
+
# sbteclipse plugin
|
540 |
+
.target
|
541 |
+
|
542 |
+
# Tern plugin
|
543 |
+
.tern-project
|
544 |
+
|
545 |
+
# TeXlipse plugin
|
546 |
+
.texlipse
|
547 |
+
|
548 |
+
# STS (Spring Tool Suite)
|
549 |
+
.springBeans
|
550 |
+
|
551 |
+
# Code Recommenders
|
552 |
+
.recommenders/
|
553 |
+
|
554 |
+
# Annotation Processing
|
555 |
+
.apt_generated/
|
556 |
+
.apt_generated_test/
|
557 |
+
|
558 |
+
# Scala IDE specific (Scala & Java development for Eclipse)
|
559 |
+
.cache-main
|
560 |
+
.scala_dependencies
|
561 |
+
.worksheet
|
562 |
+
|
563 |
+
# Uncomment this line if you wish to ignore the project description file.
|
564 |
+
# Typically, this file would be tracked if it contains build/dependency configurations:
|
565 |
+
#.project
|
566 |
+
|
567 |
+
### VirtualEnv template
|
568 |
+
# Virtualenv
|
569 |
+
# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
|
570 |
+
.Python
|
571 |
+
[Bb]in
|
572 |
+
[Ii]nclude
|
573 |
+
[Ll]ib
|
574 |
+
[Ll]ib64
|
575 |
+
[Ll]ocal
|
576 |
+
[Ss]cripts
|
577 |
+
pyvenv.cfg
|
578 |
+
.venv
|
579 |
+
pip-selfcheck.json
|
580 |
+
|
581 |
+
### TeX template
|
582 |
+
## Core latex/pdflatex auxiliary files:
|
583 |
+
*.aux
|
584 |
+
*.lof
|
585 |
+
*.log
|
586 |
+
*.lot
|
587 |
+
*.fls
|
588 |
+
*.out
|
589 |
+
*.toc
|
590 |
+
*.fmt
|
591 |
+
*.fot
|
592 |
+
*.cb
|
593 |
+
*.cb2
|
594 |
+
.*.lb
|
595 |
+
|
596 |
+
## Intermediate documents:
|
597 |
+
*.dvi
|
598 |
+
*.xdv
|
599 |
+
*-converted-to.*
|
600 |
+
# these rules might exclude image files for figures etc.
|
601 |
+
# *.ps
|
602 |
+
# *.eps
|
603 |
+
# *.pdf
|
604 |
+
|
605 |
+
## Generated if empty string is given at "Please type another file name for output:"
|
606 |
+
.pdf
|
607 |
+
|
608 |
+
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
609 |
+
*.bbl
|
610 |
+
*.bcf
|
611 |
+
*.blg
|
612 |
+
*-blx.aux
|
613 |
+
*-blx.bib
|
614 |
+
*.run.xml
|
615 |
+
|
616 |
+
## Build tool auxiliary files:
|
617 |
+
*.fdb_latexmk
|
618 |
+
*.synctex
|
619 |
+
*.synctex(busy)
|
620 |
+
*.synctex.gz
|
621 |
+
*.synctex.gz(busy)
|
622 |
+
*.pdfsync
|
623 |
+
|
624 |
+
## Build tool directories for auxiliary files
|
625 |
+
# latexrun
|
626 |
+
latex.out/
|
627 |
+
|
628 |
+
## Auxiliary and intermediate files from other packages:
|
629 |
+
# algorithms
|
630 |
+
*.alg
|
631 |
+
*.loa
|
632 |
+
|
633 |
+
# achemso
|
634 |
+
acs-*.bib
|
635 |
+
|
636 |
+
# amsthm
|
637 |
+
*.thm
|
638 |
+
|
639 |
+
# beamer
|
640 |
+
*.nav
|
641 |
+
*.pre
|
642 |
+
*.snm
|
643 |
+
*.vrb
|
644 |
+
|
645 |
+
# changes
|
646 |
+
*.soc
|
647 |
+
|
648 |
+
# comment
|
649 |
+
*.cut
|
650 |
+
|
651 |
+
# cprotect
|
652 |
+
*.cpt
|
653 |
+
|
654 |
+
# elsarticle (documentclass of Elsevier journals)
|
655 |
+
*.spl
|
656 |
+
|
657 |
+
# endnotes
|
658 |
+
*.ent
|
659 |
+
|
660 |
+
# fixme
|
661 |
+
*.lox
|
662 |
+
|
663 |
+
# feynmf/feynmp
|
664 |
+
*.mf
|
665 |
+
*.mp
|
666 |
+
*.t[1-9]
|
667 |
+
*.t[1-9][0-9]
|
668 |
+
*.tfm
|
669 |
+
|
670 |
+
#(r)(e)ledmac/(r)(e)ledpar
|
671 |
+
*.end
|
672 |
+
*.?end
|
673 |
+
*.[1-9]
|
674 |
+
*.[1-9][0-9]
|
675 |
+
*.[1-9][0-9][0-9]
|
676 |
+
*.[1-9]R
|
677 |
+
*.[1-9][0-9]R
|
678 |
+
*.[1-9][0-9][0-9]R
|
679 |
+
*.eledsec[1-9]
|
680 |
+
*.eledsec[1-9]R
|
681 |
+
*.eledsec[1-9][0-9]
|
682 |
+
*.eledsec[1-9][0-9]R
|
683 |
+
*.eledsec[1-9][0-9][0-9]
|
684 |
+
*.eledsec[1-9][0-9][0-9]R
|
685 |
+
|
686 |
+
# glossaries
|
687 |
+
*.acn
|
688 |
+
*.acr
|
689 |
+
*.glg
|
690 |
+
*.glo
|
691 |
+
*.gls
|
692 |
+
*.glsdefs
|
693 |
+
*.lzo
|
694 |
+
*.lzs
|
695 |
+
|
696 |
+
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
|
697 |
+
# *.ist
|
698 |
+
|
699 |
+
# gnuplottex
|
700 |
+
*-gnuplottex-*
|
701 |
+
|
702 |
+
# gregoriotex
|
703 |
+
*.gaux
|
704 |
+
*.gtex
|
705 |
+
|
706 |
+
# htlatex
|
707 |
+
*.4ct
|
708 |
+
*.4tc
|
709 |
+
*.idv
|
710 |
+
*.lg
|
711 |
+
*.trc
|
712 |
+
*.xref
|
713 |
+
|
714 |
+
# hyperref
|
715 |
+
*.brf
|
716 |
+
|
717 |
+
# knitr
|
718 |
+
*-concordance.tex
|
719 |
+
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
|
720 |
+
# *.tikz
|
721 |
+
*-tikzDictionary
|
722 |
+
|
723 |
+
# listings
|
724 |
+
*.lol
|
725 |
+
|
726 |
+
# luatexja-ruby
|
727 |
+
*.ltjruby
|
728 |
+
|
729 |
+
# makeidx
|
730 |
+
*.idx
|
731 |
+
*.ilg
|
732 |
+
*.ind
|
733 |
+
|
734 |
+
# minitoc
|
735 |
+
*.maf
|
736 |
+
*.mlf
|
737 |
+
*.mlt
|
738 |
+
*.mtc[0-9]*
|
739 |
+
*.slf[0-9]*
|
740 |
+
*.slt[0-9]*
|
741 |
+
*.stc[0-9]*
|
742 |
+
|
743 |
+
# minted
|
744 |
+
_minted*
|
745 |
+
*.pyg
|
746 |
+
|
747 |
+
# morewrites
|
748 |
+
*.mw
|
749 |
+
|
750 |
+
# nomencl
|
751 |
+
*.nlg
|
752 |
+
*.nlo
|
753 |
+
*.nls
|
754 |
+
|
755 |
+
# pax
|
756 |
+
*.pax
|
757 |
+
|
758 |
+
# pdfpcnotes
|
759 |
+
*.pdfpc
|
760 |
+
|
761 |
+
# sagetex
|
762 |
+
*.sagetex.sage
|
763 |
+
*.sagetex.py
|
764 |
+
*.sagetex.scmd
|
765 |
+
|
766 |
+
# scrwfile
|
767 |
+
*.wrt
|
768 |
+
|
769 |
+
# sympy
|
770 |
+
*.sout
|
771 |
+
*.sympy
|
772 |
+
sympy-plots-for-*.tex/
|
773 |
+
|
774 |
+
# pdfcomment
|
775 |
+
*.upa
|
776 |
+
*.upb
|
777 |
+
|
778 |
+
# pythontex
|
779 |
+
*.pytxcode
|
780 |
+
pythontex-files-*/
|
781 |
+
|
782 |
+
# tcolorbox
|
783 |
+
*.listing
|
784 |
+
|
785 |
+
# thmtools
|
786 |
+
*.loe
|
787 |
+
|
788 |
+
# TikZ & PGF
|
789 |
+
*.dpth
|
790 |
+
*.md5
|
791 |
+
*.auxlock
|
792 |
+
|
793 |
+
# todonotes
|
794 |
+
*.tdo
|
795 |
+
|
796 |
+
# vhistory
|
797 |
+
*.hst
|
798 |
+
*.ver
|
799 |
+
|
800 |
+
# easy-todo
|
801 |
+
*.lod
|
802 |
+
|
803 |
+
# xcolor
|
804 |
+
*.xcp
|
805 |
+
|
806 |
+
# xmpincl
|
807 |
+
*.xmpi
|
808 |
+
|
809 |
+
# xindy
|
810 |
+
*.xdy
|
811 |
+
|
812 |
+
# xypic precompiled matrices and outlines
|
813 |
+
*.xyc
|
814 |
+
*.xyd
|
815 |
+
|
816 |
+
# endfloat
|
817 |
+
*.ttt
|
818 |
+
*.fff
|
819 |
+
|
820 |
+
# Latexian
|
821 |
+
TSWLatexianTemp*
|
822 |
+
|
823 |
+
## Editors:
|
824 |
+
# WinEdt
|
825 |
+
*.bak
|
826 |
+
*.sav
|
827 |
+
|
828 |
+
# Texpad
|
829 |
+
.texpadtmp
|
830 |
+
|
831 |
+
# LyX
|
832 |
+
*.lyx~
|
833 |
+
|
834 |
+
# Kile
|
835 |
+
*.backup
|
836 |
+
|
837 |
+
# gummi
|
838 |
+
.*.swp
|
839 |
+
|
840 |
+
# KBibTeX
|
841 |
+
*~[0-9]*
|
842 |
+
|
843 |
+
# TeXnicCenter
|
844 |
+
*.tps
|
845 |
+
|
846 |
+
# auto folder when using emacs and auctex
|
847 |
+
./auto/*
|
848 |
+
*.el
|
849 |
+
|
850 |
+
# expex forward references with \gathertags
|
851 |
+
*-tags.tex
|
852 |
+
|
853 |
+
# standalone packages
|
854 |
+
*.sta
|
855 |
+
|
856 |
+
# Makeindex log files
|
857 |
+
*.lpz
|
858 |
+
|
859 |
+
# xwatermark package
|
860 |
+
*.xwm
|
861 |
+
|
862 |
+
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
|
863 |
+
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
|
864 |
+
# Uncomment the next line to have this generated file ignored.
|
865 |
+
#*Notes.bib
|
866 |
+
|
867 |
+
### JupyterNotebooks template
|
868 |
+
# gitignore template for Jupyter Notebooks
|
869 |
+
# website: http://jupyter.org/
|
870 |
+
|
871 |
+
.ipynb_checkpoints
|
872 |
+
*/.ipynb_checkpoints/*
|
873 |
+
|
874 |
+
# IPython
|
875 |
+
profile_default/
|
876 |
+
ipython_config.py
|
877 |
+
|
878 |
+
# Remove previous ipynb_checkpoints
|
879 |
+
# git rm -r .ipynb_checkpoints/
|
880 |
+
|
881 |
+
# CUSTOM
|
882 |
+
.idea
|
883 |
+
tmp
|
884 |
+
*.tmp.py
|
885 |
+
.DS_store
|
886 |
+
.DS_Store
|
README.md
CHANGED
@@ -1,33 +1,17 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: streamlit
|
7 |
app_file: app.py
|
8 |
pinned: false
|
9 |
---
|
10 |
|
11 |
-
#
|
12 |
|
13 |
-
|
14 |
-
Display title for the Space
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
`colorFrom`: _string_
|
20 |
-
Color for Thumbnail gradient (red, yellow, green, blue, indigo, purple, pink, gray)
|
21 |
-
|
22 |
-
`colorTo`: _string_
|
23 |
-
Color for Thumbnail gradient (red, yellow, green, blue, indigo, purple, pink, gray)
|
24 |
-
|
25 |
-
`sdk`: _string_
|
26 |
-
Can be either `gradio` or `streamlit`
|
27 |
-
|
28 |
-
`app_file`: _string_
|
29 |
-
Path to your main application file (which contains either `gradio` or `streamlit` Python code).
|
30 |
-
Path is relative to the root of the repository.
|
31 |
-
|
32 |
-
`pinned`: _boolean_
|
33 |
-
Whether the Space stays on top of your list.
|
|
|
1 |
---
|
2 |
+
title: GPT2 QA - Persian
|
3 |
+
emoji: ⁉️
|
4 |
+
colorFrom: green
|
5 |
+
colorTo: green
|
6 |
sdk: streamlit
|
7 |
app_file: app.py
|
8 |
pinned: false
|
9 |
---
|
10 |
|
11 |
+
# Streamlit demo for GPT2 QA - Persian
|
12 |
|
13 |
+
### Launch demo:
|
|
|
14 |
|
15 |
+
```
|
16 |
+
streamlit run app.py
|
17 |
+
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
ADDED
@@ -0,0 +1,192 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import torch
|
3 |
+
from transformers import pipeline, set_seed
|
4 |
+
from transformers import AutoTokenizer
|
5 |
+
from transformers import GPT2LMHeadModel
|
6 |
+
from mtranslate import translate
|
7 |
+
import random
|
8 |
+
|
9 |
+
import meta
|
10 |
+
from normalizer import normalize
|
11 |
+
from utils import (
|
12 |
+
remote_css,
|
13 |
+
local_css,
|
14 |
+
load_json
|
15 |
+
)
|
16 |
+
|
17 |
+
EXAMPLES = load_json("examples.json")
|
18 |
+
CK = "متن"
|
19 |
+
QK = "پرسش"
|
20 |
+
AK = "پاسخ"
|
21 |
+
|
22 |
+
|
23 |
+
class TextGeneration:
|
24 |
+
def __init__(self):
|
25 |
+
self.debug = False
|
26 |
+
self.dummy_output = "مخلوطی از ایتالیایی و انگلیسی"
|
27 |
+
self.tokenizer = None
|
28 |
+
self.model = None
|
29 |
+
self.model_name_or_path = "m3hrdadfi/gpt2-persian-qa"
|
30 |
+
self.length_margin = 100
|
31 |
+
set_seed(42)
|
32 |
+
|
33 |
+
def load(self):
|
34 |
+
if not self.debug:
|
35 |
+
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name_or_path)
|
36 |
+
self.model = GPT2LMHeadModel.from_pretrained(self.model_name_or_path)
|
37 |
+
|
38 |
+
def generate(self, prompt, generation_kwargs):
|
39 |
+
|
40 |
+
if not self.debug:
|
41 |
+
input_ids = self.tokenizer([prompt], return_tensors="pt")["input_ids"]
|
42 |
+
max_length = len(input_ids[0]) + self.length_margin
|
43 |
+
generation_kwargs["max_length"] = max_length
|
44 |
+
|
45 |
+
generated = self.model.generate(
|
46 |
+
input_ids,
|
47 |
+
**generation_kwargs,
|
48 |
+
)[0]
|
49 |
+
|
50 |
+
answer = self.tokenizer.decode(generated, skip_special_tokens=True)
|
51 |
+
found = answer.find(f"{AK}: ")
|
52 |
+
if not found:
|
53 |
+
return ""
|
54 |
+
|
55 |
+
answer = [a.strip() for a in answer[found:].split(f"{AK}: ") if a.strip()]
|
56 |
+
answer = answer[0] if len(answer) > 0 else ""
|
57 |
+
return answer
|
58 |
+
|
59 |
+
return self.dummy_output
|
60 |
+
|
61 |
+
|
62 |
+
@st.cache(allow_output_mutation=True)
|
63 |
+
def load_text_generator():
|
64 |
+
generator = TextGeneration()
|
65 |
+
generator.load()
|
66 |
+
return generator
|
67 |
+
|
68 |
+
|
69 |
+
def main():
|
70 |
+
st.set_page_config(
|
71 |
+
page_title="GPT2 QA - Persian",
|
72 |
+
page_icon="⁉️",
|
73 |
+
layout="wide",
|
74 |
+
initial_sidebar_state="expanded"
|
75 |
+
)
|
76 |
+
remote_css("https://cdn.jsdelivr.net/gh/rastikerdar/vazir-font/dist/font-face.css")
|
77 |
+
local_css("assets/rtl.css")
|
78 |
+
generator = load_text_generator()
|
79 |
+
|
80 |
+
st.sidebar.markdown(meta.SIDEBAR_INFO)
|
81 |
+
num_beams = st.sidebar.slider(
|
82 |
+
label='Number of Beam',
|
83 |
+
help="Number of beams for beam search",
|
84 |
+
min_value=4,
|
85 |
+
max_value=15,
|
86 |
+
value=5,
|
87 |
+
step=1
|
88 |
+
)
|
89 |
+
repetition_penalty = st.sidebar.slider(
|
90 |
+
label='Repetition Penalty',
|
91 |
+
help="The parameter for repetition penalty",
|
92 |
+
min_value=1.0,
|
93 |
+
max_value=10.0,
|
94 |
+
value=1.0,
|
95 |
+
step=0.1
|
96 |
+
)
|
97 |
+
length_penalty = st.sidebar.slider(
|
98 |
+
label='Length Penalty',
|
99 |
+
help="Exponential penalty to the length",
|
100 |
+
min_value=1.0,
|
101 |
+
max_value=10.0,
|
102 |
+
value=1.0,
|
103 |
+
step=0.1
|
104 |
+
)
|
105 |
+
early_stopping = st.sidebar.selectbox(
|
106 |
+
label='Early Stopping ?',
|
107 |
+
options=(True, False),
|
108 |
+
help="Whether to stop the beam search when at least num_beams sentences are finished per batch or not",
|
109 |
+
)
|
110 |
+
translated = st.sidebar.selectbox(
|
111 |
+
label='Translation ?',
|
112 |
+
options=(True, False),
|
113 |
+
help="Will translate the result in English",
|
114 |
+
)
|
115 |
+
generation_kwargs = {
|
116 |
+
"num_beams": num_beams,
|
117 |
+
"early_stopping": early_stopping,
|
118 |
+
"repetition_penalty": repetition_penalty,
|
119 |
+
"length_penalty": length_penalty,
|
120 |
+
}
|
121 |
+
|
122 |
+
st.markdown(meta.HEADER_INFO)
|
123 |
+
prompts = [e["title"] for e in EXAMPLES] + ["Custom"]
|
124 |
+
prompt = st.selectbox('Examples', prompts, index=len(prompts) - 1)
|
125 |
+
|
126 |
+
if prompt == "Custom":
|
127 |
+
prompt_box = {
|
128 |
+
"context": meta.C_PROMPT_BOX,
|
129 |
+
"question": meta.Q_PROMPT_BOX,
|
130 |
+
"answer": meta.A_PROMPT_BOX,
|
131 |
+
}
|
132 |
+
else:
|
133 |
+
prompt_box = next(e for e in EXAMPLES if e["title"] == prompt)
|
134 |
+
|
135 |
+
context = st.text_area("Enter context", prompt_box["context"], height=250)
|
136 |
+
question = st.text_area("Enter question", prompt_box["question"], height=100)
|
137 |
+
answer = "پاسخ درست: " + prompt_box["answer"]
|
138 |
+
st.markdown(
|
139 |
+
f'<p class="rtl rtl-box">'
|
140 |
+
f'{answer}'
|
141 |
+
f'<p>',
|
142 |
+
unsafe_allow_html=True
|
143 |
+
)
|
144 |
+
if translated:
|
145 |
+
translated_answer = translate(answer, "en", "fa")
|
146 |
+
st.markdown(
|
147 |
+
f'<p class="ltr">'
|
148 |
+
f'{translated_answer}'
|
149 |
+
f'<p>',
|
150 |
+
unsafe_allow_html=True
|
151 |
+
)
|
152 |
+
generation_kwargs_ph = st.empty()
|
153 |
+
|
154 |
+
if st.button("Find the answer 🔎 "):
|
155 |
+
with st.spinner(text="Searching ..."):
|
156 |
+
generation_kwargs_ph.markdown(", ".join([f"`{k}`: {v}" for k, v in generation_kwargs.items()]))
|
157 |
+
context = normalize(context)
|
158 |
+
question = normalize(question)
|
159 |
+
|
160 |
+
if context and question:
|
161 |
+
text = f"{context} {QK}: {question} {AK}:"
|
162 |
+
generated_answer = generator.generate(text, generation_kwargs)
|
163 |
+
generated_answer = f"{AK}: {generated_answer}".strip()
|
164 |
+
context = f"{CK}: {context}".strip()
|
165 |
+
question = f"{QK}: {question}".strip()
|
166 |
+
|
167 |
+
st.markdown(
|
168 |
+
f'<p class="rtl rtl-box">'
|
169 |
+
f'<span class="result-text">{context}<span><br/><br/>'
|
170 |
+
f'<span class="result-text">{question}<span><br/><br/>'
|
171 |
+
f'<span class="result-text generated-text">{generated_answer} </span>'
|
172 |
+
f'</p>',
|
173 |
+
unsafe_allow_html=True
|
174 |
+
)
|
175 |
+
|
176 |
+
if translated:
|
177 |
+
translated_context = translate(context, "en", "fa")
|
178 |
+
translated_question = translate(question, "en", "fa")
|
179 |
+
translated_generated_answer = translate(generated_answer, "en", "fa")
|
180 |
+
|
181 |
+
st.markdown(
|
182 |
+
f'<p class="ltr ltr-box">'
|
183 |
+
f'<span class="result-text">{translated_context}<span><br/><br/>'
|
184 |
+
f'<span class="result-text">{translated_question}<span><br/><br/>'
|
185 |
+
f'<span class="result-text generated-text">{translated_generated_answer}</span>'
|
186 |
+
f'</p>',
|
187 |
+
unsafe_allow_html=True
|
188 |
+
)
|
189 |
+
|
190 |
+
|
191 |
+
if __name__ == '__main__':
|
192 |
+
main()
|
assets/rtl.css
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.rtl,
|
2 |
+
textarea {
|
3 |
+
font-family: Vazir !important;
|
4 |
+
text-align: right;
|
5 |
+
direction: rtl !important;
|
6 |
+
}
|
7 |
+
.rtl-box {
|
8 |
+
border-bottom: 1px solid #ddd;
|
9 |
+
padding-bottom: 20px;
|
10 |
+
}
|
11 |
+
.ltr {
|
12 |
+
text-align: left;
|
13 |
+
direction: ltr !important;
|
14 |
+
}
|
15 |
+
|
16 |
+
span.result-text {
|
17 |
+
padding: 3px 3px;
|
18 |
+
line-height: 32px;
|
19 |
+
}
|
20 |
+
span.generated-text {
|
21 |
+
background-color: rgb(118 200 147 / 13%);
|
22 |
+
}
|
dictionary.py
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
characters = {
|
2 |
+
"ك": "ک",
|
3 |
+
"دِ": "د",
|
4 |
+
"بِ": "ب",
|
5 |
+
"زِ": "ز",
|
6 |
+
"ذِ": "ذ",
|
7 |
+
"شِ": "ش",
|
8 |
+
"سِ": "س",
|
9 |
+
"ى": "ی",
|
10 |
+
"ي": "ی",
|
11 |
+
"ؤ": "و",
|
12 |
+
"ے": "ی",
|
13 |
+
"ۀ": "ه",
|
14 |
+
"ﭘ": "پ",
|
15 |
+
"ﮐ": "ک",
|
16 |
+
"ﯽ": "ی",
|
17 |
+
"ﺎ": "ا",
|
18 |
+
"ﺑ": "ب",
|
19 |
+
"ﺘ": "ت",
|
20 |
+
"ﺧ": "خ",
|
21 |
+
"ﺩ": "د",
|
22 |
+
"ﺱ": "س",
|
23 |
+
"ﻀ": "ض",
|
24 |
+
"ﻌ": "ع",
|
25 |
+
"ﻟ": "ل",
|
26 |
+
"ﻡ": "م",
|
27 |
+
"ﻢ": "م",
|
28 |
+
"ﻪ": "ه",
|
29 |
+
"ﻮ": "و",
|
30 |
+
"ﺍ": "ا",
|
31 |
+
"ة": "ه",
|
32 |
+
"ﯾ": "ی",
|
33 |
+
"ﯿ": "ی",
|
34 |
+
"ﺒ": "ب",
|
35 |
+
"ﺖ": "ت",
|
36 |
+
"ﺪ": "د",
|
37 |
+
"ﺮ": "ر",
|
38 |
+
"ﺴ": "س",
|
39 |
+
"ﺷ": "ش",
|
40 |
+
"ﺸ": "ش",
|
41 |
+
"ﻋ": "ع",
|
42 |
+
"ﻤ": "م",
|
43 |
+
"ﻥ": "ن",
|
44 |
+
"ﻧ": "ن",
|
45 |
+
"ﻭ": "و",
|
46 |
+
"ﺭ": "ر",
|
47 |
+
"ﮔ": "گ",
|
48 |
+
"إ": "ا",
|
49 |
+
"ٕ": " ",
|
50 |
+
"ھ": "ه",
|
51 |
+
"...": ".",
|
52 |
+
"…": ".",
|
53 |
+
"-": " - ",
|
54 |
+
"هٔ": "ه",
|
55 |
+
"ﻯ": "ی",
|
56 |
+
"ﻛ": "ک",
|
57 |
+
"ﭼ": "چ",
|
58 |
+
"ﺓ": "ه",
|
59 |
+
"ﻴ": "ی",
|
60 |
+
"ﻊ": "ع",
|
61 |
+
"ﮬ": "ه",
|
62 |
+
"ﺟ": "ج",
|
63 |
+
"ﺳ": "س",
|
64 |
+
"ﻦ": "ن",
|
65 |
+
"ﺬ": "ذ",
|
66 |
+
"ﺋ": "ئ",
|
67 |
+
"ﷲ": "لله",
|
68 |
+
"ﺞ": "ج",
|
69 |
+
"ﺙ": "ث",
|
70 |
+
"ﻗ": "ق",
|
71 |
+
"ﮪ": "ه",
|
72 |
+
"ﺰ": "ز",
|
73 |
+
"ﯼ": "ی",
|
74 |
+
"ٺ": "ت",
|
75 |
+
"ﺻ": "ص",
|
76 |
+
"ﻂ": "ط",
|
77 |
+
"ﻣ": "م",
|
78 |
+
"ﻈ": "ظ",
|
79 |
+
"ﺐ": "ب",
|
80 |
+
"ﻍ": "غ",
|
81 |
+
"ݸ": "و",
|
82 |
+
"ﻨ": "ن",
|
83 |
+
"ﻝ": "ل",
|
84 |
+
"ﻩ": "ه",
|
85 |
+
"ﻲ": "ی",
|
86 |
+
"ﻐ": "غ",
|
87 |
+
"ﺲ": "س",
|
88 |
+
"ﺁ": "آ",
|
89 |
+
"ڔ": "ر",
|
90 |
+
"ﺫ": "ذ",
|
91 |
+
"ﭻ": "چ",
|
92 |
+
"ﺠ": "ج",
|
93 |
+
"ﯙ": "و",
|
94 |
+
"ﮏ": "ک",
|
95 |
+
"ﺣ": "ح",
|
96 |
+
"ﺝ": "ج",
|
97 |
+
"ﺼ": "ص",
|
98 |
+
"ﻳ": "ی",
|
99 |
+
"ﻘ": "ق",
|
100 |
+
"ﺨ": "خ",
|
101 |
+
"ﻔ": "ف",
|
102 |
+
"ﻎ": "غ",
|
103 |
+
"ئ": "ی",
|
104 |
+
"ﻓ": "ف",
|
105 |
+
"ﻕ": "ق",
|
106 |
+
"ﮋ": "ژ",
|
107 |
+
"ﺗ": "ت",
|
108 |
+
"ﻁ": "ط",
|
109 |
+
"ﺯ": "ز",
|
110 |
+
"ﮕ": "گ",
|
111 |
+
"ﺌ": "ئ",
|
112 |
+
"ﺵ": "ش",
|
113 |
+
"ۮ": "د",
|
114 |
+
"ﻫ": "ه",
|
115 |
+
"ﻬ": "ه",
|
116 |
+
"ﻏ": "غ",
|
117 |
+
"ﻰ": "ی",
|
118 |
+
"﷼": "ریال",
|
119 |
+
"ﺿ": "ض",
|
120 |
+
"ﺛ": "ث",
|
121 |
+
"ݐ": "پ",
|
122 |
+
"ﺏ": "ب",
|
123 |
+
"ﭙ": "پ",
|
124 |
+
"ﭽ": "چ",
|
125 |
+
"ﺜ": "ث",
|
126 |
+
"ﻃ": "ط",
|
127 |
+
"ۂ": "ه",
|
128 |
+
"ﻑ": "ف",
|
129 |
+
"ﺕ": "ت",
|
130 |
+
"ﻞ": "ل",
|
131 |
+
}
|
132 |
+
|
133 |
+
special_tokens = {}
|
134 |
+
|
135 |
+
words_map = {
|
136 |
+
"Leave a comment": "",
|
137 |
+
"[…]": "",
|
138 |
+
"[.]": "",
|
139 |
+
}
|
examples.json
ADDED
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"context": "خوب، بد، زشت یک فیلم درژانر وسترن اسپاگتی حماسی است که توسط سرجو لئونه در سال ۱۹۶۶ در ایتالیا ساخته شد. زبانی که بازیگران این فیلم به آن تکلم میکنند مخلوطی از ایتالیایی و انگلیسی است. این فیلم سومین (و آخرین) فیلم از سهگانهٔ دلار (Dollars Trilogy) سرجو لئونه است. این فیلم در حال حاضر در فهرست ۲۵۰ فیلم برتر تاریخ سینما در وبگاه IMDB با امتیاز ۸٫۸ از ۱۰، رتبهٔ هشتم را به خود اختصاص دادهاست و به عنوان بهترین فیلم وسترن تاریخ سینمای جهان شناخته میشود. «خوب» (کلینت ایستوود، در فیلم، با نام «بلوندی») و «زشت» (ایلای والاک، در فیلم، با نام «توکو») با هم کار میکنند و با شگرد خاصی، به گول زدن کلانترهای مناطق مختلف و پول درآوردن از این راه میپردازند. «بد» (لی وان کلیف) آدمکشی حرفهای است که بهخاطر پول حاضر به انجام هر کاری است. «بد»، که در فیلم او را «اِنجل آیز (اِینجل آیز)» (به انگلیسی: Angel Eyes) صدا میکنند. بهدنبال گنجی است که در طی جنگهای داخلی آمریکا، به دست سربازی به نام «جکسون»، که بعدها به «کارسون» نامش را تغییر داده، مخفی شدهاست.",
|
4 |
+
"question": "در فیلم خوب بد زشت شخصیت ها کجایی صحبت می کنند؟",
|
5 |
+
"answer": "مخلوطی از ایتالیایی و انگلیسی",
|
6 |
+
"title": "Example No. 1"
|
7 |
+
},
|
8 |
+
{
|
9 |
+
"context": "چهارشنبهسوری یکی از جشنهای ایرانی است که از غروب آخرین سهشنبه ی ماه اسفند، تا پس از نیمهشب تا آخرین چهارشنبه ی سال، برگزار میشود و برافروختن و پریدن از روی آتش مشخصهٔ اصلی آن است. این جشن، نخستین جشن از مجموعهٔ جشنها و مناسبتهای نوروزی است که با برافروختن آتش و برخی رفتارهای نمادین دیگر، بهصورت جمعی در فضای باز برگزار میشود. بهگفتهٔ ابراهیم پورداوود چهارشنبهسوری ریشه در گاهنبارِ هَمَسْپَتْمَدَم زرتشتیان و نیز جشن نزول فروهرها دارد که شش روز پیش از فرارسیدن نوروز برگزار میشد. احتمال دیگر این است که چهارشنبهسوری بازمانده و شکل تحولیافتهای از جشن سده باشد، که احتمال بعیدی است. علاوه برافروختن آتش، آیینهای مختلف دیگری نیز در بخشهای گوناگون ایران در زمان این جشن انجام میشوند. برای نمونه، در تبریز، مردم به چهارشنبهبازار میروند که با چراغ و شمع، بهطرز زیبایی چراغانی شدهاست. هر خانواده یک آینه، دانههای اسفند، و یک کوزه برای سال نو خریداری میکنند. همهساله شهروندانی از ایران در اثر انفجارهای ناخوشایند مربوط به این جشن، کشته یا مصدوم میشوند.",
|
10 |
+
"question": "نام جشن اخرین شنبه ی سال چیست؟",
|
11 |
+
"answer": "چهارشنبهسوری",
|
12 |
+
"title": "Example No. 2"
|
13 |
+
},
|
14 |
+
{
|
15 |
+
"context": "قرارداد کرسنت قراردادی برای فروش روزانه معادل ۵۰۰ میلیون فوت مکعب، گاز ترش میدان سلمان است، که در سال ۱۳۸۱ و در زمان وزارت بیژن نامدار زنگنه در دولت هفتم مابین شرکت کرسنت پترولیوم و شرکت ملی نفت ایران منعقد گردید. مذاکرات اولیه این قرارداد از سال ۱۹۹۷ آغاز شد و در نهایت، سال ۲۰۰۱ (۱۳۸۱) به امضای این تفاهم نامه مشترک انجامید. بر اساس مفاد این قرارداد، مقرر شده بود که از سال ۲۰۰۵ با احداث خط لوله در خلیج فارس، گاز فرآورده نشده میدان سلمان (مخزن مشترک با ابوظبی)، به میزان روزانه ۵۰۰ میلیون فوت مکعب (به قول برخی منابع ۶۰۰ میلیون فوت مکعب) به امارات صادر شود. این قرارداد مطابق قوانین داخلی ایران بسته شده و تنها قرارداد نفتی ایران است که از طرف مقابل خو��، تضمین گرفتهاست. اجرای این پروژه در سال ۱۳۸۴ با دلایل ارائه شده از سوی دیوان محاسبات ایران از جمله تغییر نیافتن بهای گاز صادراتی و ثابت ماندن آن در هفت سال اول اجرای قرارداد متوقف شد. این در حالی است که طبق تعریف حقوقی، دیوان محاسبات ایران، حق دخالت در قراردادها، پیش از آنکه قراردادها اجرایی و مالی شوند را ندارد.",
|
16 |
+
"question": "طرفین قرار داد کرسنت کیا بودن؟",
|
17 |
+
"answer": "کرسنت پترولیوم و شرکت ملی نفت ایران",
|
18 |
+
"title": "Example No. 3"
|
19 |
+
},
|
20 |
+
{
|
21 |
+
"context": "ناف جایی قرار گرفته که در واقع بندناف در داخل رحم در آنجا به شکم جنین وصل بودهاست. بندناف که جفت را به جنین متصل کرده بعد از تولد از نوزاد جدا میشود. برای جدا کردن بند ناف از دو پنس استفاده میکنند و بین آن دو را میبرند. پنس دیگری نزدیک شکم نوزاد قرار داده میشود که بعد از دو روز برداشته خواهد شد. بندناف باقیمانده طی ۱۵ روز خشک شده و میافتد و به جای آن اسکاری طبیعی به جای میماند. البته بر خلاف تصور عامه مردم شکل ناف در اثر بریدن بند ناف به وجود نمیآید و پیش از این در شکم مادر حالت ناف شکل گرفتهاست. شکل ناف در میان مردم مختلف متفاوت است و اندازه آن بین ۱.۵ تا ۲ سانتیمتر است. تمام پستانداران جفتزیست ناف دارند. ناف در انسانها به سادگی قابل مشاهدهاست.",
|
22 |
+
"question": "بند ناف انسان به کجا وصل است؟\t",
|
23 |
+
"answer": "جفت",
|
24 |
+
"title": "Example No. 4"
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"context": "بیش از ده هزار سال است که انسانها در قارهٔ آمریکا زندگی میکنند. قاره آمریکا توسط کریستف کلمب و در سال ۱۴۹۲ کشف شد اما او به اشتباه فکر کرد که آنجا هندوستان است اما مدتها بعد آمریگو وسپوچی اعلام کرد که این قاره جدیدی است. اما تاریخ آمریکا به عنوان یک کشور مستقل به سال ۱۷۸۳ میلادی بازمیگردد که در آن آمریکا بر طبق معاهدهٔ پاریس به رسمیت شناخته گردید.",
|
28 |
+
"question": "قاره آمریکا در چه سالی کشف شد؟",
|
29 |
+
"answer": "۱۴۹۲",
|
30 |
+
"title": "Example No. 5"
|
31 |
+
},
|
32 |
+
{
|
33 |
+
"context": "جشنوارهٔ فیلم فجر مهمترین جشنوارهٔ سینمایی ایران است که از سال ۱۳۶۱ تاکنون، در میانهٔ بهمن ماه هر سال در تهران برگزار میگردد. تاکنون ۳۹ دوره از این جشنواره برگزار شدهاست که آخرین آن در سال ۱۳۹۹ بوده است. این جشنواره توسط بنیاد سینمایی فارابی و زیر نظر وزارت فرهنگ و ارشاد اسلامی برگزار میشود. جشنوارهٔ فیلم فجر، جایگزینی برای جشنوارهٔ بینالمللی فیلم تهران بود که تا پیش از انقلاب ۱۳۵۷ جمهوری اسلامی ایران، با حمایت دفتر مخصوص فرح پهلوی در ایران برگزار میشد و در آن فیلمهای برگزیده سینمای ایران در کنار آثار سینمای بینالمللی رقابت میکردند. بعد از انقلاب اسلامی ایران، این جشنواره تعطیل شد و بعد از ۴ سال، جشنوارهٔ فیلم فجر، همزمان با روزهای دهه فجر جایگزین آن شد. نخستین دورهی جشنوارهٔ فیلم فجر از ۱۲ تا ۲۲ بهمن سال ۱۳۶۱ به دبیری حسین وخشوری برگزار شد. در بخش جوایز از دوره پنجم به برندگان «لوح زرین» اهدا شد و عنوان «سیمرغ» از هفتمین دوره جشنواره به صورت جدی مطرح گردید که تا امروز ادامه داشتهاست. در حال حاضر «دیپلم افتخار» دیگر جایزه جشنوارهٔ فیلم فجر است.",
|
34 |
+
"question": "جشنواره فیلم فجر در چه بازه ای از سال برگزار می شود؟",
|
35 |
+
"answer": "میانهٔ بهمن ماه هر سال",
|
36 |
+
"title": "Example No. 6"
|
37 |
+
},
|
38 |
+
{
|
39 |
+
"context": "خلیج فارس (شاخاب پارس یا دریای پارس)، نام آبراهی پراهمیت در آسیای غربی و منطقه خاورمیانه است که در امتداد دریای عمان و در میان ایران و شبهجزیره عربستان قرار دارد. مساحت خلیج فارس ۲۳۷٬۴۷۳ کیلومتر مربع است، طول آن حدود ۹۰۰ کیلومتر و عرض متوسط آن ۲۵۰ کیلومتر است و پس از خلیج مکزیک و خلیج هادسون سومین خلیج بزرگ جهان بشمار میآید. خلیج فارس از شرق از طریق تنگه هرمز و دریای عمان به اقیانوس هند و دریای عرب راه دارد، و از غرب به دلتای رودخانه اروندرود، که حاصل پیوند دو رودخانهٔ دجله و فرات و پیوستن رود کارون به آن است، ختم میشود. هشت کشور در اطراف خلیج فارس قرار دارند. در این میان سواحل شمالی خلیج فارس تماماً در جغرافیای سیاسی ایران قرار دارند. به سبب وجود منابع سرشار نفت و گاز در خلیج فارس و سواحل آن، این آبراهه در سطح بینالمللی، منطقهای مهم و راهبردی بشمار میآید. نام تاریخی این خلیج، در زبانهای گوناگون، ترجمه عبارت خلیج فارس یا دریای پارس بودهاست. همچنین در تمام سازمانهای بینالمللی نام رسمی این خلیج، «خلیج فارس» است اما برخی از کشورهای عربی در دهههای اخیر آن را خلیج عربی یا به سادگی، خلیج مینامند. سازمان آبنگاری بینالمللی از نام خلیج ایران (خلیج فارس) برای این خلیج استفاده میکند.",
|
40 |
+
"question": "ابعاد خلیج فارس کدامند؟",
|
41 |
+
"answer": "مساحت خلیج فارس ۲۳۷٬۴۷۳ کیلومتر مربع است",
|
42 |
+
"title": "Example No. 7"
|
43 |
+
},
|
44 |
+
{
|
45 |
+
"context": "ایستگاه فضایی نوعی سازه است که برای زندگی و کار بشر در فضا طراحی و ساخته شدهاست. تاکنون تنها ایستگاههای مدار پایین به مرحلهٔ بهرهبرداری رسیدهاند که آنها را «ایستگاه مداری» نیز میخوانند. تفاوت ایستگاه فضایی با فضاپیماهای دیگر این است که در ایستگاه فضایی امکانات اساسی پیشرانی یا فرود بر زمین وجود ندارد؛ در عوض از وسایل نقلیهٔ دیگر برای ترابری (چه از ایستگاه چه به ایستگاه) سود جسته میشود. ایستگاههای فضایی برای سکونت میانمدت طراحی شدهاند که درازایش میتواند چند هفته، چند ماه و حتی چند سال باشد. تنها ایستگاه فضاییای که هماینک مورد استفادهاست، «ایستگاه فضایی بینالمللی» است. ایستگاههای فضایی پیشین الماز، سری سالیوت، اسکایلب و میر بودند. تاریخچهٔ ساخت و توسعهٔ ایستگاههای فضایی به زمان جنگ سرد و اوج رقابتهای فضایی بازمیگردد. زمانیکه راکت ساترن ۵ توسط آمریکا و به دست دکتر ورنر فون براون و گروهش توسعه داده میشد، این مهندس آلمانی همواره ایدهٔ ساخت اقامتگاهی فضایی را در سر میپروراند.",
|
46 |
+
"question": "کدوم ایستگاه فضایی الان استفاده می شه؟",
|
47 |
+
"answer": "ایستگاه فضایی بینالمللی",
|
48 |
+
"title": "Example No. 8"
|
49 |
+
},
|
50 |
+
{
|
51 |
+
"context": "باشگاه فوتبال رئال مادرید یک باشگاه حرفهای فوتبال است که در مادرید، پایتخت اسپانیا قرار دارد. رئال موفقترین تیم تاریخ فوتبال اسپانیا و موفقترین تیم تاریخ فوتبال اروپا و موفقترین تیم فوتبال سدهٔ ۲۰ میلادی به انتخاب فیفا است. آنها دارای رکورد ۳۴ بار قهرمانی در لالیگا، ۱۹ قهرمانی در کوپا دل ری (جام حذفی)، ۱۰ سوپرکاپ اسپانیا، ۱۳ قهرمانی در لیگ قهرمانان اروپا، ۲ جام یوفا، ۴ سوپرکاپ اروپا و ۴ قهرمانی در جام باشگاههای جهان هستند. رئال مادرید رکورددار قهرمانی در لیگ قهرمانان اروپا با ۱۳ قهرمانی و جام باشگاه های جهان با ۴ قهرمانی است. همچنین رئال مادرید برنده بهترین باشگاه قرن از سوی فیفا شدهاست. همچنین کلمهٔ رئال در زبان اسپانیایی، به معنی «سلطن��ی» است، این لقب را شاه آلفونسو سیزدهم در سال ۱۹۲۰ بر این تیم نهاد. همچنین در همان سال، شکل یک تاج نیز بر روی آرم این باشگاه قرار گرفت. رئال مادرید سالهاست که در لالیگا، از تیمهای قدرتمند محسوب میشود و رقیب اصلی این تیم نیز، بارسلونا است. از نظر درآمد، رئال مادرید با ۵۵۷ میلیون یورو درآمد در فصل ۱۵–۲۰۱۴ در صدر پردرآمدترین باشگاههای فوتبال جهان بودهاست.",
|
52 |
+
"question": "لقب باشگاه رئال مادرید از کجا میاد؟",
|
53 |
+
"answer": "شاه آلفونسو سیزدهم در سال ۱۹۲۰ بر این تیم نهاد",
|
54 |
+
"title": "Example No. 9"
|
55 |
+
},
|
56 |
+
{
|
57 |
+
"context": "شیره مادهایست که با عصارهگیری از یک گیاه یا میوههایی مانند انگور، خرما و توت سیب و معمولاً از طریق جوشاندن با کمک یک حلّال مانند آب یا الکل به دست میآید. شیره برخی گیاهان نیز با تیغ زدن یا خراش دادن پوست گیاه به دست میآید مانند شیره درخت افرا که از آن شکر تولید میشود و نیز شیره درختان کائوچوکی که در صنعت لاستیکسازی کاربرد دارند. تریاک نیز در واقع شیره گرز خشخاش است که با خراش دادن از گیاه خارج شده و در مجاورت هوا سفت میشود. شیره انگور مادهای است بسیار شیرین که از آب انگور به دست میآید. شیره انگور فرایند تولید متفاوتی با شیره توت و خرما دارد ابتدا آب انگور را از انگور جدا میکنند سپس نوعی خاک قلیایی به آن اضافه میکنند که باعث میشود تفاله انگور به همراه خاک تهنشین شود بعد آب انگور را داخل دیگهایی ریخته و میجوشانند تا به رنگ طلایی نزدیک به سرخ درآید. طبع برخی از شیره ها گرم و برخی سرد می باشد. دوشاب را معمولاً از انگور کشمشی سفید که مزهای شیرین دارد بدست میآورند. دوشاب از کشمش خشک تهیه می شود ولی شیره انگور از انگور خیس پخته می شود. شیرهٔ پرورده محلولی غلیظ حاوی قندها و پروتئینها و مواد معدنی است که در آوند آبکش گیاهان جریان دارد.",
|
58 |
+
"question": "شیره انگور چیه؟",
|
59 |
+
"answer": "شیره مادهایست که با عصارهگیری از یک گیاه یا میوههایی مانند انگور، خرما و توت سیب و معمولاً از طریق جوشاندن با کمک یک حلّال مانند آب یا الکل به دست میآید.",
|
60 |
+
"title": "Example No. 10"
|
61 |
+
},
|
62 |
+
{
|
63 |
+
"context": "گلوله، مرمی یا پرّانه جسمی است که از سلاح گرم یا سلاح بادی شلیک میشود. گلوله معمولاً از فلز (بیشتر سرب) ساخته میشود و معمولاً فاقد مواد منفجره است. آسیبی که به هدف وارد میکند صرفاً ناشی از ضربه جسم جامد آن است. گلوله در سلاح کمری یا تفنگ بخشی از فشنگ است. کلمه فارسی گلوله به صورت «غلوله» و «گولوله» نیز به کار رفته است.[۱] واژه گلوله یادگار دورهای است که گلوله در سلاحهای گرم به صورت کروی ساخته میشد. از قرن نوزدهم شکل گلولهها تغییر کرد و به صورت کشیده و نوک تیز یا اسپیتزر درآمد. در برخی از متنهای مربوط به شکار و تیراندازی واژه «مَرمی» نیز که واژهای عربی است، بهجای گلوله بکار میرود. گلولهها ویژگیهای مشترک منحصر به فردی دارند. به عنوان نمونه ویژگیهای نظیر مُهر کالیبر با فونت بخصوص، آلیاژ پوسته گلوله و سه دندانه در جایی که چاشنی به پوکه فشنگ وصل میشود، نشاندهنده یک سازنده مشترک است. همچنین در برخی موارد، گلولهها دارای مُهرهایی هستند که در بایگانیهای عمومی اطلاعات مربوط به سازندگان سلاح موجود است. مُهرها دارای علامتگذاری کالیبر ساده هستند که معمولاً دو رقم آخر سال ساخت گلوله را نشان میدهند.",
|
64 |
+
"question": "واژه گلوله مربوط به چه دورهای میباشد؟",
|
65 |
+
"answer": "که گلوله در سلاحهای گرم به صورت کروی ساخته میشد.",
|
66 |
+
"title": "Example No. 11"
|
67 |
+
},
|
68 |
+
{
|
69 |
+
"context": "قالی، فرش یا قالین نوعی گستردنیِ بافته شده از الیاف پنبه، پشم و در بعضی موارد ابریشم است که معمولاً برای پوشش زمین به کار میرود. به دست بافتهٔ پُرزدار و گرهدار، قالی گفته میشود. از آنجا که قالی و فرش همیشه نقشهای زیبا بر خود داشتهاند، امروزه به جنبهٔ تزئینی آن نیز توجه میشود. در زبان پهلوی واژههای گوناگونی برای اشاره به انواع گستردنیها به کار برده میشد، برای قالی نفیس از بَت یا بوپ، برای نمد و فرش از نمت استفاده میشد. اما واژهٔ قالی یا غالی از نام شهری به نام قالین در ارمنستان که در آن دوران بخشی از ایران باستان بودهاست، گرفته شدهاست. البتّه فرهنگ لغت عمید کلمهٔ قالی را برگرفته از کلمهٔ ترکی قالین به معنای فرشِ پُرزدار که با نخ و پشم به رنگهای مختلف بافته میشود، معنی کردهاست. فرشهای ایران در دورهٔ صفویه به بالاترین حد خود در زیبایی و بافت رسیدند که این مهم به دلیل. تحت پشتیبانی شاهان قدرتمندی چون شاه عباس قرارگرفتن بود و دسترسی فراوان به مواد مورد نیاز برای بافت فرش و همچنین بهرسمیتشناختنِ فرش به عنوان کالایی برای تجارت بودهاست. قالی ایرانی پازیریک، قدیمیترین قالیِ دستبافِ یافتهشدهٔ جهان است که در سیبری کشف شده و بافت ایران در دوران هخامنشیان است.",
|
70 |
+
"question": "قالی یا فرش چیه؟",
|
71 |
+
"answer": "قالی، فرش یا قالین نوعی گستردنیِ بافته شده از الیاف پنبه، پشم و در بعضی موارد ابریشم است که معمولاً برای پوشش زمین به کار میرود.",
|
72 |
+
"title": "Example No. 12"
|
73 |
+
},
|
74 |
+
{
|
75 |
+
"context": "تُرکیه با نام رسمی جمهوری ترکیه، کشوری اوراسیایی است که بخش بزرگ کشور یعنی آناتولی یا آسیای کوچک در شمال غرب آسیا و خاورمیانه جای گرفتهاست و بخش کوچکی نیز به نام تراکیه در منطقهٔ بالکان (منطقهای در جنوب شرق اروپا) قرار دارد. ترکیه در شرق با کشورهای ایران، نخجوان، ارمنستان، و گرجستان؛ در جنوب شرقی با عراق و سوریه؛ و در شمال غربی (بخش اروپایی) با بلغارستان و یونان همسایه است. همچنین ترکیه از شمال با دریای سیاه، از غرب با دو دریای کوچک مرمره و اژه و از جنوب غرب با دریای مدیترانه مرز آبی دارد. دو تنگهٔ راهبردی بسفر و داردانل نیز در اختیار ترکیه است. پهناوری ترکیه ۷۸۳٬۳۵۶ کیلومتر مربع (سی و هفتم) است. ترکیه کشوری کوهستانی و نسبتاً پرباران است. شکل این کشور مانند یک مستطیل است که از سوی شرق و غرب امتداد یافتهاست. ترکیه با قرار گرفتن در یکی از حسّاسترین مناطق جهان، دارای موقعیّت جغرافیایی راهبردی و بسیار خوبی است و گذرگاه شمال غرب آسیا و اروپا بهشمار میآید و کشورهای بسیاری، به ویژه کشور ایران از خاک ترکیه برای ترانزیت کالا و انرژی استفاده میکنند.",
|
76 |
+
"question": "منطقهٔ بالکان کجاست؟",
|
77 |
+
"answer": "منطقهای در جنوب شرق اروپا",
|
78 |
+
"title": "Example No. 13"
|
79 |
+
},
|
80 |
+
{
|
81 |
+
"context": "یک اِنجیل، شرحی از زندگی و آموزههای عیسی است. چهار انجیل اصلی، یعنی انجیل متی، مرقس، لوقا و یوحنا، در کنار یکدیگر انجیلهای عهد جدید از کتاب مقدس هستند و احتمالاً بین سالهای ۶۶ تا ۱۱۰ میلادی نوشته شدهاند. نام نویسندگان چهار انجیل مذکور مشخص نیست و این اسامی را در قرن دوم میلادی به آنها دادهاند. احتمال قریب به یقین هیچکدام از نویسندگان این انجیلها عیسی را از نزدیک نمیشناختند و هر چهار انجیل پس از نقل سینه به سینه سرانجام مکتوب شدهاند. به اتفاق مسیحیان عهد جدید را به عنوان کتاب آسمانی خود قبول دارند و مطالعه میکنند. نام این بخش به پیمانی اشاره دارد که آغازگر دورهٔ جدیدی از ارتباط خداوند با انسان است. خداوند طبق این پیمان شریعتی را که از طریق موسی عطا کرده بود برداشت و ایمان به مسیح را شرط بخشایش گناهان انسان و رستگاری او قرار داد. عهد جدید علاوه بر چهار انجیل اصلی، کتاب اعمال رسولان، نامههای رسولان مسیح و کتاب مکاشفه را هم دربرمیگیرد. انجیلهای دیگری هم در طول تاریخ نوشته شدهاست که همگی متاخرتر از چهار انجیل اصلی هستند.",
|
82 |
+
"question": "انجیلهای عهد جدید در چه سالی ایجاد شده اند؟",
|
83 |
+
"answer": "احتمالاً بین سالهای ۶۶ تا ۱۱۰ میلادی",
|
84 |
+
"title": "Example No. 14"
|
85 |
+
},
|
86 |
+
{
|
87 |
+
"context": "آشیل که از مادری آسمانی به نام تتیس و پدری فانی به دنیا آمده و مقدّر شده یا عمری طولانی داشته باشد یا عمری کوتاه در عوض نامش در تاریخ بماند. مادرش که میخواهد او عمری طولانی داشته باشد به او لباس زنانه میپوشاند اما در نهایت جنگجویی بزرگ میشود و به عبارت بهتر بزرگترین جنگجوی سراسر یونان شد. تتیس فرزندش را در کودکی در رودخانه استوکس غوطه ور ساخت و به ترتیب او رویینتن شد البته جز پاشنه پایش که در دست مادر بود.قبل از به دنیا آمدن آشیل، مادرش تتیس دیده بود که آشیل یا زندگی طولانی و خستهکنندهای خواهد داشت یا زندگی کوتاه اما درعوض نام او در تمام طول تاریخ به خاطر سپرده میشود. تتیس که ترجیح میداد پسرش زندگی بیشتری داشته باشد تصمیم گرفت لباسی دخترانه برتن او کند تا به دنبال جنگ نرود. اما روزی فرا رسید که اودیسئوس هوشمند آشیل را فریب داد. اودیسئوس دختران را به صف کرد و هدایای مختلفی را در جلوی آنها قرار داد و آشیل تنها کسی بود که از بین هدایا شمشیر را انتخاب نمود و همین مسئله ثابت کرد او یک مرد است. تتیس آشیل نوزاد را به جهان زیرین برد و او را از پاشنه گرفته، در رود سیاه جهان مردگان یعنی استوکس فروکرد و باعث شد بدنش فناناپذیر شود.",
|
88 |
+
"question": "اشیل بزرگترین جنگ جوی کجا بود؟",
|
89 |
+
"answer": "یونان",
|
90 |
+
"title": "Example No. 15"
|
91 |
+
},
|
92 |
+
{
|
93 |
+
"context": "فرهاد مجیدی قادیکلایی مشهور به فرهاد مجیدی بازیکن فوتبال اهل ایران است. مجیدی در ۴۵ بازی ملی ۱۰ گل به ثمر رساندهاست. او همچنین سابقه بازی در باشگاههای صنایع پارچین، کشاورز، بهمن کرج، استقلال و راپید وین اتریش را در کارنامه دارد. مجیدی ۷ سال سابقه حضور در لیگ امارات با تیمهای الوصل، العین، الاهلی و النصر را دارد و یک سال نیز در تیم الغرافه قطر بازی کردهاست. مجیدی در ۷ آبان ۱۳۹۲ در باشگاه استقلال تهران از دنیای فوتبال به عنوان بازیکن خداحافظی کرد. وی از خانوادهای مازندرانی و قائمشهری است ولی متولد و ساکن تهران است. وی یک برادر و ۲ خواهر دارد که به غیر از فرهاد، برادرش فرزاد نیز به فوتبال روی آورد. همسر وی، فرناز مؤمنی نام دارد و دارای دو فرزند به نامهای تیام و امیر بردیا میباشد. فرهاد مجیدی دوران فوتبال خود را با تیم فوتبال صنایع پارچین که محل زندگی خود و کار پدرش در آنجا بود شروع کرد. نخستین تیم رسمی که فرهاد مجیدی در آن بازی کرد، تیم جوانان کشاورز بود. او بعد از مدتی بازی در این تیم به جوانان بهمن پیوست.",
|
94 |
+
"question": "فرهاد مجیدی در لیگ ام��رات برای چه باشگاه های بازی کرده؟",
|
95 |
+
"answer": "تیمهای الوصل، العین، الاهلی و النصر",
|
96 |
+
"title": "Example No. 16"
|
97 |
+
},
|
98 |
+
{
|
99 |
+
"context": "زئوس در اساطیر یونانی، پادشاه خدایان و فرمانروای تمام زیارتگاههای واقع در کوه المپ است. او کوچکترین فرزند کرونوس و رئا از نژاد تیتانها بود. معادل آن در اسطورههای رومی ژوپیتر و در دین کرتیان ولخانوس است. نام زئوس مربوط است به کلمهٔ یونانی dios به معنی «درخشان». واژه زئوس با بخش نخست واژه لاتین ژوپیتر «Jupiter» و واژه مورد کاربرد برای روز پیوند دارد. زئوس ایزد آسمان رخشان و نیز توفان بهشمار میرفت و هم بدین دلیل سلاح او آذرخش بود که آن را به سمت کسی که او را ناخشنود کرده، پرتاب میکردهاست. مواردی که او را بسیار خشمگین میکرد دروغگویی، پیمانشکنی و خیانت بودهاست. از دیگر نشانههای او میتوان به عصای سلطنتی، بلوط، عقاب و سپرش (ساخته شده از پوست بز آمالتئا) اشاره کرد. کرونوس، پدر زئوس، شنیده بود که توسط یکی از فرزندانش سرنگون خواهد شد. به همین دلیل فرزندان خود را میبلعید. اما زئوس که فرزند ششم بود توسط رئا و گایا نجات پیدا کرد. رئا سنگ بزرگی را قنداقپیچ کرده و به کرونوس داد، وی نیز که فکر میکرد این سنگ بزرگ زئوس است آن را به جای زئوس بلعید.",
|
100 |
+
"question": "چرا اسلحه زئوس آذرخش بود؟",
|
101 |
+
"answer": "ایزد آسمان رخشان و نیز توفان",
|
102 |
+
"title": "Example No. 17"
|
103 |
+
},
|
104 |
+
{
|
105 |
+
"context": "سلمان فارسی (پیش از مسلمان شدن: روزبه) (۵۶۸–۶۵۳ میلادی) صحابی ایرانی بود که پیامبر اسلام او را از خود (اهل بیت) خواند و به سلمان محمدی شهرت یافت. در ایران به اعتقاد بسیاری او یک خائن بوده، که در مقابله سپاه ساسانی برای اعراب جنگیده مخصوصا حضور او در نبرد قادسیه و کشتار ایرانیان در این نبرد و در اختیار گذاشتن بسیاری از اطلاعات سری ایران برای اعراب در زمان حمله اعراب به ایران؛ در روزی که قریش نیروهایش را نزدیک مدینه گردآورد تا بر مسلمانان حمله بَرَد (غزوه خندق)، او پیشنهاد داد تا خندقی ژرف پیرامون مدینه حفر گردد تا از آن پاسبانی شود. سلمان فارسی نزد مسلمانان بهویژه مسلمانان شیعه گرامی داشته میشود و برای او جایگاهی والا در نظر دارند. او با این که پسر یکی از دهقانان ایران بود، زرتشتی باقی نماند و سالها به سرزمینهای گوناگون سفر کرد که در همین سفرها در سرزمینی به بردگی درآمد و سپس با کمک محمد آزاد گشت. سلمان فارسی حکیمی که خرد و دانشهای ایرانیان و مسیحیان را میدانست از مشاوران محمد، از جمله طراح اصلی حفر خندق در جنگ خندق بودهاست. او در سالهای پایانی زندگی خود استاندار (والی) مدائن گردید. وی از اولین ایرانیانی بود که اسلام را پذیرفت. در خصوص زندگی او مجموعهای تلویزیونی در حال ساخت است.",
|
106 |
+
"question": "کدام مسلمانان برای سلمان فارسی جایگاه ویژه ای در نظر دارند؟",
|
107 |
+
"answer": "مسلمانان شیعه",
|
108 |
+
"title": "Example No. 18"
|
109 |
+
},
|
110 |
+
{
|
111 |
+
"context": "جِیمز کلارک ماکسوِل (زاده ۱۳ ژوئن ۱۸۳۱ در ادینبورگ – درگذشته ۵ نوامبر ۱۸۷۹ در کمبریج)، فیزیکدان اهل اسکاتلند بود. مهمترین دستاوردهای او، فرمولبندی نظریه کلاسیک امواج الکترومغناطیسی و گردآوردن الکتریسیته، مغناطیس و نور برای نخستین بار در کنار هم، به عنوان جلوههایی از یک پدیده، اشاره بودهاست. معادلات ماکسول، دومین یکپارچهسازی بزرگ در فیزیک، پس از نخستین آن که از سوی نیوتن انجام گرفت، بهشمار میرود. ماکسول با انتشار \"یک نظریه دینامیک برای میدان الکترومغناطیسی\" در سال ۱۸۶۵ نشان داد که میدانهای الکتریکی و مغناطیسی به شکل امواجی با سرعت نور در فضا حرکت میکنند. او بنیانگذار رشته نوین مهندسی برق شناخته میشود. ماکسول همچنین به گسترش توزیع ماکسول–بولتزمن، روشی استاتیکی برای بیان نظریه جنبشیمولکولی گازها، کمک کرد. نبوغ ماکسول در ریاضیات، در دوران کودکیِ وی آشکار شد که بعدها آن را در بسیاری از حوزهها به کار گرفت. او در چهارده سالگی، نوشتاری درباره بیضیها منتشر کرد. ماکسول در سال ۱۸۵۴ تحصیلات خود را به پایان رساند و بعد از تکمیل تحصیلات در دانشگاه ادینبورگ و کمبریج، نخستین استاد علوم طبیعی در دانشگاه اسکاتلند و سپس کمبریج شد.",
|
112 |
+
"question": "جیمز کلارک ماکسول کیه؟",
|
113 |
+
"answer": "فیزیکدان",
|
114 |
+
"title": "Example No. 19"
|
115 |
+
},
|
116 |
+
{
|
117 |
+
"context": "ولایت: به معنی دوستی و پذیرش سرپرستی خدا، پیامبران، امام و دعات(مبلغین) است. در آموزههای اسماعیلی، خدا میتواند در پیامبران و امامان تجلی کند. دعات مومنان را به راه راست رهبری و راهنمایی میکنند. دروزیان از این رکن با نام تسلیم نام میبرند. طهارت: به معنی پاکیزگی است، این رکن دین از قرآن گرفته شده است. درزیان طهارت را از ارکان دین نمیدانند. نماز (اسلام): برخلاف مسلمانان سنی و شیعیان دوازده امامی، اسماعیلیان معتقدند که تعیین شیوه صحیح نماز خواندن برعهده امام حاضر است. شیوه نماز خواندن امروز نزاریان، از قدیم تغییری نکرده و مانند دیگر مسلمانان نماز ۵ بار در روز و ۱۷ رکعت می خوانند که نماز صبح ۲ رکعت نماز ظهر و عصر که با هم می باشد هر کدام چهار رکعت و نماز مغرب ۳ رکعت که با نماز عشا که ۴ رکعت است با هم می خوانند و پس از خواندن سوره ی فاتحه در نماز یا هم برخی پس از خواندن نماز دعایی مخصوص را می خوانند . درزیان، معنای نماز را صدق لسان(معنی لغوی زبان راست است ولی معنی این عبارت یاد نیک است) میدانند و شیوه خاصی برای نماز خواندن ندارند. ایشان نماز را به شیوه دیگر مسلمانان، سیره جهال میدانند؛ اما به لحاظ تاریخی، شرکت در نماز جماعت را برای تقیه جایز میدانند.",
|
118 |
+
"question": "رکن طهارت از کجا گرفته شده است؟",
|
119 |
+
"answer": "این رکن دین از قرآن گرفته شده است",
|
120 |
+
"title": "Example No. 20"
|
121 |
+
},
|
122 |
+
{
|
123 |
+
"context": "هواپیمایی ماهان شرکت هواپیمایی خصوصی ایرانی است و آشیانه اصلی این شرکت در شهر کرمان قرار دارد. این شرکت در سال ۱۳۷۱ در کرمان تأسیس گردید و نام ماهان ایر نیز برگرفته از ماهان شهری در ۳۵ کیلومتری کرمان است. سهامدار عمدهٔ این شرکت مؤسسه خیریه مولیالموحدین است. شرکت هواپیمایی ماهان هماکنون ناوگانی متشکل از ۳۷ فروند هواپیمای مسافربری و باری را در اختیار دارد و روزانه به ۲۰ مقصد، در اروپا، آسیا و خاورمیانه، پروازهای مستقیم دارد. این شرکت هواپیمایی از سال ۲۰۱۱ به دلیل خدماترسانی به سپاه پاسداران، تحت تحریم آمریکا، و از ۲۰۱۹ با ممنوعیت پرواز آلمان و فرانسه قرار دارد. برخی منابع هواپیمایی ماهان را عامل انتقال ویروس کرونا به ایران میدانند. شرکت هواپیمایی ماهان، به مرکزیت شهر تهران، از لحاظ ناوگان هوایی و مسافر حمل شده به عنوان بزرگترین شرکت هواپیمایی ایران بهشمار میآید. این شرکت در سال ۱۳۷۱ با برخورداری از دو فروند هواپیمای مسافربری، تأسیس گردید. در سال ۱۳۷۸ اولین هواپیمای ایرباس ای۳۰۰ به ناوگان هواپیمایی ماهان ملحق گردید و در سال ۱۳۷۹ به عضویت در انجمن بینالمللی حملونقل هوایی (یاتا) پیوست.",
|
124 |
+
"question": "شرکت هواپیمایی ماهان به چند جا پرواز مستقیم داره؟",
|
125 |
+
"answer": "۲۰ مقصد، در اروپا، آسیا و خاورمیانه",
|
126 |
+
"title": "Example No. 21"
|
127 |
+
},
|
128 |
+
{
|
129 |
+
"context": "ژن، در ژنتیک مندلی و ژنتیک مولکولی کلاسیک, همچنین در مبحث تکامل و در دوران پساژنگان تعاریف متفاوتی دارد اما از دیدگاه مولکولی کلاسیک دنبالهای از نوکلوئوتیدهاست که در برگیرنده اطلاعات لازم جهت تولید مولوکولهای RNA و یا پروتئینهای لازم برای سلول هستند. هر ژن در بخشی از DNA سلول وجود دارد.یا با تعریفی دیگر ژن بخشی از مولکول دی ان ای می باشد که روی یک رشته از آن قرار دارد. درون سلولها، طی فرایند رونویسی ژنها به مولکولهای RNA تبدیل میشوند که یا به شکل مستقیم در سلول استفاده میشوند و یا دربرگیرنده اطلاعاتی جهت تولید پروتئین هستند و طی فرایند ترجمه، پروتئین مربوط به آنها ساخته میشود. ژنها میتوانند دچار جهش شوند، که تغییری در توالی دنباله آنهاست. جهشها باعث ایجاد تغییر در پروتئینهای تولید شده از روی ژنها میشوند و میتوانند عملکرد پروتئین را به کلی تغییر دهند و باعث به وجود آمدن صفاتی جدید در سلول بشوند. ژنها در اثر جهشهای ژنتیکی، براساس انتخاب طبیعی تکامل پیدا میکنند و ژنهای قویتر و بهتر به مرور جایگزین ژنهای قبلی میشوند.",
|
130 |
+
"question": "به تغییراتی که در توالی دنباله ژن ها اتفاق می افتد چه می گویند؟",
|
131 |
+
"answer": "جهش",
|
132 |
+
"title": "Example No. 22"
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"context": "زئوس در اساطیر یونانی، پادشاه خدایان و فرمانروای تمام زیارتگاههای واقع در کوه المپ است. او کوچکترین فرزند کرونوس و رئا از نژاد تیتانها بود. معادل آن در اسطورههای رومی ژوپیتر و در دین کرتیان ولخانوس است. نام زئوس مربوط است به کلمهٔ یونانی dios به معنی «درخشان». واژه زئوس با بخش نخست واژه لاتین ژوپیتر «Jupiter» و واژه مورد کاربرد برای روز پیوند دارد. زئوس ایزد آسمان رخشان و نیز توفان بهشمار میرفت و هم بدین دلیل سلاح او آذرخش بود که آن را به سمت کسی که او را ناخشنود کرده، پرتاب میکردهاست. مواردی که او را بسیار خشمگین میکرد دروغگویی، پیمانشکنی و خیانت بودهاست. از دیگر نشانههای او میتوان به عصای سلطنتی، بلوط، عقاب و سپرش (ساخته شده از پوست بز آمالتئا) اشاره کرد. کرونوس، پدر زئوس، شنیده بود که توسط یکی از فرزندانش سرنگون خواهد شد. به همین دلیل فرزندان خود را میبلعید. اما زئوس که فرزند ششم بود توسط رئا و گایا نجات پیدا کرد. رئا سنگ بزرگی را قنداقپیچ کرده و به کرونوس داد، وی نیز که فکر میکرد این سنگ بزرگ زئوس است آن را به جای زئوس بلعید.",
|
136 |
+
"question": "چرا اسلحه زئوس آذرخش بود؟",
|
137 |
+
"answer": "ایزد آسمان رخشان و نیز توفان",
|
138 |
+
"title": "Example No. 23"
|
139 |
+
},
|
140 |
+
{
|
141 |
+
"context": "ابرشرکت تویوتا موتور یک ابرشرکت چندملیتی ژاپنی سازندهٔ خودرو، ماشینآلات و پیشرانه مستقر در شهر تویوتا در استان آیچی ژاپن است. نخستین خط تولید خودرو شرکت تویوتا در سال ۱۹۳۷ توسط کیشیرو تویودا و در کارخانه شرکت نساجی صنایع تویوتا، که متعلق به پدر وی (ساکیشی تویودا) بود، راهاندازی شد. نخستین خودروی سواری این شرکت تویوتا ایای نام داشت. ابرشرکت تویوتا دارندهٔ برندهای دینا، دایهاتسو، سایون، لکسوس و هینو موتورز نیز میباشد که هماکنون بهعنوان بزرگترین خودروساز جهان شناخته میشود. سهام این شرکت در بازار بورس نیویورک، بورس لندن و بورس توکیو معامله میشود. ریشههای تأسیس شرکت خودروسازی تویوتا، به سال ۱۹۲۶ بازمیگردد، که ساکیشی تویودا، اقدام به راهاندازی شرکت صنایع تویوتا نمود. پیشینه این شرکت، که در صنعت نساجی فعالیت میکرد نیز، به ابتدای قرن بیستم بازمیگردد، که به عنوان یک کارخانه ریسندگی فعالیت مینمود. ساکیشی تویودا، که سالها همچون پدرش، به فروش فرش اشتغال داشت، این کارخانه را راهانداخته بود و در سال ۱۸۹۴ یک ماشین بافندگی صنعتی نیز ابداع کرده و ساخته بود.",
|
142 |
+
"question": "اولین ماشینی که تویوتا ساخت چی بود؟",
|
143 |
+
"answer": "تویوتا ایای",
|
144 |
+
"title": "Example No. 24"
|
145 |
+
},
|
146 |
+
{
|
147 |
+
"context": "سازمان آموزشی، علمی و فرهنگی سازمان ملل متحد (یونسکو) یک سازمان تخصصی سازمان ملل متحد است که با هدف کمک به «ایجاد صلح، ریشه کن کردن فقر، توسعه پایدار و گفتگوی بین فرهنگی از طریق آموزش، علوم، فرهنگ، ارتباطات و اطلاعات» به وجود آمدهاست و جانشین کمیته بینالمللی همکاری اندیشمندانه جامعه ملل است. یونسکو ۱۹۳ کشور عضو رسمی و ۱۱ عضو وابسته دارد. اکثر دفاتر آن در پاریس، فرانسه، مستقر است افزون بر این مراکز، دفاتر ملی و منطقه ای نیز وجود دارد. یونسکو به دنبال ایجاد فرهنگ صلح و دانش فراگیر از طریق اطلاعات و ارتباطات است. برای این منظور، اهداف خود را از طریق پنج حوزه اصلی دنبال میکند: آموزش، علوم طبیعی، علوم اجتماعی / انسانی، فرهنگ و ارتباطات / اطلاعات. این برنامه از پروژههای مرتبط با سواد، آموزش فنی، آموزش، پیشرفت علم، ترویج رسانههای مستقل و آزادی مطبوعات، حفظ تاریخ منطقه ای و فرهنگی و ترویج تنوع فرهنگی حمایت میکند . یونسکو در ترجمه و ترویج ادبیات جهان، ایجاد توافقنامههای همکاری بینالمللی برای تأمین امنیت \" میراث جهانی \" از اهمیت فرهنگی و طبیعی، حفظ حقوق بشر و پل زدن شکاف دیجیتال در سراسر جهان کمک میکند. این برنامه همچنین جنبش آموزش برای همه و علمآموزی تمام عمر را راه اندازی و رهبری میکند.",
|
148 |
+
"question": "یونسکو از طریق چی اهدافش رو اجرا می کنه؟",
|
149 |
+
"answer": "آموزش، علوم، فرهنگ، ارتباطات و اطلاعات",
|
150 |
+
"title": "Example No. 25"
|
151 |
+
}
|
152 |
+
]
|
meta.py
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
HEADER_INFO = """
|
2 |
+
# GPT2 QA - Persian
|
3 |
+
""".strip()
|
4 |
+
SIDEBAR_INFO = """
|
5 |
+
# Configuration
|
6 |
+
""".strip()
|
7 |
+
C_PROMPT_BOX = "متن خود را وارد کنید ..."
|
8 |
+
Q_PROMPT_BOX = "پرسش خود را مطرح کنید ..."
|
9 |
+
A_PROMPT_BOX = "وارد نشده."
|
normalizer.py
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import hazm
|
2 |
+
import re
|
3 |
+
|
4 |
+
from regexes.currency import CURRENCY_REGEX
|
5 |
+
from regexes.email import EMAIL_REGEX
|
6 |
+
from regexes.latin import LATIN_REGEX
|
7 |
+
from regexes.number import NUMBERS_REGEX
|
8 |
+
from regexes.phone import PHONE_REGEX
|
9 |
+
from regexes.quote import DOUBLE_QUOTE_REGEX, SINGLE_QUOTE_REGEX
|
10 |
+
from regexes.url import URL_REGEX
|
11 |
+
from regexes.persian import PERSIAN_REGEX
|
12 |
+
import dictionary
|
13 |
+
|
14 |
+
|
15 |
+
def make_trans(list_a, list_b):
|
16 |
+
return dict((ord(a), b) for a, b in zip(list_a, list_b))
|
17 |
+
|
18 |
+
|
19 |
+
def multiple_replace(text, chars_to_mapping):
|
20 |
+
pattern = "|".join(map(re.escape, chars_to_mapping.keys()))
|
21 |
+
return re.sub(pattern, lambda m: chars_to_mapping[m.group()], str(text))
|
22 |
+
|
23 |
+
|
24 |
+
ar2fa_digits = make_trans("٠١٢٣٤٥٦٧٨٩٪", "۰۱۲۳۴۵۶۷۸۹٪")
|
25 |
+
fa2en_digits = make_trans("۰۱۲۳۴۵۶۷۸۹٪", "0123456789%")
|
26 |
+
normalizer = hazm.Normalizer(persian_numbers=True, punctuation_spacing=False)
|
27 |
+
|
28 |
+
|
29 |
+
def normalize(text, zwnj="\u200c", tokenized=False):
|
30 |
+
text = text.replace("\n", " ").replace("\t", " ")
|
31 |
+
text = re.sub(r"\u200c+", "\u200c", text)
|
32 |
+
text = text.replace('ـ', '')
|
33 |
+
text = normalizer.normalize(text)
|
34 |
+
|
35 |
+
if len(dictionary.characters) > 0:
|
36 |
+
text = multiple_replace(text, dictionary.characters)
|
37 |
+
|
38 |
+
if len(dictionary.words_map) > 0:
|
39 |
+
text = multiple_replace(text, dictionary.words_map)
|
40 |
+
|
41 |
+
text = text.translate(ar2fa_digits)
|
42 |
+
text = text.translate(fa2en_digits)
|
43 |
+
|
44 |
+
text = SINGLE_QUOTE_REGEX.sub("'", text)
|
45 |
+
text = DOUBLE_QUOTE_REGEX.sub('"', text)
|
46 |
+
text = CURRENCY_REGEX.sub(r" \1 ", text)
|
47 |
+
text = URL_REGEX.sub(" ", text)
|
48 |
+
text = EMAIL_REGEX.sub(" ", text)
|
49 |
+
text = PHONE_REGEX.sub(r" \1 ", text)
|
50 |
+
text = NUMBERS_REGEX.sub(r" \1 ", text)
|
51 |
+
text = LATIN_REGEX.sub(r" \1 ", text)
|
52 |
+
|
53 |
+
# Allow only english and persian characters
|
54 |
+
text = re.sub(PERSIAN_REGEX, " ", text)
|
55 |
+
|
56 |
+
text = text.replace(f" {zwnj} ", f"{zwnj}")
|
57 |
+
text = text.replace(f"{zwnj} ", f"{zwnj}")
|
58 |
+
text = text.replace(f" {zwnj}", f"{zwnj}")
|
59 |
+
|
60 |
+
if len(dictionary.special_tokens) > 0:
|
61 |
+
text = multiple_replace(text, dictionary.special_tokens)
|
62 |
+
|
63 |
+
tokens = []
|
64 |
+
for token in text.split():
|
65 |
+
token = token.strip()
|
66 |
+
if token:
|
67 |
+
if token.startswith(zwnj) and token.endswith(zwnj):
|
68 |
+
token = token[1:-1]
|
69 |
+
if token.startswith(zwnj):
|
70 |
+
token = token[1:]
|
71 |
+
elif token.endswith(zwnj):
|
72 |
+
token = token[:-1]
|
73 |
+
else:
|
74 |
+
token = token
|
75 |
+
|
76 |
+
tokens.append(token)
|
77 |
+
|
78 |
+
if tokenized:
|
79 |
+
return tokens
|
80 |
+
|
81 |
+
return " ".join(tokens)
|
regexes/__init__.py
ADDED
File without changes
|
regexes/currency.py
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
CURRENCIES = {
|
4 |
+
"$": "USD",
|
5 |
+
"zł": "PLN",
|
6 |
+
"£": "GBP",
|
7 |
+
"¥": "JPY",
|
8 |
+
"฿": "THB",
|
9 |
+
"₡": "CRC",
|
10 |
+
"₦": "NGN",
|
11 |
+
"₩": "KRW",
|
12 |
+
"₪": "ILS",
|
13 |
+
"₫": "VND",
|
14 |
+
"€": "EUR",
|
15 |
+
"₱": "PHP",
|
16 |
+
"₲": "PYG",
|
17 |
+
"₴": "UAH",
|
18 |
+
"₹": "INR",
|
19 |
+
"﷼": "IRR",
|
20 |
+
}
|
21 |
+
CURRENCY_REGEX = re.compile(
|
22 |
+
"({})+".format("|".join(re.escape(c) for c in CURRENCIES.keys()))
|
23 |
+
)
|
regexes/email.py
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
EMAIL_REGEX = re.compile(
|
4 |
+
r"(?:^|(?<=[^\w@.)]))([\w+-](\.(?!\.))?)*?[\w+-](@|[(<{\[]at[)>}\]])(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\.(?:[a-z\\u00a1-\\uffff]{2,}))",
|
5 |
+
flags=re.IGNORECASE | re.UNICODE,
|
6 |
+
)
|
regexes/latin.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
LATIN_WITH_SPECIAL_REGEX = re.compile(
|
4 |
+
r"(\b(?!URL|EMAIL|PHONE|NUMBER|CUR|LATIN\b)[0-9a-zA-Z]+)"
|
5 |
+
)
|
6 |
+
|
7 |
+
LATIN_REGEX = re.compile(
|
8 |
+
r"([0-9a-zA-Z]+)"
|
9 |
+
)
|
10 |
+
|
11 |
+
LATIN_SPACES_REGEX = re.compile(
|
12 |
+
r"([0-9a-zA-Z])"
|
13 |
+
)
|
regexes/number.py
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
NUMBERS_REGEX = re.compile(
|
4 |
+
r"(?:^|(?<=[^\w,.]))[+–-]?(([1-9]\d{0,2}(,\d{3})+(\.\d*)?)|([1-9]\d{0,2}([ .]\d{3})+(,\d*)?)|(\d*?[.,]\d+)|\d+)(?:$|(?=\b))"
|
5 |
+
)
|
regexes/persian.py
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
|
4 |
+
PERSIAN_ALPHA = "ءآئابتثجحخدذرزسشصضطظعغفقلمنهوپچژکگیە" # noqa: E501
|
5 |
+
PERSIAN_DIGIT = "۰۱۲۳۴۵۶۷۸۹"
|
6 |
+
|
7 |
+
|
8 |
+
ZWNJ = "\u200c"
|
9 |
+
PUNK = '\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\]\^\_\`\{\|\}\~\«\»\؟\:\×\٬\٫\﷼\٪\،'
|
10 |
+
|
11 |
+
PERSIAN = (
|
12 |
+
"a-zA-Z0-9" +
|
13 |
+
PERSIAN_ALPHA +
|
14 |
+
PERSIAN_DIGIT +
|
15 |
+
ZWNJ +
|
16 |
+
PUNK
|
17 |
+
)
|
18 |
+
|
19 |
+
PERSIAN_REGEX = r"[^" + PERSIAN + "+]"
|
regexes/phone.py
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
|
4 |
+
PHONE_REGEX = re.compile(
|
5 |
+
r"((?:^|(?<=[^\w)]))(((\+?[01])|(\+\d{2}))[ .-]?)?(\(?\d{3,4}\)?/?[ .-]?)?(\d{3}[ .-]?\d{4})(\s?(?:ext\.?|[#x-])\s?\d{2,6})?(?:$|(?=\W)))|\+?\d{4,5}[ .-/]\d{6,9}"
|
6 |
+
)
|
regexes/punk.py
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
PUNK_REGEX = re.compile(
|
4 |
+
r"([\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\=\?\@\[\\\]\^\_\`\{\|\}\~\«\»\⸮\؟\،\٬\٫\؛])"
|
5 |
+
)
|
regexes/quote.py
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
|
4 |
+
strange_double_quotes = [
|
5 |
+
"«",
|
6 |
+
"‹",
|
7 |
+
"»",
|
8 |
+
"›",
|
9 |
+
"„",
|
10 |
+
"“",
|
11 |
+
"‟",
|
12 |
+
"”",
|
13 |
+
"❝",
|
14 |
+
"❞",
|
15 |
+
"❮",
|
16 |
+
"❯",
|
17 |
+
"〝",
|
18 |
+
"〞",
|
19 |
+
"〟",
|
20 |
+
""",
|
21 |
+
]
|
22 |
+
strange_single_quotes = ["‘", "‛", "’", "❛", "❜", "`", "´", "‘", "’"]
|
23 |
+
|
24 |
+
DOUBLE_QUOTE_REGEX = re.compile("|".join(strange_double_quotes))
|
25 |
+
SINGLE_QUOTE_REGEX = re.compile("|".join(strange_single_quotes))
|
regexes/url.py
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
|
3 |
+
URL_REGEX = re.compile(
|
4 |
+
r"(?:^|(?<![\w\/\.]))"
|
5 |
+
# protocol identifier
|
6 |
+
# r"(?:(?:https?|ftp)://)" <-- alt?
|
7 |
+
r"(?:(?:https?:\/\/|ftp:\/\/|www\d{0,3}\.))"
|
8 |
+
# user:pass authentication
|
9 |
+
r"(?:\S+(?::\S*)?@)?" r"(?:"
|
10 |
+
# IP address exclusion
|
11 |
+
# private & local networks
|
12 |
+
r"(?!(?:10|127)(?:\.\d{1,3}){3})"
|
13 |
+
r"(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})"
|
14 |
+
r"(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})"
|
15 |
+
# IP address dotted notation octets
|
16 |
+
# excludes loopback network 0.0.0.0
|
17 |
+
# excludes reserved space >= 224.0.0.0
|
18 |
+
# excludes network & broadcast addresses
|
19 |
+
# (first & last IP address of each class)
|
20 |
+
r"(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])"
|
21 |
+
r"(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}"
|
22 |
+
r"(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))"
|
23 |
+
r"|"
|
24 |
+
# host name
|
25 |
+
r"(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)"
|
26 |
+
# domain name
|
27 |
+
r"(?:\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)*"
|
28 |
+
# TLD identifier
|
29 |
+
r"(?:\.(?:[a-z\\u00a1-\\uffff]{2,}))" r"|" r"(?:(localhost))" r")"
|
30 |
+
# port number
|
31 |
+
r"(?::\d{2,5})?"
|
32 |
+
# resource path
|
33 |
+
r"(?:\/[^\)\]\}\s]*)?",
|
34 |
+
# r"(?:$|(?![\w?!+&\/\)]))",
|
35 |
+
# @jfilter: I removed the line above from the regex because I don't understand what it is used for, maybe it was useful?
|
36 |
+
# But I made sure that it does not include ), ] and } in the URL.
|
37 |
+
flags=re.UNICODE | re.IGNORECASE,
|
38 |
+
)
|
requirements.txt
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
hazm
|
3 |
+
Pillow
|
4 |
+
mtranslate
|
5 |
+
torch
|
6 |
+
transformers
|
utils.py
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import json
|
3 |
+
from PIL import Image
|
4 |
+
|
5 |
+
|
6 |
+
def load_image(image_path, image_resize=None):
|
7 |
+
image = Image.open(image_path)
|
8 |
+
if isinstance(image_resize, tuple):
|
9 |
+
image.resize(image_resize)
|
10 |
+
return image
|
11 |
+
|
12 |
+
|
13 |
+
def load_text(text_path):
|
14 |
+
text = ''
|
15 |
+
with open(text_path) as f:
|
16 |
+
text = f.read()
|
17 |
+
|
18 |
+
return text
|
19 |
+
|
20 |
+
|
21 |
+
def load_json(json_path):
|
22 |
+
jdata = ''
|
23 |
+
with open(json_path) as f:
|
24 |
+
jdata = json.load(f)
|
25 |
+
|
26 |
+
return jdata
|
27 |
+
|
28 |
+
|
29 |
+
def local_css(css_path):
|
30 |
+
with open(css_path) as f:
|
31 |
+
st.markdown(f'<style>{f.read()}</style>', unsafe_allow_html=True)
|
32 |
+
|
33 |
+
|
34 |
+
def remote_css(css_url):
|
35 |
+
st.markdown(f'<link href="{css_url}" rel="stylesheet">', unsafe_allow_html=True)
|