任务
目标:能检测单模态的虚假信息就可以,是个软件就可以
参考文章:基于多模态深度融合的虚假信息检测
Multi-modal deep fusion for false information detection
思路
多模态指的是多种不同类型的数据,比如图像、文本、音频等。虚假信息识别软件可以从这些不同类型的数据中提取特征,辅助判断一个信息是否属于虚假信息。(咱们就做文本吧)
基于多模态的虚假信息识别软件的创作思路:
1. 数据采集:收集并标注包括图像、文本、音频在内的虚假信息样本,建立大规模的虚假信息数据库。(兰会给数据,也可以自己找)
从网上找模型变一下
2. 特征提取:对于每个样本,从其对应的多模态数据中提取出各种特征,比如图像的颜色、纹理、形状等特征; 文本的情感、语法、语义等特征(npl);音频的声调、速度、韵律等特征。
3. 模型建立:构建多模态融合的分类模型,将每个样本的多种特征进行整合,并加权地影响最终分类的结果。可以尝试使用深度学习模型,如卷积神经网络(CNN)、循环神经网络(RNN)和注意力机制(Attention)等模型。
4. 模型训练:将建好的模型输入已标注的虚假信息数据集,进行训练与优化。
5. 模型测试:利用测试集来验证模型的准确性和稳定性,对模型进行迭代优化。
6. 系统部署(软件封装,不一定基于flask,要是有现有的就更好):将训练好的虚假信息识别系统部署到服务器上,为用户提供实时的虚假信息识别服务。
难点
- 设计界面(这个应该是qt,可以改好多,最好换个模板就完事的那种):设计Web界面,并用HTML、CSS和Javascript等技术实现前端交互。
- 定义路由:定义Flask应用的路由和视图函数,以便处理不同的HTTP请求。
- 模型接入(深度学习,咱们够呛):在后端代码中调用训练好的多模态分类模型,并使用其进行虚假信息识别。
- 请求处理:在Flask应用的路由中接收用户提交的数据,对输入数据进行预处理,比如文本规范化、文本清理(数据处理,和文本分词npl类的)等操作。然后,把数据传递给模型进行分类并获得结果,最后将结果返回给用户,模型的指标评估可以不做(有难度)
就学flask做可视化web界面,和模型的套用基础就可以了
数据集fakeddit、
链接:百度网盘 请输入提取码
提取码:f8cw
--来自百度网盘超级会员V5的分享
你好,欢迎阅读题为“r/Fakeddit:用于细粒度假新闻检测的新多模态基准数据集”的文章。该文件主要讨论了一个名为Fakeddit的新数据集的创建,该数据集由来自多个类别的假新闻的100多万个样本组成,包括文本、图像、元数据和评论数据。通过远程监督,对数据集进行2路、3路和6路分类分类。文章还讨论了使用自动机器学习分类模型来打击假新闻的广泛传播的重要性。
论文
https://arxiv.org/pdf/2112.04831.pdf
多模态假新闻细粒度检测基准数据集Fakeddit:
https//aclanthologorg/2020.lrec-1.755.
现成模型text and images
这个文本讨论了假新闻对政治和文化领域的负面影响,以及使用自动机器学习分类模型来打击假新闻的有效性。然而,目前缺乏有效、综合的数据集是假新闻研究和检测模型开发的一个问题。以前的假新闻数据集没有提供多模态文本和图像数据、元数据、评论数据和细粒度的假新闻分类,而Fakeddit是一个新颖的多模态数据集,包括来自多种假新闻类别的100万个样本。这些样本经过多个审核阶段后,通过远程监督进行2路、3路和6路分类标注。研究人员构建了混合文本+图像模型,并进行了多种分类的广泛实验,展示了多模态和细粒度分类在Fakeddit中的重要性。
技术术语:假新闻、自动机器学习分类模型、数据集、多模态、细粒度分类、混合文本+图像模型、远程监督。
代码
Error: 'latin-1' codec can't encode characters in position 0-6: ordinal not in range(256)
微博情感分析可视化
71个内容可能是全网最良心的微博爬虫,用户、话题、评论一网打尽。图片下载、情感分析,
地理位置、关系网络等功能应有尽有。
QQ 交流群:861016679
微信交流群:备注学校专业/研究方向/工作岗位,添加微信 2391527690 拉群
仅聊天的拉群即删,不是工具人,不在意每一份冷漠,也绝不辜负每一份热情
点我直达微博超级爬虫,自助抓取
<a data-miniprogram-nickname="Python爬虫数据分析" data-miniprogram-type="text" href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzMDE5MzQ3Ng==&action=getalbum&album_id=1393531201285226497">点击查看抓取微博签到、豆瓣知乎等增值服务
实现
爬虫实现的三个功能:
按用户爬取、按话题爬取、爬取微博所有评论
WeiboUserScrapy、WeiboTopicScrapy、WeiboCommentScrapy,
三个类都有一些可以复用的函数,但是为了减少类之间的耦合,以及方便打包,我没有复用,这样单独一个类拿出来也能跑,减少了依赖。
WeiboUserScrapy
要点
- 大佬博客BuyiXiao's Blog
- 技术栈:python3 爬虫 + pandas 数据分析 + Uber Kepler.gl 可视化。
Cookie ="cookie: SINAGLOBAL=96892162148.26768.1681390729941; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFN_GrZ29CB5rbIled3kFda5JpX5KMhUgL.FoMfSo-fehepeoB2dJLoIpjLxK-L1K5LB-zLxKnLBo2L1hqLxKMLBozL1K-t; ULV=1681474966688:3:3:3:839958191859.5889.1681474966663:1681433134978; SCF=AqqAUfqrrddsbCxJ3ayX-UsWqxLapjp9ewJZXBkWsrmIbkmD3Vl410AI23Zklovz228xeHYo9HWUcRjlgKP_t4A.; SUB=_2A25JQuJXDeRhGeFL7VcU8C3NyTiIHXVqNlSfrDV8PUNbmtAGLVPxkW9NfcBCYJv2OI4XBzyecdRD1Hs1gvKoQNw7; ALF=1684938502; SSOLoginState=1682346503; PC_TOKEN=510642b281; XSRF-TOKEN=7n33MG22GxX0pHmJGT8oDHMp; WBPSESS=oaQyk4TSDv0Ze6nj0VI49YIAPQ4zTDhrGBrqdnDRhWBkLGHVERcRhZjJ5R1XALTWB16BUxrYG9gHb_5pMFgncGimeTDnfbdwL3PUQUzc7U2avclJKidtpTjUHpWiM62SIjNbJgLkfzrXq6r6T7SNUg=="
cookie: SCF=AqqAUfqrrddsbCxJ3ayX-UsWqxLapjp9ewJZXBkWsrmIbkmD3Vl410AI23Zklovz22ZcAXYCewdBGX9HqLoAeNg.; SUB=_2A25JQuJXDeRhGeFL7VcU8C3NyTiIHXVqzI4frDV6PUNbktANLUzbkW1NfcBCYCTmO7Nes1SBYrWARzao8Hz0_FaR; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFN_GrZ29CB5rbIled3kFda5JpX5KMhUgL.FoMfSo-fehepeoB2dJLoIpjLxK-L1K5LB-zLxKnLBo2L1hqLxKMLBozL1K-t; ALF=1684938503; _T_WM=51569a27553fb4a9e8c1fb81923e18b2
User_Agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
qt
fpAct = QAction(QIcon('fp.png'), '找人(&FP)', self)
fpAct.setShortcut('Ctrl+P')
fpAct.setStatusTip('请输入微博用户昵称')
fpAct.triggered.connect(self.findUser)
这段代码是在Python中使用PyQt5创建一个QAction对象,提供了一个菜单项“找人(&FP)”,并设置了一个快捷键“Ctrl+P”,当用户点击这个菜单项或使用快捷键时,会触发findUser方法。此外,该菜单项还设置了一个状态提示信息,提示用户需要输入微博用户昵称。同时,该菜单项使用了一个名为'fp.png'的图标作为标识
![](https://i-blog.csdnimg.cn/blog_migrate/83e478de10f4d314de7a21c09013fd66.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f9fb85bbf9b5a39de3edd586c174afa.png)
gui链接chatgpt接口实现可视化
用Python连接ChatGPT API实现GUI图形交互 - 知乎
import openai
openai.api_key = "YOUR_API_KEY" # 将 YOUR_API_KEY 替换为你的 API Key
class MainWindow(QMainWindow):
# ...
def detectAI(self):
# 显示一个新窗口,用于进行 AI 检测
self.aiDialog = QDialog(self)
self.aiDialog.setWindowTitle('AI检测')
self.aiDialog.setGeometry(100, 100, 400, 300)
# 在新窗口中添加一个 QTextEdit 组件,用于输入待分析的文本
self.textEdit = QTextEdit(self.aiDialog)
self.textEdit.setGeometry(20, 20, 360, 200)
# 添加一个 QPushButton 组件,用于触发 AI 分析操作
self.analyzeButton = QPushButton('分析', self.aiDialog)
self.analyzeButton.setGeometry(160, 240, 80, 30)
self.analyzeButton.clicked.connect(self.analyzeText)
self.aiDialog.show()
def analyzeText(self):
# 获取 QTextEdit 组件中输入的文本
text = self.textEdit.toPlainText()
# 调用 OpenAI API,对文本进行语义分析
response = openai.Completion.create(
engine="davinci",
prompt=text,
max_tokens=100,
n=1,
stop=None,
temperature=0.5,
)
# 在新窗口中添加一个
# 设置ai
aiAct = QAction(QIcon('ai.png'), 'AI检测(&AI)', self)
aiAct.setShortcut('Ctrl+I')
aiAct.setStatusTip('使用AI进行检测')
aiAct.triggered.connect(self.detectAI)
#定义接口函数实现chatgpt的功能
def detectAI(self):
# 获取问题文本
question = self.question_edit.toPlainText()
# 使用 OpenAI GPT-3 模型回答问题
response = openai.Completion.create(
engine="davinci",
prompt=f"问:{question}\n答:",
max_tokens=1024,
n=1,
stop=None,
temperature=0.5
)
# 获取回答文本并显示到窗口
answer = response.choices[0].text.strip()
self.answer_edit.setText(answer)
实现调用chatgpt接口实现使用AI进行检测
pytorch预训练
PS C:\Users\User\PycharmProjects\pythonProject\Phase_unwrapping_by_U-Net-main> conda install torch
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
- Index of /anaconda/pkgs/free/win-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- Index of /anaconda/pkgs/free/noarch/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- Index of /anaconda/cloud/msys2/win-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- Index of /anaconda/cloud/msys2/noarch/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- Error
- Error
- r/win-64
- r/noarch
To search for alternate channels that may provide the conda package you're
looking for, navigate to
and use the search bar at the top of the page.
调用数据函数 适应任意模型的数据集接口
class PUDataset(Dataset):
def __init__(self, ids, dir_input, dir_gt, extension='.mat'): #初始化主要是为这个所建的类提供全局变量
self.dir_input = dir_input
self.dir_gt = dir_gt
self.extension = extension
self.ids = ids # Dataset IDS
self.data_len = len(self.ids) # Calculate len of data
' Ask for input and ground truth'
def __getitem__(self, index):
# Get an ID of the input and ground truth
id_input = self.dir_input + self.ids[index] + self.extension
id_gt = self.dir_gt + self.ids[index] + self.extension
# Open them
input = sio.loadmat(id_input)
gt = sio.loadmat(id_gt)
input = input['input']
gt = gt['gt']
input = torch.from_numpy(input).float().unsqueeze(0)
gt = torch.from_numpy(gt).float().unsqueeze(0)
return (input, gt, gt)
' Length of the dataset '
def __len__(self): #返回数据集长度,数据集的长度就是列表文件的长度
return self.data_len