Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
75 lines (51 sloc) 2.14 KB
module Y2016.M08.D22.Exercise where
So, we've looked at tweets, urls/links, users, and so we have just a bit left
(that concerns me, anyway), and that is the Hashtag (or '#brown' to tweeps in
the know). The structure of a hashtag is buried somewhere in these data:
"text":"April 2016 @1HaskellADay #haskell problems and solutions posted at",
"created_at":"Mon May 02 16:54:35 +0000 2016",
So, yeah: the Hashtag
tease out the hashtags from the twitter graph-JSON at twitterGraphUrl
import Data.Aeson
import Data.Map (Map)
-- from the git repository here:
import Data.Bag (Bag)
import Data.Twitter
import Graph.JSON.Cypher.Read.Graphs
import Graph.JSON.Cypher.Read.Tweets
import Y2016.M08.D15.Exercise (twitterGraphUrl)
data Hashtag = Tag { tag :: String } deriving (Eq, Ord, Show)
instance FromJSON Hashtag where
parseJSON = undefined
isHashtag :: [GraphJ] -> [NodeJ]
isHashtag = undefined
hashtags :: [GraphJ] -> [(String, Hashtag)]
hashtags = undefined -- gives the hashtag ids and the hashtags
-- Now find the unique set of Hashtags indexed by hashtag id:
hashtagMap :: FilePath -> IO (Map String Hashtag)
hashtagMap url = undefined
-- hint: recall that readGraphJSON twitterGraphUrl will get you [GraphJ]
-- How many hashtags are there?
{-- BONUS -----------------------------------------------------------------
A bit of a data analysis. Can you identify a User by the hashtags they use?
List the users in the data set and the hashtags they use by frequency.
hashtagByUser :: [GraphJ] -> Map User (Bag Hashtag)
hashtagByUser = undefined
So, something like a declarative result of:
User a uses Hashtag x 3 times, Hashtag y 7 times, ...
User b ...
Hint: ooh! the update function on the bags in the map, though ... ooh!
You can’t perform that action at this time.