我想知道是否可以更新Spacys默認詞彙表。我試圖做的是這樣的:對我自己的語料庫與gensim 更新spaCy詞彙表
nlp.vocab.load_vectors_from_bin_loc(\path)
但自從我的文集很多的話大家還不
- 運行word2vec t在spacys默認詞彙表我無法使用導入的向量。有沒有一種(簡單)的方式來添加這些缺失的類型?
編輯:
我意識到混合載體可能會有問題。所以我的問題是:
如何將一個自定義詞彙導入到spacy?
我想知道是否可以更新Spacys默認詞彙表。我試圖做的是這樣的:對我自己的語料庫與gensim 更新spaCy詞彙表
nlp.vocab.load_vectors_from_bin_loc(\path)
但自從我的文集很多的話大家還不
編輯:
我意識到混合載體可能會有問題。所以我的問題是:
如何將一個自定義詞彙導入到spacy?
這在下個版本中會更容易,這個版本應該在本週出來---我只是在完成測試。現在:
默認情況下,spaCy會加載一個data/vocab/vec.bin文件,其中「data」目錄位於spacy.en模塊目錄中 使用spacy.vocab從bz2文件創建vec.bin文件.write_binary_vectors 將運行時替換spaCy的vec.bin文件或調用nlp.vocab.load_rep_vectors與二進制文件的路徑。 上面有點不方便,但二進制文件格式要小得多,加載速度要快,而且矢量文件相當大。請注意,GloVe以gzip格式分發,而不是bzip。
出於興趣:您是使用GloVe矢量,還是使用您自己的數據進行訓練?如果你自己的數據,你使用Gensim?我想讓這個過程更容易,所以我會很感激你想看到什麼工作流程的建議。在運行時
加載新的載體,任選地將他們
import spacy.vocab
def set_spacy_vectors(nlp, binary_loc, bz2_loc=None):
if bz2_loc is not None:
spacy.vocab.write_binary_vectors(bz2_loc, binary_loc)
write_binary_vectors(bz2_input_loc, binary_loc)
nlp.vocab.load_rep_vectors(binary_loc)
更換vec.bin,讓您的載體將被默認加載
from spacy.vocab import write_binary_vectors
import spacy.en
from os import path
def main(bz2_loc):
bin_loc = path.join(path.dirname(spacy.en.__file__), 'data', 'vocab', 'vec.bin')
write_binary_vectors(bz2_loc, bin_loc)
if __name__ == '__main__':
plac.call(main)
這將是冷靜輕鬆地通過gensim以可用的格式轉儲spacy.vocab矢量,在新的語料庫上用gensim重新訓練,然後在Spacy中重新加載。這目前是直截了當的? – geoffn91