aliyun_nlp_ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c216d17cec9544aa3e0085491221754634a678215147a5d079955e5e28ad1ea7
4
+ data.tar.gz: 89a5b7918c0e07089165c7c6ef3b2ac526ec558e07c63e016527d22c225612f4
5
+ SHA512:
6
+ metadata.gz: 36b6f204a6ce048658af6f037352dc9341ea07834bb676ba9beefabe3073d4e347c46e318567b0939d7c9da2c2cd2dd15c22addf0458242dc5bf47e4c6dfcf7a
7
+ data.tar.gz: 770df4b84fbd235e09e2a241a5ad1033a77d7876c095284fec574c2f817c30d39cb4e2a0c883c69c7413090a2ff3399f7dc7c00dd9450dbdb3b108756bb711e0
data/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # AliyunNlpRuby
2
+ 阿里云的分词服务SDK
3
+
4
+ ## 安装
5
+
6
+ ```ruby
7
+ gem 'aliyun_nlp_ruby'
8
+ ```
9
+
10
+ ## 配置
11
+ 添加文件 aliyun_nlp_ruby.rb 到 config/initializers.
12
+
13
+ ```ruby
14
+ AliyunNlpRuby.configure do |config|
15
+ config.access_key_secret = ENV['ALIYUN_NLP_ACCESS_KEY_SECRET']
16
+ config.access_key_id = ENV['ALIYUN_NLP_ACCESS_KEY_ID']
17
+ end
18
+ ```
19
+
20
+ ## 使用
21
+
22
+ ### 中文分词
23
+ 文档地址: https://help.aliyun.com/document_detail/181284.html
24
+
25
+ ``` ruby
26
+ result = AliyunNlpRuby.get_ws_ch_general('对阿里云的分词进行调用')
27
+ put result
28
+ ```
29
+
30
+ ### 词性标注
31
+ 文档地址: https://help.aliyun.com/document_detail/177225.html
32
+
33
+ ``` ruby
34
+ result = AliyunNlpRuby.get_pos_ch_general('对阿里云的词性标注进行调用')
35
+ put result
36
+ ```
37
+
38
+ ### 通用方法
39
+
40
+ ``` ruby
41
+ #进行分词调用
42
+ AliyunNlpRuby.query 'GetWsChGeneral', { Text: '对阿里云的分词进行调用', OutType: 1 }
43
+ ```
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'aliyun_nlp_ruby/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aliyun_nlp_ruby"
8
+ spec.version = AliyunNlpRuby::VERSION
9
+ spec.authors = ["Zkun"]
10
+ spec.email = ["zhukun6150909@gmail.com"]
11
+
12
+ spec.summary = %q{Aliyun NLP ruby sdk}
13
+ spec.description = %q{Aliyun NLP ruby sdk}
14
+ spec.homepage = "https://github.com/Zkuns/aliyun_NLP_ruby"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_dependency "uuid", ">=2.0"
25
+ spec.add_dependency "faraday", "~> 1.8"
26
+
27
+ spec.add_development_dependency "bundler", "> 1.14"
28
+ spec.add_development_dependency "rake", ">= 12.3.3"
29
+ spec.add_development_dependency "rspec", ">= 3.0"
30
+ end
@@ -0,0 +1,63 @@
1
+ require 'erb'
2
+ require 'uuid'
3
+ require 'json'
4
+ require 'openssl'
5
+ require 'base64'
6
+ require 'faraday'
7
+
8
+ module AliyunNlpRuby
9
+ class Client
10
+ SERVICE_URL = "http://alinlp.cn-hangzhou.aliyuncs.com"
11
+
12
+ def send_request params
13
+ params_without_sig = build_params(params.merge(intrinsic_params))
14
+ params_full= "Signature=#{sign(params_without_sig)}&#{params_without_sig}"
15
+
16
+ response = Faraday.get "#{SERVICE_URL}?#{params_full}",
17
+ if response != 200 && defined? Rails
18
+ Rails.logger.error(response.body)
19
+ end
20
+ JSON.parse(response.body)
21
+ end
22
+
23
+ private
24
+
25
+ def build_params(hash)
26
+ hash.map{|k,v|"#{encode(k.to_s)}=#{encode(v.to_s)}"}.sort.join('&')
27
+ end
28
+
29
+ def encode(str)
30
+ ERB::Util.url_encode str
31
+ end
32
+
33
+ def sign(str)
34
+ str = "GET&#{encode('/')}&#{encode(str)}"
35
+ ret = OpenSSL::HMAC.digest('sha1', "#{AliyunNlpRuby.configuration.access_key_secret}&", str)
36
+ ret = Base64.encode64(ret)
37
+ encode(ret.chomp)
38
+ end
39
+
40
+ def timestamp
41
+ Time.now.utc.strftime("%FT%TZ")
42
+ end
43
+
44
+ def nonce
45
+ UUID.generate
46
+ end
47
+
48
+ def intrinsic_params
49
+ configuration = AliyunNlpRuby.configuration
50
+ {
51
+ :AccessKeyId => configuration.access_key_id,
52
+ :Format => configuration.format,
53
+ :SignatureMethod => configuration.signature_method,
54
+ :SignatureVersion => configuration.signature_version,
55
+ :Timestamp => timestamp,
56
+ :SignatureNonce => nonce,
57
+ :Version => configuration.version,
58
+ :ServiceCode => configuration.service_code,
59
+ :TokenizerId => configuration.tokenizer_id,
60
+ }
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,18 @@
1
+ module AliyunNlpRuby
2
+ class Configuration
3
+ attr_accessor :access_key_secret, :access_key_id, :format, :region_id,
4
+ :signature_method, :signature_version, :version, :service_code,
5
+ :tokenizer_id
6
+
7
+ def initialize
8
+ @access_key_secret = ''
9
+ @access_key_id = ''
10
+ @format = 'JSON'
11
+ @signature_method = 'HMAC-SHA1'
12
+ @signature_version = '1.0'
13
+ @version = '2020-06-29'
14
+ @service_code = 'alinlp'
15
+ @tokenizer_id = 'GENERAL_CHN'
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,3 @@
1
+ module AliyunNlpRuby
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,44 @@
1
+ require 'aliyun_nlp_ruby/client'
2
+ require 'aliyun_nlp_ruby/configuration'
3
+
4
+ module AliyunNlpRuby
5
+ class << self
6
+ attr_writer :configuration
7
+
8
+ def configuration
9
+ @configuration ||= Configuration.new
10
+ end
11
+
12
+ def configure
13
+ yield(configuration)
14
+ end
15
+
16
+ def get_ws_ch_general text, out_type = 1
17
+ params = {
18
+ Action: 'GetWsChGeneral',
19
+ Text: text,
20
+ OutType: out_type
21
+ }
22
+ client.send_request(params)
23
+ end
24
+
25
+ def get_pos_ch_general text, out_type = 1
26
+ params = {
27
+ Action: 'GetPosChGeneral',
28
+ Text: text,
29
+ OutType: out_type
30
+ }
31
+ client.send_request(params)
32
+ end
33
+
34
+ def query action, custom_params
35
+ params = { Action: action }
36
+ client.send_request(params.merge(custom_params))
37
+ end
38
+
39
+ private
40
+ def client
41
+ @client ||= AliyunNlpRuby::Client.new
42
+ end
43
+ end
44
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aliyun_nlp_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Zkun
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-03-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: uuid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.14'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 12.3.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 12.3.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ description: Aliyun NLP ruby sdk
84
+ email:
85
+ - zhukun6150909@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - README.md
91
+ - aliyun_nlp_ruby.gemspec
92
+ - lib/aliyun_nlp_ruby.rb
93
+ - lib/aliyun_nlp_ruby/client.rb
94
+ - lib/aliyun_nlp_ruby/configuration.rb
95
+ - lib/aliyun_nlp_ruby/version.rb
96
+ homepage: https://github.com/Zkuns/aliyun_NLP_ruby
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubygems_version: 3.1.2
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: Aliyun NLP ruby sdk
119
+ test_files: []