Created
June 16, 2017 06:44
-
-
Save serinth/c36b102f162caf36f9a16213b743532f to your computer and use it in GitHub Desktop.
DiUS NLP Blog Post Gist
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"log" | |
language "cloud.google.com/go/language/apiv1" | |
"github.com/dghubble/go-twitter/twitter" | |
"golang.org/x/net/context" | |
languagepb "google.golang.org/genproto/googleapis/cloud/language/v1" | |
) | |
type Handler struct { | |
context context.Context | |
client language.Client | |
} | |
func NewHandler() *Handler { | |
ctx := context.Background() | |
client, _ := language.NewClient(ctx) | |
return &Handler{context: ctx, client: *client} | |
} | |
func (h *Handler) Handle(tweet *twitter.Tweet) { | |
sentimentScore := h.getSentiment(tweet.Text) | |
sentimentText := "ERROR" | |
if sentimentScore > 0 { | |
sentimentText = "POSITIVE" | |
} else if sentimentScore < 0 { | |
sentimentText = "NEGATIVE" | |
} else if sentimentScore == 0 { | |
sentimentText = "NEUTRAL" | |
} | |
h.getEntities(tweet.Text) | |
log.Printf("%s is %s with score %f \n\n", tweet.Text, sentimentText, sentimentScore) | |
} | |
func (h *Handler) getSentiment(text string) float32 { | |
sentiment, err := h.client.AnalyzeSentiment(h.context, &languagepb.AnalyzeSentimentRequest{ | |
Document: &languagepb.Document{ | |
Source: &languagepb.Document_Content{ | |
Content: text, | |
}, | |
Type: languagepb.Document_PLAIN_TEXT, | |
}, | |
EncodingType: languagepb.EncodingType_UTF8, | |
}) | |
if err != nil { | |
log.Println("Faied to get sentiment with error: ", err) | |
} | |
return sentiment.DocumentSentiment.Score | |
} | |
func (h *Handler) getEntities(text string) { | |
entities, err := h.client.AnalyzeEntities(h.context, &languagepb.AnalyzeEntitiesRequest{ | |
Document: &languagepb.Document{ | |
Source: &languagepb.Document_Content{ | |
Content: text, | |
}, | |
Type: languagepb.Document_PLAIN_TEXT, | |
}, | |
EncodingType: languagepb.EncodingType_UTF8, | |
}) | |
if err != nil { | |
log.Println("Failed to get entities with error: ", err) | |
} | |
results := entities.Entities | |
for _, x := range results { | |
log.Println("Entity name: ", x.Name) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment