Project:文本抄袭自动检测分析

项目简介:

通过分析不同机构发布的⽂章,判断是否有⽂章抄袭的情况,并找到原⽂和抄袭的⽂章,以及具体相似的句⼦。 可应⽤于毕业论⽂查重,⽂本抄袭检测。

数据集:

id

author

source

content

feature

title

url

89617

 

快科技@http://www.kkj.cn/

此外,自本周(6月12日)起,除小米手机6等15款机型外,其余机型已暂停更新发布(含开发版/体验版内测,稳定版暂不受影响),以确保工程师可以集中全部精力进行系统优化工作。有人猜测这也是将精力主要用到MIUI 9的研发之中。

MIUI 8去年5月发布,距今已有一年有余,也是时候更新换代了。

当然,关于MIUI 9的确切信息,我们还是等待官方消息。

{"type":"科技","site":"cnbeta","commentNum":"37","joinNum":"20007","clickNum":"19920","shareNum":"0",……}

小米MIUI 9首批机型曝光:共计15款

http://www.cnbeta.com/articles/tech/623597.htm

89616

 

快科技@http://www.kkj.cn/

骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器,高通强调,不会因为只考虑性能而去屏蔽掉小核心。相反,他们正联手微软,找到一种适合桌面平台的、兼顾性能和功耗的完美方案。

报道称,微软已经拿到了一些新的源码,以便Windows 10更好地理解big.little架构。

资料显示,骁龙835作为一款集成了CPU、GPU、基带、蓝牙/Wi-Fi的SoC,比传统的Wintel方案可以节省至少30%的PCB空间。

按计划,今年Q4,华硕、惠普、联想将首发骁龙835 Win10电脑,预计均是二合一形态的产品。

当然,高通骁龙只是个开始,未来也许还能见到三星Exynos、联发科、华为麒麟、小米澎湃等进入Windows 10桌面平台。

{"type":"科技","site":"cnbeta","commentNum":"15","joinNum":"5522","clickNum":"5493","shareNum":"0",……}

骁龙835在Windows 10上的性能表现有望改善

http://www.cnbeta.com/articles/tech/623599.htm

89615

 

快科技@http://www.kkj.cn/

此前的一加3T搭载的是3400mAh电池,DashCharge快充规格为5V/4A。

至于电池缩水,可能与刘作虎所说,一加手机5要做市面最轻薄大屏旗舰的设定有关。

按照目前掌握的资料,一加手机5拥有5.5寸1080P三星AMOLED显示屏、6G/8GB RAM,64GB/128GB ROM,双1600万摄像头,备货量“惊喜”。

根据京东泄露的信息,一加5起售价是xx99元,应该是在2799/2899/2999中的某个。

{"type":"科技","site":"cnbeta","commentNum":"18","joinNum":"9445","clickNum":"9425","shareNum":"0",……}

一加手机5细节曝光:3300mAh、充半小时用1天

http://www.cnbeta.com/articles/tech/623601.htm

89614

 

新华社

这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄

 

{"type":"国际新闻","site":"环球","commentNum":"0","joinNum":"0","clickNum":"0","shareNum":"0",……}

葡森林火灾造成至少62人死亡 政府宣布进入紧急状态(组图)

http://world.huanqiu.com/hot/2017-06/10866126.html

项目流程:

Step1,数据加载 加载sqlResult.csv及停用词chinese_stopwords.txt

Step2,数据预处理

1)数据清洗,针对content字段为空的情况,进行dropna

2)分词,使用jieba进行分词

3)将处理好的分词保存到 corpus.pkl,方便下次调用

4)数据集切分,70%训练集,30%测试集

Step3,提取文本特征TF-IDF

Step4,预测文章风格是否和自己一致 使用分类模型(比如MultinomialNB),对于文本的特征(比如TF-IDF)和label(是否为新华社)进行训练

Step5,找到可能Copy的文章,即预测label=1,但实际label=0

Step6,根据模型预测的结果来对全量文本进行比对,如果数量很大,我们可以先用k-means进行聚类降维,比如k=25种聚类 Step7,找到一篇可能的Copy文章,从相同label中,找到对应新华社的文章,并按照TF-IDF相似度矩阵,从大到小排序,取Top10

Step8,使用编辑距离editdistance,计算两篇文章的距离

Step9,精细比对,对于疑似文章与原文进行逐句比对,即计算每个句子的编辑距离editdistance

代码步骤:

1.文档相似性检测,检测内容可能抄袭新华社的文章数

with open('E:/NLP/data/BI/chinese_stopwords.txt', 'r', encoding='utf-8') as file:
    stopwords = [i[:-1]for i in file.readlines()]
import pandas as pd
#数据加载
news = pd.read_csv('E:/NLP/data/BI/sqlResult.csv', encoding='gb18030')

#缺失值处理
news = news.dropna(subset=['content'])

import jieba
#分词
def split_text(text):
    text = text.replace(' ', '').replace('\n', '')
    text2 = jieba.cut(text.strip())
    #去停用词
    result = ' '.join([w for w in text2 if w not in stopwords])
    return result

#对所有文本进行分词
corpus = list(map(split_text, [str(i) for i in news.content]))
print(corpus[0])
print(len(corpus))
#保存到文件
import pickle
with open('corpus.pkl', 'wb') as file:
    pickle.dump(corpus, file)

#计算corpus中的TF-IDF矩阵
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
countvectorizer = CountVectorizer(encoding='gb18030', min_df=0.015)
tfidftransformer = TfidfTransformer()
#先做TF,再做IDF => TF-IDF
countvector = countvectorizer.fit_transform(corpus)
tfidf = tfidftransformer.fit_transform(countvector)

#标记是否自己的新闻
label = list(map(lambda source:1 if '新华' in str(source) else 0, news.source))

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(tfidf.toarray(), label, test_size=0.3)

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(tfidf.toarray(), label, test_size=0.3)

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
clf.fit(X_train, y_train)
y_predict= clf.predict(X_test)

import numpy as np
#使用模型检测抄袭新闻,预测风格
prediction = clf.predict(tfidf.toarray())
labels = np.array(label)
compare_news_index = pd.DataFrame({'prediction': prediction, 'labels': labels})
copy_news_index = compare_news_index[(compare_news_index['prediction']==1) & (compare_news_index['labels']==0)]
#实际为新华社的新闻
xinhuashe_news_index = compare_news_index[(compare_news_index['labels']==1)].index

print('可能为copy的新闻条数', len(copy_news_index))

可能为copy的新闻条数 2817

2.找到与检测文章相似的文章,使用K-means降维,并计算文章间的余弦相似度

#使用Kmeans对文章进行聚类
from sklearn.preprocessing import Normalizer
from sklearn.cluster import KMeans
normalizer = Normalizer()
scaled_array= normalizer.fit_transform(tfidf.toarray())

kmeans = KMeans(n_clusters=10)
k_labels = kmeans.fit_predict(scaled_array)

#创建id_class
id_class = {index:class_ for index, class_ in enumerate(k_labels)}
from collections import defaultdict
class_id = defaultdict(set)
for index, class_ in id_class.items():
    #只统计新华社发布的class_id
    if index in xinhuashe_news_index.tolist():
        class_id[class_].add(index)

from sklearn.metrics.pairwise import cosine_similarity
#查找相似文本
def find_similar_text(cpindex, top=10):
    #只在新华社发布的文章中找
    dist_dict = {i:cosine_similarity(tfidf[cpindex], tfidf[i]) for i in class_id[id_class[cpindex]]}
    #从大到小进行排序
    return sorted(dist_dict.items(), key=lambda x:x[1], reverse=True)[:top]

cpindex = 3352
similar_list = find_similar_text(cpindex)
print(similar_list)
print('怀疑抄袭\n', news.iloc[cpindex].content)
#找一篇相似的原文
similar2 = similar_list[0][0]
print('相似原文:\n', news.iloc[similar2].content)
[(3134, array([[0.96849134]])), (63511, array([[0.94643198]])), (29441, array([[0.94283416]])), (3218, array([[0.87621892]])), (980, array([[0.87535155]])), (29615, array([[0.86936328]])), (29888, array([[0.86215862]])), (64046, array([[0.85278235]])), (29777, array([[0.84875422]])), (64758, array([[0.73394798]]))]
怀疑抄袭
   中国5月份56座城市新建商品住宅价格环比上涨,4月份为58座上涨。5月份15个一线和热点二线城市房地产市场基本稳定,5月份房地产调控政策效果继续显现。
  统计局:15个一线和热点二线城市房价同比涨幅全部回落
  国家统计局城市司高级统计师刘建伟解读5月份房价数据
  5月份一二线城市房价平均涨幅继续回落
  国家统计局今日发布了2017年5月份70个大中城市住宅销售价格统计数据。对此,国家统计局城市司高级统计师刘建伟进行了解读。
  一、15个一线和热点二线城市新建商品住宅价格同比涨幅全部回落、9个城市环比下降或持平
  5月份,因地制宜、因城施策的房地产调控政策效果继续显现,15个一线和热点二线城市房地产市场基本稳定。从同比看,15个城市新建商品住宅价格涨幅均比上月回落,回落幅度在0.5至6.4个百分点之间。从环比看,9个城市新建商品住宅价格下降或持平;5个城市涨幅在0.5%以内。
  二、70个大中城市中一二线城市房价同比涨幅持续回落
  5月份,70个城市中新建商品住宅和二手住宅价格同比涨幅比上月回落的城市分别有29和18个。其中,一二线城市同比涨幅回落尤其明显。据测算,一线城市新建商品住宅和二手住宅价格同比涨幅均连续8个月回落,5月份比4月份分别回落2.2和1.7个百分点;二线城市新建商品住宅和二手住宅价格同比涨幅分别连续6个月和4个月回落,5月份比4月份分别回落0.8和0.5个百分点。
  三、70个大中城市中房价环比下降及涨幅回落城市个数均有所增加
  5月份,70个城市中新建商品住宅价格环比下降的城市有9个,比上月增加1个;涨幅回落的城市有26个,比上月增加3个。二手住宅价格环比下降的城市有7个,比上月增加2个;涨幅回落的城市有30个,比上月增加8个。

相似原文:
   国家统计局19日发布数据,5月份,15个一线和热点二线城市新建商品住宅价格同比涨幅全部回落,其中9个城市环比下降或持平。这9个价格环比下降或持平的城市为:北京、上海、南京、杭州、合肥、福州、郑州、深圳、成都。
  “5月份,因地制宜、因城施策的房地产调控政策效果继续显现,15个一线和热点二线城市房地产市场基本稳定。”国家统计局城市司高级统计师刘建伟说,从同比看,15个城市新建商品住宅价格涨幅均比上月回落,回落幅度在0.5至6.4个百分点之间。从环比看,9个城市新建商品住宅价格下降或持平;5个城市涨幅在0.5%以内。
  国家统计局当天还发布了5月份70个大中城市住宅销售价格统计数据。刘建伟介绍,5月份,70个大中城市中新建商品住宅和二手住宅价格同比涨幅比上月回落的城市分别有29和18个。其中,一二线城市同比涨幅回落尤其明显。据测算,一线城市新建商品住宅和二手住宅价格同比涨幅均连续8个月回落,5月份比4月份分别回落2.2和1.7个百分点;二线城市新建商品住宅和二手住宅价格同比涨幅分别连续6个月和4个月回落,5月份比4月份分别回落0.8和0.5个百分点。
  此外,70个大中城市中房价环比下降及涨幅回落城市个数均有所增加。统计显示,5月份,70个大中城市中新建商品住宅价格环比下降的城市有9个,比上月增加1个;涨幅回落的城市有26个,比上月增加3个。二手住宅价格环比下降的城市有7个,比上月增加2个;涨幅回落的城市有30个,比上月增加8个。

 

你可能感兴趣的:(Project)