虚假新闻识别检测分类

虚假新闻检测

一、项目主题

​ 针对媒体出现的虚假新闻和真实新闻进行检测识别。

动机:在这个社交媒体和互联网的世界中,我们接触到各种新闻和文章,但其中一些新闻和文章是假的,是为了好玩或出于恶意而制作的,这对社会是非常有害的。想对媒体产生的新闻进行鉴别,实现对虚假新闻和真实新闻的检测分类识别,以便用户对获取到的新闻进行清晰的认知,排除虚假新闻对用户的影响。

方法:采用监督学习模式,使用 T f i d f V e c t o r i z e r , C o u n t V e c t o r i z e r , P a s s i v e A g g r e s s i v e C l a s s i f i e r TfidfVectorizer,CountVectorizer,PassiveAggressiveClassifier TfidfVectorizerCountVectorizerPassiveAggressiveClassifier ,贝叶斯分类器对文本进行分类。

数据集dataset:https://download.csdn.net/download/weixin_51206814/54260176

代码链接:https://download.csdn.net/download/weixin_51206814/55499702

项目实例:在实验过程中,参考以下论文实例。

  • [1]许丽,焦博,赵章瑞.基于TF-IDF的加权朴素贝叶斯新闻文本分类算法[J].网络安全技术与应用,2021(11):31-33.
  • [2]陈翠娟.改进的多项朴素贝叶斯分类算法和Python实现[J].景德镇学院学报,2021,36(03):92-95.

二、实验报告

2.1 方法介绍

2.1.1 贝叶斯分类文本

​贝叶斯分类算法是一种以统计学为基础的分类算法。朴素贝叶斯分类算法是对传统贝叶斯分类算法进行朴素的假设,所谓朴素就是假设数据类别之间彼此独立,互不产生任何影响。首先要计算属于某一 类的先验概率,然后再利用贝叶斯定理计算其属于此类的后验概率,对各类后验概率的大小进行比较就可进行分类。贝叶斯公式也称为贝叶斯法则,它是关于随机事件 A A B B 的条件概率和边缘概率的。任何事件的发生都不是完全偶然的,往往都是以其他事件的发生为基础的。条件概率研究的就是在事件 A A A 发生的基础上,事件 B B B 发生的概率。贝叶斯法则是根据已知先验概率求后验概率。后验概率就是一种条件概率,一般的条件概率是由因求果,后验概率则是知果求因。

​在对新闻文本的表示中,使用一个 n n n 维向量的形式在多维空间进行表示,对文本的每个词赋予一个权重,在本实验中采用 T F − I D F TF-IDF TFIDF 来计算特征词的权重,下一部分将对这个 T F − I D F TF-IDF TFIDF 进行详细解释。特征权重就是该词对应空间向量的一个维度坐标,可以进行如下表示:
​新闻文本 f i f_i fi 在向量空间中就可以表示为:
V ( f i ) = ( W i 1 , W i 2 , ⋯ , W i n ) V(f_i)=(W_{i1},W_{i2},\cdots,W_{in}) V(fi)=(Wi1,Wi2,,Win)
​其中, f i f_i fi 是数据集中第 i i i 篇新闻文本, i = 1 , 2 , ⋯ , m ; n i=1,2,\cdots,m;n i=1,2,,m;n f i f_i fi 中含有的特征词个数, W i j W_{ij} Wij 是新闻文本 f i f_i fi 中特征词 t j t_j tj 的特征权重, j = 1 , 2 , ⋯ , n j =1,2,\cdots,n j=1,2,,n

​对于文本分类来说,设训练数据集 F = { f 1 , f 2 , ⋯ , f m } F =\{f_1,f_2,\cdots,f_m\} F={f1,f2,,fm},训练集数据分为 k k k 类,记为 C i , i = 1 , 2 , ⋯ , k C_i,i=1,2,\cdots,k Cii=1,2,,k。类 C i C_i Ci 的先验概率为 P ( C i ) P(C_i) P(Ci) ,则文本 d d d 的后验概率为:
P ( C k ∣ d ) = P ( d ∣ C k ) P ( C k ) P ( d ) P(C_k|d) = \frac{P(d|C_k)P(C_k)}{P(d)} P(Ckd)=P(d)P(dCk)P(Ck)
​有朴素贝叶斯算法的独立性假设:各个特征词之间是相互独立。可以得到条件概率:
P ( d ∣ C k ) = P ( ( W i 1 , W i 2 , ⋯ , W i n ) ∣ C k ) = ∏ i = 1 n P ( W i n ∣ C k ) 代 入 上 式 可 得 : P ( C k ∣ d ) = P ( C k ) ∏ i = 1 n P ( W i n ∣ C k ) P ( d ) P(d|C_k) =P((W_{i1},W_{i2},\cdots,W_{in})|C_k)=\prod_{i=1}^nP(W_{in}|C_k)\\ 代入上式可得:P(C_k|d)=\frac{P(C_k)\prod_{i=1}^n P(W_{in}|C_k)}{P(d)} P(dCk)=P((Wi1,Wi2,,Win)Ck)=i=1nP(WinCk)P(Ckd)=P(d)P(Ck)i=1nP(WinCk)
​由于 P ( d ) P(d) P(d) 是确定不变的,因此在比较后验概率的时候只需要比较分子部分即可。即:
C k = a r g max ⁡ P ( C k ) ∏ i = 1 n P ( W i n ∣ C k ) C_k =arg\ \max P(C_k)\prod_{i=1}^nP(W_{in}|C_k) Ck=arg maxP(Ck)i=1nP(WinCk)
P ( W i n ∣ C k ) P(W_{in}|C_k) P(WinCk) 中,实际可以将其看作是 T F − I D F TF-IDF TFIDF 的值,用 T F − I D F TF-IDF TFIDF 的值代替概率进行计算。(个人理解)

2.1.2 采用TF-IDF文本特征提取

T F TF TF 指词频,表示某个词在文章中出现的频次; I D F IDF IDF 指逆文档频率,表示包含该词的文档数占语料库文档数的比例。
词 频 ( T F ) = 某 词 出 现 在 文 章 中 的 次 数 逆 文 档 频 率 ( I D F ) = l o g ( 语 料 库 文 档 总 数 + 1 包 含 该 词 的 文 档 数 + 1 ) + 1 T F − I D F = T F × I D F 词频(TF) = 某词出现在文章中的次数 \\ 逆文档频率(IDF) =log(\frac{语料库文档总数+1}{包含该词的文档数+1})+1\\ TF-IDF = TF \times IDF (TF)=(IDF)=log(+1+1)+1TFIDF=TF×IDF
​对于不单独使用词频是由于一些普遍出现的词,在文章出现的次数一般也越高,那么词频就会较高,从词频角度分析,看起来似乎是更重要的特征,但因为这个词普遍出现,这个词可能不是非常的重要,那么单独采用词频 ( T F ) (TF) (TF) 进行向量化特征表示就无法反应这一点。

​使用 T F − I D F TF-IDF TFIDF 的基本思想:如果某个词语在某篇文档中出现的频率很高,从 T F TF TF 的角度来说就是, T F TF TF 很高,但是在语料库内的其他文档中出现的频率很低,从 I D F IDF IDF 角度来说,就是 I D F IDF IDF 高,则认定此词语在某种程度上可作为该文档的特征词,具备类别区分能力,可作为分类的依据。一个字词的重要性与它在某份文件中出现的次数正相关,字词在文件中出现的次数越多重要性越大,但同时与它在语料库中出现的频率呈负相关,语料库中出现的次数越多,则该字词的重要性越小。

​在对文本特征提取的过程中,可以采用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 或者 C o u n t V e c t o r i z e r CountVectorizer CountVectorizer ,两种方法区别不大,本实验主要采用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer ,下面介绍一下在使用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 对文本特征进行提取的过程。

  • 使用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 需要调用机器学习 s k l e a r n sklearn sklearn 的库,下面是调库语句。

    from sklearn.feature_extraction.text import TfidfVectorizer
    
  • 定义语料库的语句,为了便于观察原理过程,语料库加入了两个句子。

    corpus=["I come to China to travel",
    "This is a car polupar in China"]
    
  • 定义完语料库后,调用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer ,出于数据集是英文文本,设置停用词 “ e n g l i s h english english”,将包含在 n l t k . c o r p u s nltk.corpus nltk.corpus 的英语停止词中的单词进行删除,这些词包括介词、连词、冠词、to be 等没有意义的词。对语料库根据 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 参数规则进行操作,比如滤除停用词等,拟合原始数据,生成文档中有价值的词汇表,结合 f i t _ t r a n f o r m fit\_tranform fit_tranform 完成向量化。
    上图是滤除停用词后的结果,可以看见将语料库中的一些冠词、连词等删除,同时对这些词语按字母序排序,得到一个 “ v o c a b u l a r y vocabulary vocabulary” ,得到这个后,对语料库里的句子文本进行处理,结合 f i t _ t r a n f o r m fit\_tranform fit_tranform 对词语进行向量化。结果如下:

    上图 ( 0 , 4 ) (0,4) (0,4) 表示第 0 0 0 个字符串,词汇表里第 4 4 4 个单词的 T F − I D F TF-IDF TFIDF 值。计算过程为:单词 t r a v e l travel travel 在第 0 0 0 个字符串也就是语料库的第一个句子中,词频为 T F = 1 TF=1 TF=1 ,逆文档频率 I D F = l o g 2 + 1 1 + 1 + 1 = l o g 3 2 + 1 = 1.40546108 IDF = log\frac{2+1}{1+1}+1 = log\frac{3}{2}+1=1.40546108 IDF=log1+12+1+1=log23+1=1.40546108 T F − I D F = T F × I D F = 1 × 1.40546 = 1.40546108 TF-IDF=TF\times IDF=1\times 1.40546 = 1.40546108 TFIDF=TF×IDF=1×1.40546=1.40546108。其他单词同理。
    结合 t o a r r a y ( ) toarray() toarray() 转成数据矩阵形式进行显示,这个矩阵是一个稀疏矩阵,如图, ( 0 , 0 ) (0,0) (0,0)位置的值为 0 0 0 ,解释为第 0 0 0 个字符串,词汇表里第 0 0 0 个单词,也就是 c a r car car,实际中根本没有在语料库第一句中出现,因此值为 0 0 0。由于当文本量庞大的时候,矩阵将会变得十分巨大,不利于显示,因此后续不做输出。

    下面是实现上述过程的示例代码。

    tv_fit = tv.fit_transform(corpus)
    tv.get_feature_names_out()#生成提取的文本滤除停用词后的单词
    print("tv.get_feature_names_out")
    print(tv.get_feature_names_out())#将单词输出
    # print("tv.vocabulary")
    dict = tv.vocabulary_#生成词汇表
    print(dict)#输出词汇表
    print("tv_fit")
    print(tv_fit)#输出向量化后的结果
    re = tv_fit.toarray()
    print(re)#输出转矩阵后的结果
    

2.1.3 PassiveAggressiveClassifier 分类模型

P a s s i v e A g g r e s s i v e Passive\ Aggressive Passive Aggressive,是经典的 o n l i n e online online 线性分类器,它可以不断的整合新样本去调整分类模型,增强模型的分类能力。这样的模型在处理数据量庞大的数据集时,能够解决对数据读取时占用大量内存,使内存受限的情况,避免内存占用过大,解决内存问题。

P a s s i v e A g g r e s s i v e C l a s s i f i e r Passive\ Aggressive\ Classifier Passive Aggressive Classifier 的具体实现和参考算法。(可以参考 https://blog.csdn.net/weixin_38493025/article/details/80728688 )
算法伪代码:

I n p u t : a g g r e s s i v e n e s s p a r a m e t e r C > 0 Input: aggressiveness\ parameter\ C > 0 Input:aggressiveness parameter C>0

I n i t i a l i z e : W = ( 0 , 0 , ⋯ , 0 ) Initialize: W = (0,0,\cdots ,0) Initialize:W=(0,0,,0)

F o r t = 1 , 2 , ⋯ For \ t =1,2,\cdots For t=1,2,

  • r e c i v e i n s t a n c e : X t ∈ R recive \ instance : X_t \in R recive instance:XtR

  • p r e d i c t c o r r e c t l a b e l : y t ∈ { − 1 , + 1 } predict\ correct \ label :y_t\in\{-1,+1\} predict correct label:yt{1,+1}

  • s u f f e r l o s s : ℓ t = max ⁡ { 0 , 1 − y t ( W t ⋅ X t ) } suffer \ loss : \ell_t=\max\{0,1-y_t(W_t\cdot X_t)\} suffer loss:t=max{0,1yt(WtXt)}

  • u p d a t e update update

    • 1. s e t 1. \ set 1. set
      τ t = ℓ t ∣ ∣ X t ∣ ∣ 2 τ t = min ⁡ { C , ℓ t ∣ ∣ X t ∣ ∣ 2 } τ t = ℓ t ∣ ∣ X t ∣ ∣ 2 + 1 2 C \tau_t = \frac{\ell_t}{||X_t||^2} \\ \tau_t = \min\{C,\frac{\ell_t}{||X_t||^2}\} \\ \tau_t = \frac{\ell_t}{||X_t||^2+\frac{1}{2C}} τt=Xt2tτt=min{C,Xt2t}τt=Xt2+2C1t

    • 2. u p d a t e 2.\ update 2. update
      W t + 1 = W t + τ t y t X t W_{t+1} = W_t+\tau_t y_t X_t Wt+1=Wt+τtytXt

2.2 实验设计

2.2.1 数据处理

​对数据集进行读取,并且对数据集的列表数和个数进行统计,输出数据集中的前五行数据进行展示。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qtDbKcc1-1638544404355)(C:\Users\laiping\AppData\Roaming\Typora\typora-user-images\image-20211202163342090.png)]
​观察数据可以看见,有 4 4 4 列数据共 6335 6335 6335 条,标签 l a b e l label label 分为 “ F A K E FAKE FAKE” 和 “ R E A L REAL REAL” 两类,获取标签。然后对数据集进行分割,分割为训练集和测试集,采用对 “ t e x t text text” 和 “ l a b e l label label” 列数据进行分割,分割的测试集大小为 0.2 0.2 0.2 r a n d o m _ s t a t e random\_state random_state 是随机数种子,设置的数字相同能保证每次拆分的数据集是一样的。

x_train,x_test,y_train,y_test=train_test_split(df['text'], labels, test_size=0.2, random_state=12)

​对数据集进行分类后,对 “ t i t l e title title” 内容进行文本特征提取,采取 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 或者 C o u n t V e c t o r i z e r CountVectorizer CountVectorizer 建立特征权重。拟合和变换训练集,变换测试集,建立数据特征矩阵。使用" f i t _ t r a n s f o r m fit\_transform fit_transform" 加载数据并将数据转化为数据矩阵形式。

# TfidfVectorizer 形式
# tfidf_vectorizer = TfidfVectorizer(analyzer = 'word',stop_words = 'english',norm = None)
# CountVectorizer 形式
tfidf_vectorizer =  CountVectorizer()
tfidf_train=tfidf_vectorizer.fit_transform(x_train) 
tfidf_test=tfidf_vectorizer.transform(x_test)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

​上图为生成的词汇表和特征向量化、矩阵的结果。

2.2.2 调用模型

​了解到有两种模型可供使用对于新闻文本分类,两种分类模型都能避免内存爆炸的情况出现,两种模型都能不断的整合新数据调整分类模型,能达到提高分类能力的结果。

2.2.2.1 PassiveAggressiveClassifier 分类模型

​调用机器学习 “ s k l e a r n sklearn sklearn” 里的 “ l i n e a r _ m o d e l linear\_model linear_model” 里的 “ P a s s i v e A g g r e s s i v e C l a s s i f i e r PassiveAggressiveClassifier PassiveAggressiveClassifier” 分类模型,设置参数 m a x _ i t e r max\_iter max_iter ,可以调整迭代次数观察对于最后准确率的影响(迭代次数设置越大,分类准确率越大)。

#max_iter 迭代次数越大,分类准确率就越大
pac = PassiveAggressiveClassifier(max_iter=50)
2.2.2.2 贝叶斯分类模型对文本进行分类

​贝叶斯分类模型分为三种, G a u s s i a n N B GaussianNB GaussianNB 就是先验为高斯分布的朴素贝叶斯, M u l t i n o m i a l N B MultinomialNB MultinomialNB 就是先验为多项式分布的朴素贝叶斯, B e r n o u l l i N B BernoulliNB BernoulliNB 就是先验为伯努利分布的朴素贝叶斯。

  • G a u s s i a n N B GaussianNB GaussianNB 贝叶斯

    • pac = GaussianNB()
      #由于TF-IDF得到的是稀疏矩阵,使用todense变得密集
      tfidf_train = tfidf_train.todense()
      tfidf_test = tfidf_test.todense()
      
  • M u l t i n o m i a l N B MultinomialNB MultinomialNB 贝叶斯

    • pac = MultinomialNB()
      
  • B e r n o u l l i N B BernoulliNB BernoulliNB 贝叶斯

    • pac = BernoulliNB()
      

​ 这是贝叶斯三种模型的调用代码,分别调用完模型后,进行模型训练。

pac.fit(tfidf_train,y_train)
2.2.2.3 使用模型进行预测

​ 在调用模型对训练集进行训练过后,需要对测试集进行预测,然后将实际结果与预测结果进行对比。

y_pred=pac.predict(tfidf_test)#预测测试集
#print(y_pred)
#print(y_test)

​ 在数据量小的时候,可以将测试集的实际结果与预测结果进行输出观察预测情况对比。

​ 完成预测后,比较测试集实际结果,计算正确率和混淆矩阵并对结果进行分析。

2.3 结果与分析

2.3.1 准确率对比

  • P a s s i v e A g g r e s s i v e C l a s s i f i e r PassiveAggressiveClassifier PassiveAggressiveClassifier 分类模型

    采用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer​ 的情况,调整 t e s t _ s i z e test\_size test_size r a n d o m _ s t a t e random\_state random_state m a x _ i t e r max\_iter max_iter 三个参数比较最后分类正确率。

    n u m b e r number number t e s t _ s i z e test\_size test_size r a n d o m _ s t a t e random\_state random_state m a x _ i t e r max\_iter max_iter a c c u r a c y accuracy accuracy
    10.275091.32%
    20.375090.22%
    30.475089.94%
    40.2125090.45%
    50.2205092.19%
    60.2305090.84%
    70.2710091.55%
    80.2715091.79%
    90.2720091.63%

    分析上表格可以看出,在训练集较少的情况下对测试集进行测试,可能会得到不太好的预测结果,另外 r a n d o m _ s t a t e random\_state random_state m a x _ i t e r max\_iter max_iter 两个参数从上表来看对结果的影响并无太大关系,但从实际分析,迭代次数会影响分类效果。

    绘出准确率与迭代次数之间的折线图。观察下图可以看出迭代次数会影响分类效果。

  • 贝叶斯模型

    • G a u s s i a n N B GaussianNB GaussianNB 贝叶斯

      n u m b e r number number t e s t _ s i z e test\_size test_size a c c u r a c y accuracy accuracy
      10.280.98%
      20.379.22%
      30.479.95%
    • M u l t i n o m i a l N B MultinomialNB MultinomialNB 贝叶斯

      n u m b e r number number t e s t _ s i z e test\_size test_size a c c u r a c y accuracy accuracy
      10.290.13%
      20.389.37%
      30.488.6%
    • B e r n o u l l i N B BernoulliNB BernoulliNB 贝叶斯

      n u m b e r number number t e s t _ s i z e test\_size test_size a c c u r a c y accuracy accuracy
      10.282.08%
      20.382.22%
      30.482.56%

​ 从上述三种模型分类的结果分析,采用 M u l t i n o m i a l N B MultinomialNB MultinomialNB 多项式贝叶斯分类的准确率最高,主要跟先验概率的分布有关系。

​ 通过上述四种模型准确率对比,绘出四种模型准确率柱状图,可以清晰看出四种模型的差异。

2.3.2 混淆矩阵

​ 在结果的部分,采用混淆矩阵的形式对模型预测结果进行可视化以及结果呈现。

​ 混淆矩阵( c o n f u s i o n m a t r i x confusion\ matrix confusion matrix),又称为可能性表格或是错误矩阵。它是一种特定的矩阵用来呈现算法性能的可视化效果,通常是监督学习,其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个 c l a s s class class 被预测成另一个 c l a s s class class)。

​ 在预测分析中,混淆表格(有时候也称为混淆矩阵),是由 f a l s e p o s i t i v e s false \ positives false positives f a l s e n e g a t i v e s false\ negatives false negatives t r u e p o s i t i v e s true \ positives true positives t r u e n e g a t i v e s true \ negatives true negatives 组成的两行两列的表格。它允许我们做出更多的分析,而不仅仅是局限在正确率。准确率对于分类器的性能分析来说,并不是一个很好地衡量指标,因为如果数据集不平衡(每一类的数据样本数量相差太大),很可能会出现误导性的结果。

​ 在二分类的模型中,混淆矩阵把预测情况与实际情况的所有结果进行组合,形成了真正 ( t r u e p o s i t i v e ) (true \ positive) (true positive)、假正 ( f a l s e p o s i t i v e ) (false\ positive) (false positive)、真负 ( t r u e n e g a t i v e ) (true \ negative) (true negative) 和假负 ( f a l s e n e g a t i v e ) (false\ negative) (false negative) 四种情形,分别由 T P 、 F P 、 T N 、 F N TP、FP、TN、FN TPFPTNFN 表示( T T T 代表预测正确, F F F 代表预测错误)。

  • P a s s i v e A g g r e s s i v e C l a s s i f i e r PassiveAggressiveClassifier PassiveAggressiveClassifier 分类模型的混淆矩阵在这里插入图片描述
  • M u l t i n o m i a l N B MultinomialNB MultinomialNB贝叶斯分类模型的混淆矩阵
    在这里插入图片描述在这里插入图片描述

2.3.3 分析

使用贝叶斯模型的优点:

  • 在于能够使用较小的空间获得更好的算法效率,空间开销小,具有稳定的分类效率,占用比较小的空间内存量,并且对缺失数据不太敏感。

使用贝叶斯模型的缺点:

  • 需要提前知道先验概率,同时贝叶斯的假设是每个特征属性是独立,因此在属性有关联时就会使分类效果不好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40347.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CIKM 2020 | FANG:利用社会语境及其图表示进行假新闻检测

目录 前言1. 问题定义2. 从social context中构建图3. 事实新闻图框架 (FANG)3.1 表示学习3.2 时序建模3.3 损失函数 4. 实验4.1 数据集4.2 实验结果 5. 讨论5.1 数据集大小的限制5.2 时序建模的意义5.3 可扩展性 6. 总结 前言 题目: FANG: Leveraging Social Contex…

一文看懂虚假新闻检测(附数据集 论文推荐)

作者丨孙子荀 单位丨腾讯科技高级研究员 研究方向丨多模态内容质量 本人过去几年一直从事内容质量方面的算法工作,近期出于兴趣对假新闻这个问题做了一些调研,简单总结一下提供读者参考。 在某种程度上假新闻的是一个微观领域问题,它和谣言分…

独家 | 社交媒体假新闻检测方法及发展方向(附数据集)

作者:Kai Shu and Huan Liu from Arizona State University 翻译:窦英通 本文长度为2000字,建议阅读5分钟 本文为你介绍社交媒体假新闻的描述和检测及未来研究方向。 社交媒体对新闻传播是一把双刃剑。一方面,它成本低廉&#xf…

论文阅读-虚假信息检测综述 - Fake News Detection on Social Media: A Data Mining Perspective

论文链接:https://arxiv.org/pdf/1708.01967.pdf 目录 摘要 1 引言 2. 假新闻定义 2.1 假新闻的定义 2.2 传统新闻媒体上的假新闻 2.3社交媒体上的假新闻 3.假新闻检测 3.1问题定义 3.2 特征提取 3.2.1 新闻内容特征 3.2.2 社会语境特征 3.3 模型构建 …

论文阅读-社交媒体上的谣言检测:数据集、方法和机会

论文链接:https://aclanthology.org/D19-5008.pdf 目录 摘要 引言 1.1谣言检测 1.2 问题陈述 1.3 用户立场 2 数据集和评估指标 2.1 数据集 2.2 评价指标 3 特点和方法 3.1使用内容信息的方法 3.2 利用用户信息的方法 3.3 基于传播路径和网络的方法 3.4…

说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇

前一篇中,演示了如何开发一个Widget以及如何开发一个WidgetHost应用。有了这个基础,我们就知道,要想在桌面上添加Widget,那么需要完成两件事情: 1、将桌面应用实现为一个WidgetHost应用 2、CellLayout需要为每个添加的Widget分配…

Android 系统桌面 App —— Launcher 开发

文章目录 Launcher简介注册AndroidManifest使用PackageManager扫描所有app显示app信息,添加点击事件 Launcher简介 Launcher就是Android系统的桌面,它也是一个app,用于管理其他的app。 注册AndroidManifest 要让app作为Launcher&#xff0…

Android 4.0 Launcher2源码分析——桌面快捷图标的拖拽

本文来自http://blog.csdn.net/chenshaoyang0011 转载请申明文章出处! 通过上一篇文章Android4.0Launcher2源码分析(五)——Workspace的滑动中,已经了解了Launcher的ViewTree中各层所负责的工作,在DragLayer中就负责对…

Android聊天界面实现方式

最近心血来潮,打算实现一个很久之前就想实现的一个界面,就是聊天界面,当时觉得好高大上啊,完全不会啊,不过最近不小心找到了方法。 效果图 本来是想上传一张动态图的,但是不知道怎么回事,半天传…

Android安卓-开发一个android桌面

从0开始 开发一个属于自己的桌面程序 最近在开发一个新项目&#xff0c;需要把应用改成桌面&#xff0c;并引导用户设置为默认桌面&#xff0c;完成后的效果如下图&#xff1a; 1.添加XML <activity android:name".activitys.DeskTop" android:launchMode"si…

安卓11客制需求:<MtkSettings:添加桌面设置,并且能够正常切换桌面APK>

需要修改的路径代码路径&#xff1a;vendor/mediatek/proprietary/packages/apps/MtkSettings/AndroidManifest.xml <!-- 注册一个activity&#xff0c;用于启动 com.android.internal.app.ResolverActivity --><!-- gyh add --><activity android:name".S…

还在用手记录会议笔记?录音转文字简单的方法介绍

相信很多小伙伴们的单位或者是公司每周都要开会&#xff0c;开会一般都要写会议记录存档&#xff0c;有很多朋友这个时候在会议上拼命的记&#xff0c;但是对于一些打字慢的或是写字慢的人来说怎么办呢&#xff1f;这样就会跟不上&#xff0c;其实有更搞笑的方法&#xff0c;首…

只需一键录音转文字,会议记录让你不在烦恼

来让我看看还有哪位朋友&#xff0c;还在傻傻一遍遍听会议录音&#xff0c;手写会议纪要呀&#xff1f; 都2022年了&#xff0c;你不会还不知道这款只需一键就能语音转文字的APP吧&#xff01; 90后打工人&#xff0c;今天给大家分享个职场必备软件&#xff0c;让你瞬间效率拉…

3、微信小程序-通信

文章目录 前言一、组件通信1.微信小程序组件内部&#xff08;页面与逻辑层之间&#xff09;通信2.微信小程序组件之间&#xff08;父子组件&#xff09;通信&#xff08;1&#xff09;父组件是如何向子组件传递数据的&#xff08;2&#xff09;子组件是如何向父组件传递数据的 …

微信小程序之页面通信方式

文章目录 一、前言二、页面通信是什么&#xff1f;三、传值的几种常用方式1.页面跳转传参2.页面跳转传入数据3.使用全局变量传递数据4.利用缓存进行传值 四、小结 一、前言 提示&#xff1a;微信小程序中&#xff0c;页面间的通信方式很重要&#xff0c;通信方式也有很多种&am…

【最新版全插件】多功能同城优选小程序源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 1.为本地的线下商家提供线上销售渠道。一直以来本地商品、娱乐、休闲、旅游服务线上购买大家都是以美团为准。近几年来随着微信公众号、小程序的渗透力逐渐加强&#xff0c;越来越多的…

微信公众号开发之绑定微信开发者

第一步&#xff1a;登录微信公众号&#xff0c;绑定网页开发者 在登录后的界面中&#xff0c;我们向下拉在左侧会看到有一个“开发者工具”点击。 这时在开发者工具中&#xff0c;会看到有好几个工具&#xff0c;其中有一个“web开发者工具”&#xff0c;我们点击进入。 在这里…

微信公众号登录授权(全网发布)一键绑定公众号设置

微信公众号登录授权&#xff08;全网发布&#xff09;一键绑定公众号设置教程及常见问题 前言&#xff1a;本操作跟服务器配置&#xff0c;网络环境等综合环境有关&#xff08;95%&#xff09;&#xff0c;另外存在5%的运气和人品。WeiDogs官方确保程序此功能正常并提供设置教程…

python微信公众号微信用户绑定第三方网站

场景 例如,某用户在第三方购物平台的账号(user_id/手机号码等)需要跟该用户的微信账号进行绑定, 实现在该购物平台的微信公众号中查询个人信息, 消费记录, 充值记录等操作.总的来说便是,将微信用户的open_id跟第三方网址user_id/手机号码等进行一对一关联 实现方案 微信用户…

微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权自动登录业务系统)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权…