tagme4r 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/tagme.rb +50 -0
  2. metadata +56 -0
@@ -0,0 +1,50 @@
1
+ require 'cgi'
2
+ require 'rubygems'
3
+ require 'nokogiri'
4
+ require 'open-uri'
5
+
6
+ require 'result'
7
+
8
+ class Tagme
9
+ # API to TAGME API
10
+ #
11
+ # Example:
12
+ # >> Tagme.new('[API Key]').tag('nano fibers')
13
+ # => [ #<Result:...>, ... ]
14
+ #
15
+ # Arguments:
16
+ # api_key: (String)
17
+
18
+ API_PATH = 'http://tagme.di.unipi.it/api'
19
+
20
+ attr_accessor :api_key, :lang, :referer
21
+
22
+ def initialize(api_key, lang='en', referer='')
23
+ @api_key = api_key
24
+ @lang = lang
25
+ @referer = referer
26
+ end
27
+
28
+ def tag(string)
29
+ params = "?text=#{CGI.escape(string)}&key=#{@api_key}&lang=#{@lang}"
30
+ response = open(API_PATH + params, { 'Referer' => @referer })
31
+ return nil if response.class.superclass == Net::HTTPServerError
32
+ doc = Nokogiri::XML(response)
33
+ doc.xpath('//annotation/spot').zip(
34
+ doc.xpath('//annotation/title'),
35
+ doc.xpath('//annotation/id'),
36
+ doc.xpath('//annotation/rho')
37
+ ).inject([]) do |results, annotation|
38
+ results << Result.new({
39
+ :spot => {
40
+ :pos => annotation[0].attribute('pos').content.to_i,
41
+ :len => annotation[0].attribute('len').content.to_i
42
+ },
43
+ :title => annotation[1].content,
44
+ :wikipedia_id => annotation[2].content.to_i,
45
+ :rho => annotation[3].content.gsub(',', '.').to_f
46
+ })
47
+ end
48
+ end
49
+ end
50
+
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tagme4r
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Peter Lubell-Doughtie
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-05 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &69539360 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *69539360
25
+ description: API for TAGME
26
+ email: peter@helioid.com
27
+ executables: []
28
+ extensions: []
29
+ extra_rdoc_files: []
30
+ files:
31
+ - lib/tagme.rb
32
+ homepage: http://www.helioid.com/
33
+ licenses: []
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project:
52
+ rubygems_version: 1.8.13
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: API for TAGME
56
+ test_files: []