组合特征(一)tfidf(word+article)

本文详细介绍了一种基于TF-IDF的特征工程方法,通过结合文章内容与关键词,构建更全面的特征向量,适用于文本分类等机器学习任务。文章首先进行数据预处理,然后利用TF-IDFVectorizer实现特征提取,最后将训练集与测试集的特征矩阵保存为本地文件,便于后续模型训练。
"""
将tfidf(word)和tfidf(article)拼接成新的特征

"""

import pickle
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer

"""=====================================================================================================================
1 数据预处理
"""
read_start_time = time.time()
df_train=pd.read_csv('train_set.csv')
df_test=pd.read_csv('test_set.csv')


#df_train.drop(df_train.columns[0],axis=1,inplace=True)

df_train["word_article"] = df_train["article"].map(str) +' '+ df_train["word_seg"].map(str)
df_test["word_article"] = df_test["article"].map(str) +' ' + df_test["word_seg"].map(str)
y_train = (df_train['class'] - 1).values

"""=====================================================================================================================
2 特征工程
"""
vectorizer = TfidfVectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9, sublinear_tf=True)
vectorizer.fit(df_train['word_article'])
x_train = vectorizer.transform(df_train['word_article'])
x_test = vectorizer.transform(df_test['word_article'])

"""=====================================================================================================================
3 保存至本地
"""
data = (x_train, y_train, x_test)
with open('./tfidf(word+article).pkl', 'wb') as f:
	pickle.dump(data, f)

### 使用 TFIDF 和 BiLSTM 进行情感分析 #### 数据预处理 为了实现基于TF-IDF和双向长短时记忆网络(BiLSTM)的情感分析,数据预处理阶段至关重要。文本需被清理并转换成适合输入模型的形式。此过程通常涉及去除停用词、标点符号以及执行词干提取或词形还原操作。 #### 特征向量化 利用TF-IDF方法可以有效地将文档转化为数值型特征矩阵。对于给定的词语\(t\)在特定文件\(d\)中的频率(TF),乘以其逆文档频率(IDF)[^2],能够突出那些在整个语料库中较少见但在当前文档里频繁出现的重要词汇。这种加权方案有助于捕捉不同评论之间的细微差别,从而提高分类性能。 ```python from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer(max_features=5000, stop_words='english') X_tfidf = vectorizer.fit_transform(corpus) ``` #### 构建BiLSTM模型 构建个简单的Keras/TensorFlow架构用于情感预测: ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Embedding, Bidirectional, LSTM, Dropout model = Sequential() # 嵌入层 model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_len)) # 双向LSTM层 model.add(Bidirectional(LSTM(units=lstm_units, return_sequences=False))) model.add(Dropout(rate=dropout_rate)) # 输出层 model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) ``` 这里嵌入层负责把离散化的单词索引映射到连续空间内的密集表示;而BiLSTM则允许网络记住序列前后的内容,这对于理解上下文关系特别有用[^4]。 #### 训练与评估 完成上述准备工作之后,就可以使用标记好的训练集对模型进行拟合,并通过验证集调整超参数直至获得满意的泛化能力。最后,在测试集上评价最终版本的表现情况。 ```python history = model.fit(X_train, y_train, epochs=num_epochs, batch_size=batch_size, validation_data=(X_val, y_val), verbose=1) test_loss, test_acc = model.evaluate(X_test, y_test) print(f'Test Accuracy: {test_acc}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值