sentimentanalyzer 0.1.3

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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/sentimentanalyzer.rb +82 -0
  3. metadata +85 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0f42d18491be4b2513d16799d94deaa9c3a7687ad7584d151b097940117a2fde
4
+ data.tar.gz: 53e95372e386e12bd2e0a5ecc5422f3a9955654b98c3c254febbe699f9ab9ec9
5
+ SHA512:
6
+ metadata.gz: 2ba03c0c3fa1aabc797df64e5f8132e0fd74b5a8cbf407ac7738268aa38debe80b0fda906b48259ef9bfdbe7fdcd42fe2c098397891b11e1b9ccd8d4fe248cce
7
+ data.tar.gz: 68e87e1e3753dc2248feb6cf9701ee8da158d01d26fd40a2d02a0edd76c74901634f138a4dfaf5dbd9803733da83a882cc08492fc62f603f21c5f5175c5dc461
@@ -0,0 +1,82 @@
1
+ require 'json'
2
+ require 'tokenizer'
3
+ require 'csv'
4
+
5
+ class SentimentAnalyzer
6
+ def self.initialize()
7
+ @file = nil,
8
+ @sentimentWords = '',
9
+ @score = 0,
10
+ @totalScore = 0,
11
+ @sentimentScore = '',
12
+ @finalScore = 0,
13
+ @sentimentResult = ''
14
+ @profaneWords = ''
15
+ @cleanContent = true
16
+ end
17
+
18
+ def self.loadFile(fileName)
19
+ @file = File.read(fileName)
20
+ @sentimentWords = JSON.parse(@file)
21
+ return @sentimentWords
22
+ end
23
+
24
+ def self.loadProfaneWords(filePath)
25
+ @profaneWords = CSV.read(filePath)
26
+ return @profaneWords
27
+ end
28
+
29
+ def self.setFilePath(filePath)
30
+ @sentimentWords = loadFile(filePath)
31
+ end
32
+
33
+ def self.analyzer(comment)
34
+ @totalScore = 0
35
+ @result = []
36
+ @finalSentimentOutput = []
37
+ @tokenizer = Tokenizer::WhitespaceTokenizer.new
38
+ @tokensizedComment = @tokenizer.tokenize(comment)
39
+ @tokensizedComment.each do |word|
40
+ @score = @sentimentWords[word].to_f
41
+ @totalScore += @score
42
+ @result.push({"key": word, "score": @score})
43
+ end
44
+
45
+ @finalSentimentOutput.push({"result": @result, "totalScore": @totalScore})
46
+
47
+ return @finalSentimentOutput
48
+ end
49
+
50
+ def self.profaneWordsFilter(content)
51
+ @cleanContent = true
52
+ @tokenizer = Tokenizer::WhitespaceTokenizer.new
53
+ @content = content.to_s
54
+ @tokenizedContent = @tokenizer.tokenize(@content)
55
+ @tokenizedContent.each do |word|
56
+ if @profaneWords.include?([word])
57
+ @cleanContent = false
58
+ end
59
+ end
60
+ return @cleanContent
61
+ end
62
+
63
+ def self.sentimentClassifier(totalScore)
64
+ @sentimentScore = ""
65
+ if @totalScore > 0
66
+ @sentimentScore = "Positive"
67
+ elsif @totalScore < 0
68
+ @sentimentScore = "Negative"
69
+ elsif @totalScore == 0
70
+ @sentimentScore = "Neutral"
71
+ end
72
+ return @sentimentScore
73
+ end
74
+
75
+ def self.commentSentimentAnalyzer(comment)
76
+ @finalScore = analyzer(comment)[0][:totalScore]
77
+ @sentimentResult = sentimentClassifier(@finalScore)
78
+ return @sentimentResult
79
+ end
80
+ end
81
+
82
+
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sentimentanalyzer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - YotsaphonS
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-02-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: tokenizer
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: csv
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: A gem that does sentiment analysis and profane words filter on provided
56
+ text. Cloud Application Development project 2020
57
+ email: yotsaphon2018@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/sentimentanalyzer.rb
63
+ homepage:
64
+ licenses: []
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubygems_version: 3.1.2
82
+ signing_key:
83
+ specification_version: 4
84
+ summary: Sentiment analyzer
85
+ test_files: []