diff --git a/Anan/Project1_PlagiarismDetection.ipynb b/Anan/Project1_PlagiarismDetection.ipynb
new file mode 100644
index 0000000..c367113
--- /dev/null
+++ b/Anan/Project1_PlagiarismDetection.ipynb
@@ -0,0 +1,3470 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 数据基本信息"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "content = pd.read_csv('D:/Code/Pycharm/Data_source/sqlResult_1558435.csv',encoding='gb18030')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "89611"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(content)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['id', 'author', 'source', 'content', 'feature', 'title', 'url'], dtype='object')"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "content.columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " author | \n",
+ " source | \n",
+ " content | \n",
+ " feature | \n",
+ " title | \n",
+ " url | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 89617 | \n",
+ " NaN | \n",
+ " 快科技@http://www.kkj.cn/ | \n",
+ " 此外,自本周(6月12日)起,除小米手机6等15款机型外,其余机型已暂停更新发布(含开发版/... | \n",
+ " {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"37\"... | \n",
+ " 小米MIUI 9首批机型曝光:共计15款 | \n",
+ " http://www.cnbeta.com/articles/tech/623597.htm | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 89616 | \n",
+ " NaN | \n",
+ " 快科技@http://www.kkj.cn/ | \n",
+ " 骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器,高通强调,不会因为只考... | \n",
+ " {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"15\"... | \n",
+ " 骁龙835在Windows 10上的性能表现有望改善 | \n",
+ " http://www.cnbeta.com/articles/tech/623599.htm | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 89615 | \n",
+ " NaN | \n",
+ " 快科技@http://www.kkj.cn/ | \n",
+ " 此前的一加3T搭载的是3400mAh电池,DashCharge快充规格为5V/4A。\\r\\n... | \n",
+ " {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"18\"... | \n",
+ " 一加手机5细节曝光:3300mAh、充半小时用1天 | \n",
+ " http://www.cnbeta.com/articles/tech/623601.htm | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 89614 | \n",
+ " NaN | \n",
+ " 新华社 | \n",
+ " 这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄\\r\\n | \n",
+ " {\"type\":\"国际新闻\",\"site\":\"环球\",\"commentNum\":\"0\",\"j... | \n",
+ " 葡森林火灾造成至少62人死亡 政府宣布进入紧急状态(组图) | \n",
+ " http://world.huanqiu.com/hot/2017-06/10866126.... | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 89613 | \n",
+ " 胡淑丽_MN7479 | \n",
+ " 深圳大件事 | \n",
+ " (原标题:44岁女子跑深圳约会网友被拒,暴雨中裸身奔走……)\\r\\n@深圳交警微博称:昨日清... | \n",
+ " {\"type\":\"新闻\",\"site\":\"网易热门\",\"commentNum\":\"978\",... | \n",
+ " 44岁女子约网友被拒暴雨中裸奔 交警为其披衣相随 | \n",
+ " http://news.163.com/17/0618/00/CN617P3Q0001875... | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id author source \\\n",
+ "0 89617 NaN 快科技@http://www.kkj.cn/ \n",
+ "1 89616 NaN 快科技@http://www.kkj.cn/ \n",
+ "2 89615 NaN 快科技@http://www.kkj.cn/ \n",
+ "3 89614 NaN 新华社 \n",
+ "4 89613 胡淑丽_MN7479 深圳大件事 \n",
+ "\n",
+ " content \\\n",
+ "0 此外,自本周(6月12日)起,除小米手机6等15款机型外,其余机型已暂停更新发布(含开发版/... \n",
+ "1 骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器,高通强调,不会因为只考... \n",
+ "2 此前的一加3T搭载的是3400mAh电池,DashCharge快充规格为5V/4A。\\r\\n... \n",
+ "3 这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄\\r\\n \n",
+ "4 (原标题:44岁女子跑深圳约会网友被拒,暴雨中裸身奔走……)\\r\\n@深圳交警微博称:昨日清... \n",
+ "\n",
+ " feature \\\n",
+ "0 {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"37\"... \n",
+ "1 {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"15\"... \n",
+ "2 {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"18\"... \n",
+ "3 {\"type\":\"国际新闻\",\"site\":\"环球\",\"commentNum\":\"0\",\"j... \n",
+ "4 {\"type\":\"新闻\",\"site\":\"网易热门\",\"commentNum\":\"978\",... \n",
+ "\n",
+ " title \\\n",
+ "0 小米MIUI 9首批机型曝光:共计15款 \n",
+ "1 骁龙835在Windows 10上的性能表现有望改善 \n",
+ "2 一加手机5细节曝光:3300mAh、充半小时用1天 \n",
+ "3 葡森林火灾造成至少62人死亡 政府宣布进入紧急状态(组图) \n",
+ "4 44岁女子约网友被拒暴雨中裸奔 交警为其披衣相随 \n",
+ "\n",
+ " url \n",
+ "0 http://www.cnbeta.com/articles/tech/623597.htm \n",
+ "1 http://www.cnbeta.com/articles/tech/623599.htm \n",
+ "2 http://www.cnbeta.com/articles/tech/623601.htm \n",
+ "3 http://world.huanqiu.com/hot/2017-06/10866126.... \n",
+ "4 http://news.163.com/17/0618/00/CN617P3Q0001875... "
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "content.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "xinhua_data = []\n",
+ "for i in range(len(content)):\n",
+ " xinhua_data.append(1 if '新华' in str(content.iloc[i].source) else 0)\n",
+ " xinhua_data.count(1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 文本自动聚类(新华社文章)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 停用词"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_stopwords(filename = \"D:/Code/Pycharm/Data_source/chinese_stopwords.txt\"):\n",
+ " stopwords_dic = open(filename, encoding= 'utf-8')\n",
+ " stopwords = stopwords_dic.readlines()\n",
+ " stopwords = [w.strip() for w in stopwords]\n",
+ " stopwords_dic.close()\n",
+ " print(stopwords)\n",
+ " stopwords.append('\\r\\n')\n",
+ " return stopwords"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[',', '的', '。', '、', '在', '了', '是', '', '“', '”', '和', '年', '月', ':', '也', ')', '为', '(', '有', '%', '日', '将', '中', '-', '到', '与', '对', ':', '', '上', '都', '等', '不', '他', '》', '《', '就', '但', '我', '而', '这', '会', '并', ';', '被', '后', '人', '从', '还', '1', '3', '6', '以', '新', '说', '7', '2', '要', '5', '?', '更', '于', '个', '10', '大', '时', '4', '多', '/', '让', '其', ')', '(', '很', '及', '下', '', '能', '—', '或', '该', '她', '比', '8', '元', '12', '已', '向', '做', '来', '前', '由', '好', '.', '称', '给', '最', '11', '·', '据', '着', '又', '至', '9', '20', '!', '[', ']', '去', '可', '把', '则', '', '一', '地', '高', '吗', '30', '所', '分', '较', '内', '第', '里', '占', '过', '15', '曾', '\"', '再', '人民日报', '新闻网', '它', '况', '而且', '而是', '而外', '而言', '而已', '尔后', '反过来', '反过来说', '反之', '非但', '非徒', '否则', '嘎', '嘎登', '该', '赶', '个', '各', '各个', '各位', '各种', '各自', '给', '根据', '跟', '故', '故此', '固然', '关于', '管', '归', '果然', '果真', '过', '哈', '哈哈', '呵', '和', '何', '何处', '何况', '何时', '嘿', '哼', '哼唷', '呼哧', '乎', '哗', '还是', '还有', '换句话说', '换言之', '或', '或是', '或者', '极了', '及', '及其', '及至', '即', '即便', '即或', '即令', '即若', '即使', '几', '几时', '己', '既', '既然', '既是', '继而', '加之', '假如', '假若', '假使', '鉴于', '将', '较', '较之', '叫', '接着', '结果', '借', '紧接着', '进而', '尽', '尽管', '经', '经过', '就', '就是', '就是说', '据', '具体地说', '具体说来', '开始', '开外', '靠', '咳', '可', '可见', '可是', '可以', '况且', '啦', '来', '来着', '离', '例如', '哩', '连', '连同', '两者', '了', '临', '另', '另外', '另一方面', '论', '嘛', '吗', '慢说', '漫说', '冒', '么', '每', '每当', '们', '莫若', '某', '某个', '某些', '拿', '哪', '哪边', '哪儿', '哪个', '哪里', '哪年', '哪怕', '哪天', '哪些', '哪样', '那', '那边', '那儿', '那个', '那会儿', '那里', '那么', '那么些', '那么样', '那时', '那些', '那样', '乃', '乃至', '呢', '能', '你', '你们', '您', '宁', '宁可', '宁肯', '宁愿', '哦', '呕', '啪达', '旁人', '呸', '凭', '凭借', '其', '其次', '其二', '其他', '其它', '其一', '其余', '其中', '起', '起见', '起见', '岂但', '恰恰相反', '前后', '前者', '且', '然而', '然后', '然则', '让', '人家', '任', '任何', '任凭', '如', '如此', '如果', '如何', '如其', '如若', '如上所述', '若非', '若是', '啥', '上下', '尚且', '设若', '设使', '甚而', '甚么', '甚至', '省得', '时候', '什么', '什么样', '使得', '是', '是的', '首先', '谁', '谁知', '顺', '顺着', '似的', '虽', '虽然', '虽说', '虽则', '随', '随着', '所', '所以', '他', '他们', '他人', '它', '它们', '她', '她们', '倘', '倘或', '倘然', '倘若', '倘使', '腾', '替', '通过', '同', '同时', '哇', '万一', '往', '望', '为', '为何', '为了', '为什么', '为着', '喂', '嗡嗡', '我', '我们', '呜', '呜呼', '乌乎', '无论', '无宁', '毋宁', '嘻', '吓', '相对而言', '像', '向', '向着', '嘘', '呀', '焉', '沿', '沿着', '要', '要不', '要不然', '要不是', '要么', '要是', '也', '也罢', '也好', '一', '一般', '一旦', '一方面', '一来', '一切', '一样', '一则', '依', '依照', '矣', '以', '以便', '以及', '以免', '以至', '以至于', '以致', '抑或', '因', '因此', '因而', '因为', '哟', '用', '由', '由此可见', '由于', '有', '有的', '有关', '有些', '又', '于', '于是', '于是乎', '与', '与此同时', '与否', '与其', '越是', '云云', '哉', '再说', '再者', '在', '在下', '咱', '咱们', '则', '怎', '怎么', '怎么办', '怎么样', '怎样', '咋', '照', '照着', '者', '这', '这边', '这儿', '这个', '这会儿', '这就是说', '这里', '这么', '这么点儿', '这么些', '这么样', '这时', '这些', '这样', '正如', '吱', '之', '之类', '之所以', '之一', '只是', '只限', '只要', '只有', '至', '至于', '诸位', '着', '着呢', '自', '自从', '自个儿', '自各儿', '自己', '自家', '自身', '综上所述', '总的来看', '总的来说', '总的说来', '总而言之', '总之', '纵', '纵令', '纵然', '纵使', '遵照', '作为', '兮', '呃', '呗', '咚']\n"
+ ]
+ }
+ ],
+ "source": [
+ "stopwords = get_stopwords()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 准备数据"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import jieba"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def cut(string): return list(jieba.cut(string))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def clean(words):\n",
+ " clean_words = []\n",
+ " for word in words:\n",
+ " if not word.isdigit() and word not in stopwords and 1kinds 和 kind==>ids 映射"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "id_kinds = {text_id: kind_id for text_id, kind_id in zip(data_id,kmeans.labels_)}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "6"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "id_kinds[3]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from collections import defaultdict\n",
+ "kind_ids = {}\n",
+ "kind_ids = defaultdict(lambda: set())\n",
+ "for text_id, kind_id in id_kinds.items():kind_ids[kind_id].add(text_id)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{16388,\n",
+ " 83040,\n",
+ " 83041,\n",
+ " 24588,\n",
+ " 40977,\n",
+ " 40978,\n",
+ " 81937,\n",
+ " 40980,\n",
+ " 40981,\n",
+ " 40982,\n",
+ " 40983,\n",
+ " 40984,\n",
+ " 40985,\n",
+ " 40987,\n",
+ " 81951,\n",
+ " 81952,\n",
+ " 81953,\n",
+ " 81954,\n",
+ " 81956,\n",
+ " 16421,\n",
+ " 16422,\n",
+ " 81957,\n",
+ " 81958,\n",
+ " 81959,\n",
+ " 81960,\n",
+ " 16427,\n",
+ " 81961,\n",
+ " 37458,\n",
+ " 81962,\n",
+ " 37459,\n",
+ " 81971,\n",
+ " 81972,\n",
+ " 81973,\n",
+ " 81974,\n",
+ " 37460,\n",
+ " 81975,\n",
+ " 81976,\n",
+ " 81977,\n",
+ " 81978,\n",
+ " 24637,\n",
+ " 24638,\n",
+ " 24639,\n",
+ " 24640,\n",
+ " 24641,\n",
+ " 24642,\n",
+ " 81984,\n",
+ " 81986,\n",
+ " 81987,\n",
+ " 73798,\n",
+ " 73799,\n",
+ " 73800,\n",
+ " 73801,\n",
+ " 73802,\n",
+ " 73803,\n",
+ " 81988,\n",
+ " 73805,\n",
+ " 73806,\n",
+ " 73807,\n",
+ " 73808,\n",
+ " 73809,\n",
+ " 73810,\n",
+ " 49236,\n",
+ " 16470,\n",
+ " 73814,\n",
+ " 73815,\n",
+ " 73816,\n",
+ " 73817,\n",
+ " 73819,\n",
+ " 82012,\n",
+ " 73821,\n",
+ " 73822,\n",
+ " 73823,\n",
+ " 73824,\n",
+ " 16485,\n",
+ " 16487,\n",
+ " 16488,\n",
+ " 24684,\n",
+ " 73843,\n",
+ " 73844,\n",
+ " 73849,\n",
+ " 73850,\n",
+ " 73851,\n",
+ " 16508,\n",
+ " 73852,\n",
+ " 73853,\n",
+ " 73854,\n",
+ " 73855,\n",
+ " 73857,\n",
+ " 73858,\n",
+ " 73859,\n",
+ " 73860,\n",
+ " 16517,\n",
+ " 16518,\n",
+ " 16519,\n",
+ " 16520,\n",
+ " 16521,\n",
+ " 70041,\n",
+ " 73861,\n",
+ " 16524,\n",
+ " 73863,\n",
+ " 73864,\n",
+ " 70042,\n",
+ " 73865,\n",
+ " 73866,\n",
+ " 73867,\n",
+ " 73868,\n",
+ " 70043,\n",
+ " 73869,\n",
+ " 73870,\n",
+ " 73871,\n",
+ " 73872,\n",
+ " 73873,\n",
+ " 73874,\n",
+ " 73876,\n",
+ " 84698,\n",
+ " 84699,\n",
+ " 73889,\n",
+ " 57513,\n",
+ " 84705,\n",
+ " 57535,\n",
+ " 84706,\n",
+ " 84707,\n",
+ " 53772,\n",
+ " 84709,\n",
+ " 84710,\n",
+ " 32989,\n",
+ " 32990,\n",
+ " 32991,\n",
+ " 32992,\n",
+ " 32993,\n",
+ " 32994,\n",
+ " 32995,\n",
+ " 32996,\n",
+ " 32997,\n",
+ " 32998,\n",
+ " 33000,\n",
+ " 33001,\n",
+ " 74945,\n",
+ " 74946,\n",
+ " 84716,\n",
+ " 74947,\n",
+ " 74948,\n",
+ " 87974,\n",
+ " 74949,\n",
+ " 87975,\n",
+ " 74950,\n",
+ " 57618,\n",
+ " 37505,\n",
+ " 82206,\n",
+ " 41247,\n",
+ " 41248,\n",
+ " 41249,\n",
+ " 41250,\n",
+ " 41251,\n",
+ " 41252,\n",
+ " 41253,\n",
+ " 41254,\n",
+ " 82207,\n",
+ " 41256,\n",
+ " 41257,\n",
+ " 41258,\n",
+ " 41259,\n",
+ " 41260,\n",
+ " 41261,\n",
+ " 41262,\n",
+ " 41263,\n",
+ " 41264,\n",
+ " 41265,\n",
+ " 37510,\n",
+ " 37511,\n",
+ " 37512,\n",
+ " 82277,\n",
+ " 82278,\n",
+ " 82279,\n",
+ " 82280,\n",
+ " 82282,\n",
+ " 82283,\n",
+ " 82284,\n",
+ " 82285,\n",
+ " 82289,\n",
+ " 82290,\n",
+ " 82291,\n",
+ " 82292,\n",
+ " 82293,\n",
+ " 82317,\n",
+ " 82318,\n",
+ " 61955,\n",
+ " 61958,\n",
+ " 61959,\n",
+ " 61960,\n",
+ " 61961,\n",
+ " 61962,\n",
+ " 61963,\n",
+ " 61964,\n",
+ " 83132,\n",
+ " 83133,\n",
+ " 83134,\n",
+ " 83135,\n",
+ " 83136,\n",
+ " 83137,\n",
+ " 33357,\n",
+ " 33358,\n",
+ " 33359,\n",
+ " 33360,\n",
+ " 88043,\n",
+ " 33376,\n",
+ " 33377,\n",
+ " 33379,\n",
+ " 33381,\n",
+ " 33389,\n",
+ " 33390,\n",
+ " 25199,\n",
+ " 25200,\n",
+ " 33391,\n",
+ " 33392,\n",
+ " 33394,\n",
+ " 33395,\n",
+ " 33416,\n",
+ " 33421,\n",
+ " 86427,\n",
+ " 86428,\n",
+ " 41635,\n",
+ " 41636,\n",
+ " 41637,\n",
+ " 25255,\n",
+ " 25256,\n",
+ " 25257,\n",
+ " 41639,\n",
+ " 41640,\n",
+ " 41641,\n",
+ " 41642,\n",
+ " 41645,\n",
+ " 25275,\n",
+ " 25276,\n",
+ " 41660,\n",
+ " 41661,\n",
+ " 41662,\n",
+ " 41663,\n",
+ " 82643,\n",
+ " 25314,\n",
+ " 25315,\n",
+ " 25316,\n",
+ " 25317,\n",
+ " 25318,\n",
+ " 25319,\n",
+ " 25321,\n",
+ " 25332,\n",
+ " 25334,\n",
+ " 25335,\n",
+ " 25337,\n",
+ " 83193,\n",
+ " 74926,\n",
+ " 83194,\n",
+ " 83195,\n",
+ " 74927,\n",
+ " 66345,\n",
+ " 25387,\n",
+ " 25392,\n",
+ " 25395,\n",
+ " 25398,\n",
+ " 25399,\n",
+ " 25400,\n",
+ " 25401,\n",
+ " 25402,\n",
+ " 25403,\n",
+ " 25404,\n",
+ " 25405,\n",
+ " 25419,\n",
+ " 25420,\n",
+ " 25421,\n",
+ " 25423,\n",
+ " 25437,\n",
+ " 25440,\n",
+ " 25441,\n",
+ " 25442,\n",
+ " 25443,\n",
+ " 25444,\n",
+ " 25445,\n",
+ " 25446,\n",
+ " 25447,\n",
+ " 33636,\n",
+ " 25449,\n",
+ " 25450,\n",
+ " 25451,\n",
+ " 25452,\n",
+ " 25453,\n",
+ " 25454,\n",
+ " 25455,\n",
+ " 33640,\n",
+ " 33641,\n",
+ " 41833,\n",
+ " 41834,\n",
+ " 25460,\n",
+ " 86470,\n",
+ " 25462,\n",
+ " 86471,\n",
+ " 86472,\n",
+ " 25466,\n",
+ " 86473,\n",
+ " 25469,\n",
+ " 86474,\n",
+ " 25474,\n",
+ " 25475,\n",
+ " 25476,\n",
+ " 25477,\n",
+ " 86475,\n",
+ " 86477,\n",
+ " 41875,\n",
+ " 41876,\n",
+ " 41877,\n",
+ " 86478,\n",
+ " 41881,\n",
+ " 41882,\n",
+ " 41883,\n",
+ " 41884,\n",
+ " 41885,\n",
+ " 41886,\n",
+ " 86479,\n",
+ " 86480,\n",
+ " 86481,\n",
+ " 25540,\n",
+ " 82886,\n",
+ " 41927,\n",
+ " 25544,\n",
+ " 25545,\n",
+ " 25546,\n",
+ " 25547,\n",
+ " 33737,\n",
+ " 25549,\n",
+ " 33738,\n",
+ " 33736,\n",
+ " 33740,\n",
+ " 41928,\n",
+ " 41930,\n",
+ " 41932,\n",
+ " 41939,\n",
+ " 41940,\n",
+ " 41942,\n",
+ " 25559,\n",
+ " 78351,\n",
+ " 78352,\n",
+ " 78353,\n",
+ " 82927,\n",
+ " 82928,\n",
+ " 33777,\n",
+ " 82929,\n",
+ " 33779,\n",
+ " 82930,\n",
+ " 33782,\n",
+ " 41985,\n",
+ " 41986,\n",
+ " 82947,\n",
+ " 41988,\n",
+ " 41989,\n",
+ " 82948,\n",
+ " 82949,\n",
+ " 82950,\n",
+ " 25609,\n",
+ " 33835,\n",
+ " 33836,\n",
+ " 33837,\n",
+ " 33840,\n",
+ " 33842,\n",
+ " 33846,\n",
+ " 33848,\n",
+ " 33849,\n",
+ " 33850,\n",
+ " 33851,\n",
+ " 78370,\n",
+ " 78371,\n",
+ " 33858,\n",
+ " 33859,\n",
+ " 33860,\n",
+ " 83019,\n",
+ " 83020,\n",
+ " 25683,\n",
+ " 83030,\n",
+ " 83031,\n",
+ " 83032,\n",
+ " 83033,\n",
+ " 83034,\n",
+ " 83035,\n",
+ " 83036,\n",
+ " 83037,\n",
+ " 83038,\n",
+ " 74847,\n",
+ " 83039,\n",
+ " 74849,\n",
+ " 74850,\n",
+ " 74851,\n",
+ " 74852,\n",
+ " 74853,\n",
+ " 74854,\n",
+ " 33895,\n",
+ " 33896,\n",
+ " 33897,\n",
+ " 74855,\n",
+ " 74861,\n",
+ " 25710,\n",
+ " 74863,\n",
+ " 74885,\n",
+ " 74887,\n",
+ " 33928,\n",
+ " 33929,\n",
+ " 33930,\n",
+ " 33931,\n",
+ " 74890,\n",
+ " 74891,\n",
+ " 74892,\n",
+ " 74893,\n",
+ " 74894,\n",
+ " 78387,\n",
+ " 83085,\n",
+ " 83086,\n",
+ " 83087,\n",
+ " 83088,\n",
+ " 83089,\n",
+ " 83090,\n",
+ " 83091,\n",
+ " 83092,\n",
+ " 83093,\n",
+ " 74911,\n",
+ " 78390,\n",
+ " 86531,\n",
+ " 74915,\n",
+ " 74916,\n",
+ " 74918,\n",
+ " 74919,\n",
+ " 74920,\n",
+ " 74921,\n",
+ " 74922,\n",
+ " 74923,\n",
+ " 74924,\n",
+ " 74925,\n",
+ " 33966,\n",
+ " 33967,\n",
+ " 33968,\n",
+ " 33969,\n",
+ " 33970,\n",
+ " 33971,\n",
+ " 33972,\n",
+ " 33973,\n",
+ " 33974,\n",
+ " 33975,\n",
+ " 33976,\n",
+ " 74928,\n",
+ " 74929,\n",
+ " 74930,\n",
+ " 74932,\n",
+ " 74933,\n",
+ " 74934,\n",
+ " 74935,\n",
+ " 74936,\n",
+ " 74937,\n",
+ " 25794,\n",
+ " 25795,\n",
+ " 33988,\n",
+ " 33989,\n",
+ " 33990,\n",
+ " 33991,\n",
+ " 33992,\n",
+ " 33993,\n",
+ " 33994,\n",
+ " 33995,\n",
+ " 25796,\n",
+ " 25797,\n",
+ " 25798,\n",
+ " 25801,\n",
+ " 25802,\n",
+ " 25803,\n",
+ " 25806,\n",
+ " 25808,\n",
+ " 25809,\n",
+ " 25810,\n",
+ " 25812,\n",
+ " 25816,\n",
+ " 25818,\n",
+ " 25819,\n",
+ " 25820,\n",
+ " 25821,\n",
+ " 42202,\n",
+ " 25823,\n",
+ " 25824,\n",
+ " 42203,\n",
+ " 42206,\n",
+ " 42209,\n",
+ " 42210,\n",
+ " 42211,\n",
+ " 42215,\n",
+ " 42216,\n",
+ " 83190,\n",
+ " 25847,\n",
+ " 83191,\n",
+ " 83192,\n",
+ " 75002,\n",
+ " 34043,\n",
+ " 75003,\n",
+ " 75004,\n",
+ " 75005,\n",
+ " 75006,\n",
+ " 75007,\n",
+ " 34049,\n",
+ " 75008,\n",
+ " 75009,\n",
+ " 75010,\n",
+ " 75011,\n",
+ " 75012,\n",
+ " 75013,\n",
+ " 25864,\n",
+ " 78415,\n",
+ " 78416,\n",
+ " 42278,\n",
+ " 42280,\n",
+ " 42281,\n",
+ " 42282,\n",
+ " 42283,\n",
+ " 42284,\n",
+ " 58668,\n",
+ " 42286,\n",
+ " 42287,\n",
+ " 42289,\n",
+ " 42290,\n",
+ " 34099,\n",
+ " 42292,\n",
+ " 75058,\n",
+ " 42294,\n",
+ " 75061,\n",
+ " 42296,\n",
+ " 75062,\n",
+ " 78421,\n",
+ " 42301,\n",
+ " 86562,\n",
+ " 75073,\n",
+ " 75074,\n",
+ " 75075,\n",
+ " 42308,\n",
+ " 75076,\n",
+ " 75077,\n",
+ " 75078,\n",
+ " 75079,\n",
+ " 75080,\n",
+ " 75081,\n",
+ " 75082,\n",
+ " 75083,\n",
+ " 75084,\n",
+ " 78423,\n",
+ " 78424,\n",
+ " 83282,\n",
+ " 83283,\n",
+ " 83284,\n",
+ " 83285,\n",
+ " 83286,\n",
+ " 83287,\n",
+ " 83288,\n",
+ " 83289,\n",
+ " 83290,\n",
+ " 83292,\n",
+ " 83293,\n",
+ " 83294,\n",
+ " 83295,\n",
+ " 83296,\n",
+ " 83297,\n",
+ " 34151,\n",
+ " 75134,\n",
+ " 83338,\n",
+ " 83353,\n",
+ " 83354,\n",
+ " 83355,\n",
+ " 83356,\n",
+ " 83357,\n",
+ " 42403,\n",
+ " 45877,\n",
+ " 42405,\n",
+ " 42407,\n",
+ " 42408,\n",
+ " 42409,\n",
+ " 42410,\n",
+ " 42411,\n",
+ " 42413,\n",
+ " 42414,\n",
+ " 42415,\n",
+ " 75182,\n",
+ " 42417,\n",
+ " 42418,\n",
+ " 83378,\n",
+ " 83379,\n",
+ " 83380,\n",
+ " 75190,\n",
+ " 83381,\n",
+ " 83382,\n",
+ " 83384,\n",
+ " 83385,\n",
+ " 83386,\n",
+ " 83387,\n",
+ " 83388,\n",
+ " 83389,\n",
+ " 83390,\n",
+ " 83396,\n",
+ " 75205,\n",
+ " 50631,\n",
+ " 83423,\n",
+ " 83428,\n",
+ " 83432,\n",
+ " 83433,\n",
+ " 86599,\n",
+ " 86600,\n",
+ " 67068,\n",
+ " 67069,\n",
+ " 83453,\n",
+ " 67072,\n",
+ " 83456,\n",
+ " 86601,\n",
+ " 86603,\n",
+ " 86604,\n",
+ " 83526,\n",
+ " 83527,\n",
+ " 83528,\n",
+ " 83529,\n",
+ " 83530,\n",
+ " 83531,\n",
+ " 83532,\n",
+ " 83533,\n",
+ " 83534,\n",
+ " 83535,\n",
+ " 83536,\n",
+ " 86620,\n",
+ " 86621,\n",
+ " 83582,\n",
+ " 83583,\n",
+ " 83584,\n",
+ " 83585,\n",
+ " 83586,\n",
+ " 83587,\n",
+ " 83588,\n",
+ " 83589,\n",
+ " 83590,\n",
+ " 67227,\n",
+ " 67228,\n",
+ " 67229,\n",
+ " 67230,\n",
+ " 67239,\n",
+ " 67240,\n",
+ " 67241,\n",
+ " 67242,\n",
+ " 67243,\n",
+ " 87663,\n",
+ " 18121,\n",
+ " 87664,\n",
+ " 83664,\n",
+ " 83671,\n",
+ " 83675,\n",
+ " 83677,\n",
+ " 83678,\n",
+ " 83679,\n",
+ " 83680,\n",
+ " 83681,\n",
+ " 34555,\n",
+ " 34556,\n",
+ " 34557,\n",
+ " 34558,\n",
+ " 34559,\n",
+ " 34561,\n",
+ " 34562,\n",
+ " 34563,\n",
+ " 86658,\n",
+ " 86664,\n",
+ " 75584,\n",
+ " 36190,\n",
+ " 75586,\n",
+ " 75587,\n",
+ " 75588,\n",
+ " 34629,\n",
+ " 34630,\n",
+ " 34631,\n",
+ " 34632,\n",
+ " 36191,\n",
+ " 34634,\n",
+ " 42827,\n",
+ " 34636,\n",
+ " 34637,\n",
+ " 42828,\n",
+ " 42830,\n",
+ " 42831,\n",
+ " 42832,\n",
+ " 42833,\n",
+ " 75598,\n",
+ " 86669,\n",
+ " 42845,\n",
+ " 42846,\n",
+ " 42847,\n",
+ " 42848,\n",
+ " 42849,\n",
+ " 42850,\n",
+ " 75616,\n",
+ " 75620,\n",
+ " 75621,\n",
+ " 75622,\n",
+ " 75623,\n",
+ " 75624,\n",
+ " 75625,\n",
+ " 75626,\n",
+ " 75627,\n",
+ " 86673,\n",
+ " 75636,\n",
+ " 75637,\n",
+ " 75638,\n",
+ " 75639,\n",
+ " 75640,\n",
+ " 75641,\n",
+ " 75642,\n",
+ " 86678,\n",
+ " 42887,\n",
+ " 42888,\n",
+ " 42889,\n",
+ " 26509,\n",
+ " 26510,\n",
+ " 26511,\n",
+ " 26512,\n",
+ " 26513,\n",
+ " 26518,\n",
+ " 26519,\n",
+ " 26520,\n",
+ " 26521,\n",
+ " 26522,\n",
+ " 42908,\n",
+ " 42911,\n",
+ " 42912,\n",
+ " 42915,\n",
+ " 26533,\n",
+ " 26535,\n",
+ " 34744,\n",
+ " 34745,\n",
+ " 34746,\n",
+ " 34747,\n",
+ " 34753,\n",
+ " 34754,\n",
+ " 75731,\n",
+ " 75732,\n",
+ " 75733,\n",
+ " 75734,\n",
+ " 75736,\n",
+ " 75737,\n",
+ " 75739,\n",
+ " 75740,\n",
+ " 75742,\n",
+ " 75743,\n",
+ " 75744,\n",
+ " 34792,\n",
+ " 34793,\n",
+ " 34794,\n",
+ " 42986,\n",
+ " 42987,\n",
+ " 78557,\n",
+ " 78558,\n",
+ " 26607,\n",
+ " 26608,\n",
+ " 26609,\n",
+ " 78559,\n",
+ " 78560,\n",
+ " 78561,\n",
+ " 75774,\n",
+ " 78562,\n",
+ " 78563,\n",
+ " 78564,\n",
+ " 75797,\n",
+ " 75798,\n",
+ " 75799,\n",
+ " 75800,\n",
+ " 75801,\n",
+ " 75802,\n",
+ " 77647,\n",
+ " 75804,\n",
+ " 75805,\n",
+ " 75807,\n",
+ " 26659,\n",
+ " 26660,\n",
+ " 26661,\n",
+ " 26671,\n",
+ " 26673,\n",
+ " 18483,\n",
+ " 34868,\n",
+ " 26682,\n",
+ " 26683,\n",
+ " 26684,\n",
+ " 26685,\n",
+ " 34875,\n",
+ " 26690,\n",
+ " 26691,\n",
+ " 26692,\n",
+ " 43077,\n",
+ " 43079,\n",
+ " 43080,\n",
+ " 43082,\n",
+ " 43083,\n",
+ " 43084,\n",
+ " 43085,\n",
+ " 43086,\n",
+ " 26703,\n",
+ " 34897,\n",
+ " 26706,\n",
+ " 26707,\n",
+ " 26708,\n",
+ " 26709,\n",
+ " 26710,\n",
+ " 34898,\n",
+ " 34899,\n",
+ " 34900,\n",
+ " 34901,\n",
+ " 34902,\n",
+ " 34903,\n",
+ " 34904,\n",
+ " 34907,\n",
+ " 43109,\n",
+ " 26729,\n",
+ " 26730,\n",
+ " 26731,\n",
+ " 26732,\n",
+ " 26733,\n",
+ " 70448,\n",
+ " 26764,\n",
+ " 26765,\n",
+ " 26766,\n",
+ " 76962,\n",
+ " 70450,\n",
+ " 76963,\n",
+ " 70451,\n",
+ " 76964,\n",
+ " 43168,\n",
+ " 43169,\n",
+ " 43170,\n",
+ " 43171,\n",
+ " 59556,\n",
+ " 43173,\n",
+ " 70453,\n",
+ " 76969,\n",
+ " 34999,\n",
+ " 35000,\n",
+ " 35001,\n",
+ " 35003,\n",
+ " 35005,\n",
+ " 86741,\n",
+ " 86742,\n",
+ " 86743,\n",
+ " 86744,\n",
+ " 76975,\n",
+ " 86745,\n",
+ " 76976,\n",
+ " 26839,\n",
+ " 86746,\n",
+ " 26842,\n",
+ " 26843,\n",
+ " 26844,\n",
+ " 26845,\n",
+ " 26846,\n",
+ " 75999,\n",
+ " 86747,\n",
+ " 86748,\n",
+ " 86749,\n",
+ " 26861,\n",
+ " 35053,\n",
+ " 35054,\n",
+ " 35056,\n",
+ " 26865,\n",
+ " 26866,\n",
+ " 26867,\n",
+ " 43248,\n",
+ " 26869,\n",
+ " 86750,\n",
+ " 26871,\n",
+ " 26872,\n",
+ " 84215,\n",
+ " 84218,\n",
+ " 26875,\n",
+ " 86752,\n",
+ " 86753,\n",
+ " 59649,\n",
+ " 35084,\n",
+ " 26895,\n",
+ " 35087,\n",
+ " 26897,\n",
+ " 35088,\n",
+ " 35113,\n",
+ " 35115,\n",
+ " 35122,\n",
+ " 35123,\n",
+ " 35124,\n",
+ " 35125,\n",
+ " 26935,\n",
+ " 26938,\n",
+ " 84308,\n",
+ " 26979,\n",
+ " 26980,\n",
+ " 26982,\n",
+ " 26983,\n",
+ " 26984,\n",
+ " 26986,\n",
+ " 26987,\n",
+ " 26988,\n",
+ " 26989,\n",
+ " 84330,\n",
+ " 84331,\n",
+ " 84332,\n",
+ " 84333,\n",
+ " 27004,\n",
+ " 27005,\n",
+ " 27006,\n",
+ " 27007,\n",
+ " 27008,\n",
+ " 27009,\n",
+ " 76156,\n",
+ " 27011,\n",
+ " 76160,\n",
+ " 84356,\n",
+ " 84357,\n",
+ " 84358,\n",
+ " 84359,\n",
+ " 84360,\n",
+ " 84361,\n",
+ " 84363,\n",
+ " 84365,\n",
+ " 84366,\n",
+ " 84367,\n",
+ " 84368,\n",
+ " 84369,\n",
+ " 84370,\n",
+ " 84371,\n",
+ " 84372,\n",
+ " 84373,\n",
+ " 84374,\n",
+ " 84376,\n",
+ " 84377,\n",
+ " 84378,\n",
+ " 27038,\n",
+ " 27053,\n",
+ " 27054,\n",
+ " 76213,\n",
+ " 76215,\n",
+ " 27064,\n",
+ " 27065,\n",
+ " 27066,\n",
+ " 76217,\n",
+ " 84415,\n",
+ " 76224,\n",
+ " 76225,\n",
+ " 76226,\n",
+ " 84416,\n",
+ " 76228,\n",
+ " 84417,\n",
+ " 84418,\n",
+ " 84437,\n",
+ " 84438,\n",
+ " 84439,\n",
+ " 84440,\n",
+ " 84441,\n",
+ " 84442,\n",
+ " 84443,\n",
+ " 84444,\n",
+ " 35295,\n",
+ " 27108,\n",
+ " 27109,\n",
+ " 84452,\n",
+ " 84453,\n",
+ " 84454,\n",
+ " 27123,\n",
+ " 27124,\n",
+ " 27125,\n",
+ " 43515,\n",
+ " 27132,\n",
+ " 27133,\n",
+ " 27134,\n",
+ " 60752,\n",
+ " 60753,\n",
+ " 27137,\n",
+ " 27139,\n",
+ " 27140,\n",
+ " 43523,\n",
+ " 27142,\n",
+ " 27143,\n",
+ " 27144,\n",
+ " 43524,\n",
+ " 43525,\n",
+ " 27147,\n",
+ " 60754,\n",
+ " 84490,\n",
+ " 84491,\n",
+ " 84492,\n",
+ " 84494,\n",
+ " 84495,\n",
+ " 43538,\n",
+ " 43539,\n",
+ " 84496,\n",
+ " 27157,\n",
+ " 84497,\n",
+ " 43547,\n",
+ " 27183,\n",
+ " 76352,\n",
+ " 43594,\n",
+ " 43595,\n",
+ " 43596,\n",
+ " 43600,\n",
+ " ...}"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "kind_ids[1]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "5288\n",
+ "3743\n",
+ "3734\n",
+ "846\n",
+ "11686\n",
+ "3044\n",
+ "42703\n",
+ "2202\n",
+ "965\n",
+ "4644\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(10):\n",
+ " print(len(kind_ids[i]))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+<<<<<<< HEAD
+ "### 词云展示聚类结果"
+=======
+ "### 词云展示分类结果"
+>>>>>>> 74c59a1d2a37a18bf2b3b6f2eaf0ee4aa2be16ed
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "select_kind = kind_ids[2]\n",
+ "\n",
+ "from collections import Counter\n",
+ "kind_words_counter = [Counter(clean(cut(str(content.iloc[num].content)))) for num in list(select_kind)]\n",
+ "kind_all_word = kind_words_counter[0] \n",
+ "for i in range(1,len(select_kind)):kind_all_word += kind_words_counter[i] \n",
+ "cloud_data = ''\n",
+ "for num in list(select_kind):\n",
+ " cloud_data = cloud_data + ' ' + (\" \".join(clean(cut(str(content.iloc[num].content)))))\n",
+ " \n",
+ "import wordcloud \n",
+ "wc = wordcloud.WordCloud(font_path=r'C:\\Users\\Anan\\Downloads/simkai.ttf',\n",
+ " stopwords='新华社', width=800, height=500, scale=2, \n",
+ " max_words=200, background_color='black')\n",
+ "#word_cloud = wc.generate_from_text(cloud_data)\n",
+ "word_cloud = wc.generate_from_frequencies(kind_all_word)\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "plt.imshow(word_cloud)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 文本分类(判断是否为新华社所发)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 数据打标签"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_list = []\n",
+ "class_list = []\n",
+ "for i in range(len(content)):\n",
+ " data_list.append(\" \".join(clean(cut(str(content.iloc[i].content)))))\n",
+ " class_list.append(1 if '新华' in str(content.iloc[i].source) else 0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 随机选取训练数据和测试数据"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import random"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "test_size = 0.2 \n",
+ "data_index = [i for i in range(len(content))] \n",
+ "data_class_list = list(zip(data_list, class_list, data_index))\n",
+ "random.shuffle(data_class_list)\n",
+ "index = int(len(data_class_list)*test_size) + 1\n",
+ "train_list = data_class_list[index:]\n",
+ "test_list = data_class_list[:index]\n",
+ "train_data_list, train_class_list, train_index_list = zip(*train_list)\n",
+ "test_data_list, test_class_list, test_index_list = zip(*test_list)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 建立TFIDF向量"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the shape of tfidf_train is (71688, 207843)\n",
+ "the shape of tfidf_test test is (17923, 207843)\n"
+ ]
+ }
+ ],
+ "source": [
+ "count_clf = CountVectorizer(max_df=0.5)\n",
+ "counts_train = count_clf.fit_transform(train_data_list)\n",
+ "\n",
+ "count_v2 = CountVectorizer(vocabulary=count_clf.vocabulary_)\n",
+ "counts_test = count_v2.fit_transform(test_data_list)\n",
+ "\n",
+ "tfidftransformer = TfidfTransformer()\n",
+ "\n",
+ "tfidf_train = tfidftransformer.fit(counts_train).transform(counts_train)\n",
+ "tfidf_test = tfidftransformer.fit(counts_test).transform(counts_test)\n",
+ "print(\"the shape of tfidf_train is \" + repr(tfidf_train.shape))\n",
+ "print(\"the shape of tfidf_test test is \" + repr(tfidf_test.shape))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 使用朴素贝叶斯分类器"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pickle"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def NBClassifier(train_feature, train_label, test_feature):\n",
+ " from sklearn.naive_bayes import MultinomialNB\n",
+ " nbclf = MultinomialNB().fit(train_feature, train_label)\n",
+ " filename = 'finalized_nbclf.sav'\n",
+ " pickle.dump(nbclf, open(filename, 'wb')) \n",
+ " pred = nbclf.predict(test_feature)\n",
+ " return pred"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 性能评估"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn import metrics"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def calculate_result(actual,pred):\n",
+ " m_accuracy = metrics.accuracy_score(actual, pred)\n",
+ " m_precision = metrics.precision_score(actual,pred)\n",
+ " m_recall = metrics.recall_score(actual,pred)\n",
+ " print('predict info:')\n",
+ " print('accuracy:{0:.3f}'.format(m_accuracy))\n",
+ " print('precision:{0:.3f}'.format(m_precision))\n",
+ " print('recall:{0:0.3f}'.format(m_recall))\n",
+ " print('f1-score:{0:.3f}'.format(metrics.f1_score(actual,pred)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 结果显示"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "*************************\n",
+ "NaiveBayes\n",
+ "*************************\n",
+ "predict info:\n",
+ "accuracy:0.917\n",
+ "precision:0.914\n",
+ "recall:1.000\n",
+ "f1-score:0.955\n"
+ ]
+ }
+ ],
+ "source": [
+ "pred = NBClassifier(tfidf_train, train_class_list, tfidf_test) \n",
+ "print('*************************\\nNaiveBayes\\n*************************')\n",
+ "calculate_result(test_class_list, pred)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 找出可能抄袭的文章"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[3031,\n",
+ " 970,\n",
+ " 3554,\n",
+ " 5356,\n",
+ " 4183,\n",
+ " 10960,\n",
+ " 4205,\n",
+ " 5922,\n",
+ " 2204,\n",
+ " 5583,\n",
+ " 2257,\n",
+ " 1647,\n",
+ " 3160,\n",
+ " 4419,\n",
+ " 6427,\n",
+ " 5976,\n",
+ " 5497,\n",
+ " 3324,\n",
+ " 4221,\n",
+ " 4336,\n",
+ " 2742,\n",
+ " 6878,\n",
+ " 3587,\n",
+ " 6640,\n",
+ " 3724,\n",
+ " 614,\n",
+ " 1714,\n",
+ " 4299,\n",
+ " 1050,\n",
+ " 5688,\n",
+ " 4994,\n",
+ " 5009,\n",
+ " 5894,\n",
+ " 3337,\n",
+ " 10964,\n",
+ " 1771,\n",
+ " 10043,\n",
+ " 10971,\n",
+ " 7379,\n",
+ " 1048,\n",
+ " 783,\n",
+ " 8000,\n",
+ " 5390,\n",
+ " 5428,\n",
+ " 443,\n",
+ " 6314,\n",
+ " 3869,\n",
+ " 1051,\n",
+ " 4755,\n",
+ " 806,\n",
+ " 4033,\n",
+ " 7994,\n",
+ " 6894,\n",
+ " 5170,\n",
+ " 10741,\n",
+ " 2826,\n",
+ " 6088,\n",
+ " 2756,\n",
+ " 7918,\n",
+ " 6813,\n",
+ " 4379,\n",
+ " 682,\n",
+ " 6059,\n",
+ " 6892,\n",
+ " 1202,\n",
+ " 1458,\n",
+ " 1863,\n",
+ " 4634,\n",
+ " 7605,\n",
+ " 6062,\n",
+ " 7565,\n",
+ " 2861,\n",
+ " 5703,\n",
+ " 7415,\n",
+ " 6656,\n",
+ " 7683,\n",
+ " 7048,\n",
+ " 7055,\n",
+ " 6159,\n",
+ " 6898,\n",
+ " 7079,\n",
+ " 2865,\n",
+ " 3222,\n",
+ " 3335,\n",
+ " 7996,\n",
+ " 10583,\n",
+ " 6726,\n",
+ " 6163,\n",
+ " 7664,\n",
+ " 2366,\n",
+ " 480,\n",
+ " 2856,\n",
+ " 3740,\n",
+ " 7636,\n",
+ " 5851,\n",
+ " 2902,\n",
+ " 3323,\n",
+ " 1023,\n",
+ " 7579,\n",
+ " 9109,\n",
+ " 9979,\n",
+ " 221,\n",
+ " 3960,\n",
+ " 3423,\n",
+ " 6636,\n",
+ " 7110,\n",
+ " 68,\n",
+ " 6,\n",
+ " 10636,\n",
+ " 3301,\n",
+ " 805,\n",
+ " 3399,\n",
+ " 859,\n",
+ " 3084,\n",
+ " 515,\n",
+ " 173,\n",
+ " 1683,\n",
+ " 9878,\n",
+ " 4504,\n",
+ " 3842,\n",
+ " 2499,\n",
+ " 2818,\n",
+ " 2726,\n",
+ " 194,\n",
+ " 9863,\n",
+ " 8057,\n",
+ " 2408,\n",
+ " 4283,\n",
+ " 4528,\n",
+ " 3860,\n",
+ " 7328,\n",
+ " 819,\n",
+ " 3602,\n",
+ " 7783,\n",
+ " 6947,\n",
+ " 4959,\n",
+ " 1479,\n",
+ " 7488,\n",
+ " 7211,\n",
+ " 1969,\n",
+ " 4835,\n",
+ " 6691,\n",
+ " 7544,\n",
+ " 5866,\n",
+ " 3494,\n",
+ " 7349,\n",
+ " 10061,\n",
+ " 7628,\n",
+ " 6997,\n",
+ " 10968,\n",
+ " 6491,\n",
+ " 7593,\n",
+ " 1111,\n",
+ " 3625,\n",
+ " 32,\n",
+ " 133,\n",
+ " 1726,\n",
+ " 6256,\n",
+ " 2623,\n",
+ " 796,\n",
+ " 4153,\n",
+ " 4587,\n",
+ " 863,\n",
+ " 7222,\n",
+ " 5480,\n",
+ " 255,\n",
+ " 4904,\n",
+ " 2665,\n",
+ " 4251,\n",
+ " 4733,\n",
+ " 4050,\n",
+ " 782,\n",
+ " 2585,\n",
+ " 1722,\n",
+ " 6584,\n",
+ " 2269,\n",
+ " 1261,\n",
+ " 1405,\n",
+ " 4297,\n",
+ " 5143,\n",
+ " 7478,\n",
+ " 2786,\n",
+ " 3477,\n",
+ " 3311,\n",
+ " 2572,\n",
+ " 4023,\n",
+ " 7624,\n",
+ " 3212,\n",
+ " 1100,\n",
+ " 751,\n",
+ " 7906,\n",
+ " 7507,\n",
+ " 4581,\n",
+ " 10936,\n",
+ " 7661,\n",
+ " 10030,\n",
+ " 7846,\n",
+ " 4037,\n",
+ " 3095,\n",
+ " 1600,\n",
+ " 4182,\n",
+ " 2042,\n",
+ " 4300,\n",
+ " 7176,\n",
+ " 4095,\n",
+ " 9946,\n",
+ " 1293,\n",
+ " 2520,\n",
+ " 10951,\n",
+ " 663,\n",
+ " 2850,\n",
+ " 7432,\n",
+ " 1209,\n",
+ " 2866,\n",
+ " 3944,\n",
+ " 1045,\n",
+ " 3417,\n",
+ " 2307,\n",
+ " 1112,\n",
+ " 4928,\n",
+ " 6220,\n",
+ " 1173,\n",
+ " 3899,\n",
+ " 942,\n",
+ " 6338,\n",
+ " 3595,\n",
+ " 7073,\n",
+ " 1913,\n",
+ " 5410,\n",
+ " 2302,\n",
+ " 5151,\n",
+ " 7393,\n",
+ " 4485,\n",
+ " 1237,\n",
+ " 3209,\n",
+ " 4313,\n",
+ " 334,\n",
+ " 5070,\n",
+ " 6943,\n",
+ " 9950,\n",
+ " 3268,\n",
+ " 215,\n",
+ " 6386,\n",
+ " 795,\n",
+ " 3008,\n",
+ " 2422,\n",
+ " 7201,\n",
+ " 2496,\n",
+ " 377,\n",
+ " 4824,\n",
+ " 1579,\n",
+ " 5042,\n",
+ " 7367,\n",
+ " 1675,\n",
+ " 4125,\n",
+ " 7509,\n",
+ " 5059,\n",
+ " 6738,\n",
+ " 7385,\n",
+ " 7979,\n",
+ " 3643,\n",
+ " 6329,\n",
+ " 6730,\n",
+ " 5128,\n",
+ " 9993,\n",
+ " 971,\n",
+ " 7397,\n",
+ " 7204,\n",
+ " 5733,\n",
+ " 6932,\n",
+ " 7756,\n",
+ " 183,\n",
+ " 7412,\n",
+ " 3759,\n",
+ " 5687,\n",
+ " 2925,\n",
+ " 6296,\n",
+ " 7416,\n",
+ " 5498,\n",
+ " 3389,\n",
+ " 1134,\n",
+ " 7427,\n",
+ " 10952,\n",
+ " 4948,\n",
+ " 4409,\n",
+ " 2912,\n",
+ " 1213,\n",
+ " 540,\n",
+ " 5532,\n",
+ " 3709,\n",
+ " 8045,\n",
+ " 1962,\n",
+ " 10783,\n",
+ " 6432,\n",
+ " 5496,\n",
+ " 1764,\n",
+ " 5720,\n",
+ " 4428,\n",
+ " 1515,\n",
+ " 2816,\n",
+ " 3087,\n",
+ " 8042,\n",
+ " 83,\n",
+ " 3332,\n",
+ " 4449,\n",
+ " 248,\n",
+ " 4414,\n",
+ " 6226,\n",
+ " 6423,\n",
+ " 5640,\n",
+ " 508,\n",
+ " 831,\n",
+ " 667,\n",
+ " 1135,\n",
+ " 5777,\n",
+ " 2796,\n",
+ " 576,\n",
+ " 7149,\n",
+ " 2712,\n",
+ " 4127,\n",
+ " 105,\n",
+ " 665,\n",
+ " 4662,\n",
+ " 703,\n",
+ " 868,\n",
+ " 6268,\n",
+ " 373,\n",
+ " 6334,\n",
+ " 7880,\n",
+ " 7733,\n",
+ " 2671,\n",
+ " 5309,\n",
+ " 5279,\n",
+ " 10694,\n",
+ " 5791,\n",
+ " 7582,\n",
+ " 5197,\n",
+ " 3812,\n",
+ " 2021,\n",
+ " 7813,\n",
+ " 7714,\n",
+ " 3080,\n",
+ " 3227,\n",
+ " 1254,\n",
+ " 2840,\n",
+ " 4090,\n",
+ " 2069,\n",
+ " 2206,\n",
+ " 7727,\n",
+ " 927,\n",
+ " 6624,\n",
+ " 5956,\n",
+ " 110,\n",
+ " 1685,\n",
+ " 5699,\n",
+ " 4876,\n",
+ " 7537,\n",
+ " 3639,\n",
+ " 7940,\n",
+ " 6704,\n",
+ " 2822,\n",
+ " 2256,\n",
+ " 1868,\n",
+ " 10681,\n",
+ " 7560,\n",
+ " 10732,\n",
+ " 6787,\n",
+ " 58,\n",
+ " 0,\n",
+ " 1192,\n",
+ " 4210,\n",
+ " 8008,\n",
+ " 4725,\n",
+ " 7895,\n",
+ " 3615,\n",
+ " 7632,\n",
+ " 1834,\n",
+ " 3922,\n",
+ " 4007,\n",
+ " 7059,\n",
+ " 2175,\n",
+ " 7275,\n",
+ " 7917,\n",
+ " 1312,\n",
+ " 5152,\n",
+ " 5543,\n",
+ " 4796,\n",
+ " 7066,\n",
+ " 6985,\n",
+ " 4424,\n",
+ " 3828,\n",
+ " 2067,\n",
+ " 4868,\n",
+ " 6712,\n",
+ " 7938,\n",
+ " 7120,\n",
+ " 2427,\n",
+ " 5643,\n",
+ " 820,\n",
+ " 760,\n",
+ " 5117,\n",
+ " 4476,\n",
+ " 6006,\n",
+ " 6988,\n",
+ " 6344,\n",
+ " 7489,\n",
+ " 5235,\n",
+ " 3167,\n",
+ " 7776,\n",
+ " 234,\n",
+ " 6119,\n",
+ " 374,\n",
+ " 4640,\n",
+ " 10033,\n",
+ " 2008,\n",
+ " 5700,\n",
+ " 7100,\n",
+ " 7471,\n",
+ " 6206,\n",
+ " 6773,\n",
+ " 7462,\n",
+ " 2530,\n",
+ " 7748,\n",
+ " 5746,\n",
+ " 6767,\n",
+ " 6632,\n",
+ " 779,\n",
+ " 2155,\n",
+ " 6050,\n",
+ " 223,\n",
+ " 125,\n",
+ " 6794,\n",
+ " 5988,\n",
+ " 1044,\n",
+ " 4542,\n",
+ " 4106,\n",
+ " 5193,\n",
+ " 3130,\n",
+ " 10972,\n",
+ " 1872,\n",
+ " 2184,\n",
+ " 1087,\n",
+ " 657,\n",
+ " 2672,\n",
+ " 5837,\n",
+ " 1904,\n",
+ " 2561,\n",
+ " 1950,\n",
+ " 7249,\n",
+ " 5392,\n",
+ " 1517,\n",
+ " 1271,\n",
+ " 5479,\n",
+ " 5299,\n",
+ " 5115,\n",
+ " 315,\n",
+ " 2849,\n",
+ " 4783,\n",
+ " 3556,\n",
+ " 6587,\n",
+ " 201,\n",
+ " 3804,\n",
+ " 7317,\n",
+ " 1014,\n",
+ " 791,\n",
+ " 9941,\n",
+ " 10827,\n",
+ " 2973,\n",
+ " 52,\n",
+ " 4829,\n",
+ " 9924,\n",
+ " 6836,\n",
+ " 7633,\n",
+ " 2334,\n",
+ " 5131,\n",
+ " 6144,\n",
+ " 1803,\n",
+ " 7508,\n",
+ " 4901,\n",
+ " 7157,\n",
+ " 1654,\n",
+ " 176,\n",
+ " 2895,\n",
+ " 6713,\n",
+ " 9954,\n",
+ " 6340,\n",
+ " 3501,\n",
+ " 4687,\n",
+ " 1786,\n",
+ " 5300,\n",
+ " 50,\n",
+ " 2058,\n",
+ " 3074,\n",
+ " 839,\n",
+ " 1994,\n",
+ " 7850,\n",
+ " 7136,\n",
+ " 4237,\n",
+ " 6010,\n",
+ " 6396,\n",
+ " 425,\n",
+ " 2937,\n",
+ " 6446,\n",
+ " 5692,\n",
+ " 4808,\n",
+ " 5756,\n",
+ " 3474,\n",
+ " 574,\n",
+ " 5311,\n",
+ " 7597,\n",
+ " 4171,\n",
+ " 7321,\n",
+ " 6121,\n",
+ " 6239,\n",
+ " 4355,\n",
+ " 3090,\n",
+ " 6021,\n",
+ " 2412,\n",
+ " 7797,\n",
+ " 6499,\n",
+ " 1189,\n",
+ " 5164,\n",
+ " 7942,\n",
+ " 7401,\n",
+ " 2010,\n",
+ " 9929,\n",
+ " 5372,\n",
+ " 4346,\n",
+ " 3194,\n",
+ " 1585,\n",
+ " 1091,\n",
+ " 4665,\n",
+ " 978,\n",
+ " 6412,\n",
+ " 8065,\n",
+ " 5648,\n",
+ " 3748,\n",
+ " 3689,\n",
+ " 3952,\n",
+ " 3707,\n",
+ " 882,\n",
+ " 3986,\n",
+ " 1710,\n",
+ " 7491,\n",
+ " 3475,\n",
+ " 1676,\n",
+ " 6837,\n",
+ " 2460,\n",
+ " 5071,\n",
+ " 5048,\n",
+ " 6094,\n",
+ " 4351,\n",
+ " 2728,\n",
+ " 8043,\n",
+ " 10786,\n",
+ " 5907,\n",
+ " 717,\n",
+ " 6631,\n",
+ " 3580,\n",
+ " 918,\n",
+ " 5026,\n",
+ " 1106,\n",
+ " 568,\n",
+ " 2478,\n",
+ " 3145,\n",
+ " 4263,\n",
+ " 10032,\n",
+ " 93,\n",
+ " 5990,\n",
+ " 4861,\n",
+ " 1430,\n",
+ " 2335,\n",
+ " 2376,\n",
+ " 7283,\n",
+ " 5379,\n",
+ " 10638,\n",
+ " 877,\n",
+ " 5812,\n",
+ " 3531,\n",
+ " 2504,\n",
+ " 4008,\n",
+ " 4064,\n",
+ " 6749,\n",
+ " 5741,\n",
+ " 6315,\n",
+ " 2570,\n",
+ " 7892,\n",
+ " 7614,\n",
+ " 5321,\n",
+ " 7469,\n",
+ " 1056,\n",
+ " 7990,\n",
+ " 323,\n",
+ " 375,\n",
+ " 5296,\n",
+ " 491,\n",
+ " 1360,\n",
+ " 1438,\n",
+ " 3027,\n",
+ " 3473,\n",
+ " 3767,\n",
+ " 7165,\n",
+ " 3201,\n",
+ " 5647,\n",
+ " 6292,\n",
+ " 7112,\n",
+ " 582,\n",
+ " 5797,\n",
+ " 8004,\n",
+ " 5230,\n",
+ " 2221,\n",
+ " 6271,\n",
+ " 7902,\n",
+ " 4191,\n",
+ " 5341,\n",
+ " 3461,\n",
+ " 3741,\n",
+ " 7787,\n",
+ " 5822,\n",
+ " 3445,\n",
+ " 1042,\n",
+ " 1899,\n",
+ " 4454,\n",
+ " 9965,\n",
+ " 1606,\n",
+ " 1605,\n",
+ " 2487,\n",
+ " 6664,\n",
+ " 3083,\n",
+ " 699,\n",
+ " 6364,\n",
+ " 2906,\n",
+ " 6461,\n",
+ " 521,\n",
+ " 3532,\n",
+ " 3339,\n",
+ " 6566,\n",
+ " 1428,\n",
+ " 7839,\n",
+ " 4280,\n",
+ " 1124,\n",
+ " 3126,\n",
+ " 704,\n",
+ " 7298,\n",
+ " 668,\n",
+ " 950,\n",
+ " 3539,\n",
+ " 507,\n",
+ " 6477,\n",
+ " 4295,\n",
+ " 239,\n",
+ " 2876,\n",
+ " 2285,\n",
+ " 3671,\n",
+ " 7084,\n",
+ " 5332,\n",
+ " 3153,\n",
+ " 3135,\n",
+ " 7599,\n",
+ " 3183,\n",
+ " 131,\n",
+ " 1169,\n",
+ " 1545,\n",
+ " 4402,\n",
+ " 6081,\n",
+ " 1857,\n",
+ " 7483,\n",
+ " 1663,\n",
+ " 10014,\n",
+ " 1366,\n",
+ " 3612,\n",
+ " 5469,\n",
+ " 1354,\n",
+ " 4416,\n",
+ " 2868,\n",
+ " 4971,\n",
+ " 2086,\n",
+ " 7686,\n",
+ " 724,\n",
+ " 7198,\n",
+ " 2068,\n",
+ " 3426,\n",
+ " 5932,\n",
+ " 7156,\n",
+ " 8071,\n",
+ " 1550,\n",
+ " 3575,\n",
+ " 1084,\n",
+ " 3370,\n",
+ " 1384,\n",
+ " 5941,\n",
+ " 6626,\n",
+ " 7707,\n",
+ " 5516,\n",
+ " 165,\n",
+ " 1295,\n",
+ " 2452,\n",
+ " 817,\n",
+ " 5657,\n",
+ " 4848,\n",
+ " 6253,\n",
+ " 1414,\n",
+ " 7941,\n",
+ " 2533,\n",
+ " 5613,\n",
+ " 6854,\n",
+ " 7075,\n",
+ " 4595,\n",
+ " 7641,\n",
+ " 4836,\n",
+ " 10045,\n",
+ " 10022,\n",
+ " 454,\n",
+ " 5317,\n",
+ " 7230,\n",
+ " 5996,\n",
+ " 10606,\n",
+ " 1452,\n",
+ " 7889,\n",
+ " 3032,\n",
+ " 7010,\n",
+ " 2940,\n",
+ " 2374,\n",
+ " 2736,\n",
+ " 7770,\n",
+ " 310,\n",
+ " 907,\n",
+ " 7185,\n",
+ " 3146,\n",
+ " 7525,\n",
+ " 5120,\n",
+ " 7771,\n",
+ " 482,\n",
+ " 7528,\n",
+ " 1297,\n",
+ " 4112,\n",
+ " 7571,\n",
+ " 10955,\n",
+ " 2415,\n",
+ " 7476,\n",
+ " 7864,\n",
+ " 1896,\n",
+ " 5087,\n",
+ " 4742,\n",
+ " 5275,\n",
+ " 3739,\n",
+ " 7369,\n",
+ " 10722,\n",
+ " 6311,\n",
+ " 7200,\n",
+ " 1326,\n",
+ " 6035,\n",
+ " 676,\n",
+ " 1848,\n",
+ " 6438,\n",
+ " 6017,\n",
+ " 2695,\n",
+ " 2871,\n",
+ " 702,\n",
+ " 4860,\n",
+ " 1669,\n",
+ " 86,\n",
+ " 3620,\n",
+ " 1292,\n",
+ " 9938,\n",
+ " 5853,\n",
+ " 7362,\n",
+ " 3553,\n",
+ " 7618,\n",
+ " 2772,\n",
+ " 10007,\n",
+ " 3510,\n",
+ " 7803,\n",
+ " 6855,\n",
+ " 10778,\n",
+ " 7709,\n",
+ " 1739,\n",
+ " 1300,\n",
+ " 6148,\n",
+ " 6914,\n",
+ " 762,\n",
+ " 3485,\n",
+ " 4641,\n",
+ " 905,\n",
+ " 8073,\n",
+ " 5798,\n",
+ " 7558,\n",
+ " 2945,\n",
+ " 761,\n",
+ " 7251,\n",
+ " 1835,\n",
+ " 692,\n",
+ " 2713,\n",
+ " 2764,\n",
+ " 1597,\n",
+ " 604,\n",
+ " 2774,\n",
+ " 883,\n",
+ " 8041,\n",
+ " 8029,\n",
+ " 1906,\n",
+ " 7730,\n",
+ " 2729,\n",
+ " 6601,\n",
+ " 9926,\n",
+ " 770,\n",
+ " 4583,\n",
+ " 5834,\n",
+ " 10775,\n",
+ " 960,\n",
+ " 7159,\n",
+ " 4453,\n",
+ " 608,\n",
+ " 208,\n",
+ " 7600,\n",
+ " 1641,\n",
+ " 7958,\n",
+ " 4374,\n",
+ " 968,\n",
+ " 3069,\n",
+ " 1388,\n",
+ " 7998,\n",
+ " 2614,\n",
+ " 7732,\n",
+ " 381,\n",
+ " 7492,\n",
+ " 2641,\n",
+ " 87,\n",
+ " 6174,\n",
+ " 2987,\n",
+ " 2308,\n",
+ " 8025,\n",
+ " 6509,\n",
+ " 4674,\n",
+ " 5334,\n",
+ " 10581,\n",
+ " 3333,\n",
+ " 6122,\n",
+ " 3448,\n",
+ " 6025,\n",
+ " 4675,\n",
+ " 1603,\n",
+ " 5459,\n",
+ " 823,\n",
+ " 10755,\n",
+ " 10820,\n",
+ " 407,\n",
+ " 2348,\n",
+ " 10684,\n",
+ " 1620,\n",
+ " 7338,\n",
+ " 6839,\n",
+ " 5986,\n",
+ " 7392,\n",
+ " 2448,\n",
+ " 5997,\n",
+ " 3022,\n",
+ " 3618,\n",
+ " 4731,\n",
+ " 5080,\n",
+ " 7265,\n",
+ " 3235,\n",
+ " 5926,\n",
+ " 7842,\n",
+ " 3225,\n",
+ " 7421,\n",
+ " 2579,\n",
+ " 1249,\n",
+ " 10646,\n",
+ " 7460,\n",
+ " 1047,\n",
+ " 858,\n",
+ " 2094,\n",
+ " 7196,\n",
+ " 6377,\n",
+ " 3449,\n",
+ " 5831,\n",
+ " 6557,\n",
+ " 2910,\n",
+ " 2244,\n",
+ " 4444,\n",
+ " 3817,\n",
+ " 2328,\n",
+ " 4425,\n",
+ " 4293,\n",
+ " 5112,\n",
+ " 793,\n",
+ " 6046,\n",
+ " 3208,\n",
+ " 684,\n",
+ " 3704,\n",
+ " 5013,\n",
+ " 2147,\n",
+ " 3298,\n",
+ " 6307,\n",
+ " 6889,\n",
+ " 7041,\n",
+ " 729,\n",
+ " 3375,\n",
+ " 9115,\n",
+ " 10704,\n",
+ " 413,\n",
+ " 38,\n",
+ " 1028,\n",
+ " 5675,\n",
+ " 307,\n",
+ " 2033,\n",
+ " 9898,\n",
+ " 4376,\n",
+ " 3072,\n",
+ " 5652,\n",
+ " 2517,\n",
+ " 344,\n",
+ " 7384,\n",
+ " 2562,\n",
+ " 6957,\n",
+ " 5005,\n",
+ " 7786,\n",
+ " 2569,\n",
+ " 232,\n",
+ " 822,\n",
+ " 7375,\n",
+ " 788,\n",
+ " 3182,\n",
+ " 7368,\n",
+ " 1797,\n",
+ " 689,\n",
+ " 10685,\n",
+ " 6476,\n",
+ " 170,\n",
+ " 6390,\n",
+ " 4030,\n",
+ " 9875,\n",
+ " 132,\n",
+ " 4519,\n",
+ " 9860,\n",
+ " 4663,\n",
+ " 7700,\n",
+ " 1480,\n",
+ " 2079,\n",
+ " 3596,\n",
+ " 7959,\n",
+ " 3001,\n",
+ " 6552,\n",
+ " 3060,\n",
+ " 3457,\n",
+ " 595,\n",
+ " 5226,\n",
+ " 936,\n",
+ " 7577,\n",
+ " 6381,\n",
+ " 5983,\n",
+ " 473,\n",
+ " 4452,\n",
+ " 4690,\n",
+ " 276,\n",
+ " 2931,\n",
+ " 10818,\n",
+ " 1396,\n",
+ " 6333,\n",
+ " 1747,\n",
+ " 6327,\n",
+ " 4215,\n",
+ " 9928,\n",
+ " 3262,\n",
+ " 5202,\n",
+ " 811,\n",
+ " 10683,\n",
+ " 4087,\n",
+ " 6731,\n",
+ " 9955,\n",
+ " 220,\n",
+ " 4819,\n",
+ " 80,\n",
+ " 4777,\n",
+ " 5511,\n",
+ " 5109,\n",
+ " 10941,\n",
+ " 7482,\n",
+ " 2474,\n",
+ " 752,\n",
+ " 6222,\n",
+ " 7472,\n",
+ " 3133,\n",
+ " 8007,\n",
+ " 695,\n",
+ " 6439,\n",
+ " 10023,\n",
+ " 2076,\n",
+ " 1369,\n",
+ " 2280,\n",
+ " 6223,\n",
+ " 826,\n",
+ " 462,\n",
+ " 3652,\n",
+ " 6724,\n",
+ " 3975,\n",
+ " 3349,\n",
+ " 7657,\n",
+ " 6020,\n",
+ " ...]"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "result = []\n",
+ "result = [test_index_list[i] for i in range(len(pred)) if list(pred)[i]==1 and list(test_class_list)[i]!=1]\n",
+ "np.save('result.npy', result)\n",
+ "result"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1479"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(result)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 抄袭判定(利用余弦距离计算相似性)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def CosineDistance(x,y):\n",
+ " result = np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))\n",
+ " return result"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 准备数据"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the shape of tfidf_test is (1479, 3000)\n"
+ ]
+ }
+ ],
+ "source": [
+ "test_data_list = []\n",
+ "for i in result:\n",
+ " test_data_list.append( \" \".join(clean(cut(str(content.iloc[i].content)))))\n",
+ "count_v2 = CountVectorizer(vocabulary=count_v1.vocabulary_)\n",
+ "counts_test = count_v2.fit_transform(test_data_list)\n",
+ "tfidf_test = tfidftransformer.fit(counts_test).transform(counts_test)\n",
+ "test_ndarray = tfidf_test.toarray()\n",
+ "print(\"the shape of tfidf_test is \" + repr(tfidf_test.shape))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 计算余弦距离"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "D:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:2: RuntimeWarning: invalid value encountered in double_scalars\n",
+ " \n"
+ ]
+ }
+ ],
+ "source": [
+ "Distance = []\n",
+ "for i in range(len(result)):\n",
+ " distance_for_one = []\n",
+ " for k in range(len(tfidf_ndarray)):\n",
+ " distance_for_one.append(CosineDistance(test_ndarray[i][:],tfidf_ndarray[k][:]))\n",
+ " Distance.append([max(distance_for_one),result[i],data_id[distance_for_one.index(max(distance_for_one))]])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 观察结果"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[[0.6494384882555035, 970, 11195],\n",
+ " [0.5733220400657106, 3554, 87171],\n",
+ " [0.39922290906550567, 5356, 816],\n",
+ " [0.43151980935653134, 4183, 49637],\n",
+ " [0.29234808464247675, 10960, 44527],\n",
+ " [0.3418259037335308, 4205, 77091],\n",
+ " [0.42617012704034163, 5922, 11647],\n",
+ " [0.6053822503822367, 2204, 70773],\n",
+ " [0.3907711306469972, 5583, 34016]]"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "Distance[1:10]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 确定阈值 选出相似性较高的样本"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[[0.6494384882555035, 970, 11195],\n",
+ " [0.6053822503822367, 2204, 70773],\n",
+ " [0.6840092672418868, 1647, 80129],\n",
+ " [0.7517655210783512, 4336, 42684],\n",
+ " [0.7431984858582031, 2742, 70855],\n",
+ " [0.8723397885775069, 4299, 41565],\n",
+ " [0.6863448253959228, 3337, 13792],\n",
+ " [0.6948898542065315, 10971, 75478],\n",
+ " [0.6468489977022723, 1048, 80858],\n",
+ " [0.7979725661626185, 8000, 19414],\n",
+ " [0.6877479392918336, 5428, 541],\n",
+ " [0.631429454935902, 3869, 28519],\n",
+ " [0.8129036122745658, 4755, 66836],\n",
+ " [0.6453115754093014, 4033, 80869],\n",
+ " [0.6291639954282499, 5170, 44158],\n",
+ " [0.6774153187689418, 10741, 8991],\n",
+ " [0.7354875024159239, 7918, 25459],\n",
+ " [0.6179792881245476, 6813, 15124],\n",
+ " [0.7046266969599624, 682, 51],\n",
+ " [0.8507016931589486, 6892, 36987],\n",
+ " [0.8027251832221713, 5703, 1113],\n",
+ " [0.7504267657574857, 6656, 47917],\n",
+ " [0.6775526135088602, 7055, 43135],\n",
+ " [0.6098757094147044, 2865, 57539],\n",
+ " [0.7018792904451244, 7996, 69726],\n",
+ " [0.6145334156329757, 6726, 71960],\n",
+ " [0.7251013507191669, 2366, 35603],\n",
+ " [0.6022750862555649, 480, 50735],\n",
+ " [0.690411916492396, 1023, 66997],\n",
+ " [0.8607088199675097, 7579, 1497],\n",
+ " [0.6662388151774796, 9979, 15054],\n",
+ " [0.6774106777938446, 3960, 88398],\n",
+ " [0.6786969129140761, 859, 35280],\n",
+ " [0.7502300591647062, 1683, 55822],\n",
+ " [0.8028846491413382, 9878, 79433],\n",
+ " [0.7061169117097895, 2818, 29247],\n",
+ " [0.8126794770570394, 9863, 1670],\n",
+ " [0.6636270700462189, 4283, 21116],\n",
+ " [0.7269504208885998, 4528, 37775],\n",
+ " [0.637097544667115, 3860, 75848],\n",
+ " [0.6225109712985532, 7328, 54842],\n",
+ " [0.6041916294905499, 6947, 78048],\n",
+ " [0.7093395939567337, 32, 13424],\n",
+ " [0.7239954671568892, 1261, 67918],\n",
+ " [0.6939428601005367, 3477, 78432],\n",
+ " [0.6230978086526278, 3311, 19338],\n",
+ " [0.6327176868772918, 4023, 27679],\n",
+ " [0.6303631244020141, 1100, 65015],\n",
+ " [0.9361122443561507, 7906, 3901],\n",
+ " [0.6056211680311103, 7661, 66889],\n",
+ " [0.6191673222150286, 10030, 41992],\n",
+ " [0.7407503491114595, 1600, 35300],\n",
+ " [0.6314581861513077, 7176, 43135],\n",
+ " [0.7099802896194375, 1293, 19918],\n",
+ " [0.6673627060589753, 10951, 81482],\n",
+ " [0.6503852890341918, 3417, 58163],\n",
+ " [0.765003072390063, 942, 4019],\n",
+ " [0.6975101719350678, 6338, 82032],\n",
+ " [0.7490438481541463, 4485, 72773],\n",
+ " [0.8380025371498507, 4313, 5338],\n",
+ " [0.6307357277772491, 3268, 82393],\n",
+ " [0.7120293692352463, 6386, 24428],\n",
+ " [0.7016749710268317, 2496, 49500],\n",
+ " [0.6780073269629845, 377, 74628],\n",
+ " [0.8131206693892352, 1675, 43804],\n",
+ " [0.6154459792530554, 4125, 67670],\n",
+ " [0.6372123493402368, 7509, 7578],\n",
+ " [0.7098243012435489, 5059, 35416],\n",
+ " [0.6591374946911245, 7385, 47917],\n",
+ " [0.7878950754530895, 3643, 84637],\n",
+ " [0.6443085944302135, 7204, 89435],\n",
+ " [0.7155670876705622, 5687, 51791],\n",
+ " [0.6081535473986909, 2925, 53063],\n",
+ " [0.7655238029050226, 6296, 68091],\n",
+ " [0.617033544993583, 7416, 87754],\n",
+ " [0.7546147292586943, 10952, 18308],\n",
+ " [0.703097688760119, 4409, 58218],\n",
+ " [0.6065985454970103, 3709, 38748],\n",
+ " [0.7123207838268002, 1962, 80854],\n",
+ " [0.6628232646891206, 6432, 17745],\n",
+ " [0.6318759601357922, 5496, 88865],\n",
+ " [0.7487762650009171, 1764, 25468],\n",
+ " [0.6212561595424199, 1515, 46980],\n",
+ " [0.6549350141433176, 2816, 69963],\n",
+ " [0.721205224177685, 8042, 14545],\n",
+ " [0.6263086282027709, 83, 59370],\n",
+ " [0.6512927911144777, 831, 61709],\n",
+ " [0.6188633713074354, 2712, 56524],\n",
+ " [0.6927734335111005, 665, 67312],\n",
+ " [0.681857434938429, 7733, 56450],\n",
+ " [0.7493068779369092, 3812, 87430],\n",
+ " [0.7400137916770367, 2021, 15067],\n",
+ " [0.6186439442902191, 7714, 52640],\n",
+ " [0.6814391401642358, 3227, 58311],\n",
+ " [0.6359937963903846, 1254, 26402],\n",
+ " [0.6092333455319108, 4090, 70342],\n",
+ " [0.6263796988956272, 1834, 7454],\n",
+ " [0.800814704738591, 4007, 1497],\n",
+ " [0.699862322432333, 7059, 34560],\n",
+ " [0.650423760787974, 7917, 64074],\n",
+ " [0.9943755643834665, 3828, 75469],\n",
+ " [0.7259877540013397, 4868, 20716],\n",
+ " [1.0, 6712, 13644],\n",
+ " [0.603629656224364, 7938, 49058],\n",
+ " [0.6593778746902117, 2427, 80147],\n",
+ " [0.7766836528164125, 4476, 72063],\n",
+ " [0.6545899243140498, 374, 35603],\n",
+ " [0.6737948275753594, 2008, 30019],\n",
+ " [0.6258977248452159, 7100, 56007],\n",
+ " [0.6090441748651265, 4542, 24896],\n",
+ " [0.7138342801982586, 5193, 73920],\n",
+ " [0.6179599144446575, 3130, 15124],\n",
+ " [0.6524964338605138, 1872, 81482],\n",
+ " [0.7544071710847627, 1904, 58024],\n",
+ " [0.6279204642585113, 1950, 84197],\n",
+ " [0.6234733573058361, 5115, 83703],\n",
+ " [0.6293477038402864, 6587, 67671],\n",
+ " [0.7472542089393237, 2334, 7454],\n",
+ " [0.6750974844037549, 1803, 56953],\n",
+ " [0.610472781199264, 7508, 72908],\n",
+ " [0.6405810618126477, 4687, 77139],\n",
+ " [0.6919481563624293, 5300, 45271],\n",
+ " [0.6945373881353836, 839, 47160],\n",
+ " [0.6381138405990187, 2937, 89435],\n",
+ " [0.8335607335054627, 5692, 49425],\n",
+ " [0.728856947523617, 3474, 75977],\n",
+ " [0.7577258613218125, 5311, 52029],\n",
+ " [0.6085660734105445, 7597, 69726],\n",
+ " [0.881490369824116, 6239, 5338],\n",
+ " [0.6109867649458303, 2412, 32578],\n",
+ " [0.6744104606558761, 7401, 42467],\n",
+ " [0.6935418112899749, 2010, 86668],\n",
+ " [0.7132240907499401, 9929, 37834],\n",
+ " [0.8651263402964285, 8065, 76136],\n",
+ " [0.6568974752849643, 3952, 50355],\n",
+ " [0.8080262151604054, 882, 67315],\n",
+ " [0.8042898550576396, 3986, 77512],\n",
+ " [0.6200507439585136, 3475, 3959],\n",
+ " [0.7389777888530638, 5071, 25514],\n",
+ " [0.6986572120751563, 5907, 83891],\n",
+ " [0.6399319089659214, 6631, 33853],\n",
+ " [0.6227717184299273, 3145, 1103],\n",
+ " [0.6602502861329702, 93, 11483],\n",
+ " [0.6448671554963652, 2376, 89435],\n",
+ " [0.869117179864741, 10638, 65461],\n",
+ " [0.695501107925999, 4064, 49753],\n",
+ " [0.7104467840837935, 375, 87430],\n",
+ " [0.6774106777938446, 3767, 88398],\n",
+ " [0.7082067476522163, 582, 56201],\n",
+ " [0.6049104933214698, 5341, 11308],\n",
+ " [0.6541770347139604, 3445, 24426],\n",
+ " [0.6216484798718849, 1042, 33672],\n",
+ " [0.6622846955652022, 1605, 45556],\n",
+ " [0.640694610538925, 6664, 33926],\n",
+ " [0.7358513809133221, 2906, 77858],\n",
+ " [0.6737304948591926, 3339, 32753],\n",
+ " [0.8243689716821831, 6566, 11847],\n",
+ " [0.6220215733001998, 1428, 49811],\n",
+ " [0.7099628481683161, 4280, 72054],\n",
+ " [0.7123783337316257, 3539, 28357],\n",
+ " [0.6693373753852352, 4295, 3297],\n",
+ " [0.7126009939288457, 3671, 70860],\n",
+ " [0.6316549247175048, 7084, 41914],\n",
+ " [0.7300020514028084, 3135, 4912],\n",
+ " [0.7993396910450323, 3183, 82393],\n",
+ " [0.7731863727757998, 7483, 66545],\n",
+ " [0.7641817545347803, 1663, 12415],\n",
+ " [0.6753502422607633, 10014, 89214],\n",
+ " [0.7852229111112461, 2868, 41565],\n",
+ " [0.6485168508871729, 724, 565],\n",
+ " [0.64392611361824, 2068, 3530],\n",
+ " [0.8034932740509916, 3426, 49927],\n",
+ " [0.6808997460708799, 3370, 76443],\n",
+ " [0.651347871069725, 5941, 51791],\n",
+ " [0.6028612791838898, 165, 36535],\n",
+ " [0.6043794200215837, 4836, 75398],\n",
+ " [0.6070142053229283, 5317, 79538],\n",
+ " [0.6089428649661188, 5996, 44501],\n",
+ " [0.6628143330085349, 7010, 42311],\n",
+ " [0.6160995113591087, 3146, 32445],\n",
+ " [0.7923011154310726, 7525, 29376],\n",
+ " [0.6803047442703462, 482, 50018],\n",
+ " [0.7706689842452427, 7528, 34804],\n",
+ " [0.6012067399966685, 10955, 65648],\n",
+ " [0.6500475269823135, 1896, 72063],\n",
+ " [0.6074753241598735, 5275, 77542],\n",
+ " [0.7103095517812335, 6035, 47269],\n",
+ " [0.7347013334433422, 1848, 57380],\n",
+ " [0.7420209656562946, 6017, 32684],\n",
+ " [0.6777828271765929, 2695, 73820],\n",
+ " [0.7963719645549387, 3620, 14974],\n",
+ " [0.6521201435824324, 1292, 49723],\n",
+ " [0.7695845662726547, 7803, 68091],\n",
+ " [0.6570880418777361, 1739, 81482],\n",
+ " [0.6104639862579058, 1300, 81427],\n",
+ " [0.6516669284359885, 6914, 18669],\n",
+ " [0.7080398524966465, 3485, 65322],\n",
+ " [0.6782444202158849, 4641, 82812],\n",
+ " [0.8109940057629339, 8073, 86516],\n",
+ " [0.6085626777615496, 5798, 54398],\n",
+ " [0.8570691611286084, 7558, 32415],\n",
+ " [0.758158550583741, 2945, 19414],\n",
+ " [0.6229741964593649, 2713, 21770],\n",
+ " [0.7615402702220483, 1597, 43804],\n",
+ " [0.6010386067666272, 8029, 72124],\n",
+ " [0.7365463897744612, 1906, 81539],\n",
+ " [0.7129882952263694, 4583, 80793],\n",
+ " [0.8095763528581542, 1641, 43804],\n",
+ " [0.6119008347024765, 381, 36920],\n",
+ " [0.7520841322272344, 2987, 61674],\n",
+ " [0.6541045148737579, 8025, 85639],\n",
+ " [0.7207941065486192, 6509, 39681],\n",
+ " [0.7346095631460743, 1603, 48622],\n",
+ " [0.7125480930691063, 823, 58034],\n",
+ " [0.6489137254825738, 407, 57063],\n",
+ " [0.6836575165975082, 1620, 46596],\n",
+ " [0.6257412477496318, 6839, 50349],\n",
+ " [0.6893631473544231, 5997, 47917],\n",
+ " [0.6719665976873334, 3618, 12479],\n",
+ " [0.6462824167777791, 5926, 70342],\n",
+ " [0.7081249343538253, 10646, 16852],\n",
+ " [0.694269384661918, 3449, 24426],\n",
+ " [0.6083896962848082, 6557, 70466],\n",
+ " [0.766265162325481, 2910, 63581],\n",
+ " [0.6540314884654976, 5013, 56201],\n",
+ " [0.752153212727247, 2147, 36987],\n",
+ " [0.6427955959159947, 6889, 75450],\n",
+ " [0.8209762953940732, 9115, 76802],\n",
+ " [0.6540606650213397, 10704, 28436],\n",
+ " [0.6371811078006812, 413, 26564],\n",
+ " [0.8109126126208454, 1028, 14034],\n",
+ " [0.7351273823583212, 2562, 34338],\n",
+ " [0.8488565013095145, 232, 65461],\n",
+ " [0.7528915981283937, 1797, 69727],\n",
+ " [0.8870008947186614, 689, 57167],\n",
+ " [0.6029564820506715, 4030, 54564],\n",
+ " [0.6237397398456987, 4519, 68224],\n",
+ " [0.6692693594954164, 4663, 60249],\n",
+ " [0.6020490862573893, 1480, 89374],\n",
+ " [0.6449509169572932, 3596, 69914],\n",
+ " [0.6459343913170064, 3060, 87626],\n",
+ " [0.6350769597189814, 3457, 13792],\n",
+ " [0.6995410430449926, 595, 84685],\n",
+ " [0.7504267657574857, 5226, 47917],\n",
+ " [0.6544264494239492, 936, 53855],\n",
+ " [0.7751335044254625, 4452, 31321],\n",
+ " [0.6154459792530554, 4215, 67670],\n",
+ " [0.6575284081063185, 3262, 88064],\n",
+ " [0.6112126274701986, 5202, 30015],\n",
+ " [0.6542454000483912, 4087, 41943],\n",
+ " [0.6043580445401658, 6731, 81482],\n",
+ " [0.6335148958123386, 4819, 59542],\n",
+ " [0.8986676762219526, 5109, 4505],\n",
+ " [0.6585115850696015, 10941, 48016],\n",
+ " [0.6317603912553029, 752, 51704],\n",
+ " [0.9417792034631436, 3133, 3142],\n",
+ " [0.7860422546369129, 695, 52051],\n",
+ " [0.6267755833269851, 2280, 86397],\n",
+ " [0.7500994827420046, 3975, 67662],\n",
+ " [0.8318802936991723, 3349, 65461],\n",
+ " [0.7568910631150312, 7722, 66627],\n",
+ " [0.7038579101982231, 7296, 88365],\n",
+ " [0.6515652709593922, 6452, 5366],\n",
+ " [0.7846135764221301, 1274, 87626],\n",
+ " [0.788024627796056, 4955, 44581],\n",
+ " [0.8120831107940434, 3626, 48379],\n",
+ " [0.7723775109376197, 3558, 70036],\n",
+ " [0.6121768684064924, 1004, 82081],\n",
+ " [0.649892227528643, 10615, 31626],\n",
+ " [0.6154767957669396, 10815, 62866],\n",
+ " [0.6622075924185915, 6143, 50018],\n",
+ " [0.7336595418008949, 7281, 18311],\n",
+ " [0.662279238463908, 3470, 73681],\n",
+ " [0.6438066512541694, 2001, 71109],\n",
+ " [0.6337610220138958, 5767, 31942],\n",
+ " [0.7381243708254117, 2083, 15206],\n",
+ " [0.6767977923973482, 6079, 69804],\n",
+ " [0.670723308140616, 836, 81568],\n",
+ " [0.6413224773804589, 9893, 72145],\n",
+ " [0.8244805859652535, 4775, 17568],\n",
+ " [0.7526743747518795, 3178, 1670],\n",
+ " [0.6362559432247249, 2676, 45622],\n",
+ " [0.7708313359756324, 6591, 33409],\n",
+ " [0.7981098459534219, 5263, 5826],\n",
+ " [0.6180686450252415, 10053, 26638],\n",
+ " [0.6205803438132091, 5142, 71448],\n",
+ " [0.6942961958155675, 2645, 56253],\n",
+ " [0.6684616220960561, 636, 40731],\n",
+ " [0.6041314183258655, 1277, 39362],\n",
+ " [0.6953950960702739, 233, 82600],\n",
+ " [0.718052407267335, 6397, 45371],\n",
+ " [0.7470677173434713, 10625, 75156],\n",
+ " [0.750483874542063, 2089, 43211],\n",
+ " [0.7182035058311642, 2153, 5826],\n",
+ " [0.7099753997845181, 6615, 61709],\n",
+ " [0.7150473766031434, 10781, 11847],\n",
+ " [0.6147490168470797, 2188, 31319],\n",
+ " [0.7620342027963478, 4135, 28315],\n",
+ " [0.6270135949784209, 698, 65114],\n",
+ " [0.6109530244459799, 2331, 28012],\n",
+ " [0.883122620976482, 730, 5338],\n",
+ " [0.6971315229179441, 1275, 68845],\n",
+ " [0.6495238771351848, 6138, 32578],\n",
+ " [0.7533347264696356, 6399, 31449],\n",
+ " [0.6865145569143752, 5513, 4491],\n",
+ " [0.6060532231072662, 4814, 68671],\n",
+ " [0.6903895820211512, 5316, 22317],\n",
+ " [0.8626282493085323, 855, 48360],\n",
+ " [0.6076086062666308, 2685, 46152],\n",
+ " [0.6365132660272997, 5742, 37446],\n",
+ " [0.7294541545838753, 4124, 69248],\n",
+ " [0.6037573809343747, 7164, 36259],\n",
+ " [0.7420500890955604, 6479, 19863],\n",
+ " [0.673343557906157, 6723, 5380],\n",
+ " [0.6842789209436049, 503, 41439],\n",
+ " [0.6725031043782849, 5417, 63571],\n",
+ " [0.7053184962617615, 7095, 53277],\n",
+ " [0.7041414513054577, 7566, 72145],\n",
+ " [0.6370904438159896, 7546, 62856],\n",
+ " [0.6760364653672456, 10629, 25089],\n",
+ " [0.6767781865762316, 1777, 57539],\n",
+ " [0.6037012697541942, 4660, 15166],\n",
+ " [0.6210445599606731, 4301, 21408],\n",
+ " [0.7790845371838752, 6797, 80688],\n",
+ " [0.6002639780048878, 1614, 45556],\n",
+ " [0.7925686764443919, 144, 61870],\n",
+ " [0.7690918521046596, 7857, 85288],\n",
+ " [0.7804213042907568, 3984, 64328],\n",
+ " [0.6037856300881574, 6216, 21143],\n",
+ " [0.6440250939321738, 2846, 12002],\n",
+ " [0.6418562898623125, 3946, 83754],\n",
+ " [0.6183360255645035, 5758, 79401],\n",
+ " [0.6521401875340291, 6242, 73599],\n",
+ " [0.6047141151269262, 2150, 37722],\n",
+ " [0.7786665110663731, 2880, 46992],\n",
+ " [0.6154459792530554, 4103, 67670],\n",
+ " [0.6700384434391536, 9959, 37649],\n",
+ " [0.6398651542027399, 3028, 37496],\n",
+ " [0.6306211452510331, 5293, 21995],\n",
+ " [0.6408596514530691, 707, 82081],\n",
+ " [0.7505453331634496, 5074, 74660],\n",
+ " [0.6626661798863379, 3681, 87908],\n",
+ " [0.808219769617288, 10655, 54828],\n",
+ " [0.6519800544377082, 736, 35280],\n",
+ " [0.7877442741495995, 4361, 6657],\n",
+ " [0.8598213322412283, 3994, 41565],\n",
+ " [0.6087834362029635, 3778, 65429],\n",
+ " [0.7754289541695047, 5760, 69804],\n",
+ " [0.9071070190762001, 3834, 2168],\n",
+ " [0.6343555089697425, 1032, 72462],\n",
+ " [0.7816963576199526, 2322, 19414],\n",
+ " [0.7703995648454464, 3654, 77512],\n",
+ " [0.7856672445669325, 3124, 66603],\n",
+ " [0.6850986186835406, 5536, 35430],\n",
+ " [0.8099503875807396, 3542, 39979],\n",
+ " [0.6042422928401749, 3877, 87518],\n",
+ " [0.7384714122822905, 642, 70088],\n",
+ " [0.6804677741836986, 6380, 68671],\n",
+ " [0.6528650604289347, 2834, 82393],\n",
+ " [0.6099173346953817, 891, 68877],\n",
+ " [0.620548398577231, 9130, 39956],\n",
+ " [0.7920680215420566, 1090, 17422],\n",
+ " [0.6064234521859698, 3098, 34838],\n",
+ " [0.8011873720443763, 3492, 31449],\n",
+ " [0.6580005757551101, 3151, 23408],\n",
+ " [0.6796264110779764, 6546, 30403],\n",
+ " [0.6381712096115205, 9886, 11483],\n",
+ " [0.6070758521218966, 9942, 65472],\n",
+ " [0.6434923392247492, 1591, 53912],\n",
+ " [0.6864949233837487, 2044, 67312],\n",
+ " [0.6997775596274055, 3591, 55911],\n",
+ " [0.6663417695751502, 749, 61711],\n",
+ " [0.7708073311006198, 539, 543],\n",
+ " [0.7148527031826531, 2288, 75953],\n",
+ " [0.9499374353250587, 3360, 3142],\n",
+ " [0.6679269574126228, 3896, 32416],\n",
+ " [0.7265329298291507, 3469, 50734],\n",
+ " [0.7453178990214417, 7437, 22525],\n",
+ " [0.6133162976234033, 4913, 28519],\n",
+ " [0.6108749398927201, 10742, 73921],\n",
+ " [0.6517173598918711, 1311, 28051],\n",
+ " [0.8508125825147499, 9918, 88704],\n",
+ " [0.683699912462263, 6489, 47917],\n",
+ " [0.8028614610010346, 6937, 4491]]"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[element for element in Distance if element[0] > 0.6]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 利用 editdistance 精确定位"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import editdistance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import re"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def cut2sentence(string): return re.split(u',|。|;|、|?|', string)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_edit_distance(str1, str2): return editdistance.eval(cut(str1), cut(str2))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_content(num): return content.iloc[num].content"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "D:\\Anaconda3\\lib\\re.py:212: FutureWarning: split() requires a non-empty pattern match.\n",
+ " return _compile(pattern, flags).split(string, maxsplit)\n"
+ ]
+ }
+ ],
+ "source": [
+ "string1 = cut2sentence(get_content(7525))\n",
+ "string2 = cut2sentence(get_content(29376)) #xinhua29376"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ed = []\n",
+ "for k in range(len(string1)):\n",
+ " for i in range(len(string2)):\n",
+ " if get_edit_distance(string1[k], string2[i]) == 0:\n",
+ " ed.append([k,i])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[[12, 26], [27, 37], [28, 38], [40, 51]]"
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "ed"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "旅行社 旅行社\n",
+ "将所有旅游购物企业纳入社会普通商品零售企业进行统一监管 将所有旅游购物企业纳入社会普通商品零售企业进行统一监管\n",
+ "严禁变相安排和诱导购物 严禁变相安排和诱导购物\n",
+ "旅游巡回法庭 旅游巡回法庭\n"
+ ]
+ }
+ ],
+ "source": [
+ "for element in ed:\n",
+ " print(string1[element[0]], string2[element[1]])"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Anan/Project1_PlagiarismDetection.pdf b/Anan/Project1_PlagiarismDetection.pdf
new file mode 100644
index 0000000..f051da6
Binary files /dev/null and b/Anan/Project1_PlagiarismDetection.pdf differ
diff --git a/Anan/Project1_PlagiarismDetection.py b/Anan/Project1_PlagiarismDetection.py
new file mode 100644
index 0000000..40d9449
--- /dev/null
+++ b/Anan/Project1_PlagiarismDetection.py
@@ -0,0 +1,450 @@
+
+# coding: utf-8
+
+# # 数据基本信息
+
+# In[1]:
+
+
+import pandas as pd
+
+
+# In[2]:
+
+
+content = pd.read_csv('D:/Code/Pycharm/Data_source/sqlResult_1558435.csv',encoding='gb18030')
+
+
+# In[3]:
+
+
+len(content)
+
+
+# In[4]:
+
+
+content.columns
+
+
+# In[5]:
+
+
+content.head()
+
+
+# In[6]:
+
+
+xinhua_data = []
+for i in range(len(content)):
+ xinhua_data.append(1 if '新华' in str(content.iloc[i].source) else 0)
+ xinhua_data.count(1)
+
+
+# # 文本自动聚类(新华社文章)
+
+# ### 停用词
+
+# In[7]:
+
+
+def get_stopwords(filename = "D:/Code/Pycharm/Data_source/chinese_stopwords.txt"):
+ stopwords_dic = open(filename, encoding= 'utf-8')
+ stopwords = stopwords_dic.readlines()
+ stopwords = [w.strip() for w in stopwords]
+ stopwords_dic.close()
+ print(stopwords)
+ stopwords.append('\r\n')
+ return stopwords
+
+
+# In[8]:
+
+
+stopwords = get_stopwords()
+
+
+# ### 准备数据
+
+# In[9]:
+
+
+import jieba
+
+
+# In[10]:
+
+
+def cut(string): return list(jieba.cut(string))
+
+
+# In[11]:
+
+
+def clean(words):
+ clean_words = []
+ for word in words:
+ if not word.isdigit() and word not in stopwords and 1kinds 和 kind==>ids 映射
+
+# In[17]:
+
+
+id_kinds = {text_id: kind_id for text_id, kind_id in zip(data_id,kmeans.labels_)}
+
+
+# In[18]:
+
+
+id_kinds[3]
+
+
+# In[19]:
+
+
+from collections import defaultdict
+kind_ids = {}
+kind_ids = defaultdict(lambda: set())
+for text_id, kind_id in id_kinds.items():kind_ids[kind_id].add(text_id)
+
+
+# In[20]:
+
+
+kind_ids[1]
+
+
+# In[21]:
+
+
+for i in range(10):
+ print(len(kind_ids[i]))
+
+
+<<<<<<< HEAD
+# ### 词云展示聚类结果
+=======
+# ### 词云展示分类结果
+>>>>>>> 74c59a1d2a37a18bf2b3b6f2eaf0ee4aa2be16ed
+
+# In[55]:
+
+
+select_kind = kind_ids[2]
+
+from collections import Counter
+kind_words_counter = [Counter(clean(cut(str(content.iloc[num].content)))) for num in list(select_kind)]
+kind_all_word = kind_words_counter[0]
+for i in range(1,len(select_kind)):kind_all_word += kind_words_counter[i]
+cloud_data = ''
+for num in list(select_kind):
+ cloud_data = cloud_data + ' ' + (" ".join(clean(cut(str(content.iloc[num].content)))))
+
+import wordcloud
+wc = wordcloud.WordCloud(font_path=r'C:\Users\Anan\Downloads/simkai.ttf',
+ stopwords='新华社', width=800, height=500, scale=2,
+ max_words=200, background_color='black')
+#word_cloud = wc.generate_from_text(cloud_data)
+word_cloud = wc.generate_from_frequencies(kind_all_word)
+
+import matplotlib.pyplot as plt
+plt.imshow(word_cloud)
+
+
+# # 文本分类(判断是否为新华社所发)
+
+# ### 数据打标签
+
+# In[23]:
+
+
+data_list = []
+class_list = []
+for i in range(len(content)):
+ data_list.append(" ".join(clean(cut(str(content.iloc[i].content)))))
+ class_list.append(1 if '新华' in str(content.iloc[i].source) else 0)
+
+
+# ### 随机选取训练数据和测试数据
+
+# In[24]:
+
+
+import random
+
+
+# In[25]:
+
+
+test_size = 0.2
+data_index = [i for i in range(len(content))]
+data_class_list = list(zip(data_list, class_list, data_index))
+random.shuffle(data_class_list)
+index = int(len(data_class_list)*test_size) + 1
+train_list = data_class_list[index:]
+test_list = data_class_list[:index]
+train_data_list, train_class_list, train_index_list = zip(*train_list)
+test_data_list, test_class_list, test_index_list = zip(*test_list)
+
+
+# ### 建立TFIDF向量
+
+# In[26]:
+
+
+count_clf = CountVectorizer(max_df=0.5)
+counts_train = count_clf.fit_transform(train_data_list)
+
+count_v2 = CountVectorizer(vocabulary=count_clf.vocabulary_)
+counts_test = count_v2.fit_transform(test_data_list)
+
+tfidftransformer = TfidfTransformer()
+
+tfidf_train = tfidftransformer.fit(counts_train).transform(counts_train)
+tfidf_test = tfidftransformer.fit(counts_test).transform(counts_test)
+print("the shape of tfidf_train is " + repr(tfidf_train.shape))
+print("the shape of tfidf_test test is " + repr(tfidf_test.shape))
+
+
+# ### 使用朴素贝叶斯分类器
+
+# In[27]:
+
+
+import pickle
+
+
+# In[28]:
+
+
+def NBClassifier(train_feature, train_label, test_feature):
+ from sklearn.naive_bayes import MultinomialNB
+ nbclf = MultinomialNB().fit(train_feature, train_label)
+ filename = 'finalized_nbclf.sav'
+ pickle.dump(nbclf, open(filename, 'wb'))
+ pred = nbclf.predict(test_feature)
+ return pred
+
+
+# ### 性能评估
+
+# In[31]:
+
+
+from sklearn import metrics
+
+
+# In[32]:
+
+
+def calculate_result(actual,pred):
+ m_accuracy = metrics.accuracy_score(actual, pred)
+ m_precision = metrics.precision_score(actual,pred)
+ m_recall = metrics.recall_score(actual,pred)
+ print('predict info:')
+ print('accuracy:{0:.3f}'.format(m_accuracy))
+ print('precision:{0:.3f}'.format(m_precision))
+ print('recall:{0:0.3f}'.format(m_recall))
+ print('f1-score:{0:.3f}'.format(metrics.f1_score(actual,pred)))
+
+
+# ### 结果显示
+
+# In[33]:
+
+
+pred = NBClassifier(tfidf_train, train_class_list, tfidf_test)
+print('*************************\nNaiveBayes\n*************************')
+calculate_result(test_class_list, pred)
+
+
+# ### 找出可能抄袭的文章
+
+# In[34]:
+
+
+import numpy as np
+
+
+# In[35]:
+
+
+result = []
+result = [test_index_list[i] for i in range(len(pred)) if list(pred)[i]==1 and list(test_class_list)[i]!=1]
+np.save('result.npy', result)
+result
+
+
+# In[36]:
+
+
+len(result)
+
+
+# # 抄袭判定(利用余弦距离计算相似性)
+
+# In[37]:
+
+
+def CosineDistance(x,y):
+ result = np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))
+ return result
+
+
+# ### 准备数据
+
+# In[38]:
+
+
+test_data_list = []
+for i in result:
+ test_data_list.append( " ".join(clean(cut(str(content.iloc[i].content)))))
+count_v2 = CountVectorizer(vocabulary=count_v1.vocabulary_)
+counts_test = count_v2.fit_transform(test_data_list)
+tfidf_test = tfidftransformer.fit(counts_test).transform(counts_test)
+test_ndarray = tfidf_test.toarray()
+print("the shape of tfidf_test is " + repr(tfidf_test.shape))
+
+
+# ### 计算余弦距离
+
+# In[39]:
+
+
+Distance = []
+for i in range(len(result)):
+ distance_for_one = []
+ for k in range(len(tfidf_ndarray)):
+ distance_for_one.append(CosineDistance(test_ndarray[i][:],tfidf_ndarray[k][:]))
+ Distance.append([max(distance_for_one),result[i],data_id[distance_for_one.index(max(distance_for_one))]])
+
+
+# ### 观察结果
+
+# In[40]:
+
+
+Distance[1:10]
+
+
+# ### 确定阈值 选出相似性较高的样本
+
+# In[41]:
+
+
+[element for element in Distance if element[0] > 0.6]
+
+
+# ### 利用 editdistance 精确定位
+
+# In[42]:
+
+
+import editdistance
+
+
+# In[43]:
+
+
+import re
+
+
+# In[44]:
+
+
+def cut2sentence(string): return re.split(u',|。|;|、|?|', string)
+
+
+# In[45]:
+
+
+def get_edit_distance(str1, str2): return editdistance.eval(cut(str1), cut(str2))
+
+
+# In[46]:
+
+
+def get_content(num): return content.iloc[num].content
+
+
+# In[47]:
+
+
+string1 = cut2sentence(get_content(7525))
+string2 = cut2sentence(get_content(29376)) #xinhua29376
+
+
+# In[49]:
+
+
+ed = []
+for k in range(len(string1)):
+ for i in range(len(string2)):
+ if get_edit_distance(string1[k], string2[i]) == 0:
+ ed.append([k,i])
+
+
+# In[50]:
+
+
+ed
+
+
+# In[54]:
+
+
+for element in ed:
+ print(string1[element[0]], string2[element[1]])
+
diff --git a/readme.md b/readme.md
index a596f52..c187b76 100644
--- a/readme.md
+++ b/readme.md
@@ -14,11 +14,10 @@
## Submission Requirements
+ 源代码
-+ 最终汇报文档(pdf)
+ 中间运行结果(jupyter notebook)
+ 算法流程解释(slides)
+ 遇到的问题与思考(pdf)
## How to submit?
-+ git pull to https://github.com/Deep-Learning-for-NLP-Chinese/Project-1.git
++ git push to https://github.com/Deep-Learning-for-NLP-Chinese/Project-1.git