网站分类前导:获取网站标题和描述及对相关信息进行分词处理
前言:
? 之前,筆者做過(guò)一些關(guān)于網(wǎng)絡(luò)爬蟲(chóng)的東西。而且爬取的效果還可以。不過(guò)還有一些爬蟲(chóng)的博客沒(méi)有完成,在后期會(huì)將其更新完成。而之前的爬蟲(chóng)只是對(duì)網(wǎng)頁(yè)中的URL進(jìn)行提取,我想做的效果是能對(duì)這些網(wǎng)頁(yè)進(jìn)行分類(lèi)。而分類(lèi)的前提是我們能夠依據(jù)一些可信文本,對(duì)這些文本進(jìn)行分詞,再通過(guò)這些分出來(lái)的詞再進(jìn)行分類(lèi)(如:貝葉斯分類(lèi)器)。
? 而本文就是對(duì)網(wǎng)頁(yè)分類(lèi)的前導(dǎo)學(xué)習(xí)——中文分詞學(xué)習(xí)。
關(guān)于文章:
? 本文鏈接:http://blog.csdn.net/lemon_tree12138/article/details/48463215?-?編程小笙
?轉(zhuǎn)載請(qǐng)注明出處
獲取網(wǎng)站標(biāo)題和描述文本:
? 寫(xiě)過(guò)Java網(wǎng)絡(luò)的人都應(yīng)該知道這里要如何獲得網(wǎng)站的標(biāo)題和描述情況。
? 我們可以打開(kāi)一個(gè)網(wǎng)頁(yè),然后在網(wǎng)頁(yè)上右鍵查看源碼。在源碼的上方會(huì)有類(lèi)似這樣的一些信息,如下圖:
??
? 1.標(biāo)題
? 2.網(wǎng)頁(yè)描述
? 通過(guò)上面的截圖我們可以知道這里兩個(gè)信息的Tag和attr。具體的Java實(shí)現(xiàn)如下:
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();}} }
對(duì)標(biāo)題和描述進(jìn)行分詞:
1.Lucene分詞:
? 1.說(shuō)明:
? 對(duì)于英文的分詞是一個(gè)比較方便的操作,因?yàn)橛⑽氖且钥崭駷榉指舴6谥形闹?#xff0c;我們不能單純地以某一個(gè)字來(lái)分隔一段字符。這樣我們可能會(huì)得到一些莫名其妙的結(jié)果。
? 關(guān)于分詞的代碼,主要參考:http://blog.sina.com.cn/s/blog_b8f01fb90101gxyb.html
? 不過(guò)還好,我們有l(wèi)ucene這個(gè)包。對(duì)于中文分詞,我們具體需要導(dǎo)入以下工具包:
??
? 2.代碼實(shí)現(xiàn):
? 這里我們就以之前在163郵箱上的描述來(lái)作為輸入文本:
??網(wǎng)易163免費(fèi)郵箱--中文郵箱第一品牌。容量自動(dòng)翻倍,支持50兆附件,免費(fèi)開(kāi)通手機(jī)號(hào)碼郵箱贈(zèng)送3G超大附件服務(wù)。支持各種客戶(hù)端軟件收發(fā),垃圾郵件攔截率超過(guò)98%。
public class TestJeAnalyzer {private static final String LABEL = "網(wǎng)易163免費(fèi)郵箱--中文郵箱第一品牌。容量自動(dòng)翻倍,支持50兆附件,免費(fèi)開(kāi)通手機(jī)號(hào)碼郵箱贈(zèng)送3G超大附件服務(wù)。支持各種客戶(hù)端軟件收發(fā),垃圾郵件攔截率超過(guò)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("分析方法:默認(rèn)沒(méi)有詞只有字");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.分詞結(jié)果(部分):
??
2.MMAnalyzer分詞:
? 1.代碼部分:
public class Segment1 {public static void main(String[] args) {String LABEL = "網(wǎng)易163免費(fèi)郵箱--中文郵箱第一品牌。容量自動(dòng)翻倍,支持50兆附件,免費(fèi)開(kāi)通手機(jī)號(hào)碼郵箱贈(zèng)送3G超大附件服務(wù)。支持各種客戶(hù)端軟件收發(fā),垃圾郵件攔截率超過(guò)98%。";MMAnalyzer analyzer = new MMAnalyzer();try {System.out.println(analyzer.segment(LABEL, " | "));} catch (IOException e) {e.printStackTrace();}} }
? 2.效果展示:
網(wǎng)易 | 163 | 免費(fèi)郵箱 | 中文 | 郵箱 | 第一 | 品牌 | 容量 | 自動(dòng) | 翻倍 | 支持 | 50兆 | 附件 | 免費(fèi) | 開(kāi)通 | 手機(jī) | 號(hào)碼 | 郵箱 | 贈(zèng)送 | 3g | 超大 | 附件 | 服務(wù) | 支持 | 各種 | 客戶(hù)端 | 軟件 | 收發(fā) | 垃圾郵件 | 攔截 | 率 | 超過(guò) | 98% |? 根據(jù)上面兩種分詞方面,可能你已經(jīng)感覺(jué)到第二會(huì)更準(zhǔn)確一些。
相關(guān)源碼下載:
http://download.csdn.net/detail/u013761665/9107117
總結(jié)
以上是生活随笔為你收集整理的网站分类前导:获取网站标题和描述及对相关信息进行分词处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网络爬虫:URL去重策略之布隆过滤器(B
- 下一篇: 算法:模式匹配之KMP算法