indico 0.3.0 → 0.3.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.
- data/lib/indico/helper.rb +11 -3
- data/lib/indico/multi.rb +3 -2
- data/lib/indico/settings.rb +1 -1
- data/lib/indico/version.rb +1 -1
- data/lib/indico.rb +22 -12
- data/spec/indico_batch_spec.rb +7 -0
- data/spec/indico_spec.rb +9 -1
- metadata +2 -2
data/lib/indico/helper.rb
CHANGED
@@ -21,12 +21,20 @@ module Indico
|
|
21
21
|
unless config.nil?
|
22
22
|
server = config[:cloud]
|
23
23
|
api_key = config[:api_key]
|
24
|
-
apis = config[
|
24
|
+
apis = config[:apis]
|
25
25
|
d = d.merge(config)
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
|
28
|
+
server = server or Indico.config['cloud']
|
29
|
+
|
30
|
+
#FIXME Remove when sentimenthq is publicly released
|
31
|
+
if !server
|
32
|
+
if api == 'sentimenthq' || (apis && apis.include?('sentimenthq'))
|
33
|
+
raise IndicoError, 'The high quality sentiment API is currently in private beta.'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
url = url_join(server, api) + (apis ? "?apis=" + apis.join(",") : "")
|
30
38
|
|
31
39
|
response = make_request(url, JSON.dump(d),
|
32
40
|
add_api_key_to_header((api_key or Indico.config['auth'])))
|
data/lib/indico/multi.rb
CHANGED
@@ -4,6 +4,7 @@ module Indico
|
|
4
4
|
CLIENT_TO_SERVER = {
|
5
5
|
"political" => "political",
|
6
6
|
"sentiment" => "sentiment",
|
7
|
+
"sentiment_hq" => "sentimenthq",
|
7
8
|
"language" => "language",
|
8
9
|
"text_tags" => "texttags",
|
9
10
|
"fer" => "fer",
|
@@ -26,7 +27,7 @@ module Indico
|
|
26
27
|
config = {}
|
27
28
|
end
|
28
29
|
|
29
|
-
config[
|
30
|
+
config[:apis] = converted_apis
|
30
31
|
response = api_handler(data, batch ? "apis/batch" : "apis", config)
|
31
32
|
results = handle_multi(response)
|
32
33
|
|
@@ -39,7 +40,7 @@ module Indico
|
|
39
40
|
if value.is_a?(Hash) && value.has_key?("results")
|
40
41
|
converted_results[SERVER_TO_CLIENT[key]] = value["results"]
|
41
42
|
else
|
42
|
-
raise IndicoError, 'unexpected result from ' + key + '
|
43
|
+
raise IndicoError, 'unexpected result from ' + key + '. ' + value.fetch("error", "")
|
43
44
|
end
|
44
45
|
end
|
45
46
|
converted_results
|
data/lib/indico/settings.rb
CHANGED
@@ -6,7 +6,7 @@ HEADERS = { 'Content-Type' => 'application/json',
|
|
6
6
|
'client-lib' => 'ruby',
|
7
7
|
'version-number' => Indico::VERSION }
|
8
8
|
# APIS
|
9
|
-
TEXT_APIS = ["political", "sentiment", "language", "text_tags"]
|
9
|
+
TEXT_APIS = ["political", "sentiment", "sentiment_hq", "language", "text_tags"]
|
10
10
|
IMAGE_APIS = ["fer", "facial_features", "image_features"]
|
11
11
|
|
12
12
|
module Indico
|
data/lib/indico/version.rb
CHANGED
data/lib/indico.rb
CHANGED
@@ -32,20 +32,28 @@ module Indico
|
|
32
32
|
api_handler(test_text, 'political/batch', config)
|
33
33
|
end
|
34
34
|
|
35
|
-
def self.posneg(
|
35
|
+
def self.posneg(*args)
|
36
|
+
sentiment(*args)
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.batch_posneg(*args)
|
40
|
+
batch_sentiment(*args)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.sentiment(test_text, config = nil)
|
36
44
|
api_handler(test_text, 'sentiment', config)
|
37
45
|
end
|
38
46
|
|
39
|
-
def self.
|
47
|
+
def self.batch_sentiment(test_text, config = nil)
|
40
48
|
api_handler(test_text, 'sentiment/batch', config)
|
41
49
|
end
|
42
50
|
|
43
|
-
def self.
|
44
|
-
|
51
|
+
def self.sentiment_hq(test_text, config = nil)
|
52
|
+
api_handler(test_text, 'sentimenthq', config)
|
45
53
|
end
|
46
54
|
|
47
|
-
def self.
|
48
|
-
|
55
|
+
def self.batch_sentiment_hq(test_text, config = nil)
|
56
|
+
api_handler(test_text, 'sentimenthq/batch', config)
|
49
57
|
end
|
50
58
|
|
51
59
|
def self.language(test_text, config = nil)
|
@@ -89,22 +97,24 @@ module Indico
|
|
89
97
|
end
|
90
98
|
|
91
99
|
def self.predict_image(face, apis = IMAGE_APIS, config = nil)
|
92
|
-
api_hash = {
|
100
|
+
api_hash = {apis:apis}
|
93
101
|
multi(preprocess(face, 48, false), "image", apis, IMAGE_APIS, config ? config.update(api_hash) : api_hash)
|
94
102
|
end
|
95
103
|
|
96
|
-
|
97
|
-
|
104
|
+
# FIXME - use settings TEXT_APIS when sentimenthq is released
|
105
|
+
def self.predict_text(test_text, apis = ['political', 'sentiment', 'language', 'text_tags'], config = nil)
|
106
|
+
api_hash = {apis:apis}
|
98
107
|
multi(test_text, "text", apis, TEXT_APIS, config ? config.update(api_hash) : api_hash)
|
99
108
|
end
|
100
109
|
|
101
110
|
def self.batch_predict_image(face, apis, config = nil)
|
102
|
-
api_hash = {
|
111
|
+
api_hash = {apis:apis}
|
103
112
|
multi(preprocess(face, 48, true), "image", apis, IMAGE_APIS, true, config ? config.update(api_hash) : api_hash)
|
104
113
|
end
|
105
114
|
|
106
|
-
|
107
|
-
|
115
|
+
# FIXME - use settings TEXT_APIS when sentimenthq is released
|
116
|
+
def self.batch_predict_text(test_text, apis = ['political', 'sentiment', 'language', 'text_tags'], config = nil)
|
117
|
+
api_hash = {apis:apis}
|
108
118
|
multi(test_text, "text", apis, TEXT_APIS, true, config ? config.update(api_hash) : api_hash)
|
109
119
|
end
|
110
120
|
end
|
data/spec/indico_batch_spec.rb
CHANGED
@@ -7,6 +7,8 @@ describe Indico do
|
|
7
7
|
private_cloud = 'indico-test'
|
8
8
|
@config_private_cloud = { api_key: api_key, cloud: private_cloud}
|
9
9
|
@config = { api_key: api_key}
|
10
|
+
# FIXME Remove when sentiment_hq is released
|
11
|
+
TEXT_APIS.delete("sentiment_hq")
|
10
12
|
end
|
11
13
|
|
12
14
|
it 'should tag text with correct political tags' do
|
@@ -36,6 +38,11 @@ describe Indico do
|
|
36
38
|
expect(response[0] < 0.5).to eql(true)
|
37
39
|
end
|
38
40
|
|
41
|
+
# it 'should tag text with correct sentiment_hq tags' do
|
42
|
+
# response = Indico.batch_sentiment_hq(['Worst movie ever.'], @config)
|
43
|
+
# expect(response[0] < 0.5).to eql(true)
|
44
|
+
# end
|
45
|
+
|
39
46
|
it 'should tag text with correct language tags' do
|
40
47
|
expected_keys = Set.new([
|
41
48
|
'English',
|
data/spec/indico_spec.rb
CHANGED
@@ -6,6 +6,8 @@ describe Indico do
|
|
6
6
|
before do
|
7
7
|
api_key = ENV['INDICO_API_KEY']
|
8
8
|
private_cloud = 'indico-test'
|
9
|
+
# FIXME - REMOVE WHEN SENTIMENTHQ RELEASE
|
10
|
+
TEXT_APIS.delete("sentiment_hq")
|
9
11
|
@config = { api_key: api_key, cloud: private_cloud}
|
10
12
|
end
|
11
13
|
|
@@ -33,6 +35,12 @@ describe Indico do
|
|
33
35
|
expect(response < 0.5).to eql(true)
|
34
36
|
end
|
35
37
|
|
38
|
+
# it 'should tag text with correct sentimenthq tags' do
|
39
|
+
# response = Indico.sentiment_hq('Worst movie ever.')
|
40
|
+
#
|
41
|
+
# expect(response < 0.5).to eql(true)
|
42
|
+
# end
|
43
|
+
|
36
44
|
it 'should tag text with correct language tags' do
|
37
45
|
expected_keys = Set.new([
|
38
46
|
'English',
|
@@ -151,7 +159,7 @@ describe Indico do
|
|
151
159
|
|
152
160
|
it "should respond with all text apis called by default" do
|
153
161
|
expected_keys = Set.new(TEXT_APIS)
|
154
|
-
response = Indico.predict_text("Worst movie ever.")
|
162
|
+
response = Indico.predict_text("Worst movie ever.", TEXT_APIS)
|
155
163
|
|
156
164
|
expect(response.class).to eql(Hash)
|
157
165
|
expect(Set.new(response.keys)).to eql(expected_keys)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: indico
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-06-
|
15
|
+
date: 2015-06-12 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: inifile
|