Python是一種高級(jí)編程語(yǔ)言,具有強(qiáng)大的數(shù)據(jù)分析能力。其中,詞嵌入(word embedding)技術(shù)是一種重要的自然語(yǔ)言處理技術(shù),可以將文本數(shù)據(jù)轉(zhuǎn)換為向量,便于后續(xù)處理。Python 中可以使用gensim 和scikit-learn 等庫(kù)進(jìn)行詞向量轉(zhuǎn)換。
使用gensim 進(jìn)行詞向量轉(zhuǎn)換:
from gensim.models import Word2Vec sentences = [["python", "是", "一種", "高級(jí)", "編程語(yǔ)言"], ["它", "的", "應(yīng)用", "廣泛", "于", "數(shù)據(jù)", "分析"]] model = Word2Vec(sentences, size=10, window=5, min_count=1, workers=4) print(model.wv["python"])
以上代碼首先導(dǎo)入gensim 中的Word2Vec 模型,然后將文本數(shù)據(jù)以二維列表的形式傳入Word2Vec 模型。其中size 表示生成的詞向量維數(shù),window 表示對(duì)于一個(gè)詞,其上下文詞匯的最大距離,min_count 表示過濾掉出現(xiàn)次數(shù)低于min_count 的詞,workers 表示處理器數(shù)量。模型訓(xùn)練完成后,可以使用model.wv["python"] 打印出“python” 這個(gè)詞的向量表示。
使用scikit-learn 進(jìn)行詞向量轉(zhuǎn)換:
from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer corpus = ["python 是 一種 高級(jí) 編程語(yǔ)言", "它 的 應(yīng)用 廣泛 于 數(shù)據(jù) 分析"] count_vect = CountVectorizer() X_train_counts = count_vect.fit_transform(corpus) tfidf_transformer = TfidfTransformer() X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts) print(X_train_tfidf.toarray())
以上代碼首先導(dǎo)入scikit-learn 中的CountVectorizer 和TfidfTransformer 類,然后將文本數(shù)據(jù)以列表的形式傳入CountVectorizer 類,使用fit_transform 方法將其轉(zhuǎn)換為詞頻矩陣。隨后,使用TfidfTransformer 類將詞頻矩陣轉(zhuǎn)換為TF-IDF 矩陣。最后,使用toarray 方法將TF-IDF 矩陣轉(zhuǎn)化為數(shù)值矩陣,即可得到文本的詞向量表示。