sentimentanalyzer 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: []