Apache Tika文件解析练习
目录
1.实验内容
2.实验环境
3.实验过程
1)启用Apache Tika
2)使用Tika解析docx文件
3)使用Tika解析网页
4)使用Tika解析XML和RDF文件
5)使用Tika解析FOAF(RDF)文件
4.总结
实验内容:
了解使用文件解析工具Tika进行文件解析,生成文件的代替文件——文件元数据。Tika能够解析多种文件格式,并能自动识别语言。
实验环境:
操作系统:Windows 8.1
Java环境:
Java环境.png
实验工具:
Apache Tika下载地址:http://tika.apache.org/download.html
实验过程:
(1)使用命令行打开Tika GUI界面
Tika-GUI.png(2)创建doc文件,并使用Tika解析
示例文件.png(3)解析结果解读
1.Matadata:解析结果生成的元数据主要为管理性元数据,内容主要为文件的外部特征,如:创建日期、修改日期、应用名、文件格式、文件名等,以及文件的字数、行数、页数等量化指标。
Application-Name: Microsoft Office Word
Application-Version: 14.0000
Author: lenovo
Character Count: 123
Character-Count-With-Spaces: 143
Content-Length: 13282
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Creation-Date: 2018-05-28T13:47:00Z
Last-Author: lenovo
Last-Modified: 2018-05-28T13:51:00Z
Last-Save-Date: 2018-05-28T13:51:00Z
Line-Count: 1
Page-Count: 1
Paragraph-Count: 1
Revision-Number: 2
Template: Normal
Total-Time: 4
Word-Count: 21
X-Parsed-By: org.apache.tika.parser.DefaultParser
X-Parsed-By: org.apache.tika.parser.microsoft.ooxml.OOXMLParser
X-TIKA:digest:MD5: cbe65201aee05621b8e210667d4b02d7
X-TIKA:digest:SHA256: 48d75a6663e3ec7599bc385ba57919cc1224e3d063cfaa18b53f0e6970d0cbd1
cp:revision: 2
creator: lenovo
date: 2018-05-28T13:51:00Z
dc:creator: lenovo
dc:publisher:
dcterms:created: 2018-05-28T13:47:00Z
dcterms:modified: 2018-05-28T13:51:00Z
extended-properties:AppVersion: 14.0000
extended-properties:Application: Microsoft Office Word
extended-properties:Company:
extended-properties:Template: Normal
extended-properties:TotalTime: 4
meta:author: lenovo
meta:character-count: 123
meta:character-count-with-spaces: 143
meta:creation-date: 2018-05-28T13:47:00Z
meta:last-author: lenovo
meta:line-count: 1
meta:page-count: 1
meta:paragraph-count: 1
meta:save-date: 2018-05-28T13:51:00Z
meta:word-count: 21
modified: 2018-05-28T13:51:00Z
publisher:
resourceName: 测试文件.docx
xmpTPg:NPages: 1
2.Structure text:主要生成html标签格式的结构化文件,以上元数据信息,添加在标签<matadata>中,源文件的文字信息置于标签<boby>下的标签<p>中。
StructureText.png
3.Recursive JSON:较标签格式而言,将文件解析成了json格式,保留了源文件的文字信息,在"X-TIKA:content"字段中。
RecursiveJSON.png
4.Main content:空。
Maincontent.png
(4)使用Tika解析网页:
IBM Opensource 社区:https://www.ibm.com/developerworks/cn/opensource/tutorials/os-apache-tika/index.html
解析结果:
1.Matadata:Tika对网页的解析,生成的元数据大部分为描述性元数据,如:keywords、title、description等。
2.Main content:
通过查看网页源代码,发现Tika所提取到的Main content内容是网页注释:
<!-- CENTER_6_4_CONTENT_COLUMN_BEGIN -->
<!-- CENTER_6_4_CONTENT_COLUMN_END -->
之间的内容。Tika对网页的Main content进行了有选择的提取。
(5)使用Tika解析一般RDF文件与XML文件:
发现Tika可以提取到标签之间的文本内容。Main content依旧为空。
books.xml:
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>
person.rdf:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="[http://www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns#)"
xmlns:cd="[http://www.recshop.fake/cd#](http://www.recshop.fake/cd#)">
<rdf:Description
rdf:about="[http://www.recshop.fake/cd/Empire](http://www.recshop.fake/cd/Empire) Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
<rdf:Description
rdf:about="[http://www.recshop.fake/cd/Hide](http://www.recshop.fake/cd/Hide) your heart">
<cd:artist>Bonnie Tyler</cd:artist>
<cd:country>UK</cd:country>
<cd:company>CBS Records</cd:company>
<cd:price>9.90</cd:price>
<cd:year>1988</cd:year>
</rdf:Description>
</rdf:RDF>
(6)使用Tika解析foaf文件,文件格式为.rdf:
报错:
Image [11].png分析原因可能是因为Tika无法正常识别foaf标签,因此无法提取到FOAF文件中的文本内容。
总结:
由以上解析结果可知,Tika可以比较方便的提取到文件中的文本。“ Tika 的解析器都必须能够实现从某个它能解析的文件类型提取文本的基本功能。文本内容很有用,因为它可以被发送至搜索引擎,在内容管理系统内被索引以及用来显示针对特定内容块的总结性信息。”——引自IBMOpen source社区
Tika解析网页,能够以元数据形式呈现网页内容,在某种程度上解析效率相比一般文件而言更高。
Tika的主要功能是Text extraction,在XML、RDF此类结构化文档的解析上,没有显著优势。解析结构化文档有其他专门的解析引擎。
可以在Java项目中导入Tika,通过编程实现文件解析的批处理。由于本机eclipse版本号与Java JDK版本号不匹配,本次实验未能成功实现上述功能。