Nltk: рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ nltk рдПрдХ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЦреЗрд▓рддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдкреНрд░реИрд▓ 2015  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: nltk/nltk

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдпрд╣ рдореБрджреНрджрд╛ рдЙрддрдирд╛ рдЧрдВрднреАрд░ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЬрдм рдПрдирдПрд▓рдЯреАрдХреЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рдХреЙрд▓ рдХреЛ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкрд╛рдпрдерди рдЙрдкрдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:

from multiprocessing import Process
import nltk
import time


def child_fn():
    print "Fetch URL"
    import urllib2
    print urllib2.urlopen("https://www.google.com").read()[:100]
    print "Done"


while True:
    child_process = Process(target=child_fn)
    child_process.start()
    child_process.join()
    print "Child process returned"
    time.sleep(1)

рдЗрд╕реЗ рдЖрдпрд╛рддрд┐рдд NLTK рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ, рдФрд░ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ urlopen () рдХреЙрд▓ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред import nltk рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рдареАрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХреНрдпреЛрдВ?

* рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдкрд╛рдпрдерди 2 рдХреЗ рд▓рд┐рдП рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ 3 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

admin bug inactive multithread / multiprocessing pythonic

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

рдореИрдВ nltk рд╕реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдВрдзрд╛ рдкреНрд░рд╣рд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ / рдлреЗрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рдерд╛ред рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреИрдХреЗрдЬ __init__.py рдХрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


рд╡рд┐рд╡рд░рдг (рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)

###########################################################
# TOP-LEVEL MODULES
###########################################################

# Import top-level functionality into top-level namespace

from nltk.collocations import *
from nltk.decorators import decorator, memoize
# from nltk.featstruct import *
# from nltk.grammar import *
from nltk.probability import *
from nltk.text import *
# from nltk.tree import *
from nltk.util import *
from nltk.jsontags import *

# ###########################################################
# # PACKAGES
# ###########################################################

# from nltk.chunk import *
# from nltk.classify import *
# from nltk.inference import *
from nltk.metrics import *
# from nltk.parse import *
# from nltk.tag import *
from nltk.tokenize import *
from nltk.translate import *
# from nltk.sem import *
# from nltk.stem import *

# Packages which can be lazily imported
# (a) we don't import *
# (b) they're slow to import or have run-time dependencies
#     that can safely fail at run time

from nltk import lazyimport
app = lazyimport.LazyModule('nltk.app', locals(), globals())
chat = lazyimport.LazyModule('nltk.chat', locals(), globals())
corpus = lazyimport.LazyModule('nltk.corpus', locals(), globals())
draw = lazyimport.LazyModule('nltk.draw', locals(), globals())
toolbox = lazyimport.LazyModule('nltk.toolbox', locals(), globals())

# Optional loading

try:
    import numpy
except ImportError:
    pass
else:
    from nltk import cluster

# from nltk.downloader import download, download_shell
# try:
#     from six.moves import tkinter
# except ImportError:
#     pass
# else:
#     try:
#         from nltk.downloader import download_gui
#     except RuntimeError as e:
#         import warnings
#         warnings.warn("Corpus downloader GUI not loaded "
#                       "(RuntimeError during import: %s)" % str(e))

# explicitly import all top-level modules (ensuring
# they override the same names inadvertently imported
# from a subpackage)

# from nltk import ccg, chunk, classify, collocations
# from nltk import data, featstruct, grammar, help, inference, metrics
# from nltk import misc, parse, probability, sem, stem, wsd
# from nltk import tag, tbl, text, tokenize, translate, tree, treetransforms, util


рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЕрдХреНрд╖рдо рдЖрдпрд╛рдд рдЕрдВрддрддрдГ tkinter рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдХрд╛рд░рдг рд╣реИред рдпрджрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ import nltk import tkinter import nltk рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рджреБрд░реНрдШрдЯрдирд╛ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓рддреА рд╣реИ, рджреЛрдиреЛрдВ рд╕рдВрджрд░реНрднрд┐рдд рдЯрд┐рдВрдХрд░ред

рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ рдпреЗ рдкреИрдХреЗрдЬ рд╕реАрдзреЗ tkinter рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:

  • nltk.app
  • nltk.draw
  • nltk.sem

рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ __init__ , рдпреЗ рд╕рдорд╕реНрдпрд╛рддреНрдордХ рдЖрдпрд╛рдд рд╣реИрдВ, рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдЯрдВрдХреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЯреНрд░реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ

  • nltk.featstruct ( sem )
  • nltk.grammar ( featstruct )
  • nltk.tree ( grammar )
  • nltk.chunk ( chunk.named_entity > tree )
  • nltk.parse ( parse.bllip > tree )
  • nltk.tag ( tag.stanford > parse )
  • nltk.classify ( classify.senna > tag )
  • nltk.inference ( inference.discourse > sem , tag )
  • nltk.stem ( stem.snowball > corpus > corpus.reader.timit > tree )

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

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИ?

рдирд╣реАрдВред рдореИрдВ рдПрдХ рдбрд╛рд▓ try .. except: рдЪрд╛рд░реЛрдВ рдУрд░ рдЦрдВрдб import urllib2; print... рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рднреА рди рдорд┐рд▓рд╛ред

рдореИрдВ рдареАрдХ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВрдиреЗ рдЕрднреА рдПрдХ SO рдкреНрд░рд╢реНрди рдЦреЛрд▓рд╛ рд╣реИ рдЬреЛ рдпрд╣рд╛рдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: http://stackoverflow.com/questions/30766419/python-child-process-silently-crashes-when-issuing-an-ttp-request

рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рдХреА рд╕реВрдЪрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдЪреБрдкрдЪрд╛рдк рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд░рд╣реА рд╣реИред

рдореИрдВ рдЖрдкрд╕реЗ @ oxymor0n рд╕реЗ рдЕрд╕рд╣рдордд

The child process is indeed crashing silently without further notice.

рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рднреА рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: nltk, gunicorn (рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП nltk рдХреЗ рд╕рд╛рде), рдФрд░ рдлреНрд▓рд╛рд╕реНрдХред

Nltk рдЖрдпрд╛рдд рдирд┐рдХрд╛рд▓реЗрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд╡рд╛рдп nltkред

/ cc @escherba

@ninowalker , @ oxymor0n рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдореЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдареАрдХ рдЪрд▓рддреА рд╣реИрдВ, рдореБрдЭреЗ рдорд┐рд▓рддреА рд╣реИрдВ:

Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content
Done
Child process returned

рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, рд╣реИ рдирд╛?

рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдЕрдиреБрд░реЛрдз рднреА рдирд╣реАрдВ рдЯреВрдЯрддрд╛:

alvas<strong i="13">@ubi</strong>:~$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from multiprocessing import Process
>>> import requests
>>> from pprint import pprint
>>> Process(target=lambda: pprint(
...         requests.get('https://api.github.com'))).start()
>>> <Response [200]>

>>> import nltk
>>> Process(target=lambda: pprint(
...         requests.get('https://api.github.com'))).start()
>>> <Response [200]>

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

  • рдЕрдЬрдЧрд░ 2.7.6
  • nltk 3.0.3
  • ubuntu 14.04

рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдЬреЛ @Hiestaa рдХреЗ рдкрд╛рд╕ рдереАред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╣рд╛рдпрдХ рдлрд╝рд╛рдЗрд▓ string_util.python рд╣реИ рдЬреЛ nltk рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рдЕрдЬрдЧрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдорд▓реНрдЯреА-рдкреНрд░реЛрд╕реЗрд╕ рдХреНрд░реЙрд▓рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓рдХреНрд╖рдг рдпрд╣ рд╣реИ рдХрд┐ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╕ рдЕрдЯрдХ рдЬрд╛рддреА рд╣реИ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рд╣реИ (рдЕрдкрд╡рд╛рдж рд╕рдВрджреЗрд╢ рднреА рдирд╣реАрдВ)ред
Nltk- рд╕рдВрдмрдВрдзрд┐рдд рдЖрдпрд╛рдд рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

рд╡рд┐рд╡рд░рдг:
рдУрдПрд╕: рдпреЛрд╕реЗрдорд╛рдЗрдЯ 10.10.5
рдЕрдЬрдЧрд░: 2.7.10
рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ urllib2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рдмрдЧ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕рдореЗрдВ рдХрджрдо рд░рдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЙрддреНрдкрд╛рджрди рд╕реНрддрд░ рдПрдирдПрд▓рдкреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо Rq (http://python-rq.org/) рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрдИ рдПрдирдПрд▓рдкреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЪреБрдкрдЪрд╛рдк рдорд╛рд░реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдХреЛрдИ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@ рд╕рд╕рд┐рдВрдбрд╛ : рдЖрдк nltk-dev рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдПрдХ рдХреЙрд▓ рдбрд╛рд▓рдирд╛ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

@sasinda рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ Rq рдмрд┐рд▓реНрдХреБрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджрди рд╕реНрддрд░ NLP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдФрд░ рдкреГрдердХ рдЕрдЬрдЧрд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЬрдЧрд░ рдХреЛ рдХрднреА рдХрд╛рдВрдЯрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдиреЗрд▓реНрдЯрдХ рд╕реЗ рдореВрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рдмреАрдЪ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕реНрддрд░ рдкрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

def split(words):
    import nltk
    return nltk.word_tokenize(words)

рдФрд░ рдпрд╣ рдирд╣реАрдВ рд╣реИ:

import nltk
def split(words):
    return nltk.word_tokenize(words)

рдзрдиреНрдпрд╡рд╛рдж @mpenkovред рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ?

@stevenbird рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдареАрдХ рдирд╣реАрдВ рд╣реИред

IMHO, рдпрджрд┐ рдХрд┐рд╕реА рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрд╛рдпрдерди рд╕реНрдЯреИрдВрдбрд░реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдШрдЯрдХ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдЕрдкрд╡рд┐рддреНрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@mpenkov рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдореБрдЭреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рд▓рд╛рдореА рдмрд▓реНрд▓реЗрдмрд╛рдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред @ Oxymor0n рдХрд╛ рдореВрд▓ рдХреЛрдб рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛:

from multiprocessing import Process
import nltk
import time
import urllib2

# HACK
urllib2.build_opener(urllib2.HTTPHandler())

def child_fn():
    print "Fetch URL"
    import urllib2
    print urllib2.urlopen("https://www.google.com").read()[:100]
    print "Done"


while True:
    child_process = Process(target=child_fn)
    child_process.start()
    child_process.join()
    print "Child process returned"
    time.sleep(1)

@mpenkov @ninowalker , @ oxymor0n @sasinda @wenbowang рдХреНрдпрд╛ рдЖрдк рд╕рднреА рдЕрднреА рднреА рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛ рдирд╣реАрдВ рд╕рдХрддрд╛:

from multiprocessing import Process
import nltk
import time

def child_fn():
    print "Fetch URL"
    import urllib2
    print urllib2.urlopen("https://www.google.com").read()[:100]
    print "Done"


while True:
    child_process = Process(target=child_fn)
    child_process.start()
    child_process.join()
    print "Child process returned"
    time.sleep(1)

рдореБрдЭреЗ рджреЗрддрд╛ рд╣реИ:

Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-SG"><head><meta cont
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-SG"><head><meta cont
Done
Child process returned
Fetch URL
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-SG"><head><meta cont
Done

рдореИрдВ рдЪрд╛рд▓реВ рд╣реВрдБ:

  • рдкрд╛рдпрдерди 2.7.12
  • рдПрдирдПрд▓рдЯреАрдХреЗ 3.2.5
  • рдЙрдмрдВрдЯреВ 16.04.3

@alvations рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ
рдореИрдВ рдпрд╣ рднреА рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдХрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдзрд╛рд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдорд╛рдлрд╝ рдХрд░рдирд╛!

@alvations рдореБрдЭреЗ рдпрд╣ рднреА рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реА рдХреМрди рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЛрдВ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВред

рдореИрдВрдиреЗ рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдЕрдкрдирд╛ рдХреЛрдб рдЪрд▓рд╛рдпрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛ рдирд╣реАрдВ рд╕рдХрд╛ред

рдкрд╛рдпрдерди 2.7.12
nltk 3.2.1
macOS 10.12.6

@alvations рдореИрдВ рднреА рдЕрдм рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЙрди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдлреЙрд▓реНрдЯ (рдПрдХреНрдЬрд┐рдЯ рдХреЛрдб 11) рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ (рд▓рд╛рдЗрди рдкрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ: urllib2.urlopen ("https://www.google.com") .read () [: 100])

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ urllib3 (https://urllib3.readthedocs.io/en/latest/) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

  • nltk (3.2.5)
  • urllib3 (1.22)
  • рдореИрдХ OSX 10.12.16
  • рдкрд╛рдпрдерди 2.7.13 | рдХреЙрдиреНрдЯрд┐рдирдо рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдЗрдВрдХ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 20 рджрд┐рд╕рдВрдмрд░ 2016, 23:05:08)
    [GCC 4.2.1 рдбрд╛рд░реНрд╡рд┐рди рдкрд░ рд╕рдВрдЧрдд Apple LLVM 6.0 (рдХреНрд▓реИрдВрдЧ -600.0.57)]

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рдореБрджреНрджрд╛ macOS рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ 3.6 рдЕрдм рддрдХ,

  • MacOS 10.13 (рд╡рд┐рдлрд▓)
  • рд╕реЗрдВрдЯреЛрд╕ 7.2 (рд╕рдлрд▓)
  • Ubuntu 16.04 (рд╕рдлрд▓)

Python3 рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдУрдкреА рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

from multiprocessing import Process
import nltk
import time


def child_fn():
    from urllib.request import urlopen
    print("Fetch URL")
    print(urlopen("https://www.google.com").read()[:100])
    print("Done")


child_process = Process(target=child_fn)
child_process.start()
child_process.join()
print("Child process returned")
time.sleep(1)

рдЖрдЙрдЯрдкреБрдЯ:

Fetch URL
Child process returned

рдЙрдкрдкреНрд░рдХрд╛рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд╡рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкреЛрд╕реНрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЧрдП рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рджрд┐рдорд╛рдЧ рд╡рд╛рд▓рд╛ рд╣реИред рдпрд╣ MacOS рдкрд░ рдереНрд░реЗрдб рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ nltk рд╕реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдВрдзрд╛ рдкреНрд░рд╣рд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ / рдлреЗрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рдерд╛ред рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреИрдХреЗрдЬ __init__.py рдХрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


рд╡рд┐рд╡рд░рдг (рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)

###########################################################
# TOP-LEVEL MODULES
###########################################################

# Import top-level functionality into top-level namespace

from nltk.collocations import *
from nltk.decorators import decorator, memoize
# from nltk.featstruct import *
# from nltk.grammar import *
from nltk.probability import *
from nltk.text import *
# from nltk.tree import *
from nltk.util import *
from nltk.jsontags import *

# ###########################################################
# # PACKAGES
# ###########################################################

# from nltk.chunk import *
# from nltk.classify import *
# from nltk.inference import *
from nltk.metrics import *
# from nltk.parse import *
# from nltk.tag import *
from nltk.tokenize import *
from nltk.translate import *
# from nltk.sem import *
# from nltk.stem import *

# Packages which can be lazily imported
# (a) we don't import *
# (b) they're slow to import or have run-time dependencies
#     that can safely fail at run time

from nltk import lazyimport
app = lazyimport.LazyModule('nltk.app', locals(), globals())
chat = lazyimport.LazyModule('nltk.chat', locals(), globals())
corpus = lazyimport.LazyModule('nltk.corpus', locals(), globals())
draw = lazyimport.LazyModule('nltk.draw', locals(), globals())
toolbox = lazyimport.LazyModule('nltk.toolbox', locals(), globals())

# Optional loading

try:
    import numpy
except ImportError:
    pass
else:
    from nltk import cluster

# from nltk.downloader import download, download_shell
# try:
#     from six.moves import tkinter
# except ImportError:
#     pass
# else:
#     try:
#         from nltk.downloader import download_gui
#     except RuntimeError as e:
#         import warnings
#         warnings.warn("Corpus downloader GUI not loaded "
#                       "(RuntimeError during import: %s)" % str(e))

# explicitly import all top-level modules (ensuring
# they override the same names inadvertently imported
# from a subpackage)

# from nltk import ccg, chunk, classify, collocations
# from nltk import data, featstruct, grammar, help, inference, metrics
# from nltk import misc, parse, probability, sem, stem, wsd
# from nltk import tag, tbl, text, tokenize, translate, tree, treetransforms, util


рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЕрдХреНрд╖рдо рдЖрдпрд╛рдд рдЕрдВрддрддрдГ tkinter рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдХрд╛рд░рдг рд╣реИред рдпрджрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ import nltk import tkinter import nltk рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рджреБрд░реНрдШрдЯрдирд╛ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓рддреА рд╣реИ, рджреЛрдиреЛрдВ рд╕рдВрджрд░реНрднрд┐рдд рдЯрд┐рдВрдХрд░ред

рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ рдпреЗ рдкреИрдХреЗрдЬ рд╕реАрдзреЗ tkinter рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:

  • nltk.app
  • nltk.draw
  • nltk.sem

рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ __init__ , рдпреЗ рд╕рдорд╕реНрдпрд╛рддреНрдордХ рдЖрдпрд╛рдд рд╣реИрдВ, рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдЯрдВрдХреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЯреНрд░реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ

  • nltk.featstruct ( sem )
  • nltk.grammar ( featstruct )
  • nltk.tree ( grammar )
  • nltk.chunk ( chunk.named_entity > tree )
  • nltk.parse ( parse.bllip > tree )
  • nltk.tag ( tag.stanford > parse )
  • nltk.classify ( classify.senna > tag )
  • nltk.inference ( inference.discourse > sem , tag )
  • nltk.stem ( stem.snowball > corpus > corpus.reader.timit > tree )

рдзрдиреНрдпрд╡рд╛рдж @rpkilby , рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ!

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ https://stackoverflow.com/questions/16745507/tkinter-how-to-use-threads-to-preventing-main-event-loop-from-freezing

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд┐рдВрдХрд░ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдж рдмрд┐рдВрджреБ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬ рд╕рдХреЗрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рдПрдХ рдЫреЛрдЯреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд┐ tkinter рдХреА рдЬрд░реВрд░рдд рдХреЗ рдЕрдВрджрд░ tkinter рдЖрдпрд╛рдд рдХреЛ рджрдлрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдЙрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реБрдиреНрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рд╣реИред

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

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

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

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

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

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

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