dbpedia.lookup:全文检索工具

github地址:https://github.com/dbpedia/lookup/tree/master

1.介绍

DBpedia是一个根据相关关键字检索DBpedia URIs的web服务器。所谓“相关” 指的是资源匹配的标签或者是频繁用于维基百科页面指定特定资源的锚文本。==结果是通过指向其他维基百科页面的链接数量排名的==。

2.web API

此项目提供了两个接口:关键字搜索和前缀搜索。托管版本的服务可以在lookup.dbpedia中找到。

2.1关键字查询

关键字查询接口可以找到与给定包含一个或者多个单词的关键字相关的DBpedia资源。实例如下:
- http://lookup.dbpedia.org/api/search/KeywordSearch?QueryClass=place&QueryString=berlin

2.2前缀查询

前缀查询接口用来实现“输入自动补全autocomplete input boxes”,对于给定的“一般的单词”,比如Berl(in),API可以自动获取相关的资源:
http://dbpedia.org/resource/Berlin

示例:返回前五个与“berl”相关的资源
- http://lookup.dbpedia.org/api/search/PrefixSearch?QueryClass=&MaxHits=5&QueryString=berl

2.3 参数解释

可以收的参数含义如下:
1. QueryString:DBpedia URI中应该 包含/模糊匹配 的字符串;
2. QueryClass:结果应该包含的、从Ontology中来的DBpedia中的类(owl#thing和无类型资源不用指定这个参数);
3. MaxHits:返回结果的数量,默认5;

2.4 返回结果支持json格式

返回结果默认为XML,请求头包含Accept: application/json则返回JSON格式.

3.运行服务的本地镜像
3.1 可控并构建Lookup
git clone git://github.com/dbpedia/lookup.git
cd lookup
mvn clean install
3.2下载并配置index

index获取页面:http://downloads.dbpedia-spotlight.org/dbpedia_lookup/

3.3 运行服务

./run Server [PATH TO THE INDEX]/[VERSION]/
例如
./run Server /opt/dbpedia-lookup/2015-04

注意:索引文件必须解压缩
现在允许的版本:见github页面
允许的语言:英语

4.重建索引

如果你想运行一个本地镜像,则你可以下载上边提到的预编译的索引。重建索引你需要:
- DBpedia 数据集;
- Wikistatsextractor output - wikistatsextractorpignlproc的替换选项;
- Unix

4.1 获取数据集:

from:http://downloads.dbpedia.org/2015-10/core-i18n/en/

  • redirects_en.nt (or .ttl)
  • short_abstracts_en.nt (or .ttl)
  • instance_types_en.nt (or .ttl)
  • article_categories_en.nt (or .ttl)

from http://downloads.dbpedia.org/2015-10/core

  • instance_types_en.ttl
  • instance_types_sdtyped_dbo_en.ttl
  • instance_types_transitive_en.ttl
4.2 连接所有数据,并且通过URI排序

这一步非常重要,应为排序后的索引非常快:

  cat instance_types_en.nt (or .ttl)  \
      short_abstracts_en.nt (or .ttl) \
      article_categories_en.nt (or .ttl) \
      instance_types_en.ttl  \
      instance_types_sdtyped_dbo_en.ttl \
      instance_types_transitive_en.ttl | sort >all_dbpedia_data.nt (or .ttl)
4.3 获取数据集redirects_en.nt (or .ttl)

重定向数据集不会被索引,他们作为lookup的目标被排除;

4.4运行索引器Indexer

Indexer必须运行两次:
1. 有DBpedia数据
./run Indexer lookup_index_dir redirects_en.nt (or .ttl) all_dbpedia_data.nt (or .ttl)
2. 有wikistatsextractor数据
./run Indexer lookup_index_dir redirects_en.nt (or .ttl) pairCounts

以下是一个可能的 scrapy 爬虫示例,用于获取 dbpedia.org 上与 XML 相关的词条: ```python import scrapy class DbpediaSpider(scrapy.Spider): name = "dbpedia" start_urls = [ 'https://dbpedia.org/page/XML' ] def parse(self, response): # 提取标题和描述 title = response.css('h1::text').get() description = response.css('div.abstract::text').get() # 打印结果 print('Title:', title) print('Description:', description) # 获取所有链接,并对每个链接执行递归爬取 for link in response.css('a::attr(href)').getall(): if 'https://dbpedia.org/page/XML' in link: yield scrapy.Request(response.urljoin(link), callback=self.parse) ``` 在上述代码中,我们首先定义了一个名为 `DbpediaSpider` 的 scrapy 爬虫,并指定了起始 URL。然后,在 `parse` 方法中,我们首先提取了当前页面的标题和描述,然后打印出来。接着,我们使用 CSS 选择器获取了所有链接,并对每个链接执行递归爬取。注意,我们只递归爬取了那些链接中包含了 `https://dbpedia.org/page/XML` 的页面,以避免爬取到无关的页面。最后,我们使用 `response.urljoin()` 方法将相对链接转换为绝对链接,以便进行递归爬取。 请注意,上述代码仅供参考,并可能需要根据实际情况进行适当的修改。此外,由于 dbpedia.org 是一个公共网站,为了避免对其造成过大的负担,请确保您的爬虫代码遵守网站的爬虫策略,并且不要频繁地发送请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值