I should have been back at work on Monday this week, after having a lovely holiday last week. Unfortunately I began feeling unwell over the weekend and ended up off sick on Monday and Tuesday. I had a fever and a sore throat and needed to sleep most of the time, but it wasn’t Covid as I tested negative. Thankfully I began feeling more normal again on Tuesday and by Wednesday I was well enough to work again.
I spent the majority of the rest of the week working on the Speak For Yersel project. On Wednesday I moved the ‘She sounds really clever’ activities to the ‘maps’ page, as we’d decided that these ‘activities’ really were just looking at the survey outputs and so fitting in better on the ‘maps’ page. I also updated some of the text on the ‘about’ and ‘home’ pages and updated the maps to change the gender labels, expanding ‘F’ and ‘M’ and replacing ‘NB’ with ‘other’ as this is a more broad option that better aligns with the choices offered during sign-up. I also an option to show and hide the map filters that defaults to ‘hide’ but remembers the users selection when other map options are chosen. I added titles to the maps on the ‘Maps’ page and made some other tweaks to the terminology used in the maps.
On Wednesday we had a meeting to discuss the outstanding tasks still left for me to tackle. This was a very useful meeting and we managed to make some good decisions about how some of the larger outstanding areas will work. We also managed to get confirmation from Rhona Alcorn of the DSL that we will be able to embed the old web-based version of the Schools Dictionary app for use with some of our questions, which is really great news.
One of the outstanding tasks was to investigate how the map-based quizzes could have their answer options and the correct answer dynamically generated. This was never part of the original plan for the project, but it became clear that having static answers to questions (e.g. where do people use ‘ginger’ for ‘soft drink’) wasn’t going to work very well when the data users are looking at is dynamically generated and potentially changing all the time – we would be second guessing the outputs of the project rather than letting the data guide the answers. As dynamically generating answers wasn’t part of the plan and would be pretty complicated to develop this has been left as a ‘would be nice if there’s time’ task, but at our call it was decided that this should now become a priority. I therefore spent most of Thursday investigating this issue and came up with two potential methods.
The first method looks at each region individually to compare the number of responses for each answer option in the region. It counts the number of responses for each answer option and then generates a percentage of the total number of responses in the area. So for example:
North East (Aberdeen)
Mother: 12 (8%)
Maw: 4 (3%)
Mam: 73 (48%)
Mammy: 3 (2%)
Mum: 61 (40%)
So of the 153 current responses in Aberdeen, 73 (48%) were ‘Mam’. The method then compares the percentages for the particular answer option across all regions to pick out the highest percentage. The advantage of this approach is that by looking at percentages any differences caused by there being many more respondents in one region over another are alleviated. If we look purely at counts then a region with a large number of respondents (as with Aberdeen at the moment) will end up with an unfair advantage, even for answer options that are not chosen the most. E.g. ‘Mother’ has 12 responses, which is currently by far the most in any region, but taken as a percentage it’s roughly in line with other areas.
But there are downsides. Any region where the option has been chosen but the total number of responses is low will end up with a large percentage. For example, both Inverness and Dumfries & Galloway currently only have two respondents, but in each case one of these was for ‘Mam’, meaning they pass Aberdeen and would be considered the ‘correct’ answer with 50% each. If we were to use this method then I would have to put something in place to disregard small samples. Another downside is that as far as users are concerned they are simply evaluating dots on a map, so perhaps we shouldn’t be trying to address the bias of some areas having more respondents than others because users themselves won’t be addressing this.
This then led me to develop method 2, which only looks at the answer option in question (e.g. ‘Mam’) rather than the answer option within the context of other answer options. This method takes a count of the number of responses for the answer option in each region and for the number generates a percentage of the total number of answers for the option across Scotland. So for ‘Mam’ the counts and percentages are as follows:
North East (Aberdeen)
Stirling and Falkirk
Tayside and Angus (Dundee)
Dumfries and Galloway
Across Scotland there are currently a total of 87 responses where ‘Mam’ was chosen and 73 of these (84%) were in Aberdeen. As I say, this simple solution probably mirrors how a user will analyse the map – they will see lots of dots in Aberdeen and select this option. However, it completely ignores the context of the chosen answer. For example, if we get a massive rush of users from Glasgow (say 2000) and 100 of these choose ‘Mam’ then Glasgow ends up being the correct answer (beating Aberdeen’s 73), even though as a proportion of all chosen answers in Glasgow 100 is only 5% (the other 1900 people will have chosen other options), meaning it would be a pretty unpopular choice compared to the 48% who chose ‘Mam’ over other options in Aberdeen as mentioned near the start. But perhaps this is a nuance that users won’t consider anyway.
This latter issue became more apparent when I looked at the output for the use of ‘rocket’ to mean ‘stupid’. The simple count method has Aberdeen with 45% of the total number of ‘rocket’ responses, but if you look at the ‘rocket’ choices in Aberdeen in context you see that only 3% of respondents in this region selected this option.
There are other issues we will need to consider too. Some questions currently have multiple regions linked in the answers (e.g. lexical quiz question 4 ‘stour’ has answers ‘Edinburgh and Glasgow’, ‘Shetland and Orkney’ etc.) We need to decide whether we still want this structure. This is going to be tricky to get working dynamically as the script would have to join two regions with the most responses together to form the ‘correct’ answer and there’s no guarantee that these areas would be geographically next to each other. We should perhaps reframe the question; we could have multiple buttons that are ‘correct’ and ask something like ‘stour is used for dust in several parts of Scotland. Can you pick one?’ Or I guess we could ask the user to pick two.
We also need to decide how to handle the ‘heard throughout Scotland’ questions (e.g. lexical question 6 ‘is greetin’ heard throughout most of Scoatland’). We need to define what we mean by ‘most of Scotland’. We need to define this in a way that can be understood programmatically, but thinking about it, we probably also need to better define what we mean by this for users too. If you don’t know where most of the population of Scotland is situated and purely looked at the distribution of ‘greetin’ on the map you might conclude that it’s not used throughout Scotland at all, but only in the central belt and up the East coast. But returning to how an algorithm could work out the correct answer for this question: We need to set thresholds for whether an option is used throughout most of Scotland or not. Should the algorithm only look at certain regions? Should it count the responses in each region and consider it in use in the region if (for example) 50% or more respondents chose the option? The algorithm could then count the number of regions that meet this threshold compared to the total number of regions and if (for example) 8 out of our 14 regions surpass the threshold the answer could be deemed ‘true’. The problem is humans can look at a map and quickly estimate an answer but an algorithm needs more rigid boundaries.
Also, question 15 of the ‘give your word’ quiz asks about the ‘central belt’ but we need to define what regions make this up. Is it just Glasgow and Lothian (Edinburgh), for example? We also might need to clarify this for users too. The ‘I would never say that’ quiz has several questions where one possible answer is ‘All over Scotland’. If we’re dynamically ascertaining the correct answer then we can’t guarantee that this answer will be one that comes up. Also, ‘All over Scotland’ may in fact be the correct answer for questions that we haven’t considered this to be an answer for. What should be do about this? Two possibilities: Firstly, the code for ascertaining the correct answer (for all of the map-based quizzes) also has a threshold that when reached would mean the correct answer is ‘All over Scotland’ and this option would then be included in the question. This could use the same logic as ‘heard throughout Scotland’ yes/no questions that I mentioned above. Secondly, we could reframe the questions that currently have an ‘All over Scotland’ answer option to be the same as the ‘heard throughout Scotland yes/no questions as found in the lexical quiz and we don’t bother to try and work out whether an ‘all over Scotland’ option needs to be added to any of the other questions.
I also realised that we may end up with a situation where more than one region has a similar number of markers, meaning the system will still easily be able to ascertain which is correct, but users might struggle. Do we need to consider this eventuality? I could for example add in a check to see whether any other regions have a similar score to the ‘correct’ one and ensure any that are too close never get picked as the randomly generated ‘wrong’ answer options. Linked to this: we need to consider whether it is acceptable that the ‘wrong’ answer options will always be randomly generated. The options will be different each time a user loads the quiz question and if they are entirely random this means the question may sometimes be very easy and other times very hard. Do I need to update the algorithm to add some sort of weighting to how the ‘wrong’ options are chosen? This will need further discussion with the team next week.
I decided to move onto some of the other outstanding tasks and to leave the dynamically generated map answers issue until Jennifer and Mary are back next week. I managed to complete the majority of minor updates to the site that were still outstanding during this time, such as updating introductory and explanatory text for the surveys, quizzes and activities, removing or rearranging questions, rewording answers, reinstating the dictionary based questions and tweaking the colour and justification of some of the site text.
This leaves several big issues left to tackle before the end of the month including dynamically generating answers for quiz questions, developing the output for the ‘click’ activity and developing the interactive activities for ‘I would never say that’. It’s going to be a busy few weeks.
Also this week I continued to process the data for the Books and Borrowing project. This included uploading images for one more Advocates library register from the NLS, including generating pages, associating images and fixing the page numbering to align with the handwritten numbers. I also received images for a second register for Haddington library from the NLS, and I needed some help with this as we already have existing pages for this register in the CMS, but the number of images received didn’t match. Thankfully the RA Kit Baston was able to look over the images and figure out what needed to be done, which included inserting new pages in the CMS and then me writing a script to associate images with records. I also added two missing pages to the register for Dumfries Presbytery and added in a missing image for Westerkirk library.
Finally, I tweaked the XSLT for the Dictionaries of the Scots Language bibliographies to ensure the style guide reference linked to the most recent version.