论文部分内容阅读
摘要:介绍了Web数据挖掘的含义,重点讨论了Web数据挖掘的类型以各种类型的Web数据挖掘的基本过程以及它们所使用的一些相关技术,最后指出网络信息挖掘的应用前景。
关键词:Web数据挖掘;XML;JAVA
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)09-11573-03
The Application of Data Mining Based on Web Using XML
RUAN Zhong, YANG Yun-feng
(Department of Computer and Information Science,Hechi University, Yizhou 546300, China)
Abstract: Introduce data mining based on WEB, mainly discuss the category of Web data mining and all kinds of WEB data mining basic procedure and some technique use on it. Finally point out the prospect of WEB data mining.
Key words: Web data mining; XML; JAVA
1 引言
随着网络信息资源的飞速增长, 万维网已经成为一个巨大的, 全球分布的信息服务中心, 它涉及新闻、广告、消费信息、金融管理、教育、政府、电子商务和许多其他信息服务,Web还包含了丰富和动态的超链接信息, 这些都为数据挖掘提供了丰富的资源。数据挖掘就是从大量的数据中发现隐含的规律性的内容, 解决数据的应用质量问题。充分利用有用的数据, 废弃虚伪无用的数据, 是数据挖掘技术的最重要的应用。相对于Web的数据而言,传统的数据库中的数据结构性很强, 即其中的数据为完全结构化的数据, 而Web上的数据最大特点就是半结构化。所谓半结构化是相对于完全结构化的传统数据库的数据而言。显然, 面向Web的数据挖掘比面向单个数据仓库的数据挖掘要复杂得多。
2 网络挖掘的过程及其分类
对于检索信息过程有很多方法可以使用。一般情形下,我们以互联网上的电子文档、HTML文档和数据库为信息源。信息的选择和预处理是一个转换的过程,它们可以被认为是从信息资源中检索有用的数据。网络挖掘是从网络数据中发现潜在的有种自动地从现在数据中抽取半结构化模型的技术。面向Web的数据挖掘必须以半结构化模型和半结构化数据模型抽取技术为前提。用信息的过程,是数据库知识发现(KDD)的延伸。
事实上,数据挖掘、机器学习和高级数据分析之间有着紧密的联系。网络信息的检索是信息发现过程中的快速网络内容挖掘。实际上,信息检索是自动检索所有相关的信息,同时尽可能少的检索无关的信息 。近些年来,信息检索的研究涉及到模型、文件分类、使用者界面、数据可视化、数据过滤等领域。信息提取过程侧重的是有关文件的价值和结构,并且将从信息资源中得到的文件内容转换为信息。然而,如果信息检索的重点是信息提取,或在一个全面的文件信息检索系统可以提供一些信息提取时,则信息检索和信息提取的区别就变得混淆起来。另外,还有其他系统使用数据挖掘技术或机器学习技术去自动或半自动地获取网络文件的规则和模式。经典的信息提取经常依赖于语言上的预处理,比如语法分析、语义分析、语篇分析等。
由此可以把网络挖掘分为两类:网络内容挖掘和网络使用挖掘(见表1)。网络内容挖掘是指从“网络内容”即数据或文件中发现有用的信息。互联网上拥有不同类型的数据资源,如FTP和新闻组网络系统(Usenet),其中大多数的这类数据都可以从网络上得到。
3 使用XML实现基于Web的数据挖掘方法
数据挖掘技术的关键是把现有的Web页面转换成XML或转换成XHTML,并使用众多工具中的一小部分来处理XML结构的数据,以检索出适当的数据。Tidy(可以从一些编程语言中获取的库)是一个免费使用的产品,可用于改正HTML文档中的常见错误并生成格式编排良好的等价文档。还可以使用Tidy来生成XHTM(XML的子集)格式的文档。Web页面只有在创建了一个可合并到现有数据集的数据集后才会被检索和处理。
3.1 数据抽取方法
以下列出这些步骤是为了提供该过程的简要说明:(1)标识数据源并把它映射成XHTML;(2)查找数据内的引用点;(3)将数据映射成XML;(4)合并结果并处理数据。
3.2 获取源信息
在大多数情况下,为了抽取数据,需要知道在哪里找到它。源信息是显而易见的:如果要从health收集关于健康文章的标题和URL,使用http://www.cctv.com/health作为目标。在考虑信息源时,要注意三个方面的因素,首先信息源是否在可靠的网络连接上生成可靠的数据,其次信息源从现在起将存在多久,最后信息源的布局结构的稳定性。我们在寻求能够在动态环境下工作的健壮的解决方案过程中,在抽取可用的最可靠和最稳定的信息源时,工作将是最简单的。一旦确定了信息源,在抽取过程中的第一步就是将数据从HTML转换成XML。通过构造名为XMLHelper的Java类来完成这一任务以及其它与XML相关任务。通过使用Tidy库提供的函数在XMLHelper.tidyHTML()方法中执行转换。这个方法接受URL作为一个参数并返回一个“XML文档”作为结果。其中XMLHelper.tidyHTML()方法的关键代码如下:
public static Document tidyHTML (URL url) {
URLConnection inConnection = url.openConnection();
if( inConnection.getContentType().startsWith("text/xml")||
inConnection.getContentType().startsWith("text/xhtml")){
// 准备好XML源
return parseXMLFromURL(url);
} else if(inConnection.getContentType().startsWith("text/html"))
{ // HTML源
InputStream is = inConnection.getInputStream();
// 清除输入流
Org.w3c.tidy.TagTabletags
= org.w3c.tidy.TagTable.getDefaultTagTable();
Tags.defineBlockTag("script");
Tidy tidy = new Tidy();
// 设置tidy对象等属性
tidy.setCharEncoding(org.w3c.tidy.Configuration.ASCII);
org.w3c.tidy.Node tNode = tidy.parse(in,baos);
String result ="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
baos.toString();
return parseXMLFromString(result);
}
}
通过执行下列代码可以验证上述功能:
/*** 抽取HTML页面,转换成XML,并且写入文件***/
public static void main (String args[]) {
DOCUMENT DOC = XMLHelper.tidyHTML("http://www.cctv.Com/health/man.html");
XMLHelper.outputXMLToFile ( doc,"XML" File.separator "man.xml");
}
然后在Microsoft的Internet Explorer XML 查看器使用man页面中的XML。
3.3 查找数据的引用点
无论是在Web页面还是源XHTML视图中的绝大多数的信息都与我们完全无关。接下来的是在XML树中找出一个特定区域,从中抽取我们的数据而无须关心外来信息。对于更复杂的抽取,我们可能需要在单个页面上找出这些区域的若干实例。完成这一任务的最简单的办法是先检查Web页面,然后使用XML。只需要看一下页面,就可以知道我们正在查找的信息位于页面的中上部区域中。即使对HTML的熟悉程度非常有限,也易推断出正在查找的数据可能都包含在同一个<table>元素下,并且这个表可能总是包含像“心理健康”和“压抑症”这样的词,同时需要考虑页面所生成的XHTML,把该表作为引用点或锚。我们需要找到这个锚的方法,使用XSL来转换所得XML,通过使用XPath表达式来完成这个任务。用以下这个普通的表达式:/html/body/center/table[6]/tr[2]/td[2]/table[2]/tr/td/table[6]。更好的办法是利用XSL将XML树转换成字符串的方法:
//table[ starts-with(normalize-space(.),’Appar Temp’)]
3.4 将数据映射成XML
拥有这个锚,我们可以创建实际抽取数据的代码,这个代码将以XSL文件的形式出现。XSL 文件的目的是标识锚,指定如何从锚获取我们正在查找的数据(以简短跳跃的方式),并且用我们所需的格式构造一个XML输出文件。
XSL关键代码如下:
<xsl:template match ="/html">
<RESULT>
<HEALTH>
<xsl:apply-templates/>
</HEALTH>
</RESULT>
</xsl:template>
<xsl:template match="table[starts-with(normalize-space(.),’心理健康’)]">
<HEALTH>
<xsl:value-of select="tr/td[2]/font"/>
</HEALTH>
只编写XSL,并不能完成这个功能,还需要一个执行转换的工具。现在利用XMLHelper类方法对XSL 进行语法分析并执行这个转换。执行这些任务的方法分别名为parseXMLFromURL()和trans-formXML()。我们可以通过下列代码来测试:
public static void main(String args[]){
Document xhtml = XMLHelper.parseXMLFromURLString("file://health.xml");
Document xsl = XMLHelper.parseXMLFromURLString("file://XSL/health.xsl");
Document xml = XMLHelper.transformXML(xhtml,xsl);
XMLHelper.outputXMLToFile("XML" File.separator "result.xml");
……
}
3.5 合并与处理结果
如果我们只执行一次数据抽取,现在已经完成了。但是,我们并不只是想知道某一时刻的健康资料,而是要知道若干不同时刻的健康资料。因此,我们需要做的是反复执行抽取过程,把结果合并到单个XML数据文件中。
4 结束语
面向Web的数据挖掘是一项复杂的技术,由于Web数据挖掘比单个数据仓库的挖掘要复杂的多,因而面向Web的数据挖掘成了一个难以解决的问题。而XML的出现为解决Web数据挖掘的难题带来了机会。相信今后,随着XML作为在Web上交换数据的一种标准方式的出现,面向Web的数据挖掘将会变得非常轻松。今后几年Web 挖掘研究的主要方向有:
(1)在数据预处理方面,多种Web数据的收集、结构转换等处理技术的研究;
(2)Web挖掘方法和模式识别技术在构造自适应站点以及智能站点服务的个性化和性能优化方面的研究;
(3)Web知识库的动态维护、更新,各种知识和模式的评价综合方法的研究;
(4)基于Web挖掘和信息检索的,高效的、具有自动导航功能的智能搜索引擎相关技术的研究。
总之,网络挖掘作为一种新兴的信息分析技术并没有一个完善的预设结构,还需要进行不断的科学探索根据目前的研究状况预测。
参考文献:
[1] Han J,Kamber M. 范明,孟小峰 译. 数据挖掘:概念与技术[M]. 北京:机械工业出版社,2001.
[2] 王实,高文, 李锦涛. Web 数据挖掘[J]. 计算机科学,2000,27(4).
[3] 邓英, 李明. Web 数据挖掘技术及工具研究[J]. 计算机与应用,2001,(20).
[4] Kleinberg J M. Authoritative sources in a hyperlinked environment[J]. Journal of ACM,1999,46(5):604-632.
[5] Lawrence S,Giles C L. Accessibility and distribution of information on the Web[J]. Nature,1999,(400):107-109.
[6] WOHLWEND H, ROSENBAUM S. Software Improvements in an International Company[C]. //Proceedings of the 15th International Conference of Software Engineering, Washington DC, 1993,5:32235.
[7] PAULKM C, CURTIS B, CHR ISSISM B, et al. Capability Maturity Model for Software [J]. Software Engineering Institute, 1991(8):1252128.
[8] SAM I ZAHRAN. Software Process Improvement[M]. Pearson Education Inc, 2002:1122134.
关键词:Web数据挖掘;XML;JAVA
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)09-11573-03
The Application of Data Mining Based on Web Using XML
RUAN Zhong, YANG Yun-feng
(Department of Computer and Information Science,Hechi University, Yizhou 546300, China)
Abstract: Introduce data mining based on WEB, mainly discuss the category of Web data mining and all kinds of WEB data mining basic procedure and some technique use on it. Finally point out the prospect of WEB data mining.
Key words: Web data mining; XML; JAVA
1 引言
随着网络信息资源的飞速增长, 万维网已经成为一个巨大的, 全球分布的信息服务中心, 它涉及新闻、广告、消费信息、金融管理、教育、政府、电子商务和许多其他信息服务,Web还包含了丰富和动态的超链接信息, 这些都为数据挖掘提供了丰富的资源。数据挖掘就是从大量的数据中发现隐含的规律性的内容, 解决数据的应用质量问题。充分利用有用的数据, 废弃虚伪无用的数据, 是数据挖掘技术的最重要的应用。相对于Web的数据而言,传统的数据库中的数据结构性很强, 即其中的数据为完全结构化的数据, 而Web上的数据最大特点就是半结构化。所谓半结构化是相对于完全结构化的传统数据库的数据而言。显然, 面向Web的数据挖掘比面向单个数据仓库的数据挖掘要复杂得多。
2 网络挖掘的过程及其分类
对于检索信息过程有很多方法可以使用。一般情形下,我们以互联网上的电子文档、HTML文档和数据库为信息源。信息的选择和预处理是一个转换的过程,它们可以被认为是从信息资源中检索有用的数据。网络挖掘是从网络数据中发现潜在的有种自动地从现在数据中抽取半结构化模型的技术。面向Web的数据挖掘必须以半结构化模型和半结构化数据模型抽取技术为前提。用信息的过程,是数据库知识发现(KDD)的延伸。
事实上,数据挖掘、机器学习和高级数据分析之间有着紧密的联系。网络信息的检索是信息发现过程中的快速网络内容挖掘。实际上,信息检索是自动检索所有相关的信息,同时尽可能少的检索无关的信息 。近些年来,信息检索的研究涉及到模型、文件分类、使用者界面、数据可视化、数据过滤等领域。信息提取过程侧重的是有关文件的价值和结构,并且将从信息资源中得到的文件内容转换为信息。然而,如果信息检索的重点是信息提取,或在一个全面的文件信息检索系统可以提供一些信息提取时,则信息检索和信息提取的区别就变得混淆起来。另外,还有其他系统使用数据挖掘技术或机器学习技术去自动或半自动地获取网络文件的规则和模式。经典的信息提取经常依赖于语言上的预处理,比如语法分析、语义分析、语篇分析等。
由此可以把网络挖掘分为两类:网络内容挖掘和网络使用挖掘(见表1)。网络内容挖掘是指从“网络内容”即数据或文件中发现有用的信息。互联网上拥有不同类型的数据资源,如FTP和新闻组网络系统(Usenet),其中大多数的这类数据都可以从网络上得到。

3 使用XML实现基于Web的数据挖掘方法
数据挖掘技术的关键是把现有的Web页面转换成XML或转换成XHTML,并使用众多工具中的一小部分来处理XML结构的数据,以检索出适当的数据。Tidy(可以从一些编程语言中获取的库)是一个免费使用的产品,可用于改正HTML文档中的常见错误并生成格式编排良好的等价文档。还可以使用Tidy来生成XHTM(XML的子集)格式的文档。Web页面只有在创建了一个可合并到现有数据集的数据集后才会被检索和处理。
3.1 数据抽取方法
以下列出这些步骤是为了提供该过程的简要说明:(1)标识数据源并把它映射成XHTML;(2)查找数据内的引用点;(3)将数据映射成XML;(4)合并结果并处理数据。
3.2 获取源信息
在大多数情况下,为了抽取数据,需要知道在哪里找到它。源信息是显而易见的:如果要从health收集关于健康文章的标题和URL,使用http://www.cctv.com/health作为目标。在考虑信息源时,要注意三个方面的因素,首先信息源是否在可靠的网络连接上生成可靠的数据,其次信息源从现在起将存在多久,最后信息源的布局结构的稳定性。我们在寻求能够在动态环境下工作的健壮的解决方案过程中,在抽取可用的最可靠和最稳定的信息源时,工作将是最简单的。一旦确定了信息源,在抽取过程中的第一步就是将数据从HTML转换成XML。通过构造名为XMLHelper的Java类来完成这一任务以及其它与XML相关任务。通过使用Tidy库提供的函数在XMLHelper.tidyHTML()方法中执行转换。这个方法接受URL作为一个参数并返回一个“XML文档”作为结果。其中XMLHelper.tidyHTML()方法的关键代码如下:
public static Document tidyHTML (URL url) {
URLConnection inConnection = url.openConnection();
if( inConnection.getContentType().startsWith("text/xml")||
inConnection.getContentType().startsWith("text/xhtml")){
// 准备好XML源
return parseXMLFromURL(url);
} else if(inConnection.getContentType().startsWith("text/html"))
{ // HTML源
InputStream is = inConnection.getInputStream();
// 清除输入流
Org.w3c.tidy.TagTabletags
= org.w3c.tidy.TagTable.getDefaultTagTable();
Tags.defineBlockTag("script");
Tidy tidy = new Tidy();
// 设置tidy对象等属性
tidy.setCharEncoding(org.w3c.tidy.Configuration.ASCII);
org.w3c.tidy.Node tNode = tidy.parse(in,baos);
String result ="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
baos.toString();
return parseXMLFromString(result);
}
}
通过执行下列代码可以验证上述功能:
/*** 抽取HTML页面,转换成XML,并且写入文件***/
public static void main (String args[]) {
DOCUMENT DOC = XMLHelper.tidyHTML("http://www.cctv.Com/health/man.html");
XMLHelper.outputXMLToFile ( doc,"XML" File.separator "man.xml");
}
然后在Microsoft的Internet Explorer XML 查看器使用man页面中的XML。
3.3 查找数据的引用点
无论是在Web页面还是源XHTML视图中的绝大多数的信息都与我们完全无关。接下来的是在XML树中找出一个特定区域,从中抽取我们的数据而无须关心外来信息。对于更复杂的抽取,我们可能需要在单个页面上找出这些区域的若干实例。完成这一任务的最简单的办法是先检查Web页面,然后使用XML。只需要看一下页面,就可以知道我们正在查找的信息位于页面的中上部区域中。即使对HTML的熟悉程度非常有限,也易推断出正在查找的数据可能都包含在同一个<table>元素下,并且这个表可能总是包含像“心理健康”和“压抑症”这样的词,同时需要考虑页面所生成的XHTML,把该表作为引用点或锚。我们需要找到这个锚的方法,使用XSL来转换所得XML,通过使用XPath表达式来完成这个任务。用以下这个普通的表达式:/html/body/center/table[6]/tr[2]/td[2]/table[2]/tr/td/table[6]。更好的办法是利用XSL将XML树转换成字符串的方法:
//table[ starts-with(normalize-space(.),’Appar Temp’)]
3.4 将数据映射成XML
拥有这个锚,我们可以创建实际抽取数据的代码,这个代码将以XSL文件的形式出现。XSL 文件的目的是标识锚,指定如何从锚获取我们正在查找的数据(以简短跳跃的方式),并且用我们所需的格式构造一个XML输出文件。
XSL关键代码如下:
<xsl:template match ="/html">
<RESULT>
<HEALTH>
<xsl:apply-templates/>
</HEALTH>
</RESULT>
</xsl:template>
<xsl:template match="table[starts-with(normalize-space(.),’心理健康’)]">
<HEALTH>
<xsl:value-of select="tr/td[2]/font"/>
</HEALTH>
只编写XSL,并不能完成这个功能,还需要一个执行转换的工具。现在利用XMLHelper类方法对XSL 进行语法分析并执行这个转换。执行这些任务的方法分别名为parseXMLFromURL()和trans-formXML()。我们可以通过下列代码来测试:
public static void main(String args[]){
Document xhtml = XMLHelper.parseXMLFromURLString("file://health.xml");
Document xsl = XMLHelper.parseXMLFromURLString("file://XSL/health.xsl");
Document xml = XMLHelper.transformXML(xhtml,xsl);
XMLHelper.outputXMLToFile("XML" File.separator "result.xml");
……
}
3.5 合并与处理结果
如果我们只执行一次数据抽取,现在已经完成了。但是,我们并不只是想知道某一时刻的健康资料,而是要知道若干不同时刻的健康资料。因此,我们需要做的是反复执行抽取过程,把结果合并到单个XML数据文件中。
4 结束语
面向Web的数据挖掘是一项复杂的技术,由于Web数据挖掘比单个数据仓库的挖掘要复杂的多,因而面向Web的数据挖掘成了一个难以解决的问题。而XML的出现为解决Web数据挖掘的难题带来了机会。相信今后,随着XML作为在Web上交换数据的一种标准方式的出现,面向Web的数据挖掘将会变得非常轻松。今后几年Web 挖掘研究的主要方向有:
(1)在数据预处理方面,多种Web数据的收集、结构转换等处理技术的研究;
(2)Web挖掘方法和模式识别技术在构造自适应站点以及智能站点服务的个性化和性能优化方面的研究;
(3)Web知识库的动态维护、更新,各种知识和模式的评价综合方法的研究;
(4)基于Web挖掘和信息检索的,高效的、具有自动导航功能的智能搜索引擎相关技术的研究。
总之,网络挖掘作为一种新兴的信息分析技术并没有一个完善的预设结构,还需要进行不断的科学探索根据目前的研究状况预测。
参考文献:
[1] Han J,Kamber M. 范明,孟小峰 译. 数据挖掘:概念与技术[M]. 北京:机械工业出版社,2001.
[2] 王实,高文, 李锦涛. Web 数据挖掘[J]. 计算机科学,2000,27(4).
[3] 邓英, 李明. Web 数据挖掘技术及工具研究[J]. 计算机与应用,2001,(20).
[4] Kleinberg J M. Authoritative sources in a hyperlinked environment[J]. Journal of ACM,1999,46(5):604-632.
[5] Lawrence S,Giles C L. Accessibility and distribution of information on the Web[J]. Nature,1999,(400):107-109.
[6] WOHLWEND H, ROSENBAUM S. Software Improvements in an International Company[C]. //Proceedings of the 15th International Conference of Software Engineering, Washington DC, 1993,5:32235.
[7] PAULKM C, CURTIS B, CHR ISSISM B, et al. Capability Maturity Model for Software [J]. Software Engineering Institute, 1991(8):1252128.
[8] SAM I ZAHRAN. Software Process Improvement[M]. Pearson Education Inc, 2002:1122134.