精华内容
下载资源
问答
  • 新闻自动分类和推荐系统研究与实现.pdf
  • 余弦定理实现新闻自动分类算法

    千次阅读 2015-07-27 21:53:33
    前言余弦定理,这个在初中课本中就出现过的公式,恐怕没有人不知道的吧。...当然这个话题太老,说的人太多,没有什么新意,恰巧周末阅读了吴军博士的>这门书,书中讲到了利用余弦定理实现新闻分类,于

    前言

    余弦定理,这个在初中课本中就出现过的公式,恐怕没有人不知道的吧。但是另外一个概念,可能不是很多的人会听说过,他叫空间向量,一般用e表示,高中课本中有专门讲过这个东西,有了余弦定理和向量空间,我们就可以做许多有意思的事情了,利用余弦定理计算文本相似度的算法就是其中一个很典型的例子。当然这个话题太老,说的人太多,没有什么新意,恰巧周末阅读了吴军博士的<<数学之美>>这门书,书中讲到了利用余弦定理实现新闻分类,于是就索性完成这个算法的初步模型。感兴趣的可以继续往下看。

    算法背景

    在以往,如果对一则新闻进行归类,一般使用的都是人工分类的办法,大体上看一下标题和首尾两段文字,就能知道新闻是属于财经的,体育的又或者是健康类的。但是在当今信息爆炸的时代,这显然是不可能完成的任务,所以我们急切的相用机器自己帮我们”分类“。最好的形式是我给计算机提供大量的已分类好的数据,等强大的计算机大脑训练好了这个分类模型,后边的事情就是他来完成了。看起来这好像很高深,很困难的样子,但是其实我们自己也可以写一个,只是效果可能不会那么好。

    分类器实现原理

    新闻自动分类器实现的本质也是利用余弦定理比较文本的相似度,于是这个问题的难点就在于这个特征向量哪里来,怎么去获得。特征向量,特征向量,关键两个字在于特征,新闻的特征就在于他的关键词,我的简单理解就是专业性的词语,换句话说,就是属于某类新闻特有的词语,比如金融类的新闻,关键词一般就是股票啊,公司啊,上市啊等等词语。这些词的寻找可以通过统计词频的方式实现,最后统计出来的关键词,进行降序排列,一个关键词就代表一个新的维度。 那么新的问题又来了,我要统计词频,那么就得首先进行分词,要把每个新闻句子的主谓宾统统挖掘出来啊,好像这个工作比我整个算法还要复杂的样子。OK,其实已经有人已经帮我们把这个问题解决了,在这个算法中我使用的是中科大的ICTCLAS分词系统,效果非常棒,举个例子,下面是我原始的新闻内容:

    教育部副部长:教育公平是社会公平重要基础
    7月23日,教育部党组副书记、副部长杜玉波为全国学联全体代表作《教育综合改革与青年学生成长成才》的专题报告。 中国青年网记者 张炎良 摄
    人民网北京7月24日电(记者 贺迎春 实习生 王斯慧

    经过分词系统处理后的分词效果:

    教育部/nt 副/b 部长/n :/wm 教育/v 公平/an 是/vshi 社会/n 公平/a 重要/a 基础/n 
    7月/t 23日/t ,/wd 教育部/nt 党组/n 副/b 书记/n 、/wn 副/b 部长/n 杜玉波/nr 为/p 全国学联/nt 全体/n 代表作/n 《/wkz 教育/vn 综合/vn 改革/vn 与/cc 青年/n 学生/n 成长/vi 成才/vi 》/wky 的/ude1 专题/n 报告/n 。/wj  中国/ns 青年/n 网/n 记者/n  张/q 炎/ng 良/d  摄/vg 
    人民/n 网/n 北京/ns 7月/t 24日/t 电/n (/wkz 记者/n  贺/vg 迎春/n  实习生/n  王斯慧/nr )/wky 昨日/t ,/wd 教育部/nt 副/b 部长

    OK,有了这个分词的结果之后,后面的事情就水到渠成了。

    算法的实现步骤

    1、给定训练的新闻数据集。

    2、通过分词系统统计词频的方式,统计词频最高的N位作为特征词,即特征向量

    3、输入测试数据,同样统计词频,并于训练数据的进行商的操作,得到特征向量值

    4、最后利用余弦定理计算相似度,并与最小阈值做比较。

    算法的代码实现

    ICTCLAS工具类ICTCLAS.java:

    package NewsClassify;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.StringTokenizer;
    
    public class ICTCLAS50 {
    	static {
    		try {
    			String libpath = System.getProperty("user.dir") + "\\lib";
    			String path = null;
    			StringTokenizer st = new StringTokenizer(libpath,
    					System.getProperty("path.separator"));
    			if (st.hasMoreElements()) {
    				path = st.nextToken();
    			}
    
    			// copy all dll files to java lib path
    			File dllFile = null;
    			InputStream inputStream = null;
    			FileOutputStream outputStream = null;
    			byte[] array = null;
    
    			dllFile = new File(new File(path), "ICTCLAS50.dll");
    			if (!dllFile.exists()) {
    				inputStream = ICTCLAS50.class.getResource("/lib/ICTCLAS50.dll")
    						.openStream();
    				outputStream = new FileOutputStream(dllFile);
    				array = new byte[1024];
    				for (int i = inputStream.read(array); i != -1; i = inputStream
    						.read(array)) {
    					outputStream.write(array, 0, i);
    				}
    				outputStream.close();
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    		try {
    			// load JniCall.dll
    			System.loadLibrary("ICTCLAS50");
    			System.out.println("4444");
    		} catch (Error e) {
    			
    			e.printStackTrace();
    		}
    	}
    
    	public native boolean ICTCLAS_Init(byte[] sPath);
    
    	public native boolean ICTCLAS_Exit();
    
    	public native int ICTCLAS_ImportUserDictFile(byte[] sPath, int eCodeType);
    
    	public native int ICTCLAS_SaveTheUsrDic();
    
    	public native int ICTCLAS_SetPOSmap(int nPOSmap);
    
    	public native boolean ICTCLAS_FileProcess(byte[] sSrcFilename,
    			int eCodeType, int bPOSTagged, byte[] sDestFilename);
    
    	public native byte[] ICTCLAS_ParagraphProcess(byte[] sSrc, int eCodeType,
    			int bPOSTagged);
    
    	public native byte[] nativeProcAPara(byte[] sSrc, int eCodeType,
    			int bPOStagged);
    }
    
    新闻实体类New.java

    package NewsClassify;
    
    /**
     * 词语实体类
     * 
     * @author lyq
     * 
     */
    public class Word implements Comparable<Word> {
    	// 词语名称
    	String name;
    	// 词频
    	Integer count;
    
    	public Word(String name, Integer count) {
    		this.name = name;
    		this.count = count;
    	}
    
    	@Override
    	public int compareTo(Word o) {
    		// TODO Auto-generated method stub
    		return o.count.compareTo(this.count);
    	}
    }
    
    分类算法类NewsClassify.java:

    package NewsClassify;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collections;
    
    /**
     * 分类算法模型
     * 
     * @author lyq
     * 
     */
    public class NewsClassifyTool {
    	// 余弦向量空间维数
    	private int vectorNum;
    	// 余弦相似度最小满足阈值
    	private double minSupportValue;
    	// 当前训练数据的新闻类别
    	private String newsType;
    	// 训练新闻数据文件地址
    	private ArrayList<String> trainDataPaths;
    
    	public NewsClassifyTool(ArrayList<String> trainDataPaths, String newsType,
    			int vectorNum, double minSupportValue) {
    		this.trainDataPaths = trainDataPaths;
    		this.newsType = newsType;
    		this.vectorNum = vectorNum;
    		this.minSupportValue = minSupportValue;
    	}
    
    	/**
    	 * 从文件中读取数据
    	 */
    	private String readDataFile(String filePath) {
    		File file = new File(filePath);
    		StringBuilder strBuilder = null;
    
    		try {
    			BufferedReader in = new BufferedReader(new FileReader(file));
    			String str;
    			strBuilder = new StringBuilder();
    			while ((str = in.readLine()) != null) {
    				strBuilder.append(str);
    			}
    			in.close();
    		} catch (IOException e) {
    			e.getStackTrace();
    		}
    
    		return strBuilder.toString();
    	}
    
    	/**
    	 * 计算测试数据的特征向量
    	 */
    	private double[] calCharacterVectors(String filePath) {
    		int index;
    		double[] vectorDimensions;
    		double[] temp;
    		News news;
    		News testNews;
    		String newsCotent;
    		String testContent;
    		String parseContent;
    		// 高频词汇
    		ArrayList<Word> frequentWords;
    		ArrayList<Word> wordList;
    
    		testContent = readDataFile(filePath);
    		testNews = new News(testContent);
    		parseNewsContent(filePath);
    
    		index = filePath.indexOf('.');
    		parseContent = readDataFile(filePath.substring(0, index) + "-split.txt");
    		testNews.statWords(parseContent);
    
    		vectorDimensions = new double[vectorNum];
    		// 计算训练数据集的类别的特征向量
    		for (String path : this.trainDataPaths) {
    			newsCotent = readDataFile(path);
    			news = new News(newsCotent);
    
    			// 进行分词操作
    			index = path.indexOf('.');
    			parseNewsContent(path);
    			parseContent = readDataFile(path.substring(0, index) + "-split.txt");
    			news.statWords(parseContent);
    
    			wordList = news.wordDatas;
    			// 将词频统计结果降序排列
    			Collections.sort(wordList);
    
    			frequentWords = new ArrayList<Word>();
    			// 截取出前vectorDimens的词语
    			for (int i = 0; i < vectorNum; i++) {
    				frequentWords.add(wordList.get(i));
    			}
    
    			temp = testNews.calVectorDimension(frequentWords);
    			// 将特征向量值进行累加
    			for (int i = 0; i < vectorDimensions.length; i++) {
    				vectorDimensions[i] += temp[i];
    			}
    		}
    
    		// 最后取平均向量值作为最终的特征向量值
    		for (int i = 0; i < vectorDimensions.length; i++) {
    			vectorDimensions[i] /= trainDataPaths.size();
    		}
    
    		return vectorDimensions;
    	}
    
    	/**
    	 * 根据求得的向量空间计算余弦相似度值
    	 * 
    	 * @param vectorDimension
    	 *            已求得的测试数据的特征向量值
    	 * @return
    	 */
    	private double calCosValue(double[] vectorDimension) {
    		double result;
    		double num1;
    		double num2;
    		double temp1;
    		double temp2;
    		// 标准的特征向量,每个维度上都为1
    		double[] standardVector;
    
    		standardVector = new double[vectorNum];
    		for (int i = 0; i < vectorNum; i++) {
    			standardVector[i] = 1;
    		}
    
    		temp1 = 0;
    		temp2 = 0;
    		num1 = 0;
    
    		for (int i = 0; i < vectorNum; i++) {
    			// 累加分子的值
    			num1 += vectorDimension[i] * standardVector[i];
    
    			// 累加分母的值
    			temp1 += vectorDimension[i] * vectorDimension[i];
    			temp2 += standardVector[i] * standardVector[i];
    		}
    
    		num2 = Math.sqrt(temp1) * Math.sqrt(temp2);
    		// 套用余弦定理公式进行计算
    		result = num1 / num2;
    
    		return result;
    	}
    
    	/**
    	 * 进行新闻分类
    	 * 
    	 * @param filePath
    	 *            测试新闻数据文件地址
    	 */
    	public void newsClassify(String filePath) {
    		double result;
    		double[] vectorDimension;
    
    		vectorDimension = calCharacterVectors(filePath);
    		result = calCosValue(vectorDimension);
    
    		// 如果余弦相似度值满足最小阈值要求,则属于目标分类
    		if (result >= minSupportValue) {
    			System.out.println(String.format("最终相似度结果为%s,大于阈值%s,所以此新闻属于%s类新闻",
    					result, minSupportValue, newsType));
    		} else {
    			System.out.println(String.format("最终相似度结果为%s,小于阈值%s,所以此新闻不属于%s类新闻",
    					result, minSupportValue, newsType));
    		}
    	}
    
    	/**
    	 * 利用分词系统进行新闻内容的分词
    	 * 
    	 * @param srcPath
    	 *            新闻文件路径
    	 */
    	private void parseNewsContent(String srcPath) {
    		// TODO Auto-generated method stub
    		int index;
    		String dirApi;
    		String desPath;
    
    		dirApi = System.getProperty("user.dir") + "\\lib";
    		// 组装输出路径值
    		index = srcPath.indexOf('.');
    		desPath = srcPath.substring(0, index) + "-split.txt";
    
    		try {
    			ICTCLAS50 testICTCLAS50 = new ICTCLAS50();
    			// 分词所需库的路径、初始化
    			if (testICTCLAS50.ICTCLAS_Init(dirApi.getBytes("GB2312")) == false) {
    				System.out.println("Init Fail!");
    				return;
    			}
    			// 将文件名string类型转为byte类型
    			byte[] Inputfilenameb = srcPath.getBytes();
    
    			// 分词处理后输出文件名、将文件名string类型转为byte类型
    			byte[] Outputfilenameb = desPath.getBytes();
    
    			// 文件分词(第一个参数为输入文件的名,第二个参数为文件编码类型,第三个参数为是否标记词性集1 yes,0
    			// no,第四个参数为输出文件名)
    			testICTCLAS50.ICTCLAS_FileProcess(Inputfilenameb, 0, 1,
    					Outputfilenameb);
    			// 退出分词器
    			testICTCLAS50.ICTCLAS_Exit();
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    
    	}
    }
    
    场景测试了Client.java:

    package NewsClassify;
    
    import java.util.ArrayList;
    
    
    /**
     * 新闻分类算法测试类
     * @author lyq
     *
     */
    public class Client {
    	public static void main(String[] args){
    		String testFilePath1;
    		String testFilePath2;
    		String testFilePath3;
    		String path;
    		String newsType;
    		int vectorNum;
    		double minSupportValue;
    		ArrayList<String> trainDataPaths;
    		NewsClassifyTool classifyTool;
    		
    		//添加测试以及训练集数据文件路径
    		testFilePath1 = "C:\\Users\\lyq\\Desktop\\icon\\test\\testNews1.txt";
    		testFilePath2 = "C:\\Users\\lyq\\Desktop\\icon\\test\\testNews2.txt";
    		testFilePath3 = "C:\\Users\\lyq\\Desktop\\icon\\test\\testNews3.txt";
    		trainDataPaths = new ArrayList<String>();
    		path = "C:\\Users\\lyq\\Desktop\\icon\\test\\trainNews1.txt";
    		trainDataPaths.add(path);
    		path = "C:\\Users\\lyq\\Desktop\\icon\\test\\trainNews2.txt";
    		trainDataPaths.add(path);
    		
    		newsType = "金融";
    		vectorNum = 10;
    		minSupportValue = 0.45;
    		
    		classifyTool = new NewsClassifyTool(trainDataPaths, newsType, vectorNum, minSupportValue);
    		classifyTool.newsClassify(testFilePath1);
    		classifyTool.newsClassify(testFilePath2);
    		classifyTool.newsClassify(testFilePath3);
    	}
    
    }
    
    结果输出:

    最终相似度结果为0.39999999999999997,小于阈值0.45,所以此新闻不属于金融类新闻
    最终相似度结果为0.4635393084189425,大于阈值0.45,所以此新闻属于金融类新闻
    最终相似度结果为0.661835948543857,大于阈值0.45,所以此新闻属于金融类新闻
    
    测试数据以及全部代码,链接在此:https://github.com/linyiqun/news-classifier


    参考文献

    百度百科

    <<数学之美>>第二版.吴军博士

    展开全文
  • 中文信息处理参考资料。 自动分类就是用计算机系统代替人工按照一定的分类标准或者分类参考,对文献等对象进行分类,其任务是:在给定的分类体系下,根据文本的内容自动地确定文本关联的类别。
  • 爬虫实现网易新闻自动爬取并分类 项目地址 采用THUCnews全部数据集进行训练,效果如下。 详细实现见./text_classification 部署步骤如下: 运行环境 服务器:Ubuntu 16.04 数据库:Mysql 5.6 python...

    卷积神经网络&&爬虫实现网易新闻自动爬取并分类

    项目地址

    采用THUCnews全部数据集进行训练,效果如下。 详细实现见./text_classification

    部署步骤如下:


    运行环境

    服务器:Ubuntu 16.04
    数据库:Mysql 5.6
    python:Anaconda 5.1
    Tensorflow-CPU:1.7
    额外的包:参考requirements.txt,有则忽略,无则安装。

    certifi==2018.1.18
    chardet==3.0.4
    Django==2.0.4
    docopt==0.6.2
    idna==2.6
    mysql-connector==2.1.6
    pipreqs==0.4.9
    pytz==2018.4
    requests==2.18.4
    SQLAlchemy==1.2.6
    urllib3==1.22
    yarg==0.1.9
    


    1. 首先安装mysql到数据库,执行text_classification.sql创建数据库。更改数据库配置./text_classification/connect_mysql.py
    2. 服务器安装Anaconda(清华大学镜像站自行下载安装),安装TensorFlow-CPU版
    3. 将本项目部署至/home/www目录下
    4. 安装其他依赖包

    pip install -r requirements.txt
    • 服务器部署Django环境(apache2.4)
      参考:https://code.ziqiangxuetang.com/django/django-deploy.html
    • 关于本项目部署中的Django配置请看以下操作
      安装 apache2 和 mod_wsgi
      sudo apt-get install apache2
      sudo apt-get install libapache2-mod-wsgi-py3
      新建网站配置文件
      vim /etc/apache2/sites-available/text_classification.conf
      输入以下内容
    <VirtualHost classify.i-ll.cc:80>
        ServerName classify.i-ll.cc
        ServerAlias classify.i-ll.cc
        ServerAdmin dandanv5@hotmail.com
        Alias /static /home/www/text_classification/static
    
        <Directory /home/www/text_classification>
            Require all granted
        </Directory>
    
    
        WSGIScriptAlias / /home/www/text_classification/myweb/wsgi.py
    
        <Directory /home/www/text_classification/myweb>
        <Files wsgi.py>
            Require all granted
        </Files>
        </Directory>
    </VirtualHost>
    

    激活新网站

    sudo a2ensite sitename.conf
    7. 启动项目
    cd /home/www/text_classification/text_classification && sh startproject.sh
    项目运行日志在./log下

    最后本项目使用的THUCNews中文新闻数据集,可以去官网下载。我对数据集进行了整合处理,下载地址见./text_classification/data/cnews/README.md
    关于本项目中模型和爬虫部分,详见./text_classification/README.md

    代码有问题请直接提issues。

    部署有疑问请直接联系:

    QQ:447600334
    Email:dandanv5@hotmail.com

    参考:CNN字符级中文文本分类-基于TensorFlow实现

    展开全文
  • 基于向量空间模型的文本自动分类系统的研究与实现 Research and Implementation of Text Categorization System Based on VSM (Pang jianfeng) (Bu dongbo) (Bai shuo)Institute of Computing Technology , CAS ...

    基于向量空间模型的文本自动分类系统的研究与实现

    Research and Implementation of Text Categorization System Based on VSM

    (Pang jianfeng) (Bu dongbo) (Bai shuo)
    Institute of Computing Technology , CAS 100080E-mail: pangjf@ncic.ac.cn
                  TP391

     

     

     

    AbstractIn recent years , information processing turns more and more important for us to get useful information . Text Categorization, the automated assigning of natural language texts to predefined categories based on their contents, is a task of increasing importance. This paper gives a research to several key techniques about Text Categorization , including Vector Space Model , Feature Extraction , Machine Learning . It also describes a text categorization model based on VSM, and gives the evaluations and results .

     

    Key wordsText Categorization Chinese Information Processing Vector Space Model
    1 引言

     

           Internet        2问题描述

     

    2.1              

           2.2              

          
           F1

    另外有微平均和宏平均两种计算准确率、查全率和 F1 值的方法。

    微平均:计算每一类的准确率、查全率和 F1 值。

    宏平均:计算全部类的准确率、查全率和 F1 值。

    3 关键技术

     

    3.1        0 1目前,在信息处理方向上,文本的表示主要采用向量空间模型 (VSM)。向量空间模型的基本思想是以向量来表示文本:(W1,W2,W3……Wn),其中 Wi 为第 i 个特征项的权重,那么选取什么作为特征项呢,一般可以选择字、词或词组,根据实验结果,普遍认为选取词作为特征项要优于字和词组,因此,要将文本表示为向量空间中的一个向量,就首先要将文本分词,由这些词作为向量的维数来表示文本,最初的向量表示完全是 0、1 形式,即,如果文本中出现了该词,那么文本向量的该维为 1,否则为 0。这种方法无法体现这个词在文本中的作用程度,所以逐渐 0、1 被更精确的词频代替,词频分为绝对词频和相对词频,绝对词频,即使用词在文本中出现的频率表示文本,相对词频为归一化的词频,其计算方法主要运用 TF-IDF 公式,目前存在多种 TF-IDF 公式,我们在系统中采用了一种比较普遍的 TF-IDF 公式:

    其中, 为词 t 在文本  中的权重,而  为词 t 在文本  中的词频,N 为训练文本的总数, 为训练文本集中出现 t 的文本数,分母为归一化因子。

    另外还存在其他的 TF-IDF 公式,例如:

    文本经过分词程序分词后,首先去除停用词,合并数字和人名等词汇,然后统计词频,最终表示为上面描述的向量。

    3.2        构成文本的词汇,数量是相当大的,因此,表示文本的向量空间的维数也相当大,可以达到几万维,因此我们需要进行维数压缩的工作,这样做的目的主要有两个,第一,为了提高程序的效率,提高运行速度,第二,所有几万个词汇对文本分类的意义是不同的,一些通用的、各个类别都普遍存在的词汇对分类的贡献小,在某特定类中出现比重大而在其他类中出现比重小的词汇对文本分类的贡献大,为了提高分类精度,对于每一类,我们应去除那些表现力不强的词汇,筛选出针对该类的特征项集合,存在多种筛选特征项的算法,如下所列:

    1. 根据词和类别的互信息量判断

    2. 根据词熵判断

    3. 根据KL距离判断

    在我们的系统中采用了词和类别的互信息量进行特征项抽取的判断标准,其算法过程如下所列:

    STEP ONE:初始情况下,该特征项集合包含所有该类中出现的词。

    STEP TWO:对于每个词,计算词和类别的互信息量

    其中, W 中出现的比重, 为该类的训练文本数, 为词  在  中的词频, 为总词数, 为该类所有词的词频和。

     同上面的计算公式相同,只是计算词在所有训练文本中的比重,其中, 为全体训练文本数。

    STEP THREE:对于该类中所有的词,依据上面计算的互信息量排序。

    STEP FOUR:抽取一定数量的词作为特征项,具体需要抽取多少维的特征项,目前无很好的解决方法,一般采用先定初始值,然后根据实验测试和统计结果确定最佳值,一般初始值定在几千左右。

    STEP FIVE:将每类中所有的训练文本,根据抽取的特征项,进行向量维数压缩,精简向量表示。

    3.3 训练方法和分类算法是分类系统的核心部分,目前存在多种基于向量空间模型的训练算法和分类算法,例如,支持向量机算法、神经网络方法,最大平均熵方法,最近 K 邻居方法和贝叶斯方法等等,本文以下具体介绍三种分类算法:

    1.      简单向量距离分类法

    该方法的分类思路十分简单,根据算术平均为每类文本集生成一个代表该类的中心向量,然后在新文本来到时,确定新文本向量,计算该向量与每类中心向量间的距离(相似度),最后判定文本属于与文本距离最近的类,具体步骤如下:

    STEP ONE:计算每类文本集的中心向量,计算方法为所有训练文本向量简单的算术平均

    STEP TWO:新文本到来后,分词,将文本表示为特征向量

    STEP THREE:计算新文本特征向量和每类中心向量间的相似度,公式为:

    其中, 为新文本的特征向量, 为第 j 类的中心向量,M 为特征向量的维数, 为向量的第 K 维。

    STEP FOUR:比较每类中心向量与新文本的相似度,将文本分到相似度最大的那个类别中。

     

    2.      贝叶斯算法

    该算法的基本思路是计算文本属于类别的概率,文本属于类别的几率等于文本中每个词属于类别的几率的综合表达式,具体算法步骤如下:

    STEP ONE:计算特征词属于每个类别的几率向量,

    其中, ,计算公式与计算互信息量的公式相同

    STEP TWO:在新文本到达时,根据特征词分词,然后按下面的公式计算该文本  属于类  的几率:

    其中, 为相似含义, 为类的总数,  在  中的词频,n 为特征词总数。

    STEP THREE:比较新文本属于所有类的几率,将文本分到几率最大的那个类别中。

     

    3.      KNN(K 最近邻居)算法

    该算法的基本思路是:在给定新文本后,考虑在训练文本集中与该新文本距离最近(最相似)的 K 篇文本,根据这 K 篇文本所属的类别判定新文本所属的类别,具体的算法步骤如下:

    STEP ONE:根据特征项集合重新描述训练文本向量

    STEP TWO:在新文本到达后,根据特征词分词新文本,确定新文本的向量表示

    STEP THREE:在训练文本集中选出与新文本最相似的 K 个文本,计算公式为:

    其中,K 值的确定目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整 K 值,一般初始值定为几百到几千之间。

    STEP FOUR:在新文本的 K 个邻居中,依次计算每类的权重,计算公式如下:

    其中, 为新文本的特征向量, 为相似度计算公式,与上一步骤的计算公式相同,而  为类别属性函数,即,如果  属于类 ,那么函数值为 1,否则为 0。

    STEP FIVE:比较类的权重,将文本分到权重最大的那个类别中。

     

    除此以外,支持向量机和神经网络算法在文本分类系统中应用得也较为广泛,支持向量机的基本思想是使用简单的线形分类器划分样本空间。对于在当前特征空间中线形不可分的模式,则使用一个核函数把样本映射到一个高维空间中,使得样本能够线形可分。

    3.4 上面的算法都是将新文本归于分类体系中的一个类,即与该文本关联最大的类,而事实上,分类体系中的类别不是完全互斥的,存在这样一些既属于其中一个类别,又同时属于其他类别的文本,对于这种文本,上述的分类算法无法确定文本所属的所有类别。因此,需要对每个类别确定阈值,当文本在该类的阈值之上时,就将文本归于该类中。

    但是,阈值的确定是十分困难的,理论上,没有很好的解决方法,一般采用预定初始值,然后给出测试文本,使用分类器进行分类,再根据分类的准确程度调整初始值,这样的方法有两个缺点,首先,初始值的确定不容易,完全是根据经验或简单的测试而定,其次,调整的幅度无法确定,当初始值过高或过低需要增减时,增减的幅度无法很好的确定,只能反复测试,反复调整,这样就大大地增加了工作量。而且,一个分类系统的阈值由于测试文本的不同也无法完全应用于另一个分类系统中。

    我们在系统中考虑了一种确定阈值的方法,称为百分比阈值确定法,它的基本思想是:首先依据上述训练算法和分类算法构造分类器,然后对于要确定阈值的类,用分类器分类该类中所有的训练文本,从而每个文本都得到一个相关的值,以上述算法为例:

    简单向量距离分类法:文本与本类中心向量间的相似度值

    贝叶斯算法:文本归属于类的几率

    KNN 算法:K 个邻居中的类权重

    然后按递减顺序排列所有本类训练文本得到的值,假定本类有 n 篇文本,那么这些文本的值为 ,那么本类阈值 y 确定如下:

    其中,s 为初始值,根据训练文本的质量程度,可以确定为 80 或更高,这样就确定了本类的初始阈值,可以想象,S 越大,该分类器的查全率就越高,准确度就越低,相反地,S 越小,查全率就越低,准确率就越高,然后根据测试进行调整。

    相应地,调整阈值可以转化为调整 s 值,如果对查全率满意而对准确率不满意,那么可以减少 s 值,否则就增加 s

    4 系统的结构框架

     

            

     


     


    5 测试数据和实验结果

     

    我们在一个具有2830篇中文文本的语料库上测试我们系统实现的分类算法,并对其效率和结果进行比较分析。

    语料库中的文本都是新闻电讯稿,绝大部分采自新华社,还有200余篇采自中国新闻社和人民日报。所有的新闻稿都由领域专家事先进行分类,按照中图分类法分成政治、经济、军事等共38类。我们选择训练集和测试集的方法如下:将这些分好类的语料平均分成十份,选择其中一份作为开放测试集,剩余的九份作为训练集和封闭测试集。这样每一份都依次轮流作为开放测试集,运行分类算法,共执行10次分类操作,计算其平均值,实验结果如下表所示:

     

    F1

    F1

    87.08%
    87.08%
    87.08%
    80.23%
    80.23%
    80.23%

    82.39%
    83.78%
    83.08%
    76.17%
    77.26%
    76.71%
    KNN
    89.11%
    91.42%
    90.25%
    83.29%
    85.12%
    84.20%

     

    m k n  

    O (mn)
    O (kn)

    O (mn)
    O (kn)
    KNN

    O (km+nm)

     

    KNN 6 将来的工作

     

           1.         2.         3.         7 结束语

     

            

    1.         David D. Lewis: Feature selection and feature extraction for text categorization, In Proceedings of Speech and Natural Language Workshop, pp 212-217. Defense Advanced Research Projects Agency, Morgan Kaufmann, February 1992
    2.         Yiming Yang: An evaluation of statistical approaches to text categorization, In Journal of Information Retrieval, 1999, Vol 1, No. 1/2, pp 67--88
    3.         David D. Lewis and Marc Ringuette: A comparison of tow learning algorithms of text categorization , In Third Annual Symposium on Document Analysis and Information Retrieval, pp 81-93, Las Vegas, NV, April 11-13 1994. ISRI; Univ. of Nevada, Las Vegas
    4.         Andrew McCallum and Kamal Nigam: A comparison of event models for naive bayes text categorization , AAAI-98 Workshop on "Learning for Text Categorization",1998
    5.         Yiming Yang and Xin Liu: A re-examination of text categorization methods , Proceedings of ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR), 1999, pp 42--49
    6.         2000 International Conference on Multilingual Information Processing , pp 37-43 , 2000
    7.         2000 International Conference on Multilingual Information Processing , pp 31-36 , 2000
    8.         / 2000 11

    展开全文
  • 给定训练新闻数据集,可以对输入的测试新闻进行自动分类识别 分类实现原理 总体上利用了余弦相似度计算的原理来计算文本相似度 其中的特征向量由训练数据集中的关键词构成,其中词语的寻找利用了中科大的ICTCLAS分词...
  • 如何实现新闻自动抓取?

    千次阅读 2006-11-29 15:11:00
    我想做一个系统能够从一些别的网站抓新闻,然后动态添加到我的站点上来,请问如何实现?新浪的新闻抓取1。首页调用body { font-size: 12px}-->Server.ScriptTimeOut=120*********页面设置部分*********************...
    我想做一个系统能够从一些别的网站抓新闻,然后动态添加到我的站点上来,请问如何实现?
    
    新浪的新闻抓取
    1。首页调用
    <style type="text/css">
    <!--
    body {  font-size: 12px}
    -->
    </style>
    <%
    Server.ScriptTimeOut=120

    ''*********页面设置部分***********************************************************************

    const m=40 ''首页列出多少条新闻

    const NeedTime=False ''是否需要显示时间,True 表示显示时间 , False 表示不显示时间

    const NewsLength=20 ''新闻标题截取长度(不包括时间),注意截取了新闻长度就不能显示新闻时间

    const Points="…" ''截取长度后的标题要跟的省略号样子,可不填。

    ''*********************************************************************************************

    dim wstr,str,url,start,over,i,News


    on error resume next
    url="http://dailynews.sina.com.cn/news1000.shtml"
    wstr=getHTTPPage(url)
    if err.number=0 then
    start=newstring(wstr,"<!--新闻开始-->")
    over=newstring(wstr,"<!--新闻结束-->")
    wstr=mid(wstr,start+11,over-start-11)
    wstr=replace(wstr,"<ul>","")
    wstr=trim(replace(wstr,"</ul>",""))
    '' Set fs = CreateObject("Scripting.FileSystemObject")
    '' Set f = fs.CreateTextFile(server.mappath("mynews.htm"))
    '' f.writeLine wstr
    '' f.close
    '' set f = nothing
    '' set fs = nothing
    str=split(wstr,"<li>")
    If Unbound(str)<m then m=Unbound(str)
    for i=1 to m
    News=News&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    next
    set str=nothing
    else
    wscript.echo err.description
    end if


    Sub writeLog(Msg)
    On Error Resume Next
    Dim f
    Set f = fs.OpenTextFile(logfile,8,true)
    f.WriteLine now & " - " & Msg
    f.close
    End Sub
    function getHTTPPage(url)
    on error resume next
    dim http
    set http=Server.createobject("Microsoft.XMLHTTP")
    Http.open "GET",url,false
    Http.send()
    if Http.readystate<>4 then
    exit function
    end if
    getHTTPPage=bytes2BSTR(Http.responseBody)
    set http=nothing
    if err.number<>0 then err.Clear  
    end function

    Function bytes2BSTR(vIn)
    dim strReturn
    dim i,ThisCharCode,NextCharCode
    strReturn = ""
    For i = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,i,1))
    If ThisCharCode < &H80 Then
    strReturn = strReturn & Chr(ThisCharCode)
    Else
    NextCharCode = AscB(MidB(vIn,i+1,1))
    strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
    i = i + 1
    End If
    Next
    bytes2BSTR = strReturn
    End Function

    Function newstring(wstr,strng)
    newstring=Instr(wstr,strng)
    End Function

    Function LeftNews(strng,NewsLength,NeedTime)
    If NeedTime<>True then
    Left_0=Instr(strng,"</a>")+3
    TheRed=Instr(strng,"<font color=#ff0000>")
    If TheRed>0 then
    Left_1=Instr(strng,"<font color=#ff0000>")+20
    Left_2=Instr(strng,"</font>")
    If Left_1+NewsLength>=Left_2 then
    LeftNews=Left(strng,Left_0)
    Else
    LeftNews=Left(strng,Left_1+NewsLength)&Points&"</font></a>"
    End if
    Else
    Left_1=Instr(strng,"_blank>")+7
    Left_2=Instr(strng,"</a>")
    If Left_1+NewsLength>=Left_2 then
    LeftNews=Left(strng,Left_0)
    Else
    LeftNews=Left(strng,Left_1+NewsLength)&Points&"</a>"
    End if
    End if
    Else
    LeftNews=strng
    End if
    End Function


    Response.Write News ''变量News为内容
    %>
    2。新闻列表
    <style type="text/css">
    <!--
    body {  font-size: 12px}
    -->
    </style>

    <a href="news.asp">首页</a>
    <a href="news.asp?n=娱乐">娱乐</a>
    <a href="news.asp?n=体育">体育</a>
    <a href="news.asp?n=国内">国内</a>
    <a href="news.asp?n=科技">科技</a>
    <a href="news.asp?n=财经">财经</a>
    <a href="news.asp?n=社会">社会</a>
    <a href="news.asp?n=汽车">汽车</a>
    <a href="news.asp?n=国际">国际</a>
    <a href="news.asp?n=文教">文教</a>
    <a href="news.asp?n=影音">影音</a>
    <p>
    <%
    Server.ScriptTimeOut=120

    ''*********页面设置部分***********************************************************************

    const m=10 ''每个分类的新闻最多几条

    const NeedTime=False ''是否需要显示时间,True 表示显示时间 , False 表示不显示时间

    const NewsLength=20 ''新闻标题截取长度(不包括时间),注意截取了新闻长度就不能显示新闻时间

    const Points="…" ''截取长度后的标题要跟的省略号样子,可不填。

    ''*********************************************************************************************

    dim wstr,str,url,start,over,NewsClass,i
    dim n0,n1,n2,n3,n4,n5,n6,n7,n8,n9
    n0=0
    n1=0
    n2=0
    n3=0
    n4=0
    n5=0
    n6=0
    n7=0
    n8=0
    n9=0

    NewsClass=trim(Request("n"))

    on error resume next
    url="http://dailynews.sina.com.cn/news1000.shtml" ''新闻来源的页面
    wstr=getHTTPPage(url) ''取得页面内容
    if err.number=0 then
    start=newstring(wstr,"<!--新闻开始-->")
    over=newstring(wstr,"<!--新闻结束-->")
    wstr=mid(wstr,start+11,over-start-11)
    wstr=replace(wstr,"href=""","href=""show.asp?url=")
    wstr=replace(wstr,"<ul>","")
    wstr=trim(replace(wstr,"</ul>","")) ''完成对页面内容的截取加工
    '' Set fs = CreateObject("Scripting.FileSystemObject")
    '' Set f = fs.CreateTextFile(server.mappath("mynews.htm"))
    '' f.writeLine wstr
    '' f.close
    '' set f = nothing
    '' set fs = nothing
    str=split(wstr,"<li>")
    If NewsClass<>"" then ''对分类新闻的截取
    for i=1 to Ubound(str)
    If Left(str(i),4)="["&NewsClass&"]" then
    News=News&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    End if
    next
    Else ''对所有新闻进行分类
    for i=1 to Ubound(str)
    If     Left(str(i),4)="[娱乐]" then
    If n0<m then YuLe=YuLe&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n0=n0+1
    Elseif Left(str(i),4)="[体育]" then
    If n1<m then TiYu=TiYu&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n1=n1+1
    Elseif Left(str(i),4)="[国内]" then
    If n2<m then GuoNei=GuoNei&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n2=n2+1
    Elseif Left(str(i),4)="[科技]" then
    If n3<m then KeJi=KeJi&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n3=n3+1
    Elseif Left(str(i),4)="[财经]" then
    If n4<m then CaiJing=CaiJing&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n4=n4+1
    Elseif Left(str(i),4)="[社会]" then
    If n5<m then SheHui=SheHui&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n5=n5+1
    Elseif Left(str(i),4)="[汽车]" then
    If n6<m then QiChe=QiChe&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n6=n6+1
    Elseif Left(str(i),4)="[国际]" then
    If n7<m then GuoJi=GuoJi&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n7=n7+1
    Elseif Left(str(i),4)="[影音]" then
    If n8<m then YingYin=YingYin&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n8=n8+1
    Elseif Left(str(i),4)="[文教]" then
    If n9<m then WenJiao=WenJiao&"<li>"&LeftNews(str(i),NewsLength,NeedTime)
    n9=n9+1
    End if
    next
    End if
    set str=nothing
    else
    wscript.echo err.description
    end if

    Sub writeLog(Msg)
    On Error Resume Next
    Dim f
    Set f = fs.OpenTextFile(logfile,8,true)
    f.WriteLine now & " - " & Msg
    f.close
    End Sub
    function getHTTPPage(url)
    on error resume next
    dim http
    set http=Server.createobject("Microsoft.XMLHTTP")
    Http.open "GET",url,false
    Http.send()
    if Http.readystate<>4 then
    exit function
    end if
    getHTTPPage=bytes2BSTR(Http.responseBody)
    set http=nothing
    if err.number<>0 then err.Clear  
    end function

    Function bytes2BSTR(vIn)
    dim strReturn
    dim i,ThisCharCode,NextCharCode
    strReturn = ""
    For i = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,i,1))
    If ThisCharCode < &H80 Then
    strReturn = strReturn & Chr(ThisCharCode)
    Else
    NextCharCode = AscB(MidB(vIn,i+1,1))
    strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
    i = i + 1
    End If
    Next
    bytes2BSTR = strReturn
    End Function

    Function newstring(wstr,strng)
    newstring=Instr(wstr,strng)
    End Function

    Function LeftNews(strng,NewsLength,NeedTime)
    If NeedTime<>True then
    Left_0=Instr(strng,"</a>")+3
    TheRed=Instr(strng,"<font color=#ff0000>")
    If TheRed>0 then
    Left_1=Instr(strng,"<font color=#ff0000>")+20
    Left_2=Instr(strng,"</font>")
    If Left_1+NewsLength>=Left_2 then
    LeftNews=Left(strng,Left_0)
    Else
    LeftNews=Left(strng,Left_1+NewsLength)&Points&"</font></a>"
    End if
    Else
    Left_1=Instr(strng,"_blank>")+7
    Left_2=Instr(strng,"</a>")
    If Left_1+NewsLength>=Left_2 then
    LeftNews=Left(strng,Left_0)
    Else
    LeftNews=Left(strng,Left_1+NewsLength)&Points&"</a>"
    End if
    End if
    Else
    LeftNews=strng
    End if
    End Function

    ''每个变量代表一个分类的新闻

    Response.Write YuLe&"<p>"
    Response.Write TiYu&"<p>"
    Response.Write GuoNei&"<p>"
    Response.Write KeJi&"<p>"
    Response.Write CaiJing&"<p>"
    Response.Write SheHui&"<p>"
    Response.Write QiChe&"<p>"
    Response.Write GuoJi&"<p>"
    Response.Write YingYin&"<p>"
    Response.Write WenJiao
    ''变量News是选择分类新闻后的变量
    Response.Write News

    %>
    3。新闻内容
    <%
    Server.ScriptTimeOut=60
    dim wstr,url,start,over,i


    on error resume next
    url=Request("url")
    wstr=getHTTPPage(url)
    if err.number=0 then
    wstr=Autolink(wstr) ''完成截取后的页面
    '' Set fs = CreateObject("Scripting.FileSystemObject") ''把截下来的页面写在一个文件里
    '' Set f = fs.CreateTextFile(server.mappath("mynews.htm"))
    '' f.writeLine wstr
    '' f.close
    '' set f = nothing
    '' set fs = nothing
    else
    wscript.echo err.description
    end if

    function getHTTPPage(url)
    on error resume next
    dim http
    set http=Server.createobject("Microsoft.XMLHTTP")
    Http.open "GET",url,false
    Http.send()
    if Http.readystate<>4 then
    exit function
    end if
    getHTTPPage=bytes2BSTR(Http.responseBody)
    set http=nothing
    if err.number<>0 then err.Clear  
    end function

    Function bytes2BSTR(vIn)
    dim strReturn
    dim i,ThisCharCode,NextCharCode
    strReturn = ""
    For i = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,i,1))
    If ThisCharCode < &H80 Then
    strReturn = strReturn & Chr(ThisCharCode)
    Else
    NextCharCode = AscB(MidB(vIn,i+1,1))
    strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
    i = i + 1
    End If
    Next
    bytes2BSTR = strReturn
    End Function

    Function NewsString(wstr,strng)
    NewsString=Instr(wstr,strng)
    End Function

    Function Autolink(strContent)
    dim re
    set re = New RegExp
    re.IgnoreCase = True
    re.Global = True
    If Instr(url,"http://ent.")>0 then ''影音和娱乐新闻的界面
    start=NewsString(strContent,"<table width=604") ''截取的起点
    over=NewsString(strContent,"<center></center>") ''截取的终点
    strContent=mid(strContent,start,over-start) ''截取新闻
    re.Pattern = "/<table border=0(.[^/[]*)/<//table>"
    strContent = re.Replace(strContent,"") ''去掉画中画广告
    strContent = Replace(strContent,"/p>","") ''去掉页面中一个奇怪的错误
    strContent = Replace(strContent,"<table width=604 border=0 cellpadding=0 cellspacing=0>","")
    strContent = Replace(strContent,"</table></table>","")
    strContent = Replace(strContent,"<img src=http://image2.sina.com.cn/ent/news_rou.gif width=30 height=53>","")
    strContent = Replace(strContent,"<img src=http://image2.sina.com.cn/ent/images/c.gif width=1 height=1>","<hr size=1 bgcolor=#d9d9d9>")
    strContent = Replace(strContent,"bgcolor=#fff3ff","") ''去掉背景颜色
    strContent = Replace(strContent,"bgcolor=#bd6bff","") ''去掉背景颜色
    strContent = Replace(strContent,"width=603","width=100% ") ''把一个定义了大小的表格放到最大
    strContent = Replace(strContent,"width=554","width=100% ") ''把一个定义了大小的表格放到最大
    strContent = "<table width=100% border=0 cellspacing=0 cellpadding=10 align=center >"&strContent&"</td></tr></table>" ''修补HTML的结构错误
    Else ''其他分类新闻的界面
    start=NewsString(strContent,"<th class=f24>") ''截取的起点
    over=NewsString(strContent,"<br clear=all>") ''截取的终点
    strContent=mid(strContent,start,over-start) ''截取新闻
    re.Pattern = "/<table border=0(.[^/[]*)/<//table>"
    strContent = re.Replace(strContent,"") ''去掉画中画广告
    strContent = Replace(strContent,"/p>","") ''去掉页面中一个奇怪的错误
    strContent = "<table width=100% border=0 cellspacing=0 cellpadding=10 align=center >"&strContent&"</td></tr></table>" ''修补HTML的结构错误
    End if
    Autolink=strContent
    End Function

    %>
    <style type="text/css">
    <!--
    td {  font-size: 12px}
    -->
    </style>
    <table width="770" border="0" cellspacing="0" cellpadding="10" align="center" class="line_l_r" bgcolor="#EEEEEE">
      <tr>
        <td>
      <% Response.Write wstr %>

    </td>
      </tr>
    </table> 
    展开全文
  • php新闻管理系统

    2015-07-07 14:27:58
    手工(不能用Dreamweaver自动生成代码的方式)编写Web新闻管理系统实现以下功能: (1)网站拥有管理员、编辑和用户3个角色; (2)实现管理员和编辑的注册及登录; (3)管理员负责网站的日常维护,能够删除注册...
  • 基于jsp的新闻发布系统

    万次阅读 多人点赞 2016-06-06 20:18:21
    下面就让我们来说一说基于jsp的新闻发布系统,其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能...
  • 新闻发布系统的设计与实现

    千次阅读 2010-06-05 22:52:18
    网站新闻发布系统,是将网站上需要经常变动的信息,类似公司动态、企业新闻、新产品发布、促销活动和行业动态等更新信息集中管理,并通过信息的某些共性进行分类,最后系统化、标准化发布到网站上的一种网站应用程序...
  • Python 实现英文新闻摘要自动提取(1)

    千次阅读 2017-02-11 11:06:23
    “关键字”法完成新闻摘要提取 我们现在浏览新闻,一般都会看标题 ( title ) 和新闻简介 ( summary ) 来判断我们是否对这则新闻感兴趣。之前的新闻简介都是由编辑手动提取的,现在自然语言处理 (Natural Language...
  • 该资源是人工智能代码,采用机器学习和深度学习实现文本自动分类。希望对您有所帮助〜 该资源主要针对不同数据集进行文本分类代码分析,包括: 机器学习 左心室 DTC 支持向量机 知识网络 射频 深度学习 有线电视...
  • 至真.net新闻发布系统

    2021-03-26 02:33:36
    1. 该新闻系统由asp.net&c#实现,安装的虚拟目录下,提供了实现的全部源代码,大家可自由修改,有好的建议和修改,大家可以发电子邮件或qq和我联系;有需要增加功能,但不熟悉c#的使用者也可以和我联系,我尽...
  • 首先贴出后台主页面: 下面实现
  • 中文网页自动分类综述

    千次阅读 2016-12-21 11:07:09
    1.中文网页自动分类是从文本自动分类的基础上发展起来的,由于文本自动分类拥有比较成熟的技术,不少研究工作试图使用纯文本分类技术实现网页分类。孙建涛指出:用纯文本方式表示网页是困难的,也是不合理的,因为...
  • 文章来源:ATYUN AI平台 数字化已经改变了我们...自动化文本分类是文本分类的一种智能分类,而且,使用机器学习来实现这些任务的自动化,会使整个过程变得非常快速和高效。人工智能和机器学习可以说是近年来最热...
  • .net 新闻发布系统

    2008-11-19 15:16:06
    ·首页、 分类新闻、专题可生成静态页面 ·生成速度可在每分钟30页到2000页之间选择 ·首页静态文件自动定时生成 ·新闻采集功能,采集时可进行其它管理操作,采集规则导入导出 ·多任务循环采集采集,可实现...
  • asp实验室新闻系统

    2008-11-14 01:36:49
    新闻系统V2.0修正了V1.0发布以来读者反映的Bug,并会在下一章中看到与新闻采集系统集成,实现自动采集新闻的功能。 亮点 Ø 新闻以HTML文件存储 Ø 利用新闻模板自动创建新闻文件 Ø 相关新闻 Ø 新闻评论 ...
  • 1. 该新闻系统由asp.net&c#实现,安装的虚拟目录下,提供了实现的全部源代码,大家可自由修改,有好的建议和修改,大家可以发电子邮件或qq和我联系;有需要增加功能,但不熟悉c#的使用者也可以和我联系,我尽可能...
  • 本文将详细介绍文本分类问题并用Python实现这个过程。 引言 文本分类是商业问题中常见的自然语言处理任务,目标是自动将文本文件分到一个或多个已定义好的类别中。文本分类的一些例子如下: 分析社交媒体中的大众...
  • 专业斑实现系统管理员,新闻发布人员,新闻审核人员等多级分类,比较适合专业新闻站点的新闻采编。 强大的在线编辑功能,实现所编即所得的效果,只要您会使用word等文字编辑工具,就可以签发出界面优秀的新闻。...
  • 本文将详细介绍文本分类问题并用Python实现这个过程...文本分类的一些例子如下:分析社交媒体中的大众情感鉴别垃圾邮件和非垃圾邮件自动标注客户问询将新闻文章按主题分类目录本文将详细介绍文本分类问题并用Python...
  • 深度学习:垃圾自动分类

    万次阅读 多人点赞 2019-07-04 12:24:32
    导 言垃圾分类,指按一定规定或标准将垃圾分类储存、分类投放和分类搬运,从而转变成公共资源的一系列活动的总称。这不仅是出于生态环境角度考虑,“没有垃圾,只有放错位置的资源”...
  • 分类信息网源码,带商家黄页的分类信息网系统,会员可自助建站的分类信息网站程序,可根据浏览IP自动跳转分站的分类网站后台管理系统,供求信息网站源码,asp.net分类信息源码,生成html的分类信息站源码,此系统是基于asp...
  • 基于Jenkins自动构建系统开发

    千次阅读 2014-09-02 22:44:41
    基于Jenkins自动构建系统开发
  • 电子邮件是办公自动系统中最基本的功能, 通过该功能可实现各类信息(信件、文档、报表等)在系统内各分支机构、各部门及员工之间快速、高效的传递。 可以实现与外界NOTES及非NOTES邮件系统进行通讯。 可以支持...
  • 多任务循环采集,可实现网站24小时自动内容更新 可设置是否自动截取图片为4:3的标题图片(默认开启) 脚本调用图片新闻和友情链接可分列显示 新闻按时间排序 登陆验证码在输入三次错误后显示,节省所有会员时间 免费版...
  • NLP概述和文本自动分类算法详解

    千次阅读 2018-07-25 00:00:00
    自然语言处理一直是人工智能领域的重要话题,更是 18 年的热度话题,为了在海量文本中及时准确地获得有效信息,...本文根据达观数据联合创始人张健的直播内容《NLP 概述及文本自动分类算法详解》整理而成。 ...
  • 文本数据的机器学习自动分类方法

    万次阅读 2017-10-08 21:45:00
    ...本文为第一部分,着重介绍文本预处理以及特征抽取的方法。...随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个...“文本分类是指在给定分类体系下,根据文本内容自动
  • ForFutureNews 新闻管理系统 项目演示地址:http://www.ganquanzhong.top [注]:文档下载:Reward、SCDN、FortureShare 1. 系统功能介绍: 1.1前言 当今社会是一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,981
精华内容 11,192
关键字:

新闻自动分类系统如何实现