虚假新闻检测

一、项目主题

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

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

方法:采用监督学习模式,使用 TfidfVectorizer,CountVectorizer,PassiveAggressiveClassifierTfidfVectorizer,CountVectorizer,PassiveAggressiveClassifierTfidfVectorizer,CountVectorizer,PassiveAggressiveClassifier ,贝叶斯分类器对文本进行分类。

数据集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 贝叶斯分类文本

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

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

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

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

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

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

​在对文本特征提取的过程中,可以采用 TfidfVectorizerTfidfVectorizerTfidfVectorizer 或者 CountVectorizerCountVectorizerCountVectorizer ,两种方法区别不大,本实验主要采用TfidfVectorizerTfidfVectorizerTfidfVectorizer ,下面介绍一下在使用 TfidfVectorizerTfidfVectorizerTfidfVectorizer 对文本特征进行提取的过程。

  • 使用 TfidfVectorizerTfidfVectorizerTfidfVectorizer 需要调用机器学习 sklearnsklearnsklearn 的库,下面是调库语句。

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

    corpus=["I come to China to travel",
    "This is a car polupar in China"]
    
  • 定义完语料库后,调用 TfidfVectorizerTfidfVectorizerTfidfVectorizer ,出于数据集是英文文本,设置停用词 “englishenglishenglish”,将包含在 nltk.corpusnltk.corpusnltk.corpus 的英语停止词中的单词进行删除,这些词包括介词、连词、冠词、to be 等没有意义的词。对语料库根据 TfidfVectorizerTfidfVectorizerTfidfVectorizer 参数规则进行操作,比如滤除停用词等,拟合原始数据,生成文档中有价值的词汇表,结合 fit_tranformfit\_tranformfit_tranform 完成向量化。
    上图是滤除停用词后的结果,可以看见将语料库中的一些冠词、连词等删除,同时对这些词语按字母序排序,得到一个 “vocabularyvocabularyvocabulary” ,得到这个后,对语料库里的句子文本进行处理,结合 fit_tranformfit\_tranformfit_tranform 对词语进行向量化。结果如下:

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

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

    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 分类模型

​ PassiveAggressivePassive\ AggressivePassive Aggressive,是经典的 onlineonlineonline 线性分类器,它可以不断的整合新样本去调整分类模型,增强模型的分类能力。这样的模型在处理数据量庞大的数据集时,能够解决对数据读取时占用大量内存,使内存受限的情况,避免内存占用过大,解决内存问题。

​ PassiveAggressiveClassifierPassive\ Aggressive\ ClassifierPassive Aggressive Classifier 的具体实现和参考算法。(可以参考 https://blog.csdn.net/weixin_38493025/article/details/80728688 )
算法伪代码:

Input:aggressivenessparameterC>0Input: aggressiveness\ parameter\ C > 0Input:aggressiveness parameter C>0

Initialize:W=(0,0,⋯,0)Initialize: W = (0,0,\cdots ,0)Initialize:W=(0,0,⋯,0)

Fort=1,2,⋯For \ t =1,2,\cdotsFor t=1,2,⋯

  • reciveinstance:Xt∈Rrecive \ instance : X_t \in Rrecive instance:Xt​∈R

  • predictcorrectlabel:yt∈{−1,+1}predict\ correct \ label :y_t\in\{-1,+1\}predict correct label:yt​∈{−1,+1}

  • sufferloss:ℓt=max⁡{0,1−yt(Wt⋅Xt)}suffer \ loss : \ell_t=\max\{0,1-y_t(W_t\cdot X_t)\}suffer loss:ℓt​=max{0,1−yt​(Wt​⋅Xt​)}

  • updateupdateupdate

    • 1.set1. \ set1. set
      τt=ℓt∣∣Xt∣∣2τt=min⁡{C,ℓt∣∣Xt∣∣2}τt=ℓt∣∣Xt∣∣2+12C\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​=∣∣Xt​∣∣2ℓt​​τt​=min{C,∣∣Xt​∣∣2ℓt​​}τt​=∣∣Xt​∣∣2+2C1​ℓt​​

    • 2.update2.\ update2. update
      Wt+1=Wt+τtytXtW_{t+1} = W_t+\tau_t y_t X_t Wt+1​=Wt​+τt​yt​Xt​

2.2 实验设计

2.2.1 数据处理

​对数据集进行读取,并且对数据集的列表数和个数进行统计,输出数据集中的前五行数据进行展示。
​观察数据可以看见,有 444 列数据共 633563356335 条,标签 labellabellabel 分为 “FAKEFAKEFAKE” 和 “REALREALREAL” 两类,获取标签。然后对数据集进行分割,分割为训练集和测试集,采用对 “texttexttext” 和 “labellabellabel” 列数据进行分割,分割的测试集大小为 0.20.20.2,random_staterandom\_staterandom_state 是随机数种子,设置的数字相同能保证每次拆分的数据集是一样的。

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

​对数据集进行分类后,对 “titletitletitle” 内容进行文本特征提取,采取 TfidfVectorizerTfidfVectorizerTfidfVectorizer 或者 CountVectorizerCountVectorizerCountVectorizer 建立特征权重。拟合和变换训练集,变换测试集,建立数据特征矩阵。使用"fit_transformfit\_transformfit_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 分类模型

​调用机器学习 “sklearnsklearnsklearn” 里的 “linear_modellinear\_modellinear_model” 里的 “PassiveAggressiveClassifierPassiveAggressiveClassifierPassiveAggressiveClassifier” 分类模型,设置参数 max_itermax\_itermax_iter ,可以调整迭代次数观察对于最后准确率的影响(迭代次数设置越大,分类准确率越大)。

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

​贝叶斯分类模型分为三种,GaussianNBGaussianNBGaussianNB 就是先验为高斯分布的朴素贝叶斯,MultinomialNBMultinomialNBMultinomialNB 就是先验为多项式分布的朴素贝叶斯,BernoulliNBBernoulliNBBernoulliNB 就是先验为伯努利分布的朴素贝叶斯。

  • GaussianNBGaussianNBGaussianNB 贝叶斯

    • pac = GaussianNB()
      #由于TF-IDF得到的是稀疏矩阵,使用todense变得密集
      tfidf_train = tfidf_train.todense()
      tfidf_test = tfidf_test.todense()
      
  • MultinomialNBMultinomialNBMultinomialNB 贝叶斯

    • pac = MultinomialNB()
      
  • BernoulliNBBernoulliNBBernoulliNB 贝叶斯

    • 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 准确率对比

  • PassiveAggressiveClassifierPassiveAggressiveClassifierPassiveAggressiveClassifier 分类模型

    采用 TfidfVectorizerTfidfVectorizerTfidfVectorizer​ 的情况,调整 test_sizetest\_sizetest_size 、random_staterandom\_staterandom_state、max_itermax\_itermax_iter 三个参数比较最后分类正确率。

    numbernumbernumber test_sizetest\_sizetest_size random_staterandom\_staterandom_state max_itermax\_itermax_iter accuracyaccuracyaccuracy
    1 0.2 7 50 91.32%
    2 0.3 7 50 90.22%
    3 0.4 7 50 89.94%
    4 0.2 12 50 90.45%
    5 0.2 20 50 92.19%
    6 0.2 30 50 90.84%
    7 0.2 7 100 91.55%
    8 0.2 7 150 91.79%
    9 0.2 7 200 91.63%

    分析上表格可以看出,在训练集较少的情况下对测试集进行测试,可能会得到不太好的预测结果,另外 random_staterandom\_staterandom_state、max_itermax\_itermax_iter 两个参数从上表来看对结果的影响并无太大关系,但从实际分析,迭代次数会影响分类效果。

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

  • 贝叶斯模型

    • GaussianNBGaussianNBGaussianNB 贝叶斯

      numbernumbernumber test_sizetest\_sizetest_size accuracyaccuracyaccuracy
      1 0.2 80.98%
      2 0.3 79.22%
      3 0.4 79.95%
    • MultinomialNBMultinomialNBMultinomialNB 贝叶斯

      numbernumbernumber test_sizetest\_sizetest_size accuracyaccuracyaccuracy
      1 0.2 90.13%
      2 0.3 89.37%
      3 0.4 88.6%
    • BernoulliNBBernoulliNBBernoulliNB 贝叶斯

      numbernumbernumber test_sizetest\_sizetest_size accuracyaccuracyaccuracy
      1 0.2 82.08%
      2 0.3 82.22%
      3 0.4 82.56%

​ 从上述三种模型分类的结果分析,采用 MultinomialNBMultinomialNBMultinomialNB 多项式贝叶斯分类的准确率最高,主要跟先验概率的分布有关系。

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

2.3.2 混淆矩阵

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

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

​ 在预测分析中,混淆表格(有时候也称为混淆矩阵),是由 falsepositivesfalse \ positivesfalse positives,falsenegativesfalse\ negativesfalse negatives,truepositivestrue \ positivestrue positives 和 truenegativestrue \ negativestrue negatives 组成的两行两列的表格。它允许我们做出更多的分析,而不仅仅是局限在正确率。准确率对于分类器的性能分析来说,并不是一个很好地衡量指标,因为如果数据集不平衡(每一类的数据样本数量相差太大),很可能会出现误导性的结果。

​ 在二分类的模型中,混淆矩阵把预测情况与实际情况的所有结果进行组合,形成了真正 (truepositive)(true \ positive)(true positive)、假正 (falsepositive)(false\ positive)(false positive)、真负 (truenegative)(true \ negative)(true negative) 和假负 (falsenegative)(false\ negative)(false negative) 四种情形,分别由 TP、FP、TN、FNTP、FP、TN、FNTP、FP、TN、FN 表示(TTT 代表预测正确,FFF 代表预测错误)。

  • PassiveAggressiveClassifierPassiveAggressiveClassifierPassiveAggressiveClassifier 分类模型的混淆矩阵
  • MultinomialNBMultinomialNBMultinomialNB贝叶斯分类模型的混淆矩阵

2.3.3 分析

使用贝叶斯模型的优点:

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

使用贝叶斯模型的缺点:

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

虚假新闻识别检测分类相关推荐

  1. AAAI 2023 | 基于联合学习与用户传播行为的虚假新闻早期检测

    ©作者 | 社媒派SMP 来源 | 社媒派SMP 论文题目: HG-SL: Jointly Learning of Global and Local User Spreading Behavior f ...

  2. 智源计算所-互联网虚假新闻检测挑战赛(冠军)方案,开源分享

    比赛链接为 https://www.biendata.com/competition/falsenews/ 比赛由智源研究院和中科院计算所主办,比赛平台为biendata. 冠军模型可以访问下述链接获 ...

  3. 虚假新闻检测挑战赛落幕,探寻获奖团队背后的故事

    2019年11月16日,智源论坛:虚假新闻检测暨2019虚假新闻检测挑战赛颁奖仪式召开.本次挑战赛由北京智源人工智能研究院和中国科学院计算技术研究所共同举办,旨在促进互联网虚假新闻检测技术的发展,营造 ...

  4. 智源-计算所虚假新闻检测大赛 | 探秘假新闻中的视觉信息

    2019 年 8 月,北京智源人工智能研究院联合中科院计算所.数据评测平台 biendata,共同发布了中文多模态虚假新闻数据集,并同步开放了评测竞赛(2019 年 8 月-11 月初),总奖金 10 ...

  5. 【论文翻译 虚假新闻检测综述 KDD 2017】Fake News Detection on Social Media: A Data Mining Perspective

    论文题目:Fake News Detection on Social Media: A Data Mining Perspective 论文来源:KDD 2017 美国亚利桑那州立大学, 美国密歇根州 ...

  6. python识别虚假新闻的分类器_使用NLP检测和对抗AI生成的假新闻

    作者|MOHD SANAD ZAKI RIZVI 编译|VK 来源|Analytics Vidhya 概述 由AI生成的假新闻(神经假新闻)对于我们的社会可能是一个巨大的问题 本文讨论了不同的自然语言 ...

  7. 【NLP】万字长文带你解读『虚假新闻检测』最新进展

    NewBeeNLP原创出品 公众号专栏作者 @byn blog | https://blog.csdn.net/byn12345 互联网时代,假新闻铺天盖地,而且极具迷惑性,因此假新闻检测任务对逻辑的 ...

  8. 【论文阅读】Hierarchical Multi-modal Contextual Attention Network for Fake News Detection --- 虚假新闻检测,多模态

    本博客系本人阅读该论文后根据自己理解所写,非逐句翻译,欲深入了解该论文,请参阅原文. 论文标题:Hierarchical Multi-modal Contextual Attention Networ ...

  9. 虚假新闻检测论文调研

    虚假新闻检测论文调研 Evidence Inference Networks for Interpretable Claim Verification 基本信息 发表刊物和年份:2021 AAAI 摘 ...

最新文章

  1. World Final 2012
  2. 乱谈数学--我理解的函数极限运算
  3. 实例变量与局部变量的区别 java 1615135277
  4. cts(6)---Android8.1(O1)CTS失败项
  5. int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));
  6. Linux设备驱动与整个软硬件系统的关系
  7. [转载] python3 安装完Pycurl在import pycurl时报错
  8. 数据结构之二叉树--转载
  9. reactos操作系统实现(110)
  10. python使用金山词霸的翻译功能(调试工具断点的使用)
  11. html打包成apk wex5,WeX5打包部署学习
  12. MAC 安装opencv的过程
  13. HCIE面试备考方法之表达困难症患者请戳
  14. elasticsearch7.x catAPI之shards
  15. 邻居好说话:冒泡排序
  16. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part 1
  17. Linux 防火墙策略——APF
  18. Code里面的对立统一
  19. 经典论文解析——YOLOv1——目标检测
  20. 电子通信类投稿期刊介绍

热门文章

  1. 关于大型网站技术演进的思考--存储的瓶颈
  2. STM32F407ZGT6的串口通信
  3. vue ts项目同时引入ant-design和element-ui,ts报错不能编译打包失败
  4. [转]如何降低二手烟的危害
  5. 超详细手把手教你cordova开发使用指南+自定义插件,jsbridge
  6. 我将进化成一条狗(3)——区块链
  7. sqlserver关于发布订阅replication_subscription的总结
  8. 日语笔记(3) 动词て形
  9. [WinCE] Win CE 屏幕截图
  10. Rundll32.exe进程