我正在写一个涉及一些自然语言处理的原型系统。所以我使用的是nltk中的Stanford解析器。
因此,在view函数中,我将调用一个函数,该函数将加载解析器,并解析句子。但是重复加载这个解析器完全是浪费资源和时间。有没有办法在全球范围内维护解析器,并在我想要的任何时候使用它。
os.environ['STANFORD_PARSER'] = os.path.join(
os.path.expanduser('~'), 'stanford-parser/stanford-parser.jar')
os.environ['STANFORD_MODELS'] = os.path.join(
os.path.expanduser('~'), 'stanford-parser/stanford-parser-3.5.2-models.jar')
parser = nltk.parse.stanford.StanfordParser(
model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
parsed = parser.parse(sentence_which_differs_from_time_to_time)发布于 2015-06-11 06:29:49
将解析器创建代码放在模块级别(例如,在views.py中),而不是放在函数内部。它将在第一次导入模块时调用一次。
当然,根据您的服务器的工作方式,可能会有多个实例在运行,因此代码将在每次启动新进程时运行。如果启动时间是一个真正需要考虑的问题,那么您可能希望考虑在单独的进程中运行它并使用IPC。
但通常在模块导入时运行代码就足够了。
https://stackoverflow.com/questions/30766448
复制相似问题