Nltk: рдХреБрд▓реА рдЖрд╡рд╛рдЬреЗрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдбреЗрдХреНрд╕ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬрдире░ 2017  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: nltk/nltk

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@fievelk рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣рд╛рдБ: рдЖрдк рдмрдЧ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП develop рд╢рд╛рдЦрд╛ рдпрд╛ 3.2.1 рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 12 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рдпрд╣рд╛рдВ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ:


рдореЗрд░реЗ рдкрд╛рд╕ рдорд╕рд╛рд▓реЗрджрд╛рд░ рдЯреЗрдХреНрд╕реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ nltk рдХреЗ PorterStemmer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреЗрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ django рдРрдк рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╕реНрдЯреЗрдорд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм django рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╕реНрдЯреЗрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ IndexError: string index out of range рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП PorterStemmer().stem() рд╕реЗ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ 'oed' ред рдирддреАрдЬрддрди, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

# xkcd_project/search/views.py
from nltk.stem.porter import PorterStemmer

def get_results(request):
    s = PorterStemmer()
    s.stem('oed')
    return render(request, 'list.html')

рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдЙрдард╛рддрд╛ рд╣реИ:

Traceback (most recent call last):
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/jkarimi91/Projects/xkcd_search/xkcd_project/search/views.py", line 15, in get_results
    s.stem('oed')
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/nltk/stem/porter.py", line 665, in stem
    stem = self._step1b(stem)
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/nltk/stem/porter.py", line 376, in _step1b
    lambda stem: (self._measure(stem) == 1 and
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/nltk/stem/porter.py", line 258, in _apply_rule_list
    if suffix == '*d' and self._ends_double_consonant(word):
  File "//anaconda/envs/xkcd/lib/python2.7/site-packages/nltk/stem/porter.py", line 214, in _ends_double_consonant
    word[-1] == word[-2] and
IndexError: string index out of range

рдЕрдм рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рд╣реИ рд╡рд╣ django рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдПрдХ рд╣реА рд╕реНрдЯреЗрдорд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ (рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдЕрд▓рдЧ рдкрд╛рдпрдерди рдлрд╝рд╛рдЗрд▓ рд╣реЛ рдпрд╛ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкрд╛рдпрдерди рдХрдВрд╕реЛрд▓ рд╣реЛ) рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ:

# test.py
from nltk.stem.porter import PorterStemmer
s = PorterStemmer()
print s.stem('oed')

рдХреЗ рдмрд╛рдж:

python test.py
# successfully prints 'o'

рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ nltk рд╕рдВрд╕реНрдХрд░рдг 3.2.2 рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ ipython рдирд╣реАрдВ рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ test.py рдЪрд▓рд╛рдпрд╛ред рдХрд┐рд╕реА рддрд░рд╣, рдореИрдВ рдЕрдкрдиреЗ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг //anaconda/bin/ipython рдореЗрдВ ipython рд╕реНрдерд╛рдкрдирд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдЕрдкрдиреЗ django рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рд╕рдХреНрд░рд┐рдп) рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг //anaconda/envs/xkcd/bin/ рдореЗрдВ ipython рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, ipython рдореЗрд░реЗ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд nltk рдХрд┐рд╕реНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд╕рдВрд╕реНрдХрд░рдг 3.2.0 рдЪрд▓рд╛рддрд╛ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ PorterStemmer nltk рд╕рдВрд╕реНрдХрд░рдг 3.2.2 рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'oed' рдХреЛ рд╕реНрдЯреЗрдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди nltk рд╕рдВрд╕реНрдХрд░рдг 3.2.0 рдореЗрдВ рдирд╣реАрдВред рдХреНрдпреЛрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдЬрдЧрд░ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореЗрд░рд╛ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдЕрдЬрдЧрд░ 2.7.11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЕрдЬрдЧрд░ 2.7.13 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

рдЕрд░реЗ,
рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ (рд╕рдорд╕реНрдпрд╛)ред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдХрднреА рднреА рдЬреАрдердм рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдпрд╣ рдерд╛
рдЧрд▓рддреА рд╕реЗ рд╣реБрдЖред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЕрднреА рдХреНрдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдБ!

7 рдЬрдирд╡рд░реА, 2017 11:47 pm рдкрд░, "jkarimi91" [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ nltk рд╕рдВрд╕реНрдХрд░рдг 3.2.2 рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ ipython рдирд╣реАрдВ рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ test.py рдЪрд▓рд╛рдпрд╛ред
рдХрд┐рд╕реА рддрд░рд╣, рдореИрдВ рдЕрдкрдиреЗ рд░реВрдЯ рдореЗрдВ ipython рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
рдкрд░реНрдпрд╛рд╡рд░рдг //рдПрдирд╛рдХреЛрдВрдбрд╛/рдмрд┐рди/рдЖрдИрдкреАрдереЙрди рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛
рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ ipython
//рдПрдирд╛рдХреЛрдВрдбрд╛/envs/xkcd/bin/. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, ipython рдЕрд╡рд╢реНрдп рд╣реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛
nltk рдХрд┐рд╕реНрдд рдореЗрд░реЗ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рддрд╛ рд╣реИ
3.2.0.

рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ PorterStemmer рд╕реНрдЯреЗрдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ
nltk рд╕рдВрд╕реНрдХрд░рдг 3.2.2 рдореЗрдВ 'oed' рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрдХрд┐рди nltk рд╕рдВрд╕реНрдХрд░рдг 3.2.0 рдореЗрдВ рдирд╣реАрдВред рдореИрдВ рдХреНрдпреЛрдВ
рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/nltk/nltk/issues/1581#issuecomment-271100268 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AVTBBiywlg5c81StFrrcNOsyuF610y9uks5rP9bLgaJpZM4LdV66
.

@ExplodingCabbage рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? 3.2 рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдХреЗрд╡рд▓ porter.py рдкрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, d8402e3f43ce3b7a3c7ecb45c3b8b1f75c7124e2 рд╣реИред

рдпрд╣ рдХреЛрдб @ jkarimi91 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

from nltk.stem.porter import PorterStemmer
s = PorterStemmer()
print s.stem('oed')

рдХреБрдЫ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж, pdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _apply_rule_list() рдореЗрдВ porter.py рднреАрддрд░ рд╕реЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛:

>>> rule
(u'at', u'ate', None)
>>> word
u'o'

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ _ends_double_consonant() рд╡рд┐рдзрд┐ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ word[-1] == word[-2] рдФрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ, рддреЛ NLTK 3.2 рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдереА:

def _doublec(self, word):
    """doublec(word) is TRUE <=> word ends with a double consonant"""
    if len(word) < 2:
        return False
    if (word[-1] != word[-2]):      
        return False        
    return self._cons(word, len(word)-1)

рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ len(word) < 2 рдЪреЗрдХ рдЧрд╛рдпрдм рд╣реИред

_ends_double_consonant() рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

def _ends_double_consonant(self, word):
      """Implements condition *d from the paper

      Returns True if word ends with a double consonant
      """
      if len(word) < 2:
          return False
      return (
          word[-1] == word[-2] and
          self._is_consonant(word, len(word)-1)
      )

рдУрд╣ред рд╣рд╛рдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ https://github.com/nltk/nltk/commit/d8402e3f43ce3b7a3c7ecb45c3b8b1f75c7124e2 рдореЗрдВ рддреЛрдбрд╝рд╛ :(

рдХреНрдпрд╛ рдкреАрдЖрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдПрдХ рдлрд┐рдХреНрд╕ рдЖрдЬ рд░рд╛рдд рд╣реЛрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рдж @jkarimi91 , @fievelk , @ExplodingCabbage

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдЖрдЬ рдареАрдХ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдореБрдЭреЗ рдХреЛрдИ рдкреИрдХреЗрдЬ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдирдорд╕реНрддреЗ @santoshbsред рдЖрдк рдпрд╛ рддреЛ рдПрдирдПрд▓рдЯреАрдХреЗ рдХреЗ master рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдмрдЧ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 3.2.1 рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 3.2.2 ред

@ExplodingCabbage рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк develop рд╢рд╛рдЦрд╛ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ( master )ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднреНрд░рдорд┐рдд рд╣реЛрдирд╛ рдЖрд╕рд╛рди рд╣реИ :)

@fievelk рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣рд╛рдБ: рдЖрдк рдмрдЧ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП develop рд╢рд╛рдЦрд╛ рдпрд╛ 3.2.1 рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jeryini picture jeryini  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vezeli picture vezeli  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

goodmami picture goodmami  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

peterbe picture peterbe  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Chris00 picture Chris00  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ