求教:Pycharm中报错HanLP版本不匹配

如下图所示,运行demo_ner_dict.py时报错:提示需要升级为最新版本2.1.0-beta.17。
然而事实是我已在pip中升级为最新版本,且pycharm库中也显示的是17版本,不知为何报错依旧。
新人一个,恳请大家不吝赐教,感激涕零。

以下为错误日志:

OS: Windows-10-10.0.22000-SP0
Python: 3.8.3
PyTorch: 1.11.0+cpu
HanLP: 2.1.0-beta.16
Traceback (most recent call last):
File “C:/Users/77178/PycharmProjects/HanLP/plugins/hanlp_demo/hanlp_demo/zh/demo_ner_dict.py”, line 8, in
HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ERNIE_GRAM_ZH)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp_init_.py”, line 43, in load
return load_from_meta_file(save_dir, ‘meta.json’, verbose=verbose, **kwargs)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\utils\component_util.py”, line 170, in load_from_meta_file
raise e from None
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\utils\component_util.py”, line 98, in load_from_meta_file
obj.load(save_dir, verbose=verbose, **kwargs)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\common\torch_component.py”, line 178, in load
self.model = self.build_model(
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\components\mtl\multi_task_learning.py”, line 441, in build_model
transformer_module = encoder.module(training=training)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\layers\embeddings\contextual_word_embedding.py”, line 160, in module
return ContextualWordEmbeddingModule(self.field,
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\layers\embeddings\contextual_word_embedding.py”, line 46, in init
super().init(transformer, transformer_tokenizer, average_subwords, scalar_mix, word_dropout,
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\layers\transformers\encoder.py”, line 73, in init
transformer = AutoModel_.from_pretrained(transformer, training=training or not trainable,
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\layers\transformers\pt_imports.py”, line 22, in from_pretrained
pretrained_model_name_or_path = get_model_mirror(pretrained_model_name_or_path)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\layers\transformers\resource.py”, line 32, in get_model_mirror
return get_resource(m)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\utils\io_util.py”, line 340, in get_resource
path = download(url=path, save_path=realpath, verbose=verbose)
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\utils\io_util.py”, line 185, in download
raise e from None
File “C:\Users\77178\PycharmProjects\HanLP\hanlp\utils\io_util.py”, line 155, in download
downloader.start_sync()
File “C:\Users\77178\PycharmProjects\HanLP\venv\lib\site-packages\hanlp_downloader\down.py”, line 114, in start_sync
self.run()
File “C:\Users\77178\PycharmProjects\HanLP\venv\lib\site-packages\hanlp_downloader\down.py”, line 154, in run
raise HTTPError(self.url, r.status_code, f’Internet error’, r.headers, None)
urllib.error.HTTPError: HTTP Error 404: Internet error
Download failed due to <HTTPError 404: ‘Internet error’>.
Please upgrade to the latest version (2.1.0b17) with:

pip install -U hanlp

pycharm 的环境设置有问题?日志 已经说了是 HanLP: 2.1.0-beta.16

而不是你说的 2.1.0-beta.17。所以大概率是 识别有问题。要不删除 这个包重新安装。

HanLP 是不是 一点一点升级上来的?删除完 重装一次。

十分感谢您的建议,但我试过了,无论是pip升级conda升级还是在pycharm中升级后依旧显示我的版本停留于2.1.0-beta.16——尽管我今天已经更新到了19。

  1. 可能是你git clone / checkout了一个较旧的HanLP版本,如果是这样,你应该git pull而不是pip update。
  2. 也可能是你的PyCharm用的interpreter和你执行pip时的不同。
1 Like

十分感谢何晗老师的解答!git pull之后问题解决了!

借此机会希望能向您请教一个我正在学习和钻研的问题:*对于书中8.6章节“自定义领域命名实体识别”,在多(小)语种环境下是否也能利用HanLP进行诸如生语料标注(onto notes词类体系自定义新标签)、训练小语种自定义领域模型的任务呢?

P.S.对比了多个NLP项目之后被HanLP的简洁性深深吸引并决心利用其来完成研究,由于注意到您在HanLP文档中标注到除中英阿以外的语言在处理任务时准确性较低,故提出此困惑。也许该问题过于粗浅,无论您回复与否,再次向您表达我的感谢!

当然可以,HanLP开源了全部的训练/评测模块,设计上与语言/领域无关。
除了中英阿拥有NER训练数据之外,其他语言都是靠multilingual pre-trained Transformer带来的zero-shot learning(零样本学习)才拥有少量的预测能力,聊胜于无。如果要用于生产,多多少少还是需要人工标注一些语料的。这一块的研究方向包括远程监督、active learning、transfer learning、prompting等等,学术上还是大有可为的。

1 Like

再次感谢何晗老师,期待能与您进行更多的交流!

1 Like