据报道,在笔记本电脑中的Databrick上,spacy缺少jsonschema,但它已安装



在显然已成功加载Spacy的笔记本中的Azure上的Databricks上。

使用Matcher迭代传递给它的文档时出现以下代码错误。jsonschema被声明为丢失,但在检查时,jsonschema已安装,并且也使用安装

%sh
pip install jsonschema

以及后来使其成为特定版本的

%sh
pip install 'jsonschema>=2.6.0,<3.1.0'

两者都已成功安装。

这是错误消息:

---------------------------------------------------------------------------  
ValueError                                Traceback (most recent call last)  
<command-3008938145872993> in <module>  
---> 12     ALL_DATA_tmp     = [parse_train_data_sorted(d) for d in nlp.pipe(text_tmp_ls) ]  
13     ALL_DATA = ALL_DATA  + ALL_DATA_tmp  
14     print(f'length ALL_DATA : {len(ALL_DATA)}')    
<command-3008938145872993> in <listcomp>(.0)  
10     #ALL_DATA_tmp     = [parse_train_data(d) for d in  
nlp.pipe(text_tmp_ls) ]  
11   
---> 12     ALL_DATA_tmp     = [parse_train_data_sorted(d) for d in  nlp.pipe(text_tmp_ls) ]    
13     ALL_DATA = ALL_DATA  + ALL_DATA_tmp    
14     print(f'length ALL_DATA : {len(ALL_DATA)}')    

<command-3008938145872990> in parse_train_data_sorted(doc)  
27     prev_end = -1    
28   
---> 29     detections_unsorted = iterate_matchers(doc)  
30   
31     detections_sorted = sorted(detections_unsorted, key=lambda element:    (element[1], element[2]))  
<command-3008938145872990> in iterate_matchers(doc)  
5     '''  
6     detections = []  
----> 7     matcher = Matcher(nlp.vocab, validate=True)  
8     matcher.add("STANDARDS_9239",  None, *create_patterns_9239())  
9     detections = detections + [(doc[start:end].start_char,   doc[start:end].end_char, 'STANDARD_9239') for idx, start, end in matcher(doc)]  
matcher.pyx in spacy.matcher.matcher.Matcher.__init__()    
/databricks/python/lib/python3.7/site-packages/spacy/util.py in get_json_validator(schema)  
744     # TODO: replace with (stable) Draft6Validator, if available  
745     if jsonschema is None:  
--> 746         raise ValueError(Errors.E136)  
747     return jsonschema.Draft4Validator(schema)  
748 
ValueError: [E136] This additional feature requires the jsonschema library to be  
installed:  
pip install jsonschema  

我这样解决了问题:

  1. 在Databricks中定义Spacy库,确保未选择自动安装

蓝色spacy链接应指向以下内容:https://pypi.org/project/spacy/

  1. 启动版本7的ML集群。一旦开始

导航到库,然后手动选择并单击"在群集上安装"。

  1. 现在打开笔记本并运行单元格,

    %sh

    pip-install'jsonschema>2.6.0,<3.1.0’

  2. 在下一个单元格中运行

    %sh

    python-m spacy验证

这证实了集群上存在Spacy,但没有模型

  1. 在下一个单元格中安装型号

    %sh

    python-m spacy下载en_core_web_md

  2. 验证模型现在存在。

    %sh

    python-m spacy验证

  3. 在下一个单元格中运行以下导入python代码

    导入spacy

    导入json

8。在下一个单元运行和加载(在我的情况下(中等大小的英文模型时,您可能会为您的应用程序加载和运行不同大小的模型和语言。请参阅Spacy网站了解确切名称。

nlp = spacy.load("en_core_web_md")

9.最后,失败的代码现在可以工作了。

稍后,以前出错的代码现在可以工作了。

row_step =20
ALL_DATA = []
for i  in  range (0,df.shape[0] , row_step) :
start_pos = i 
end_pos   = i  + row_step  
print(f'{start_pos}   {end_pos}')
text_tmp_ls   = df.iloc[start_pos:end_pos]['text'].to_list()
ALL_DATA_tmp     = [parse_train_data_sorted(d) for d in nlp.pipe(text_tmp_ls) ]
ALL_DATA = ALL_DATA  + ALL_DATA_tmp
print(f'length ALL_DATA : {len(ALL_DATA)}')

现在,Spacy正在遍历文本列表,并使用Matcher查找实体,一次处理列表中20个项目的子集。这是一种避免内存破坏的便捷技术。。

我认为,所有shell pip命令都应该在任何可能依赖于它们的python导入之前运行。

相关内容

  • 没有找到相关文章

最新更新