当前位置: 首页 > news >正文

广西南宁网站建设公司重庆软件制作

广西南宁网站建设公司,重庆软件制作,惠州网站建设 惠州邦,手机制作ppt哪种软件好文章目录 项目背景数据清洗导包导入数据切分评论及标签Word2Vec构造w2v 数据切分模型训练查看结果 同类型项目 项目背景 项目的目的,是为了对情感评论数据集进行预测打标。在训练之前,需要对数据进行数据清洗环节,前面已对数据进行清洗&…

文章目录

  • 项目背景
  • 数据清洗
    • 导包
    • 导入数据
    • 切分评论及标签
    • Word2Vec
      • 构造w2v
    • 数据切分
    • 模型训练
    • 查看结果
  • 同类型项目


项目背景

项目的目的,是为了对情感评论数据集进行预测打标。在训练之前,需要对数据进行数据清洗环节,前面已对数据进行清洗,详情可移步至NLP_情感分类_数据清洗

下面对已清洗的数据集,用机器学习方案(w2v)进行处理

数据清洗

导包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from tqdm import tqdm
import pickle
import numpy as np
import gc
#import swifter
from sklearn.neural_network import MLPClassifier
import os
from sklearn.metrics import accuracy_score,f1_score,recall_score,precision_score
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn.tree import DecisionTreeClassifier
from lightgbm import LGBMClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn import svm

导入数据

df = pd.read_csv('data/sentiment_analysis_clean.csv')
df = df.dropna()

切分评论及标签

X_tfidf = df['text']
y_tfidf = df['label']

Word2Vec

可参考:NLP_词的向量表示Word2Vec 和 Embedding

Word2Vec是一个用于生成词向量(word vectors)的模型,它由谷歌在2013年开发。Word2Vec模型通过神经网络将词语转换为数值向量,这些向量捕捉了词语的语义信息,使得语义上相似的词在向量空间中的距离也相近。

Word2Vec主要有两种训练模型:

  1. CBOW(Continuous Bag of Words):这是一个预测单词的工具,给定一个单词前后文的单词,预测当前单词。CBOW模型不考虑单词在句子中的顺序。

  2. Skip-Gram:与CBOW相反,Skip-Gram模型给定一个单词,预测它前后文的单词。Skip-Gram通常比CBOW能更好地捕捉词语之间的关系,但是计算量更大。

Word2Vec模型的训练包括以下步骤:

  1. 初始化:随机初始化词向量和上下文向量。

  2. 训练:通过大量文本数据训练模型,使用梯度下降等优化算法不断更新词向量,以减少预测单词的误差。

  3. 优化:通过不断迭代,优化词向量,使得语义相似的词在向量空间中更接近。

训练完成后,Word2Vec可以用于各种自然语言处理任务,如词义消歧、句子相似度计算、机器翻译等。词向量可以作为输入特征,用于训练其他深度学习模型。

Word2Vec的词向量可以捕捉到一些语义规律,例如:

  • 国王 - 男人 + 女人 = 女王
  • 巴黎 - 法国 + 英国 = 伦敦

这些规律表明Word2Vec能够理解和表达词语之间的相对关系。

Word2Vec模型的优点包括:

  • 能够捕捉词语的语义信息。
  • 生成的词向量可以用于多种下游任务。
  • 模型相对简单,训练效率高。

缺点包括:

  • 无法捕捉词语的语法信息。
  • 无法处理一词多义的情况。
  • 需要大量的文本数据进行训练。

Word2Vec是词嵌入(word embedding)领域的一个重要里程碑,它启发了后续许多其他词嵌入模型的发展,如GloVe(Global Vectors for Word Representation)和FastText。

Word2Vec模型在训练时有多个参数可以设置,以下是一些常见的参数及其意义:

  1. vector_size (或 size):这是生成的词向量的维度。较小的维度可能无法捕捉足够的细节,而较大的维度可能会增加计算成本并且导致过拟合。常见的维度设置有100、200、300等。

  2. window (或 windowSize):上下文窗口的大小,即在当前单词的前后考虑多少个单词。较大的窗口可以捕捉更远的依赖关系,但也可能包含更多噪声。

  3. min_count:忽略出现次数低于此值的单词。这可以用来过滤掉一些出现频率非常低的单词,以提高训练效率。

  4. negative (或 negativeSize):在训练中使用负采样的词汇数量。负采样是一种优化技术,用于提高模型的训练效率。

  5. iter (或 epochs):训练数据集的迭代次数。较大的迭代次数可以提高模型的性能,但也需要更多的计算资源。

  6. batch_size:每次模型更新时处理的单词数量。较大的批量大小可以提高内存的使用效率,但也可能影响模型的收敛速度。

  7. alpha:学习率。较高的学习率可以加快训练速度,但可能导致模型无法收敛。

  8. min_alpha:学习率的下限。在训练过程中,学习率会逐渐减小到这个值。

  9. sg:训练模式,0 表示使用CBOW模型,1 表示使用Skip-Gram模型。

  10. hs (或 hierarchicalSampling):如果设置为1,则使用分层采样。分层采样是一种考虑单词频率的采样方法,对高频词进行下采样,以提高模型对低频词的学习效率。

  11. negative_sampling:如果设置为1,则使用负采样。负采样是一种优化技术,通过只采样一部分负例来提高训练效率。

  12. cbow_mean:当使用CBOW模型时,如果设置为1,则对上下文的词向量取平均,而不是单独考虑每个词。

  13. hashfx:如果设置为1,则使用固定的hash函数来初始化词向量。

  14. epoch:训练周期的数量。

  15. threads:训练过程中使用的线程数。

  16. total_words:训练过程中处理的总单词数。

  17. model:保存模型的文件名。

  18. input:训练数据的输入文件。

这些参数可以根据具体的应用场景和计算资源进行调整,以达到最佳的训练效果。

构造w2v

from gensim.models import Word2Vec 
word2vec_model = Word2Vec(X_tfidf,  vector_size=16, sg=1, window=5, seed=2020, workers=24, min_count=1, epochs=1) 
words = list(word2vec_model.wv.index_to_key)
vector_size = word2vec_model.wv.vector_size
word_vectors = np.zeros((len(words), vector_size))
for i, word in enumerate(words):word_vectors[i, :] = word2vec_model.wv[word]# 构建文档向量
def text_to_vec(text):words_in_text = text.split()  # 假设文本是通过空格分词的text_vec = np.zeros(vector_size)word_count = 0for word in words_in_text:if word in word2vec_model.wv:text_vec += word2vec_model.wv[word]word_count += 1if word_count > 0:text_vec /= word_countreturn text_vec# 将所有文本数据转化为向量
text_vectors = np.array([text_to_vec(text) for text in X_tfidf])

数据切分

from sklearn.model_selection import train_test_split, StratifiedKFold
# 这里指定了random_state是为了保证每次切分数据集的结果都是一样的
Xidf_train, Xidf_test, yidf_train, yidf_test = train_test_split(text_vectors, y_tfidf,test_size=0.2,random_state=2024)del df,array_TFIDF
gc.collect()

模型训练

def train_model(model, X_train, X_test, y_train, y_test):dic = {'lr':'Logistic Regression','nb':'Naive Bayes','svm':'Support Vector Machine','dt':'Decision Tree','rf':'Random Forest','lgb':'LightGBM'}train_acc, test_acc = [], []if model == 'lr':clf = LogisticRegression(C=0.01, solver='liblinear')elif model == 'nb':clf = MultinomialNB(alpha=100)elif model == 'svm':clf = svm.LinearSVC(C=0.01)elif model == 'dt':clf = DecisionTreeClassifier(max_depth=100, min_samples_split= 2)elif model == 'rf':clf = RandomForestClassifier(max_depth=100,min_samples_split=5)elif model == 'lgb':clf = LGBMClassifier(learning_rate=1.0)else:print('Model doesn\'t exist')clf.fit(X_train, y_train)# predict using train datatrain_pred = clf.predict(X_train)train_acc = accuracy_score(y_train, train_pred)# predict using test datatest_pred = clf.predict(X_test)test_acc = accuracy_score(y_test, test_pred)   print()print("Model: ", dic[model])print("Training accuracy: {}".format(train_acc))print("Test accuracy: {}".format(test_acc))print()return {'model_name':dic[model],'Train Accuracy':train_acc,'Test Accuracy':test_acc}

查看结果

metric_df = pd.DataFrame(columns=['model_name','Train Accuracy','Test Accuracy'])
for model in ['lr', 'nb', 'svm', 'dt', 'rf', 'lgb']:metric = train_model(model ,Xidf_train, Xidf_test, yidf_train, yidf_test)# 将metric转换成一个DataFramemetric_df = pd.concat([metric_df, pd.DataFrame([metric])], ignore_index=True)

在这里插入图片描述

metric_df

在这里插入图片描述

同类型项目

阿里云-零基础入门NLP【基于机器学习的文本分类】

阿里云-零基础入门NLP【基于深度学习的文本分类3-BERT】
也可以参考进行学习


学习的参考资料:
B站

http://www.yayakq.cn/news/730645/

相关文章:

  • 个人网站建设价格表福田做网站需要多少钱
  • 重庆哪家制作网站好做软装素材从哪些网站找
  • 精湛的网站建设排行榜业务型网站首页
  • 网站建设费 摊销处理用哪个软件做网站
  • 在互联网上建设网站可选择的方案有电子书新手学做网站
  • 建立网站的第一步是建立什么开封网站建设公司
  • 汽车之家网站是谁做的广西网站建设哪家有
  • 网站服务器去哪买的wordpress给图片加特效
  • 备案网站有哪些资料浙江企业响应式网站建设
  • 推上网站重庆天古装饰公司
  • 科创纵横 网站建设网站开发中标签栏的图标一般都在那个文件中写代码
  • 关于网站建设交易流程的描述一句话app wordpress类似
  • 佛山网站营销wordpress外链插件
  • 网站页面的滑动怎么做wordpress 内涵段子
  • 14年网站开发经验怎么创建个人网页
  • 网站建设的总体需求分析北京网站建设飞沐
  • 深圳网站设计模板工程建设沈阳网
  • 青岛网站空间城市人家装饰公司怎么样
  • 电子商务网站开发设计报告书焦作 做 网站
  • 浙江建设厅官方网站黑龙江住房和城乡建设部网站
  • 长沙建设局网站中国建设银行官网开户行查询
  • 沧州高端网站制作园州网站建设
  • 网站的优化是什么意思贵州省住房建设部网站
  • linux wordpress 建站教程新网站注册
  • 湖北seo网站推广网站建设工作室+怎么样
  • 仿微博网站模板c2c的电子商务网站有哪些
  • 大英哪里有做网站的wordpress首页调用文章页图片
  • 潍坊市建设工程质量安全监督站网站公司建设官方网站
  • 奇迹网站建设多少钱深圳保障房排名查询
  • 网站生成器怎么做创业网站开发