惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 网际大鱼

大鱼认为好的牛股排名 让所有的实体店成为网店的体验店 QQ机器人小P隆重发布,QQ号:792892125 带强名的.net程序反向工程后汇编中的问题总结 谁是股市上的最大受益者 数据挖掘之web文本自动分类 利用搜索引擎技术抢注域名 推出网站大鱼搜索 - 网际大鱼 网页生成缩略图程序在win2003下IE控件实例超过10个出现错误的问题 - 网际大鱼 oracle 9i以上最有效率的if(exists)update else insert操作 爬虫如何抓取到Asp.Net中__doPostBack获取新页面的数据 goole CodeSearch 的分页bug 关键词与关键词之间的相关度计算 域名注册,抢注工具编写 超强的ORC控件Asprise OCR补丁发布 QQ存在重大漏洞,用户可以群发小广告,传播病毒 隆重推出PowerDesinger 12.1.0.1913破解补丁 用OCR技术识别验证码---tesseract 用sniffer技术盗取电话银行密码
用开源Carrot2的后缀树算法做Web文本聚类
网际大鱼 · 2006-11-10 · via 博客园 - 网际大鱼

采用基于Java的开源搜索结果聚合引擎,Carrot2 2.0 中的后缀树算法
Carrot2 可以自动的把搜索结果归类到相应的语义类别中,这个功能是通过Carrot2一个现成的组件完成的,除此之外Carrot2 还包括了很多其他的搜索结果聚合聚类算法。

因为没有做中文分词,也没有中文的Stopword,所以我们用英文测试,实现代码

 1SnippetTokenizer snippetTokenizer = new SnippetTokenizer(); 
 2        List<DocReference> documentReferences = new ArrayList<DocReference>();       
 3        List<TokenizedDocument> documents = new ArrayList<TokenizedDocument>();        
 4        TokenizedDocument doc = null;
 5        DocReference documentReference =  null;
 6        
 7        //从搜索引擎google获取100篇数据
 8        {
 9            String url = "http://www.google.com/search?as_q=phone&num=100&hl=en&newwindow=1&btnG=Google+Search&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_nlo=&as_nhi=&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images";
10            byte[] pageHtml = HttpUtil.getPage(url);
11            if(pageHtml == null ) return ;            
12            try {
13                String strHtml = new String(pageHtml, "utf-8");
14                String[][] result = StringUtil.splitByReg(strHtml,"<td class=j>(.*?)<br>");
15                 
16                if(result != null)
17                {      for(int i=0;i<result.length;i++)
18                        
19                         for(int j=0;j<result[i].length;j++)
20                         {
21                             doc = snippetTokenizer
22                                .tokenize(new RawDocumentSnippet(i+"sen"+j,result[i][j].replaceAll("<[^<>]+>",""), "en"));
23                                documentReference = new DocReference(doc);
24                                documentReferences.add(documentReference);
25                                documents.add(doc);                           
26                         }

27                        }

28                }

29            }
 catch (UnsupportedEncodingException e) 
30                e.printStackTrace();
31            }

32        }

33
34        
35        //构建后缀树
36        final STCEngine stcEngine = new STCEngine(documentReferences);
37        stcEngine.createSuffixTree();
38        HashMap<String,String> defaults = new HashMap<String,String>(); 
39        defaults.put("lsi.threshold.clusterAssignment""0.150");
40        defaults.put("lsi.threshold.candidateCluster""0.775"); 
41        final StcParameters params = StcParameters.fromMap(defaults);
42        stcEngine.createBaseClusters(params);
43        stcEngine.createMergedClusters(params);
44
45        final List clusters = stcEngine.getClusters();
46        int max = params.getMaxClusters();
47
48        // Convert STC's clusters to the format required by local interfaces.
49        final List rawClusters = new ArrayList();
50        for (Iterator i = clusters.iterator(); i.hasNext() && (max > 0); max--)
51        {
52            final MergedCluster b = (MergedCluster) i.next();
53            final RawClusterBase rawCluster = new RawClusterBase();
54
55            int maxPhr = 3// TODO: This should be a configuration parameter moved to STCEngine perhaps.
56            final List phrases = b.getDescriptionPhrases();
57            for (Iterator j = phrases.iterator(); j.hasNext() && (maxPhr > 0); maxPhr--)
58            {
59                Phrase p = (Phrase) j.next();
60                rawCluster.addLabel(p.userFriendlyTerms().trim());
61            }

62
63            for (Iterator j = b.getDocuments().iterator(); j.hasNext();)
64            {
65                final int docIndex = ((Integer) j.next()).intValue();
66                final TokenizedDocument tokenizedDoc = (TokenizedDocument) documents.get(docIndex);
67                final RawDocument rawDoc = (RawDocument) tokenizedDoc.getProperty(TokenizedDocument.PROPERTY_RAW_DOCUMENT);
68                rawCluster.addDocument(rawDoc);
69            }

70
71            rawClusters.add(rawCluster);
72        }

73        
74        //得到结果,输出
75        for (Iterator iter = rawClusters.iterator(); iter.hasNext();)
76        {
77            RawCluster cluster = (RawCluster) iter.next();
78            final List phrases = cluster.getClusterDescription();
79            for(int i=0;i<phrases.size();i++)
80                System.out.print("#"+phrases.get(i)); 
81            System.out.println();
82            
83        }

下面是输出聚类phone的结果,还不错
#phone
#Phone Number
#yellow pages
#mobile phone
#cell phone
#Phone Book
#area code
#Business
#services
#Wireless
#people
#directory
#telephone
#address
#online