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是新產生的目錄,保存著最后產生出來的模型,如下圖所示。
至此訓練過程完成。步驟(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可以構造出我們專業的詞矢量。不過要得到最好的效果,需要高質量的大型數據集。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















