aliyun_nlp_ruby 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.
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: []