我有一個資料集,一個特征是文本,還有 4 個特征。Sentence-Bert 向量化器將文本資料轉換為張量。我可以通過機器學習分類器直接使用這些稀疏矩陣。我可以用張量替換文本列嗎?而且,我如何訓練模型。下面的代碼是我如何將文本轉換為向量。
model = SentenceTransformer('sentence-transformers/LaBSE')
sentence_embeddings = model.encode(X_train['tweet'], convert_to_tensor=True, show_progress_bar=True)
sentence_embeddings1 = model.encode(X_test['tweet'], convert_to_tensor=True, show_progress_bar=True)
uj5u.com熱心網友回復:
假設這是您的資料
X_train = pd.DataFrame({
'tweet':['foo', 'foo', 'bar'],
'feature1':[1, 1, 0],
'feature2':[1, 0, 1],
})
y_train = [1, 1, 0]
并且您愿意將其與sklearnAPI(交叉驗證、管道、網格搜索等)一起使用。有一個名為的實用程式ColumnTransformer可以使用用戶定義的任意函式將 Pandas 資料幀映射到所需的資料!您需要做的是定義一個函式并sklearn.transformer從中創建一個官員。
model = SentenceTransformer('mrm8488/bert-tiny-finetuned-squadv2') # model named is changed for time and computation gians :)
embedder = FunctionTransformer(lambda item:model.encode(item, convert_to_tensor=True, show_progress_bar=False).detach().cpu().numpy())
之后,您將能夠像使用任何其他轉換器一樣使用轉換器并將您的文本列映射到語意空間,例如:
preprocessor = ColumnTransformer(
transformers=[('embedder', embedder, 'tweet')],
remainder='passthrough'
)
X_train = preprocessor.fit_transform(X_train) # X_train.shape => (len(df), your_transformer_model_hidden_dim your_features_count)
X_train將是您想要的資料。與sklearn生態系統一起使用是合適的。
gnb = GaussianNB()
gnb.fit(X_train, y_train)
輸出:
GaussianNB(priors=None, var_smoothing=1e-09)
警告:數字特征和推文嵌入應該屬于同一個SCALE,否則一些特征會支配其他特征并降低性能
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323200.html
