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

杭州市和城乡建设委员会网站平台推广员是做什么的

杭州市和城乡建设委员会网站,平台推广员是做什么的,保定建网站公司,网站备案需要几天目录 TextCNN 的由来 TextCNN 的应用 1. 文本分类 2. 情感分析 3. 推荐系统 4. 语义匹配 5. 多标签分类 TextCNN 的优势 代码解析 1. __init__: 初始化函数 2. build_model: 搭建模型架构 3. fit: 训练模型 4. evaluate: 评估模型 5. single_predict: 单个文本预测 6.小结 Text…

目录

TextCNN 的由来

TextCNN 的应用

1. 文本分类

2. 情感分析

3. 推荐系统

4. 语义匹配

5. 多标签分类

TextCNN 的优势

代码解析

1. __init__: 初始化函数

2. build_model: 搭建模型架构

3. fit: 训练模型

4. evaluate: 评估模型

5. single_predict: 单个文本预测

6.小结


TextCNN 的由来

TextCNN 是一种用于文本分类的卷积神经网络(CNN)模型,由 Yoon Kim 在 2014 年的论文《Convolutional Neural Networks for Sentence Classification》中首次提出。其核心思想是将卷积神经网络(CNN)从图像领域引入到自然语言处理(NLP)领域,利用卷积操作提取文本中的局部特征(类似于 n-gram),从而实现高效的文本分类任务

在提出 TextCNN 之前,CNN 主要应用于图像领域,而 NLP 领域更多使用循环神经网络(RNN)及其变体(如 LSTM)。TextCNN 的出现为 NLP 提供了一种新的视角,证明了 CNN 在处理文本数据时的高效性和有效性

TextCNN 的应用

TextCNN 在自然语言处理领域有广泛的应用,主要包括以下几个方面:

1. 文本分类

TextCNN 最经典的应用是文本分类任务,例如情感分析、新闻分类、垃圾邮件检测等。通过卷积操作提取文本中的关键特征,再通过池化和全连接层进行分类

2. 情感分析

TextCNN 可以用于对文本的情感倾向进行分类,例如判断影评是正面还是负面。通过提取文本中的局部特征,TextCNN 能够捕捉到情感相关的关键词和短语

3. 推荐系统

TextCNN 可以用于推荐系统中的文本处理,例如对用户评论进行分类,从而推荐用户可能感兴趣的内容

4. 语义匹配

TextCNN 可以用于语义匹配任务,例如判断两个句子是否语义相似。通过提取句子的局部特征,TextCNN 能够捕捉到句子中的关键信息

5. 多标签分类

TextCNN 也可以用于多标签分类任务,例如对文本进行多主题分类。通过调整模型的输出层,TextCNN 可以同时预测多个标签

TextCNN 的优势

  1. 高效性:TextCNN 的结构相对简单,计算效率高,适合处理大规模文本数据
  2. 局部特征提取:通过卷积操作,TextCNN 能够提取文本中的局部特征(类似于 n-gram),从而捕捉到文本中的关键信息
  3. 灵活性:TextCNN 支持多种卷积核大小,可以灵活调整模型的参数以适应不同的任务

代码解析

# 步骤 7 定义TextCNN 主类,包括模型构建、训练、测试函数
class TextCNN(object): def __init__(self, config): 
        self.config = config 
        self.preprocessor = Preprocessor(config) 
        self.class_name = {0: '负面', 1: '正面'} def build_model(self): #模型架构搭建
        idx_input = tf.keras.layers.Input((self.config.max_seq_len,)) 
        input_embedding = tf.keras.layers.Embedding(len(self.preprocessor.token2idx), 
        self.config.embedding_dim, 
        input_length=self.config.max_seq_len, 
            mask_zero=True)(idx_input)         convs = []     for kernel_size in [3, 4, 5]: 
            c = tf.keras.layers.Conv1D(128, kernel_size, activation='relu')(input_embedding) 
            c = tf.keras.layers.GlobalMaxPooling1D()(c) 
            convs.append(c)         fea_cnn = tf.keras.layers.Concatenate()(convs)         fea_dense = tf.keras.layers.Dense(128, activation='relu')(fea_cnn) 
        output = tf.keras.layers.Dense(2, activation='softmax')(fea_dense)         model = tf.keras.Model(inputs=idx_input, outputs=output) 
        model.compile(loss='sparse_categorical_crossentropy', 
            optimizer='adam',
            metrics=['accuracy'])         model.summary()         self.model = model def fit(self, x_train, y_train, x_valid=None, y_valid=None, epochs=5, batch_size=128, **kwargs): #训练
        self.build_model() 
        x_train = self.preprocessor.transform(x_train) if x_valid is not None and y_valid is not None: 
            x_valid = self.preprocessor.transform(x_valid)         self.model.fit( 
            x=x_train, 
            y=y_train, 
            validation_data= (x_valid, y_valid) if x_valid is not None and y_valid is not None else None, 
            batch_size=batch_size, 
            epochs=epochs, **kwargs )def evaluate(self, x_test, y_test): #评估
        x_test = self.preprocessor.transform(x_test) 
        y_pred_probs = self.model.predict(x_test) 
        y_pred = np.argmax(y_pred_probs, axis=-1) 
        result = classification_report(y_test, y_pred, target_names=['负面', '正面']) print(result) def single_predict(self, text): #预测
        input_idx = self.preprocessor.transform([text]) 
        predict_prob = self.model.predict(input_idx)[0] 
        predict_label_id = np.argmax(predict_prob) 
        predict_label_name = self.class_name[predict_label_id] 
        predict_label_prob = predict_prob[predict_label_id] return predict_label_name, predict_label_prob

图片引用【深度学习】textCNN论文与原理-CSDN博客

TextCNN 类是一个基于卷积神经网络(Convolutional Neural Network, CNN)的文本分类模型,主要用于对文本数据进行情感分析、主题分类等任务。

1. __init__: 初始化函数

def __init__(self, config): 
    self.config = config 
    self.preprocessor = Preprocessor(config) 
    self.class_name = {0: '负面', 1: '正面'} 

  • 作用
    • 初始化 TextCNN 类的实例。
    • 接收配置参数 config,用于配置模型的超参数。
    • 初始化预处理器 Preprocessor,用于对文本数据进行预处理(如分词、转换为词索引等)。
    • 定义分类结果的标签名称,0 表示“负面”,1 表示“正面”。
  • 关键点
    • config 是模型的配置参数,通常包含最大序列长度 (max_seq_len)、词嵌入维度 (embedding_dim) 等。
    • Preprocessor 是一个外部类,负责对文本数据进行预处理,包括分词、转换为词索引等操作。
2. build_model: 搭建模型架构

def build_model(self): # 模型架构搭建
    idx_input = tf.keras.layers.Input((self.config.max_seq_len,)) 
    input_embedding = tf.keras.layers.Embedding(len(self.preprocessor.token2idx), 
        self.config.embedding_dim, 
        input_length=self.config.max_seq_len, 
        mask_zero=True)(idx_input)     convs = []     for kernel_size in [3, 4, 5]: 
        c = tf.keras.layers.Conv1D(128, kernel_size, activation='relu')(input_embedding) 
        c = tf.keras.layers.GlobalMaxPooling1D()(c) 
        convs.append(c)     fea_cnn = tf.keras.layers.Concatenate()(convs)     fea_dense = tf.keras.layers.Dense(128, activation='relu')(fea_cnn) 
    output = tf.keras.layers.Dense(2, activation='softmax')(fea_dense)     model = tf.keras.Model(inputs=idx_input, outputs=output) 
    model.compile(loss='sparse_categorical_crossentropy', 
        optimizer='adam',
        metrics=['accuracy'])     model.summary()     self.model = model 

  • 作用:搭建 TextCNN 模型的架构。
  • 模型架构
    • 输入层
      • 使用 tf.keras.layers.Input 定义输入层,输入形状为 (max_seq_len,)(最大序列长度)。
      • 输入数据为词索引序列。
    • 嵌入层
      • 使用 tf.keras.layers.Embedding 将词索引转换为词向量。
      • 参数:
        • input_dim=len(self.preprocessor.token2idx):词典大小。
        • output_dim=self.config.embedding_dim:词向量维度。
        • input_length=self.config.max_seq_len:输入序列长度。
        • mask_zero=True:对填充(0)进行掩码处理,避免影响模型训练。
    • 卷积层
      • 使用三种不同大小的卷积核(3、4、5)提取文本特征。
      • 每个卷积层的输出通过 GlobalMaxPooling1D 层进行全局最大池化,保留最重要的特征。
    • 全连接层
      • 将卷积层的输出拼接后,通过一个全连接层(Dense)进行特征融合。
      • 最后使用 softmax 激活函数输出分类概率。
    • 模型编译
      • 使用 sparse_categorical_crossentropy 作为损失函数。
      • 使用 adam 作为优化器。
      • 监控指标为准确率(accuracy)。
3. fit: 训练模型

def fit(self, x_train, y_train, x_valid=None, y_valid=None, epochs=5, batch_size=128, **kwargs): # 训练
    self.build_model() 
    x_train = self.preprocessor.transform(x_train) if x_valid is not None and y_valid is not None: 
        x_valid = self.preprocessor.transform(x_valid)     self.model.fit( 
        x=x_train, 
        y=y_train, 
        validation_data= (x_valid, y_valid) if x_valid is not None and y_valid is not None else None, 
        batch_size=batch_size, 
        epochs=epochs, **kwargs )

  • 作用:对模型进行训练。
  • 流程
    • 数据预处理
      • 将训练数据 x_train 和验证数据 x_valid 转换为词索引序列(使用 self.preprocessor.transform)。
    • 模型训练
      • 调用 self.model.fit 进行模型训练。
      • 参数:
        • x_trainy_train:训练数据和标签。
        • validation_data:验证数据和标签(如果提供)。
        • batch_sizeepochs:批量大小和训练周期。
        • kwargs:传递给 fit 方法的其他参数。
4. evaluate: 评估模型

def evaluate(self, x_test, y_test): # 评估
    x_test = self.preprocessor.transform(x_test) 
    y_pred_probs = self.model.predict(x_test) 
    y_pred = np.argmax(y_pred_probs, axis=-1) 
    result = classification_report(y_test, y_pred, target_names=['负面', '正面']) print(result) 

  • 作用:对模型进行评估。
  • 流程
    • 数据预处理
      • 将测试数据 x_test 转换为词索引序列。
    • 模型预测
      • 使用 self.model.predict 获取预测的概率值。
      • 使用 np.argmax 将概率值转换为预测的标签。
    • 评估报告
      • 使用 classification_report 输出分类报告,包括准确率、召回率、F1 分值等。
5. single_predict: 单个文本预测

def single_predict(self, text): # 预测
    input_idx = self.preprocessor.transform([text]) 
    predict_prob = self.model.predict(input_idx)[0] 
    predict_label_id = np.argmax(predict_prob) 
    predict_label_name = self.class_name[predict_label_id] 
    predict_label_prob = predict_prob[predict_label_id] return predict_label_name, predict_label_prob

  • 作用:对单个文本进行情感预测。
  • 流程
    • 数据预处理
      • 将输入文本 text 转换为词索引序列。
    • 模型预测
      • 使用 self.model.predict 获取预测的概率值。
    • 结果提取
      • 提取预测的概率值、标签索引和标签名称。
    • 返回结果
      • 返回预测的标签名称和对应的概率值。
6.小结
  • TextCNN
    • 通过 build_model 搭建模型架构。
    • 使用 fit 对模型进行训练。
    • 使用 evaluate 对模型进行评估。
    • 使用 single_predict 对单个文本进行预测。
  • 特点
    • 结合了卷积神经网络(CNN)和全局最大池化(GlobalMaxPooling1D)来提取文本特征。
    • 支持多尺度卷积核(3、4、5)和多种池化方式。
    • 使用预处理器对文本数据进行预处理,方便模型输入。

http://www.dtcms.com/wzjs/449198.html

相关文章:

  • 黑客网站免费网站直通车怎么开
  • 阿里国际站韩语网站怎么做b站推广
  • 做网站怎么更新静态页设计网站
  • 医疗营销型网站建设百度广告推广平台
  • 织梦做的网站怎么上传视频泰州百度关键词优化
  • 山东做网站建设的好公司哪家好宁波seo排名优化价格
  • 苏州吴江做网站公司seo优化工具软件
  • 株洲网络营销推广哪家好seo教程视频
  • 视频网站开发策划书新app推广去哪里找
  • extjs做网站首页台州网站建设方案推广
  • wordpress客户端插件网站推广优化方式
  • 凡客网站建立免费职业技能培训网
  • 接口网站开发优化工具箱下载
  • 政府网站建设 重要性可以访问境外的浏览器
  • 虹口区建设工程管理网站东莞优化seo
  • 网站建设模式有哪些内容网站关键词快速排名优化
  • icp备案网站建设方案书重庆网站建设维护
  • 网站开发方案案例网络营销个人感悟小结
  • 响水县住房和城乡建设局网站自媒体十大平台
  • 怎样自己做网站包头seo
  • 湖南网站seo百度2019旧版本下载
  • 政府采购网登录网站优化排名网站
  • 都有哪些网站百度客服24小时人工电话
  • 仿网站ppt怎么做做一个网站需要多少钱
  • 佛山做网站优化公司外贸网络推广经验
  • 做旅游网站需要什么橙子建站
  • 找装修公司上什么网站360网站seo手机优化软件
  • 株洲网站建设公司今天新闻
  • 陕西通达工程建设有限公司网站南通关键词优化平台
  • 正邦网站建设关键字