前言:

之前,笔者做过一些关于网络爬虫的东西。而且爬取的效果还可以。不过还有一些爬虫的博客没有完成,在后期会将其更新完成。而之前的爬虫只是对网页中的URL进行提取,我想做的效果是能对这些网页进行分类。而分类的前提是我们能够依据一些可信文本,对这些文本进行分词,再通过这些分出来的词再进行分类(如:贝叶斯分类器)。

而本文就是对网页分类的前导学习——中文分词学习。

关于文章:

本文链接:http://blog.csdn.net/lemon_tree12138/article/details/48463215 - 编程小笙

转载请注明出处

获取网站标题和描述文本:

写过Java网络的人都应该知道这里要如何获得网站的标题和描述情况。

我们可以打开一个网页,然后在网页上右键查看源码。在源码的上方会有类似这样的一些信息,如下图:

1.标题

2.网页描述

通过上面的截图我们可以知道这里两个信息的Tag和attr。具体的Java实现如下:

public class GetTitleDesc {private void parser() throws IOException {Document doc = Jsoup.connect("http://mail.163.com/").header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0").get();System.out.println(doc.title());Elements metaElements = doc.getElementsByAttributeValue("name", "description");for (Element element : metaElements) {System.out.println(element.attr("content"));}}public static void main(String[] args) {GetTitleDesc get = new GetTitleDesc();try {get.parser();} catch (IOException e) {e.printStackTrace();}}
}

对标题和描述进行分词:

1.Lucene分词:

1.说明:

对于英文的分词是一个比较方便的操作,因为英文是以空格为分隔符。而在中文中,我们不能单纯地以某一个字来分隔一段字符。这样我们可能会得到一些莫名其妙的结果。

关于分词的代码,主要参考:http://blog.sina.com.cn/s/blog_b8f01fb90101gxyb.html

不过还好,我们有lucene这个包。对于中文分词,我们具体需要导入以下工具包:

2.代码实现:

这里我们就以之前在163邮箱上的描述来作为输入文本:

网易163免费邮箱--中文邮箱第一品牌。容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务。支持各种客户端软件收发,垃圾邮件拦截率超过98%。

public class TestJeAnalyzer {private static final String LABEL = "网易163免费邮箱--中文邮箱第一品牌。容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务。支持各种客户端软件收发,垃圾邮件拦截率超过98%。";public static void testStandard(String testString) throws Exception {Analyzer analyzer = new StandardAnalyzer();Reader r = new StringReader(testString);StopFilter sf = (StopFilter) analyzer.tokenStream("", r);Token t;while ((t = sf.next()) != null) {System.out.println(t.termText());}}public static void testCJK(String testString) throws Exception {Analyzer analyzer = new CJKAnalyzer();Reader r = new StringReader(testString);StopFilter sf = (StopFilter) analyzer.tokenStream("", r);Token t;while ((t = sf.next()) != null) {System.out.println(t.termText());}}public static void testChiniese(String testString) throws Exception {Analyzer analyzer = new ChineseAnalyzer();Reader r = new StringReader(testString);TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r);Token t;while ((t = tf.next()) != null) {System.out.println(t.termText());}}public static void testJe(String testString) throws Exception {Analyzer analyzer = new IK_CAnalyzer();Reader r = new StringReader(testString);TokenStream ts = (TokenStream) analyzer.tokenStream("", r);Token t;while ((t = ts.next()) != null) {System.out.println(t.termText());}}public static void main(String[] args) throws Exception {String testString = LABEL;System.out.println("原始文本:" + testString);Utils.sleep(10);System.err.println("=====standard analyzer====");System.err.println("分析方法:默认没有词只有字");testStandard(testString);Utils.sleep(10);System.err.println("=====cjk analyzer====");System.err.println("分析方法:交叉双字分割");testCJK(testString);Utils.sleep(10);System.err.println("=====chinese analyzer====");System.err.println("分析方法:基本等同StandardAnalyzer");testChiniese(testString);Utils.sleep(10);System.err.println("=====je analyzer====");System.err.println("分析方法:字典分词,正反双向搜索,具体不明");testJe(testString);}
}

3.分词结果(部分):

2.MMAnalyzer分词:

1.代码部分:

public class Segment1 {public static void main(String[] args) {String LABEL = "网易163免费邮箱--中文邮箱第一品牌。容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务。支持各种客户端软件收发,垃圾邮件拦截率超过98%。";MMAnalyzer analyzer = new MMAnalyzer();try {System.out.println(analyzer.segment(LABEL, " | "));} catch (IOException e) {e.printStackTrace();}}
}

2.效果展示:

网易 | 163 | 免费邮箱 | 中文 | 邮箱 | 第一 | 品牌 | 容量 | 自动 | 翻倍 | 支持 | 50兆 | 附件 | 免费 | 开通 | 手机 | 号码 | 邮箱 | 赠送 | 3g | 超大 | 附件 | 服务 | 支持 | 各种 | 客户端 | 软件 | 收发 | 垃圾邮件 | 拦截 | 率 | 超过 | 98% | 

根据上面两种分词方面,可能你已经感觉到第二会更准确一些。

相关源码下载:

http://download.csdn.net/detail/u013761665/9107117

网站分类前导:获取网站标题和描述及对相关信息进行分词处理相关推荐

  1. 百度地图根据经纬度获取国家、州市等地址相关信息

    这是一个简单的经纬度转换成具体地址信息,支持国际和国内经纬度转换. 效果如下图所示: function xmlToArray2($xml) { // 将XML转为array $array_data = ...

  2. HTML获取当前时间年月日时分秒等相关信息

    HTML获取当前时间年月日时分秒等相关信息 [方式一]获取整段时间 <!DOCTYPE html> <html lang="en"> <head> ...

  3. 怎么用百度搜索php网站,PHP简单获取网站百度搜索和搜狗搜索收录量的方法

    本文实例讲述了PHP简单获取网站百度搜索和搜狗搜索收录量的方法.分享给大家供大家参考,具体如下: 获取网站百度搜索和搜狗搜索的收录量代码,可以用于获取网站域名在搜索引擎的收录数量,一直想找这个API但 ...

  4. 浅析java代码是如何获取kerberos principal 的realm和kdc相关信息的

    我们知道,使用 kerberos 时 java 代码中最关键的配置项是指定默认的realm和默认的kdc,一般我们可以通过在代码中配置环境变量 java.security.krb5.realm 和 j ...

  5. java获取时间的网站_如何获取网站服务器的时间

    原理是提取网站http应答报文中的时间信息. (但是请不要用此方法来获取www.bjtime.cn的时间,原因见后) 1. 以下是javascript获取服务器时间的测试代码: var xhr = n ...

  6. python获取网站图片_python获取网站图片

    # zhouxianglh 2013.05.03 python3.3 import urllib.request from html.parser import HTMLParser import r ...

  7. 淘宝商品详情api 淘宝商品详情接口 批量获取商品标题 商品详情图 商品SKU信息 商品采集接口 商品销量库存

    随着现代科技的发展,网络购物俨然已成为人们日常生活购物的重要方式之一.网络购物相对于实体购物而言,如何详细的介绍好商品情况,让客户能对商品有直观明了的了解,消除人们对商品的怀疑,这才是最重要的. 商品 ...

  8. 第14.4节 使用IE浏览器获取网站访问的http信息

    上节<第14.3节 使用google浏览器获取网站访问的http信息>中介绍了使用Google浏览器怎么获取网站访问的http相关报文信息,本节介绍IE浏览器中怎么获取相关信息.以上节为基 ...

  9. 获取网站后台权限理解

    文章目录 一.后台常见位置查找 1.1 猜解常用路径 1.2 robots.txt 1.3 访问报错页面 1.4 查看图片相关属性 1.5 CMS指纹识别 1.6 利用谷歌黑语法来查找 二.利用工具查 ...

最新文章

  1. 【正一专栏】钱都从哪里来的?
  2. 网站的几个性能指标和优化(简易)
  3. Android 全局悬浮按钮,悬浮按钮点击事件
  4. python对象属性赋值_关于python对象 中dict属性赋值的疑问
  5. Xshell代理访问外网或者公司的内网
  6. 精通Android自定义View(十八)自定义圆形菊花加载转圈效果
  7. maven release插件将一版本发布到仓库中时Return code is: 401, ReasonPhrase:Unauthorized
  8. linux 进程内存分布,linux C++ 的内存分布情况
  9. elasticsearch docker无法挂载_ElasticSearch数据备份与恢复
  10. SAP License:值字段更改注意事项
  11. wxpython学习笔记
  12. WPF Prism框架介绍
  13. JMeter—录制脚本
  14. PID控制------伯德图原理
  15. MSSQL 2005 如何批量修改表的架构SQL Server - 海狼工作室 - 杨远 - 和讯博客
  16. fatal: unable to auto-detect email address (got ‘tim@newton.(none)‘)
  17. ESXi系统U盘做存储
  18. Box-Muller 变换
  19. 新名词|什么是「电源」程序员?
  20. 启动python项目找不到路径_Python os.startfile找不到FI

热门文章

  1. 现代密码学4.1--消息完整性
  2. 51. N 皇后(回溯算法)
  3. 数据结构与算法——树的广度优先遍历
  4. ICS大作业——程序人生 Hello‘s P2P
  5. Dockerfile的介绍
  6. X86汇编——字符串逆序输出
  7. 2020-11-23(彻底理解KMP)
  8. 4、CSS 外边距margin
  9. 19、HTML文件上传域
  10. 验证字符串是否以指定字符开头