Skip to content

Instantly share code, notes, and snippets.

@serinth
Created June 16, 2017 06:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save serinth/c36b102f162caf36f9a16213b743532f to your computer and use it in GitHub Desktop.
Save serinth/c36b102f162caf36f9a16213b743532f to your computer and use it in GitHub Desktop.
DiUS NLP Blog Post Gist
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