Sarcasm detection论文解析 |基于混合自动编码器的模型对社交媒体平台进行讽刺检

13 篇文章 0 订阅
13 篇文章 0 订阅

论文地址

论文地址:Electronics | Free Full-Text | Sarcasm Detection over Social Media Platforms Using Hybrid Auto-Encoder-Based Model (mdpi.com)

论文首页

 

笔记框架

 

 

基于混合自动编码器的模型对社交媒体平台进行讽刺检


📅出版年份:2022
📖出版期刊:Electronics
📈影响因子:2.9
🧑文章作者:Sharma Dilip Kumar,Singh Bhuvanesh,Agarwal Saurabh,Kim Hyunsung,Sharma Raj
📍 期刊分区:
JCR分区: Q2 中科院分区升级版: 工程技术3区 中科院分区基础版: 工程技术4区 影响因子: 2.9 5年影响因子: 2.9 EI: 是 南农高质量: B


🔎摘要:

讽刺是一种语言短语,表达与所说内容截然相反的意思,一般是指冒犯或嘲讽某人的非常令人不快的话语。讽刺每天都在社交媒体平台上被广泛使用。由于讽刺可能会改变语句的含义,因此意见分析程序很容易出错。随着社交媒体自动分析工具使用范围的扩大,人们对分析结果完整性的担忧也在增加。根据初步研究,仅讽刺性语句就大大降低了自动情感分析的准确性。讽刺性短语还会影响假新闻的自动检测,导致误报。早先已经提出了各种单独的自然语言处理技术,但每种技术都有文本上下文和邻近性的限制。它们无法处理不同的内容类型。在本研究论文中,我们使用自动编码器提出了一种基于句子嵌入的新型混合技术。该框架建议使用来自长短期记忆自动编码器、双向编码器表示变换器和通用句子编码器的句子嵌入。此外,还考虑了图像上的文本,以处理图像和视频等多媒体内容。在对各种混合融合模型进行消融研究后,设计出了最终框架。我们在三个不同的真实社交媒体数据集--自注释 Reddit 语料库(SARC)、头条新闻数据集和 Twitter 数据集上验证了所提出的模型。准确率分别为 83.92%、90.8% 和 92.80%。准确率指标值优于之前的先进框架。


🌐研究目的:

📰研究背景:

但每种技术都有文本上下文和邻近性的限制。它们无法处理不同的内容类型。

🔬研究方法:


🔩模型架构:

本文提出了一种混合模型,该模型从三个基于句子的模型中收集学习/识别。

文本预处理

LSTM的自动编码器

自动编码器是一种神经网络,其中输入层和输出层具有相同的值,它的基本形式包括编码器单元埋层和解码器单元。

编码器:

编码器学习理解输入并将其压缩为瓶颈层定义的内部表示。

解码器:

解码器使用编码器的输出(瓶颈层)再现输入。

通用句子编码器(USE)

使用通用句子编码器将文本编码为高维向量。

输入是一个512维的向量,输出是一个可变长度的英文文本。

在深度平均网络中,首先,对短语中所有单词和二元组的嵌入进行平均。然后,数据被发送到 4 层前馈深度 DNN,以生成 512 维短语嵌入作为输出。在训练过程中,学习单词和二元组的嵌入。

Transformer 的双向编码器BERT

BERT只需一个额外的输出层即可对预训练的 BERT 模型进行微调。

在基于 BERT 的架构中,12 层编码器堆叠在一起。

它创建了 768 维嵌入。在学习方面,它包含两个主要组成部分:“掩码语言建模”(MLM)和“下一句预测”(NPS)。

这三个都是一个句子编码器/嵌入生成器。

密集层

上述三种技术的分类输出被传递到密集层,该密集层学习串联句子嵌入以获得分类概率。

融合句子嵌入是在密集层上学习的。

softmax层

这些向量被连接并传递给 Softmax,以将输入最终分类为讽刺或非讽刺。

对于图像,使用光学字符读取器 (OCR) API pytesseract 从图像中提取文本。

BERT 以双向方式工作,而 USE 和 LSTM-Autoencoder 以单向方式工作。


🧪实验:

📇 数据集:

我们对三个公开的社交网络数据集elf-Annotated Reddit Corpus(SARC)[18] Twitter数据集[ 21 ]和headlines数据集[25]。

数据集80%用于训练,20%用于测试。

Twitter数据集

1956 条推文:895 条推文被作者认为是讽刺的,1061 条被认为是非讽刺的 [21]。

SARC数据集

SARC 2.0 是一个自注释的 Reddit 语料库数据集,包含来自 Reddit 论坛的评论。

共有 26,709 个头条新闻; 11,725 个是讽刺的,14,984 个是非讽刺的 [25]。

Headline数据集

该新闻头条数据集是从两个新闻网站收集的:Onion 和 Huffpost。洋葱有时事的讽刺版本,而《赫芬顿邮报》则有真实的新闻头条。

📏评估指标:

我们计算了准确度、精确度、召回率、F1score、AUC 和马修斯相关系数 (MCC) 值来评估我们模型的性能。图 9 说明了混淆矩阵。

📉 优化器&超参数:

💻 实验设备:

模型是在谷歌TensorFlow平台上使用Keras库构建的。

系统内存为32 GB,GPU为Nvidia Quadro RTX 4000 8GB GDDR6。

📊 消融实验:

所有不同的组合都针对所有数据集进行了验证。所有模型组合中的激活函数、优化器、损失函数和学习率等通用参数都相似。

📋 实验结果:

我们观察到,仅使用自动编码器效果不佳,并且会导致准确性降低。使用 BERT 或 USE 和自动编码器可以改善结果,但所有三种吞吐量的组合都是最佳性能指标。


🚩研究结论:

本研究提供了一种基于句子嵌入和自动编码器技术的混合讽刺检测模型。该模型采用 LSTM 自动编码器、USE 和基于 BERT 的句子嵌入架构。通过密集层学习每种技术的嵌入,并预测分类概率。这些预测概率被传递给 SoftMax 进行最终分类。

该模型在基于公开数据集 SARC、hea dlines 和 Twitter 的真实世界社会化媒体平台上进行了评估。在 SARC、头条新闻和 Twitter 数据集上的准确率分别为 83.92 % 90.8 %和 92.8 %。

较高的准确率归功于使用了多种句子嵌入技术,覆盖了不同的数据集类型,并对自动编码器进行了微调,平衡了每种技术各自的局限性。

此外,在头条数据集的基础上还必须进行改进。可以利用基因算法等进化技术进行进一步研究。


📝总结

💡创新点:

我们使用自动编码器提出了一种基于句子嵌入的新型混合技术。

创建可靠且有效的基于混合自动编码器的模型来检测社交网站上的讽刺。该模型采用基于 LSTM 的自动编码器从结果中进一步学习。

利用自动编码器将基于句子的嵌入和无监督学习的混合模型结合起来,以克服它们的局限性。

⚠局限性:

社交媒体平台的另一个问题是,由于篇幅限制,人们经常在评论中使用俚语或缩写。理解这些缩写很困难。此外,理解这个俚语和缩写的上下文是另一个挑战。

此外,在头条数据集的基础上还必须进行改进。

🔧改进方法:

可以利用基因算法等进化技术进行进一步研究。

🖍️知识补充:

采用多分支 BERT 及其独立参数不会有太大帮助。在句子稍长、前后句子有一定关联的情况下,BERT 是一种很好的技术。在推文数据中,由于推文很短,而且很多时候推文之间并不存在相关性,因此仅使用 BERT 不会有明显改善。

Tesseract 是用于 OCR 的谷歌 API。 tesseract API在python中的实现是pytesseract。

自动编码器是一种神经网络,其中输入层和输出层具有相同的值。

通用句子编码器有多种变体——变压器编码器和深度平均网络。在此变型中,变压器编码器采用原始变压器结构的编码器组件。该架构由六个堆叠变压器层组成。每层都包含一个自注意力模块,后面是一个前馈网络。自注意力过程在构建每个单词表示时会考虑单词顺序和周围上下文。为了考虑句子长度的变化,输出的上下文感知词嵌入逐个元素相加,并除以句子长度的平方根。作为输出句子嵌入,我们收到一个 512 维向量。

因此,BERT只需一个额外的输出层即可对预训练的 BERT 模型进行微调,从而为各种 NLP 任务创建最先进的模型。

BERT-base 是基于 25 亿词维基百科语料库的预训练模型。

MCC是用于评估二元分类模型的统计相关值。其职责是评估或量化预计值与实际值之间的差异。 MCC 考虑混淆矩阵中的所有四个值。

俚语和缩写词的使用可能会对注意力系统造成严重破坏。


💬讨论:

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
由于没有提供具体的文档,我将使用一篇示例文档进行演示。 示例文档: ``` Natural Language Processing (NLP) is a subfield of computer science, artificial intelligence, and computational linguistics concerned with the interactions between computers and human (natural) languages. It includes both theoretical and practical aspects of computational linguistics and machine learning, as well as some interdisciplinary fields such as cognitive psychology, artificial intelligence, and speech recognition. NLP is a way for computers to analyze, understand, and derive meaning from human language in a smart and useful way. By utilizing NLP, developers can organize and structure knowledge to perform tasks such as automatic summarization, translation, named entity recognition, relationship extraction, sentiment analysis, and topic segmentation. One of the key challenges in NLP is understanding the nuances and complexities of human languages such as idiomatic expressions, sarcasm, irony, and ambiguity. Therefore, NLP involves a combination of rule-based and statistical approaches to analyze and process natural language data. Some of the popular NLP tools and frameworks include Natural Language Toolkit (NLTK), Stanford CoreNLP, Apache OpenNLP, spaCy, and Gensim. These tools provide a range of functionalities such as tokenization, part-of-speech tagging, dependency parsing, named entity recognition, sentiment analysis, and topic modeling. In recent years, with the advent of deep learning techniques such as recurrent neural networks (RNNs) and convolutional neural networks (CNNs), NLP has seen a surge in performance in various tasks such as machine translation, natural language understanding, and question answering. These techniques have enabled the development of powerful models such as Google's BERT and OpenAI's GPT-2, which have achieved state-of-the-art results in various benchmarks. Overall, NLP is a rapidly evolving field with vast potential for applications in various domains such as healthcare, finance, education, and social media analysis. As the amount of natural language data continues to grow exponentially, the demand for NLP expertise and tools is expected to increase in the coming years. ``` 代码: ```python import nltk from nltk.tokenize import word_tokenize, sent_tokenize from nltk.corpus import stopwords from nltk.stem import WordNetLemmatizer from collections import Counter from math import log10 # tokenize sentences sentences = sent_tokenize(text) # tokenize words, remove stopwords, and lemmatize lemmatizer = WordNetLemmatizer() stop_words = set(stopwords.words('english')) words = [] for sentence in sentences: words.extend([lemmatizer.lemmatize(w.lower()) for w in word_tokenize(sentence) if w.lower() not in stop_words and w.isalpha()]) # count word frequency word_freq = Counter(words) # calculate tf-idf scores tf_scores = {} idf_scores = {} for word in word_freq.keys(): tf_scores[word] = word_freq[word] / len(words) idf_scores[word] = log10(len(sentences) / sum([1 for sentence in sentences if word in sentence])) # calculate textrank scores d = 0.85 # damping factor textrank_scores = {word: 1 for word in word_freq.keys()} for _ in range(10): # iterate 10 times for word in textrank_scores.keys(): score = (1 - d) + d * sum([tf_scores[w] * idf_scores[w] * textrank_scores[w] for w in words if w != word and w in textrank_scores]) textrank_scores[word] = score # get top 20 keywords by textrank score top_keywords = sorted(textrank_scores.items(), key=lambda x: x[1], reverse=True)[:20] print(top_keywords) ``` 结果: ``` [('nlp', 0.18470849457091434), ('language', 0.09706204061526045), ('natural', 0.09479740243077508), ('processing', 0.0733114811171304), ('learning', 0.06044785784783262), ('tool', 0.05703584068297054), ('human', 0.05376137322921407), ('analysis', 0.047... ('entity', 0.03226611417715492), ('recognition', 0.03226611417715492), ('popular', 0.03073369613160887), ('include', 0.030437866586808134), ('range', 0.030437866586808134), ('functionalities', 0.030437866586808134), ('task', 0.030437866586808134)] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伪_装

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值