本文主要介绍Sentiment analysis: build your NLP project的思路和补充一些相关知识。

介绍

给定Twitter数据集(包含140万条已标记的tweet,单条长度在1到100之间),需要构建一个情感分析模型,使其能够提取推文中反映情绪的词语,然后将推文根据积极、消极或中性分类。这里使用的是keras + GRU。

建立语料库

原始数据集的序列需要经过处理才能应用到模型中,处理包括:

  1. 去掉标点符号和“@xxx"
  2. 文本序列化
  3. 统一序列长度

去掉标点符号和“@xxx"

去掉推文里面与情感无关的因素,比如标点符号和提及的对象。

# 制作翻译表,所有标点符号对应翻译是空格
tweet = text.maketrans(string.punctuation, ' '*len(string.punctuation))
# 忽略“@xxx",然后用上述翻译表去掉标点符号
words=[w.translate(tweet) for w in re.sub(r'^@[a-zA-Z]+(_[a-zA-Z]+)?','',text).split() ]

按理说后面的分词器会忽略标点符号,不懂为什么这里还要特意处理。

文本序列化

文本序列化就是把文字转换为数字,思路是先为单词建立数字索引,然后用索引替换单词。这里用keras的 Tokenizer 类,它能根据文本生成一个字典,用到的方法和属性有:

  • Tokenizer():初始化一个分词器。这里参数全部使用默认值。
  • fit_on_texts():生成文本的字典。它先统计了文本中所有单词的词频,然后按照词频降序排列单词,即文本中出现次数最多的单词排在最前,索引是1。
  • word_index:文本的字典。
  • texts_to_sequences():逐一将单词替换成索引,最后返回序列。

统一序列长度

keras只能接受长度相同的序列输入,所以要用pad_sequences统一序列的长度。

tweet_pad = pad_sequences(sequences, maxlen=MAX_LEN, truncating="post", padding="post")

padding代表需要补0时,在序列的起始还是结尾补,truncating代表需要截断序列时,从起始还是结尾截断,这里都是结尾。value代表填充值,没有指定,使用默认值0。

嵌入

序列的词嵌入就是以向量的形式表示单词,在这种形式中,同义词相似的单词使用相似的向量表示,这些向量在n维空间中表示时将彼此接近。

基于嵌入的python包使用这种文本表示形式来预测文本情感,将导致更好的模型性能。有很多预训练的嵌入可供选择,其中最受欢迎的有:GloVe, Word2Vec, Fasttext。这里选择Glove Twitter(200维),它是在Twitter语料库上预先训练的。在这里,每个单词都用一个200维向量表示。

使用torchtext模块来加载和处理文本嵌入到嵌入矩阵,过程如下:

  1. 加载嵌入:用embedding_dict保存GloVe的字典,即单词与其向量的映射,其中单词为索引。
  2. 生成嵌入矩阵:用embedding_matrix保存GloVe关于语料库的字典,即在GloVe中找到语料库中所有词,保存其词嵌入。

模型架构(待续)

这里使用Generative recurrent neural networks (GRU)建立一个模型,GRUs被证明能很好地处理序列问题。这个文章展示了GRU是如何工作的。这里直接使用了这个模型。
 

完整的代码可以在这里找到。

NLP推特情感分析模型相关推荐

  1. 【自然语言处理】基于NLP的电影评论情感分析模型比较

    基于NLP的电影评论情感分析模型比较 一段时间以来,使用机器学习的 NLP 任务借助 BERT(Bidirectional Encoder Representations from Transform ...

  2. 融合注意力机制和Bi-LSTM的旅游评价情感分析模型

    摘要 旅游评价情感分析对了解游客偏好具有重要意义,然而现有的旅游评价情感分析模型较少突出游客情感描述的核心内容.为了更加精确地分析游客评价的情感倾向,提出一种结合词性注意力机制和双向长短期记忆神经网络 ...

  3. 情感分析的分类,情感分析模型有哪些,情感分析的应用场景,情感分析的发展趋势

    1.情感分析的分类: (1)基于情感极性的分类:将文本的情感分为正向.负向和中性三类. (2)基于情感维度的分类:将文本的情感分为喜欢.愤怒.悲伤.惊喜等多个情感维度. 2.情感分析模型: (1)基于 ...

  4. 案例实战:用户评论情感分析模型

    目录 一.案例背景 二.读取数据 三.中文分词 四. 构造特征变量和目标变量 1.数据向量化 2.目标变量的提取 五.神经网络模型搭建和使用 1.划分数据集 2.搭建神经网络模型 3.模型使用 总结 ...

  5. 基于BERT的情感分析模型

    目录 基于BERT的情感分析模型 1 一. 基于Transformer的词向量表示 1 各个词对 it 编码影响程度示意图 4 二. 数据收集及预处理 5 数据集 5 2.文本预处理 6 (1)数据清 ...

  6. 如何使用PHP机器学习分析推文情感

    This article was peer reviewed by Wern Ancheta. Thanks to all of SitePoint's peer reviewers for maki ...

  7. python评论情感分析nltk_基于 Python 和 NLTK 的推特情感分析

    基于 Python 和 NLTK 的推特情感分析 作者:宋彤彤 1. 导读 NLTK 是 Python 的一个自然语言处理模块,其中实现了朴素贝叶斯分类算法.这次 Mo 来教大家如何通过 python ...

  8. Keras-深度学习-神经网络-电影评论情感分析模型

    目录 模型搭建 模型训练 模型搭建 使用到的数据集为IMDB电影评论情感分类数据集,该数据集包含 50,000 条电影评论,其中 25,000 条用于训练,25,000 条用于测试.每条评论被标记为正 ...

  9. 【Mo 人工智能技术博客】基于 Python 和 NLTK 的推特情感分析

    基于 Python 和 NLTK 的推特情感分析 作者:宋彤彤 1. 导读 NLTK 是 Python 的一个自然语言处理模块,其中实现了朴素贝叶斯分类算法.这次 Mo 来教大家如何通过 python ...

最新文章

  1. 流网络的最小割问题c语言,「网络流24题」最小路径覆盖问题
  2. 半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架
  3. 进程线程005 SwapContext函数分析
  4. Bzoj 2453: 维护队列 Bzoj 2120: 数颜色 分块,bitset
  5. Golang 库学习笔记 Gin(二)
  6. [TypeScript] Deeply mark all the properties of a type as read-only in TypeScript
  7. 南师大计算机语言学,南师大(语言学,文字学,文献学专业备考建议)
  8. 【Python】政府工作报告词云
  9. 【华为云技术分享】Linux内核的分布式编译(1)
  10. HTTPS加密原理(转)
  11. 极简代码(五)—— 斐波那契数列
  12. WEB测试与APP测试重点及区别
  13. 提升存储过程的效率,用减少表的更新次数来实现
  14. VS2008 ---- VS2013各个版本下载地址
  15. 2022 年面试工具篇 Jmeter 接口面试题及答案
  16. pillow英文手册
  17. win10下装黑苹果双系统_小米笔记本pro黑苹果Win10双系统
  18. android开发中Wifi功能总结
  19. Java学习练习题11:Java习题及代码11
  20. 软件测试薪资标准,软件测试月薪过万需要具备哪些技能?

热门文章

  1. Browns lazy shuffle 1.1中文版 (布朗熊爬动屏保)
  2. Alexa排名猛升18,539位(www.mobi123.cn,手机网址之家)
  3. django认证系统实现自定义权限管理的方法 - python
  4. 笔记本 ubuntu 10.04禁用触摸板
  5. 前端请柬框架_25佳漂亮的结婚邀请 婚礼请柬网站设计
  6. python计算器总结_Python 计算器的简单示例
  7. 离散数学笔记(1)命题逻辑
  8. JavaScript网页制作--京东快递单号查询
  9. 《统计学习方法第二版》学习笔记1——概论
  10. 电池安全检验“小能手”,vLoong能源AI挑战赛等你来!