sense2vec---基于語境的詞向量(Contextually-keyed word vectors)

1 引言

自然語言處理的重大突破發生在大約2007年,以Google公司為代表的研究提出了一種以詞矢量來表示語義相關的方法Word2Vec。建立在Word2Vec的基礎之上,使用N-gram技術,可以構造出語義相關的詞組,<語義相似模型(Doc2Vec)在雙語教學中的應用>顯示了這樣的改進,這種改進對英語教學和雙語教學具有非常重要的意義。當原始數據集比較“干凈”,這種方法能夠產生出很好的結果。不過,word2vec沒有考慮詞性的特征,于是Trask等人(2015)提出了sense2vec增強了詞匯的語義表達與關聯,通過引入詞性,NER等特征來區分詞匯之間的差別。大量的實踐證明,sense2vec產生的結果比word2vec產生的結果好。本文討論了構造sense2vec模型的過程。 


2 sense2vec測試

sense2vec的最新版本是2.0.0,自帶了兩個預訓練模型:s2v_reddit_2019_lg(4G)和s2v_reddit_2015_md(573M)。測試使用了前者的大模型。

(1) 查詢natural language processing得出的結果

machine_learning; NLP; 

computer_vision; text_mining; 

deep_learning; 

Machine_Learning; 

speech_recognition; 

image_generation; 

machine_learning_algorithms; 

deep_reinforcement_learning

(2) 查詢mining engineering得出的結果:

geological_engineering;

chemical_engineering;

minor_or_double_major;

engineering_geology;

BME_degree;

顯然第二個試驗的結果沒有第一個試驗的結果好,這是因為這個數據集中沒有包含我們專業方面的話題,因此需要訓練我們自己的數據集。


3 訓練sense2vec模型

首先試驗了一個5M的小數據集來訓練,使用en_core_web_trf模型分詞。命令行的操作非常詭異,因此把這個過程記錄下來。

(1) 使用spaCy解析原始文本并輸出Doc對象[01_parse.py];

python 01_parse.py set1.txt 01

其中set1.txt是原始文本文件名,01是產生Doc的目錄, 產生出文件set1-1.spacy。


(2) 加載(1)產生的經過解析的Doc對象集合,并以sense2vec格式輸出文本文件(每行一個句子,合并具有意義的短語) [02_preprocess.py];

python 02_preprocess.py ./01/set1-1.spacy 02

其中./01/set1-1.spacy是(1) 產生的文件,02是輸出文本的目錄, 產生出文件set1-1.s2v。


(3) 使用FastText訓練矢量[04_fasttext_train_vectors.py];

python 04_fasttext_train_vectors.py 04 ./02

其中./02是上一步驟產生的目錄,作為本步驟的輸入, 04是新產生的目錄,產生出兩個文件: vectors.txt和vocab.txt。


(4) 加載向量和頻率,輸出sense2vec分量,它通過Sense2Vec.from_disk加載[05_export.py]。

python 05_export.py ./04/vectors.txt ./04/vocab.txt out

其中out是新產生的目錄,保存著最后產生出來的模型,如下圖所示。

sense2vec---基于語境的詞向量(Contextually-keyed word vectors)的圖1

至此訓練過程完成。步驟(1)最耗時,用了23分鐘。訓練結果如下:

(1) fracture的語義相似:

network; DFN; discrete;

aperture; hydraulic; length; 

connectivity; fluid;

heterogeneous; voronoi;

(2) PFC3D的語義相似:

code; particle; Itasca;

BPM; PFC; assembly; PFC2D;

Pierce; UDEC; SJM; bonded;

Cundall; 3DEC

可能是數據量太小或者是數據不干凈,本次試驗沒有產生出太多詞組,doc.noun_chunks的作用沒有顯現出來,沒有生成預期的結果。改en_core_web_lg模型分詞的效果相對較好:

(1) Discrete_Fracture_Network:

pathways; DFN;

BPM; algorithm; SRM

(2) Monte_Carlo:

reliability; probabilistic;

stochastic; simulation; DFN


4 結束語

通過訓練sense2vec可以構造出我們專業的詞矢量。不過要得到最好的效果,需要高質量的大型數據集。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
1