fastnlp無法使用spacy,報錯[E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.


fastnlp無法使用spacy,報錯[E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

此方法只能使用與fastnlp中,不適用spacy

spacy沒有辦法修改,只能修改fastnlp調用spacy處的地方,將spacy調用的地方設置成為已經下載好的en_core_web_sm。怎么修改?

找到報錯的位置,然后找到load=‘en’的地方,改成en_core_web_sm即可。

fastNLP版本為0.6.0,spacy為最新版2.3.5,注意:en_core_web_sm2.3.0就可以使用,百度網盤文末po出。

暫時記錄下fastnlp調用處的修改:

  1. fastNLP->io>pipe->utils.py 83行 if lang != 'en': 改為 if lang != 'en_core_web_sm':,因為pipe有很多類,所以都要修改,可以ctrl+F,查找'en'然后修改即可
  2. fastNLP->io>pipe->classification.py 40行同樣改成1一樣的即可。

實驗代碼:

from fastNLP.io import SST2Pipe

pipe = SST2Pipe()
databundle = pipe.process_from_file()
vocab = databundle.get_vocab('words')
print(databundle)
print(databundle.get_dataset('train')[0])
print(databundle.get_vocab('words'))

在這里插入圖片描述

en_core_web_sm2.3.1鏈接:https://pan.baidu.com/s/1U5BTLU1jO0TecESHJ0X7eA
提取碼:fow9


但是有一個問題就是,使用spacy官方的代碼仍然不能分句:

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp('這是一個句子。')

# tokenize功能
for token in doc:
    print(token)

輸出:

這是一個句子

不知道為什么。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM