public void Test_CountWordsInString3() { int res = TweetAnalysis.CountWordsInString( "Saknet person i skred, politiet undersøker. Forsøk forsøkt."); Assert.Equal(8, res); }
static void Main(string[] args) { const string fileName = @"C:\Users\lpesch\PrivateCap\Private\RKH\TwitterSAR\TwitterSARai\data\raw\vicinitas_user_tweets_vest_scoring_layout.xlsx"; var fi = new FileInfo(fileName); using (var package = new ExcelPackage(fi)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.First(); var rowCount = worksheet.Dimension.Rows; int nonzeroScores = 0; for (int row = 2; row <= rowCount; row++) { if (worksheet.Cells[row, 4] != null && (worksheet.Cells[row, 4]).Value != null) { // run the scoring function, output if nonzero float score = TweetAnalysis.ScoreTweet((worksheet.Cells[row, 4]).Value.ToString(), out string _); worksheet.Cells[row, 2].Value = score; if (score > 0) { Console.WriteLine(worksheet.Cells[row, 4].Value.ToString()); Console.WriteLine($"Score: {score}"); nonzeroScores++; } } } Console.WriteLine($"Found {nonzeroScores} tweets with nonzero score."); package.Save(); } Console.WriteLine("Processing finished!"); Console.ReadKey(); }
public void TranformData() { var tweetAnalysis = new TweetAnalysis { CreatedDate = DateTime.Now, TotalNoOfTweets = TotalTweetCount(), AvgTweetsPerHour = AverageTweetsPerHour(), AvgTweetsPerMinute = AverageTweetsPerMinute(), AvgTweetsPerSecond = AverageTweetsPerSecond(), TopEmojis = GetTopEmojis(), PercentOfTweetsWithEmojis = GetPercentOfEmojis(), TopHastags = TopHashTag(), PercentOfTweetsWithUrl = GetPercentageOfURL(), PercentOfTweetsWithPhotoUrl = GetPercentageOfPhotoURL(), TopDomains = TopDomainsOfURL() }; Console.WriteLine("\tBelow is the Data analysis\n"); log.Info("\tBelow is the Data analysis\n"); log.Info(JsonConvert.SerializeObject(tweetAnalysis)); Console.WriteLine($"\tTotal Tweets analysis for {_configuration.GetSection("inMinutes").Value} minutes is as below"); Console.WriteLine($"\tTotal number of tweets received: {tweetAnalysis.TotalNoOfTweets}"); Console.WriteLine($"\tAverage tweets per Hour: {tweetAnalysis.AvgTweetsPerHour}"); Console.WriteLine($"\tAverage tweets per Minute: {tweetAnalysis.AvgTweetsPerMinute}"); Console.WriteLine($"\tAverage tweets per Second: {tweetAnalysis.AvgTweetsPerSecond}"); Console.WriteLine($"\tTop Emojis in tweets: {JsonConvert.SerializeObject(tweetAnalysis.TopEmojis)}"); Console.WriteLine($"\tPercent of tweets that contains Emojis: {tweetAnalysis.PercentOfTweetsWithEmojis} %"); Console.WriteLine($"\tTop Hashtags: {JsonConvert.SerializeObject(tweetAnalysis.TopHastags)}"); Console.WriteLine($"\tPercent of tweets that contain a url: {tweetAnalysis.PercentOfTweetsWithUrl} %"); Console.WriteLine($"\tPercent of tweets that contain a photo url: {tweetAnalysis.PercentOfTweetsWithPhotoUrl} %"); Console.WriteLine($"\tTop domains of urls in tweets: {JsonConvert.SerializeObject(tweetAnalysis.TopDomains)}"); log.Info("\n***********************Task Completed**************************"); Console.WriteLine("\n***********************Task Completed**************************"); }
public void Test_ScoreTweet1() { float res = TweetAnalysis.ScoreTweet( "#Bergen, Danmarksplass: Politiet har gjennomført farts" + "kontroll. 9 forenklede forelegg, 2 førerkortbeslag, høyeste" + " fart var 112 km/t i 50-sonen.", out string _); Assert.Equal(0, res); }
public void Test_CountWordsInString1() { int res = TweetAnalysis.CountWordsInString( "#Bergen, Danmarksplass: Politiet har gjennomført farts" + "kontroll. 9 forenklede forelegg, 2 førerkortbeslag, høyeste" + " fart var 112 km/t i 50-sonen."); Assert.Equal(18, res); }
public void Test_CountWordsInString2() { int res = TweetAnalysis.CountWordsInString( "#Espeland Bergen: Mann i 40 årene er savnet fra bopel det er" + " iverksatt leteaksjon. Mannskap fra Røde Kors Norske " + "Redningshunder samt Norsk Luftambulanse deltar foreløpig i" + " søket."); Assert.Equal(27, res); }
public void Test_Blacklisting3() { float res = TweetAnalysis.ScoreTweet( "Rettelse: kun en bil som er involvert.", out string highlightedText); float expectedScore = 0; // blacklist "rettelse" Assert.Equal(expectedScore, res, 3); }
public void Test_Blacklisting2() { float res = TweetAnalysis.ScoreTweet( "Har *gjennomsøkt* boligen. Ingen brann på stedet. " + "Brannvesenet avslutter på stedet.", out string highlightedText); float expectedScore = 0; // blacklist "brann" Assert.Equal(expectedScore, res, 3); }
public void Test_Blacklisting1() { float res = TweetAnalysis.ScoreTweet( "#Bergen: E16 v/Takvam. Patr stanset bil, mistanke om kjøring" + " i ruspåvirket tilstand. Funn av narkotika i bilen. Fører " + "innsettes i fengsling forvaring. Sak opprettes.", out string highlightedText); float expectedScore = 0; // blacklist "narkotika" Assert.Equal(expectedScore, res, 3); }
public void Test_ScoreTweet5() { float res = TweetAnalysis.ScoreTweet( "Saknet person i skred, politiet undersøker. Forsøk forsøkt.", out string highlightedText); float expectedScore = (float)2 / 8; // only eight words in text Assert.Equal(expectedScore, res, 3); Assert.Equal( "*Saknet* person i *skred,* politiet undersøker. Forsøk forsøkt.", highlightedText); }
public void Test_ScoreTweet4() { string originalText = "#Bergen, Nordre Toppe: Ordensforstyrrelse, ruset og aggressiv" + " mann, i forbindelse med innbringelsen, forsøkte han å " + "skalle til en politibetjent, samt en politibetjent ble " + "spyttet i øyet, mannen innsatt i Arresten, anmeldt for " + "vold mot off. tjenestemann."; float res = TweetAnalysis.ScoreTweet(originalText, out string highlightedText); Assert.Equal((float)0, res, 3); Assert.Equal(originalText, highlightedText); }
public void Test_ErroneousTweet1() { // It turned out that it wasn't the line breaks in the tweet that // caused it to be rated at zero, it was "Brannvesenet", which // contains "brann". Fixed. float res = TweetAnalysis.ScoreTweet( @"#Misje #Øygarden Leteaksjon i området Misje.Siste observasjon er kl 0530. Beskrivelse: Mann 22 år, ca 180 cm, tynn, mørkt brunt hår.Iført sort jakke, blå t-shirt, sort bukse. Politi, Brannvesenet, Norske redningshunder, Røde Kors og Norsk folkehjelp bistår.", out string highlightedText); float expectedScore = 0.162F; // blacklist "rettelse" Assert.Equal(expectedScore, res, 3); }
public void Test_ScoreTweet2() { //string highlightedText = ""; float res = TweetAnalysis.ScoreTweet( "#Espeland Bergen: Mann i 40 årene er savnet fra bopel det er" + " iverksatt leteaksjon. Mannskap fra Røde Kors Norske " + "Redningshunder samt Norsk Luftambulanse deltar foreløpig i" + " søket.", out string highlightedText); // The tweet has 27 words, but here the minimum in the denominator // in the score function selects the number of trigger words. float expectedScore = (float)7 / 27; Assert.Equal(expectedScore, res, 3); Assert.Equal( "#Espeland Bergen: Mann i 40 årene er *savnet* fra bopel det er" + " iverksatt *leteaksjon.* Mannskap fra *Røde* *Kors* Norske " + "*Redningshunder* samt Norsk *Luftambulanse* deltar foreløpig i" + " *søket.*", highlightedText); }
public void Test_ScoreTweet3() { string txt = "#Kaupanger Politiet har leitet etter en mann i 30-årene siden" + " kl 04 i natt etter melding om beruset person som framsto " + "ute av stand til å ivareta seg selv. Lokalt politi fått " + "bistand fra Røde Kors og Norske redningshunder. Vedkommende " + "funnet ca kl 0930 i god behold."; float res = TweetAnalysis.ScoreTweet(txt, out string highlightedText); float expectedScore = (float)6 / Math.Min( TweetAnalysis.relevantStrings.Length, txt.Split().Length); Assert.Equal(expectedScore, res, 3); Assert.Equal( "#Kaupanger Politiet har *leitet* etter en mann i 30-årene siden" + " kl 04 i natt etter melding om beruset person som framsto " + "ute av stand til å ivareta seg selv. Lokalt politi fått " + "bistand fra *Røde* *Kors* og Norske *redningshunder.* Vedkommende" + " *funnet* ca kl 0930 i god *behold.*", highlightedText); }
public void AnalyzeTweets(CancellationToken stoppingToken) { try { if (!TweetRepository.Tweets.Any()) { return; } var tweetCount = TweetRepository.Tweets.Count(); if (tweetCount == _currentTweetCount) { return; } Analysis = TweetAnalysisStrategy.Analyze(TweetRepository.Tweets); _currentTweetCount = tweetCount; } catch (Exception e) { Logger.LogError(e, "Error analyzing tweets"); } }