Bekijk online - Universiteit Gent

Automatische generatie van gepersonaliseerd
voetbalcommentaar aan de hand van Twitter
Gertjan Goossens
Promotor: prof. dr. ir. Rik Van de Walle
Begeleiders: ir. Fréderic Godin, ir. Baptist Vandersmissen
Masterproef ingediend tot het behalen van de academische graad van
Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Elektronica en Informatiesystemen
Voorzitter: prof. dr. ir. Jan Van Campenhout
Faculteit Ingenieurswetenschappen en Architectuur
Academiejaar 2013-2014
Automatische generatie van gepersonaliseerd
voetbalcommentaar aan de hand van Twitter
Gertjan Goossens
Promotor: prof. dr. ir. Rik Van de Walle
Begeleiders: ir. Fréderic Godin, ir. Baptist Vandersmissen
Masterproef ingediend tot het behalen van de academische graad van
Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Elektronica en Informatiesystemen
Voorzitter: prof. dr. ir. Jan Van Campenhout
Faculteit Ingenieurswetenschappen en Architectuur
Academiejaar 2013-2014
Voorwoord
Van zodra ik de lijst met masterproefonderwerpen voorgeschoteld kreeg, sprak dit onderwerp me aan. Door mijn passie voor het voetbal en eerdere ervaringen met Twitter
besloot ik dan ook meteen contact op te nemen met mijn thesisbegeleiders. Het eerste
gesprek overtuigde me reeds meteen van mijn keuze. Het leek me een leuke uitdaging
om een aangename commentaarstroom te genereren uit de grote hoeveelheid data die op
Twitter te vinden is.
Langs deze weg wil ik graag ook enkele mensen bedanken. Eerst en vooral wil ik mijn
promotor, prof. dr. ir. Rik Van de Walle, bedanken om me de kans te geven om me
een jaar lang bezig te houden met een onderwerp dat me erg boeit. Daarnaast wil ik ook
graag mijn thesisbegeleiders, ir. Fr´ederic Godin en ir. Baptist Vandersmissen, alsook dr.
ir. Wesley De Neve bedanken voor de constructieve feedback die ik doorheen het jaar van
hen kreeg. Dankzij hun tips en meningen kon ik me tijdens moeilijkere periodes opnieuw
opladen om nieuwe paden te onderzoeken.
Verder wil ik ook iedereen bedanken die meewerkte aan de evaluatie van de masterproef.
In het bijzonder ben ik mijn vriendin Nele, mijn broer, zus en mijn ouders erg dankbaar
voor het aanmoedigen van mensen om mee te werken aan mijn onderzoek. Daarnaast wil
ik hen en mijn vrienden ook bedanken voor de steun gedurende het afgelopen jaar.
Ten slotte verdienen mijn ouders nog een extra vermelding voor het geloof dat ze gedurende de afgelopen vijf jaar in mij getoond hebben.
Gertjan Goossens, juni 2014
i
Toelating tot bruikleen
“De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen
van de scriptie te kopi¨eren voor persoonlijk gebruik.
Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met
betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van
resultaten uit deze scriptie.”
Gertjan Goossens, juni 2014
ii
Automatische generatie van subjectieve voetbalcommentaar aan
de hand van Twitter
door
Gertjan Goossens
Afstudeerwerk ingediend tot het behalen van de graad van
Master in de ingenieurswetenschappen: computerwetenschappen
Academiejaar 2013-2014
Universiteit Gent
Faculteit Ingenieurswetenschappen en Architectuur
Vakgroep Elektronica en informatiesystemen
Voorzitter: prof. dr. ir. J. Van Campenhout
Promotor: prof. dr. ir. R. Van de Walle
Thesisbegeleiders: ir. F. Godin, ir. B. Vandersmissen
Samenvatting
In deze masterproef wordt een systeem voorgesteld dat in ware tijd automatisch gepersonaliseerd voetbalcommentaar genereert, op basis van wat mensen zeggen op Twitter.
Het systeem genereert commentaar door de inkomende tweets meteen te filteren en toe
te kennen aan clusters. Nadat de tweets toegekend zijn aan clusters worden deze clusters
samengevat. Samen vormen al deze samengevatte clusters een commentaarstroom. Het
gepersonaliseerde aspect wordt gerealiseerd door de inkomende stroom van tweets nog
extra te filteren. Op die manier kunnen we een commentaarstroom genereren voor de
fans van elk team. Het voorgestelde systeem werkt ongesuperviseerd, waardoor het ook
toegepast kan worden tijdens andere sportwedstrijden of populaire evenementen.
Trefwoorden: Twitter, commentaar, samenvatten, voetbal
iii
Automatic generation of personalised football
commentary using Twitter
Gertjan Goossens
Supervisor(s): prof. dr. ir. Rik Van de Walle, ir. F. Godin, ir. B. Vandersmissen
Abstract— In this paper, we present a system for real-time generation
of personalised football commentary, based on what people say on Twitter.
The system generates commentary by filtering and clustering tweets when
they come in. After that, clusters are summarised. The personalised aspect
is realised by filtering the incoming stream of tweets. By doing so, we can
generate a commentary stream for each team. The presented system works
in an unsupervised manner, which means that it can also be applied in order
to generate commentary for other events or sports games.
Keywords—Twitter, commentary, summarisation, football
I. I NTRODUCTION
INCE Twitter was founded in 2006, it has grown massively.
People use Twitter to give their opinion on all kinds of
events. This is also the case during football games. On average, 65000 tweets are sent during a football game.1 This means
that about 9 new tweets are sent every second. Also, up to 35%
of all tweets are sent from inside the stadium [1].
This paper describes a system that automatically generates
personalised football commentary, based on the tweets about a
game. This system will filter and cluster tweets in real-time.
Relevant cluster will then be summarized. On top of these summarized tweets, we also offer random facts that are related to
the game. These facts will be generated when there is a silent
moment in the Twitter feed. This generation algorithm is incorporated in an application. After generation of the raw commentary text, the emotion is analysed and the text is sent to a text
to speech engine. The user can then listen to the commentary
while watching the video stream of the game. The commentary
system was evaluated through a questionnaire, in which people
had to give scores to commentary fragments after watching a
video fragment.
This paper is organised as follows. In section II, we provide
a brief overview of the related work in the domain of Twitter,
sports and summarisation. Section III describes the algorithm
that is responsible for generating commentary. In section IV,
we describe the expansion of the algorithm to a full commentary
application. Section V describes the questionnaire and contains
the most important results. We end this paper with a conclusion
in section VI.
S
general, there are two summarisation techniques that can be distinguished: a selection technique and the Phrase Reinforcement
(PR) algorithm.
The selection technique was presented in [2] and [3]. The
idea behind this technique is to select the most relevant tweet
from a set of tweets. This is done using the hybrid TF-IDF technique. The hybrid TF-IDF metric is comparable to normal TFIDF, but has a different definition for a ’document’ for the TF
and IDF component. For the TF component, the collection of
all tweets is seen as a document. For the IDF component, one
tweet is considered a document. For determining the most relevant tweet, the weights of all terms in a tweet are added up. This
total weight is then divided by a normalisation factor. The tweet
that has the highest weight, is our summary.
The second technique, the Phrase Reinforcement (PR) algorithm, was introduced in [4]. The PR-algorithm combines different tweets to a summary. This is done by representing the set
of tweets about a certain subject as a graph. Every tweet is split
up in words. Each of these words is represented by a node in
the graph. The arcs between the nodes represent the transitions
between words in a tweet. The more a transition between words
occurs in the set of tweets, the higher the weight of the representing arc will be. Once this graph is built, the summary can
be derived from the graph. This is done by starting in the node
containing the central theme of the summary. The path with the
largest weight will be followed, until the summary has reached
a maximal length or until there are no more arcs to go further.
III. G ENERATION ALGORITHM WITH REAL TIME
CLUSTERING
Since Twitter is a huge, but unstructured source of information, a lot of research has been done when it comes to summarizing tweets. Since summarizing tweets is the most important
step in order to obtain a commentary stream from the tweets,
this section will focus on the related work in this domain. In
The generation algorithm that is used by the system in this
paper works as follows. Every second, the tweets that came in
are filtered and assigned to a cluster. A tweet is assigned to the
cluster it is closest to, if the similarity between the cluster and
the tweet is high enough. If the similarity however is too low, a
new cluster is started.
Once all tweets from the passed second have been assigned to
a cluster, the algorithm checks which clusters can remain active
and which clusters have to be removed. If clusters that have to
be removed are important enough, they will also be summarised.
If the system however notices that the time since the generation
of the last summary is too high, it will generate a random fact
that is related to the Twitter stream.
1 Average from data captured during 22 games in the English Premier League,
from September 2013 until December 2013.
The following subsections will discuss the filtering, clustering
and summarising of tweets in detail.
II. R ELATED WORK
A. Step 1: Filtering tweets
The first task that is performed by the algorithm is filtering
the tweets.
First of all, there’s the concept of the retweet, which is a tweet
that has been ’forwarded’. Retweets give a useful indication of
the importance of a certain tweet. However, users don’t always
retweet recent tweets. A large amount of retweets describe an
event that occurred a lot earlier. These events introduce irrelevant information in the commentary. To avoid this, we filter out
retweets of which the original tweets is more than 30 seconds
old.
Since Twitter has users all over the world, the language of
the tweets is also important. To make sure that no non-English
tweets have an influence on the commentary, non-English tweets
are discarded.
The content of tweets might also lead to a lower quality of
commentary. That’s why the content of tweets is also filtered. In
this step, superfluous information such as hyperlinks, mentionsigns (@), hashtags (#) and unprintable characters are removed.
We also remove the topic statements, these are the keywords at
the end of a tweet. This filtering step also normalises the tweet.
This means removing duplicate punctuation, trying to fix faulty
spelling etc.
B. Step 2: Clustering tweets
After filtering the incoming tweets, the algorithm assigns every tweet to a cluster. To do so, a tweet is compared to every
active cluster in the system. If the similarity between the closest
cluster and the tweet is high enough, the tweet joins this cluster.
Otherwise, a new cluster is started. For measuring the similarity
between clusters, we used the cosine similarity, shown in equation 1.
A·B
=s
Similarity(A, B) =
kAk kBk
n
P
n
P
Ai × Bi
s
n
P
2
(Ai ) ×
(Bi )2
i=1
i=1
i=1
(1)
To measure this similarity, a tweet is represented as a vector containing the number of occurrences for each word in the tweet. To
make sure we can check the similarity to every cluster in limited
time, we keep an average tweet vector for the ’core’ of each
cluster. This core consists of 20 unique tweets that are in the
cluster.
C. Step 3: Deciding when to summarise
Once every tweet is assigned to a cluster, the algorithm moves
on to the next step: checking which clusters should be removed
and summarised.
To be able to check whether a cluster should stay active, we use
three parameters. The first parameter is the importance ratio of
the cluster. This ratio is given by equation 2.
Cluster size
T otal # tweets processed since cluster creation
(2)
The second parameter holds for how long the importance ratio of
the cluster has been beneath a certain figure. The last parameter
IRc =
is the current age of the cluster, in seconds. Both the second and
the third parameter are used as counters to decide whether the
cluster should be removed.
Once all tweets have been assigned to a cluster, these parameters are updated. After this update, the algorithm checks every
cluster: if the cluster is too old (> 30s) or its importance ratio
has been below 30% for longer than 15s, the cluster should be
removed. If a cluster should be removed and it is large enough
(> 5 tweets), the cluster will be summarised first.
D. Step 4: Summarising clusters
As section II already mentioned, there are two large techniques for generation summaries from tweets. In this step, both
techniques were implemented.
The selection technique was implemented as explained in section II. This technique is rather elementary. The outcome of this
technique also largely depends on the filtering step.
The implementation of the PR-algorithm is more complicated. In order to obtain a high quality graph, a lot of details
have to be taken into account. These details will be illustrated
using Figure 1.
First of all, there are a lot of potential ways one can write a certain word. To obtain a high quality graph, it is important that
these words all map on one node. Therefore, words are normalised, meaning they’re put to lower case and punctuation is
removed. In Figure 1 for example, ’better’ and ’better,’ map on
the same node.
However, we should also take into account that we still have to
build a summary from the graph. If we do this using the normalised words in the graph, we would obtain a sentence without
punctuation or capital letters. This can be fixed by holding representations for certain transitions in the graph. The transition
from ’done’ to ’better’ in Figure 1 could for example be represented as ’better,’ or ’better’.
The weight of transitions in retweets should also be limited
when building the graph. If we don’t do this, retweets will be
dominant in the graph. This will lead to a higher chance of getting a literal (re)tweet as summary.
In order to keep together words that form an entity (e.g. ’Manchester United’), we split the tweets using a PoS tagger ([5] and
[6]) and a chunker [7]. The resulting chunks will also be normalised by only keeping verbs and nouns, if any. Otherwise, the
whole chunk will be put in the graph. This changes the structure
of the graph shown in Figure 1 to a graph with less nodes.
Our approach also is slightly different from the approach in
[4]. Since we work with smaller datasets, we build the graph
around all tweets in a cluster, not around the tweets that contain
the central theme as suggested.
The authors also suggest to only follow non-unique links when
obtaining the summary from the graph. However, in many cases
our graphs are rather small, so following only non-unique links
would lead to very short (≤ 3 words) sentences.
E. Step 5: Generating random facts
If the algorithm notices that the generation of the last summary started earlier than 7 seconds ago, the algorithm will start
generating a random fact. If the last addition to the commentary
Fig. 1. An example PR-graph constructed out of three tweets: ’LUKAKUUU! EFC 1-0 MCFC Terrible defending by Lescott Hart should have done better’, ’Hart
should have done better, where have we heard that one before?’ and ’LUKAKUUU! GREAT START!’
stream however already was a random fact, the system will wait
15 seconds, since random facts are typically longer.
For generating a random fact, we make use of DBPedia [8]
and DBPedia Spotlight [9]. When the algorithm decides that a
random fact should be generated, all tweets in the current active clusters are aggregated. This aggregated text is then sent to
DBPedia Spotlight. This service processes the text and detects
concepts in the text. Once we have retrieved the concepts, we
order them by the number of occurrences in the aggregated text.
The most important concept is then looked up on DBPedia. If
the concept is found, the system fetches the first two sentences
of the English abstract about the concept. These sentences are
our ’random fact’. Note however that this approach is a proofof-concept.
Fig. 2. The average scores over all video fragments.
IV. T URNING THE ALGORITHM INTO AN APPLICATION
Now that we have a system to generate commentary, we still
have to apply the commentary on the video stream of the football
game. This means turning the text into speech and creating an
application for setting up the system.
A. Turning text into speech
An essential part of our commentary system is to turn the text
into speech. In this transformation step, we do not simply send
all text to a text-to-speech client. This is because we never check
how much commentary we are generating. It is possible that, at
a certain moment, there is too much text to read. This step also
introduces emotion in the system as a proof-of-concept.
For turning the text into speech, we make use of the Mary
TTS client [10]. All generated text is sent to a priority queue.
This queue makes sure that random facts are interrupted when
a new summarized cluster comes in. We also make a distinction in priority between these summarized clusters. Although
the queue normally reads the newest summaries first, some high
priority summaries may pass the newer summaries by. These
high priority summaries are those that were generated from the
largest clusters. This is because the largest clusters are typically
more important. If a piece of text is in the queue for more than
30 seconds, it will be removed from the queue and will never be
read.
Emotion can be added to the spoken text by analysing the text
upfront. In our proof-of-concept, we double the volume of the
voice if more than 30% of the characters in the text is a capital
letter.
B. Adding video and personalisation
The last addition to the system is the finishing touch. In this
step, a user interface was added. Through this user interface,
the user can choose the game (from the database) that he wants
to watch. After this choice, he can choose whether he wants
a personalised commentary for his favourite team or a mixed
commentary. The personalised commentary is achieved by filtering the initial Twitter stream on the hashtags for the requested
team. After the user has made his (or her) choice, he gets to see
the video and the generated commentary is being read to him
(or her). To synchronise the tweets to the video, we manually
made sure the first tweet about the kick-off came in at the same
moment as when the kick-off was given in the video.
V. E VALUATION
We evaluated the commentary system through a questionnaire. In this questionnaire, people got to see 5 video fragments from 4 different football games. For each of these video
fragments, we let them read 5 commentary fragments. Among
these fragments were the original commentary that belonged
to the video, a personalised commentary generated using the
PR-algorithm, a mixed commentary generated using the PRalgorithm, a personalised commentary generated using the selection technique and a mixed commentary generated using the
selection technique. The users had to give each of these commentary fragments a score from 1 to 5 on originality, relevance
and pleasancy. Next to these scores, the users also had to choose
their favourite commentary fragment as if they were a fan of one
of the teams or as if they were a neutral fan.
We got 22 people to fill in our questionnaire. Among this test
crowd were men as well as women and people with knowledge
about football as well as people who don’t know anything about
the game.
In general, the questionnaire resulted in rather low scores for
all commentary fragments, even for the original commentary.
This can be seen in Figure 2. Only when it comes to relevance,
we can see a clear winner: the original commentary. This is a
logical result, since the commentary belongs to the videos that
have been shown. The rather low scores indicate that people are
not really enthusiastic about the idea of having a commentary
stream that is fully based on Twitter. However, the scores also
indicate that none of the generated fragments are completely
outperformed by the original commentary. This might mean that
people are open to additions to commentary based on Twitter.
VI. C ONCLUSION AND FUTURE WORK
In this paper, we presented a system that automatically generates personalised football commentary, based on what people
say on Twitter. However, section V showed us that people aren’t
really waiting for a new type of commentary. They seem to appreciate the input of Twitter. That is why we propose to develop
a system that automatically generates personalised, event driven
summaries, in stead of a full commentary.
The system in this paper can, however, be improved on a few
aspects. First of all, clustering based on cosine similarity is not
perfect. It is perfectly possible that two tweets describe the same
event, while using completely different vocabulary to do so. The
cosine similarity will then be 0, since no terms are shared, while
the tweets really should be in the same cluster. Secondly, the
proof-of-concepts in this system can be improved. Lastly, our
system works unsupervised, which means it should also work
when generating commentary for other sports games or popular
events. However, the system has not yet been tested thoroughly
for this kind of events.
R EFERENCES
[1]
[2]
[3]
HTC, “UEFA Tech Talk: The Stadium Goes Social,” May 2014.
Beaux Sharifi, Mark-Anthony Hutton, and Jugal K. Kalita, “Experiments
in Microblog Summarization,” in Social Computing (SocialCom), 2010
IEEE Second International Conference on, 2010, pp. 49–56.
David Inouye and Jugal K. Kalita, “Comparing Twitter Summarization
Algorithms for Multiple Post Summaries,” in Privacy, security, risk and
trust (passat), 2011 IEEE third international conference on social computing (socialcom), 2011, pp. 298–306.
[4] Beaux Sharifi, Mark-Anthony Hutton, and Jugal K. Kalita, “Summarizing
Microblogs Automatically,” in Human Language Technologies: The 2010
Annual Conference of the North American Chapter of the Association for
Computational Linguistics, Stroudsburg, PA, USA, 2010, HLT ’10, pp.
685–688, Association for Computational Linguistics.
[5] Kristina Toutanova, Dan Klein, Christopher D. Manning, and Yoram
Singer, “Feature-rich part-of-speech tagging with a cyclic dependency
network,” in Proceedings of the 2003 Conference of the North American
Chapter of the Association for Computational Linguistics on Human Language Technology-Volume 1. Association for Computational Linguistics,
2003, pp. 173–180.
[6] Leon Derczynski, Alan Ritter, Sam Clark, and Kalina Bontcheva, “Twitter
Part-of-Speech Tagging for All: Overcoming Sparse and Noisy Data,” in
Proceedings of the International Conference on Recent Advances in Natural Language Processing. 2013, Association for Computational Linguistics.
[7] OpenNLP, ,” April 2014.
[8] DBPedia, ,” April 2014.
[9] DBPedia Spotlight, ,” April 2014.
[10] Mary TTS web client, ,” May 2014.
Inhoudsopgave
1 Inleiding
1
1.1
Probleemstelling
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Doelstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2 Gerelateerd werk
2.1
2.2
2.3
5
Inleidende literatuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1
Typische kenmerken van Twitterdata . . . . . . . . . . . . . . . . .
6
2.1.2
Hoogtepuntextractie in sportwedstrijden met behulp van Twitter
7
.
Automatische generatie van commentaar op basis van een verzameling tweets
7
2.2.1
Clusteren van tweets . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.2
Samenvatten van tweets . . . . . . . . . . . . . . . . . . . . . . . . 12
Twitter en grammatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.1
Bestaande NLP implementaties . . . . . . . . . . . . . . . . . . . . 15
2.3.2
Grammaticale correctheid . . . . . . . . . . . . . . . . . . . . . . . 15
2.4
Van tekst naar spraak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Generatie van voetbalcommentaar volgens een vast tijdsinterval
18
3.1
Basisidee achter het algoritme . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2
Filteren van tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3
3.2.1
Filteren van retweets . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.2
Filteren van inhoud . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.3
Filteren op taal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Clusteren van tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.1
De gelijkenis tussen tweets meten . . . . . . . . . . . . . . . . . . . 22
3.3.2
Hi¨erarchische implementatie . . . . . . . . . . . . . . . . . . . . . . 23
3.3.3
K-means clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.4
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
viii
3.4
Samenvatten van tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4.1
Berekenen van TF-IDF gewichten . . . . . . . . . . . . . . . . . . . 26
3.4.2
Algoritme 1: Selectie van de meest representatieve tweet . . . . . . 27
3.4.3
Algoritme 2: Phrase Reinforcement . . . . . . . . . . . . . . . . . . 28
3.4.4
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5
Evaluatie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Generatiealgoritme voor voetbalcommentaar met clustering in ware tijd 38
4.1
Basisidee achter het algoritme . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2
Clusteren van tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3
Samenvatten van tweets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4
4.3.1
Aanpassing van het PR algoritme . . . . . . . . . . . . . . . . . . . 41
4.3.2
Commentaar verrijken met willekeurige feiten . . . . . . . . . . . . 42
4.3.3
Beslissen wanneer een cluster samengevat moet worden . . . . . . . 43
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5 Van gegenereerde tekst naar een volledige commentator
5.1
5.2
5.3
48
Omzetting van tekst naar spraak . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.1
Werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1.2
Toevoegen van emotie . . . . . . . . . . . . . . . . . . . . . . . . . 50
Volledige commentator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2.1
Becommentari¨eren van een voetbalwedstrijd met videobeelden . . . 51
5.2.2
Becommentari¨eren van een rechtstreekse Twitterstroom . . . . . . . 53
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6 Evaluatie
56
6.1
Opbouw van de vragenlijst . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2
Testpubliek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.3
Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.4
6.3.1
Eerste videofragment: Arsenal - Liverpool, doelpunt Santi Cazorla
(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3.2
Tweede videofragment: Everton - Liverpool, doelpunt Kevin Mirallas (E) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.3.3
Derde videofragment: Manchester United - Arsenal, penaltyfase . . 65
6.3.4
Vierde videofragment: Sunderland - Manchester United, doelpunt
Craig Gardner (S) . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.3.5
Vijfde videofragment: Arsenal - Liverpool, vervanging . . . . . . . . 72
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
ix
7 Besluit en toekomstig werk
74
7.1
Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2
Toekomstig werk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
A Configuraties
77
A.1 Configuratie van het commentaaralgoritme . . . . . . . . . . . . . . . . . . 77
A.2 Databank- en serverconfiguratie . . . . . . . . . . . . . . . . . . . . . . . . 80
B Commentaarfragmenten bij de evaluatie
82
B.1 Eerste videofragment: Arsenal - Liverpool, doelpunt Santi Cazorla (A) . . 82
B.2 Tweede videofragment: Everton - Liverpool, doelpunt Kevin Mirallas (E) . 84
B.3 Derde videofragment: Manchester United - Arsenal, penaltyfase . . . . . . 86
B.4 Vierde videofragment: Sunderland - Manchester United, doelpunt Craig
Gardner (S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
B.5 Vijfde videofragment: Arsenal - Liverpool, vervanging . . . . . . . . . . . . 89
C Overzicht van de verzamelde datasets
92
Bibliografie
98
x
Lijst van figuren
1.1
Enkele tweets uit de wedstrijd West Bromwich - Arsenal. . . . . . . . . . .
2.1
Voorbeeld van een graaf in het PR-algoritme. . . . . . . . . . . . . . . . . 12
3.1
Een grafische weergave van de werking van het basisalgoritme. . . . . . . . 19
3.2
Een illustratie van de bottom-up aanpak bij hi¨erarchisch clusteren. . . . . . 23
3.3
PR-graaf op basis van drie tweets. . . . . . . . . . . . . . . . . . . . . . . . 29
3.4
Een illustratie van de interne structuur van de PR-graaf. . . . . . . . . . . 32
4.1
Een illustratie van de werking van het verbeterde generatiealgoritme. . . . 40
5.1
Initi¨ele keuze in de commentaarapplicatie. . . . . . . . . . . . . . . . . . . 51
5.2
Keuze van de te becommentari¨eren wedstrijd. . . . . . . . . . . . . . . . . 52
5.3
Personaliseren van de commentaarstroom. . . . . . . . . . . . . . . . . . . 52
5.4
De voetbalcommentator in actie. . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5
Ingeven van trefwoorden voor de live commentator. . . . . . . . . . . . . . 54
5.6
De live commentator in actie. . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.1
Enkele karakteristieken van het testpubliek. . . . . . . . . . . . . . . . . . 59
6.2
Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het
eerste videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3
Evaluatie van de voorkeuren van het testpubliek voor het eerste videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.4
Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het
tweede videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5
Evaluatie van de voorkeuren van het testpubliek voor het tweede videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.6
Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het
derde videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.7
Evaluatie van de voorkeuren van het testpubliek voor het derde videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.8
Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het
vierde videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
xi
3
6.9
Evaluatie van de voorkeuren van het testpubliek voor het vierde videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.10 Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het
vijfde videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.11 Evaluatie van de voorkeuren van het testpubliek voor het vijfde videofragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.12 Algemeen gemiddelde scores van verschillende commentaren. . . . . . . . . 73
xii
Gebruikte afkortingen
FSD
First Story Detection
LDA
Latent Dirichlet Allocation
LSH
Locality Sensitive Hashing
NER
Named Entity Recognition
NLP
Natural Language Processing
PoS
Part-of-Speech
PR
Phase Reinforcement
TF
Term Frequency
TF-IDF Term Frequency - Inverse Document Frequency
xiii
Hoofdstuk 1
Inleiding
1.1
Probleemstelling
Sinds de oprichting in 2006 is Twitter uitgegroeid tot de uitlaatklep bij uitstek van het
Internet. Mensen gebruiken Twitter om hun mening over allerlei gebeurtenissen te uiten.
Ook tijdens voetbalwedstrijden sturen we massaal korte berichtjes de wereld in. Dit bleek
uit een dataset van Twitterberichten, ook wel tweets genoemd, verzameld tijdens 22 verschillende wedstrijden uit de Engelse Premier League tussen september 2013 en december
2013. Gemiddeld werden er per wedstrijd maar liefst 65000 berichtjes de wereld ingestuurd.1 Dat komt neer op 9 tweets per seconde. Een studie van technologiebedrijf HTC
tijdens de groepsfase van de Champions League (jaargang 2013-2014) toonde daarenboven
aan dat tot 35% van alle tweets uit het stadion komen [1]. Hoewel deze studie erg beperkt
is, toont ze toch een duidelijke trend aan. Nu steeds meer mensen via smartphones en
mobiel internet toegang hebben tot sociale media, kunnen we verwachten dat de supporter in het stadion in de toekomst nog meer van zich zal laten horen.
Het is altijd leuk om andermans mening over bepaalde gebeurtenissen te kennen. Toch
neemt niemand echt de tijd om die duizenden tweets stuk voor stuk te bekijken. Het zijn
slechts de meningen van enkelen die het grote publiek bereiken. Desondanks bevatten die
andere meningen ook vaak nuttige, interessante of zelfs humoristische inzichten. Wanneer
we wat er op Twitter wordt gezegd vergelijken met de traditionele voetbalcommentaar
zien we dan ook vaak duidelijke verschillen.
1
Deze hoeveelheden werden gemeten vanaf ongeveer 10 minuten voor de aftrap tot ongeveer 10 minuten
na de wedstrijd.
1
Tabel 1.1: Fragment uit de commentaarstroom tijdens de televisie-uitzending van West Bromwich - Arsenal.
A: Ozil, Wilshere. It’s Jenkinson...
Arteta, Ozil, Wilshere, Giroud, Wilshere Again!
B: I don’t question Steve Clark, but I feel with these tactics eventually Arsenal, they will
score, because they’re getting into these areas too easily.
A: Arsenal have switched the three players behind the strikers, so Ramsey who started
on the right is on the left, Wilshere who begun on the left is in the middle and Ozil is
down the right side.
B: I think we’ll see that today and we’ll see that through the course of the season. The
only constance will be Giroud and Flamini.
Tabel 1.1 bevat een fragment van de commentaar uit een Engelstalige televisie-uitzending
van de wedstrijd West Bromwich - Arsenal (6 oktober 2013). In Figuur 1.1 zijn enkel
tweets geselecteerd die gelijktijdig met de televisiecommentaar de wereld werden ingestuurd. Daar waar de commentaar op de televisie zo objectief mogelijk blijft, zien we op
Twitter voornamelijk subjectieve en erg vurige commentaren. Verder zijn er ook steeds
enkele kwinkslagen, zoals bijvoorbeeld de Tweet in Figuren 1.1(a) en 1.1(b). Deze zal je
zelden of nooit in gesproken of geschreven voetbalcommentaar terugvinden. Voetbalfans
zijn het vaak ook niet eens met de commentatoren op de televisie of internet, zelfs als die
personen volledig objectief zijn. Dat blijkt bijvoorbeeld ook uit de Tweet over commentator Alan Smith uit Figuur 1.1(c).
Fans zullen zich over het algemeen veel minder opwinden wanneer de commentator een
verslag op hun maat uitbrengt. Via Twitter kan zulke verslaggeving gerealiseerd worden:
een verslag v´oo´r fans d´o´or fans.
Ten slotte geeft de typische verslaggeving die we terugvinden op het internet vaak enkel
de belangrijkste hoogtepunten zoals doelpunten, rode kaarten of zware blessures mee. Het
is immers zowel praktisch als financieel onhaalbaar om verslaggevers naar elke mogelijke
wedstrijd te sturen.
1.2
Doelstelling
De belangrijkste doelstelling van deze masterproef is het automatisch en ongesuperviseerd
genereren van een gepersonaliseerde commentaarstroom tijdens een gegeven voetbalwedstrijd. Het gepersonaliseerde aspect van de commentaarstroom ligt in de partijdigheid van
2
(a) Een beschrijvende Tweet met een humoristisch kantje. De tweet is het gevolg van een incident waarbij
Jack Wilshere in de week voor de wedstrijd werd betrapt met een sigaret.
(b) Een persoonlijke (en humoristische) mening over de baard van Jack Wilshere.
(c) Een fan die het niet eens is met de commentatoren op televisie.
(d) Een eerder beschrijvende Tweet.
Figuur 1.1: Enkele tweets uit de wedstrijd West Bromwich - Arsenal.
3
het verhaal. De fans van beide teams krijgen met andere woorden hun eigen commentaarstroom. Anderzijds is het ook mogelijk om een gemengde commentaarstroom aan te
bieden. Ten slotte zal de resulterende commentaar voorgelezen worden met text-to-speech
technieken.
Het ongesuperviseerd karakter van het totaalsysteem moet ervoor zorgen dat deze oplossing niet beperkt is tot het becommentari¨eren van voetbalwedstrijden. Het moet immers
ook mogelijk zijn om verslaggeving te voorzien voor andere populaire evenementen.
Deze masterproef zal antwoorden op de vraag of het mogelijk is om, met behulp van
Twitter, op automatische en ongesuperviseerde wijze een gepersonaliseerde voetbalcommentaarstroom te genereren.
1.3
Overzicht
Na deze inleiding wordt in Hoofdstuk 2 een overzicht gegeven van de reeds bestaande
literatuur die relevant in het kader van deze masterproef. In Hoofdstuk 3 wordt een eerste
algoritme voor de generatie van voetbalcommentaar beschreven. Dit algoritme werkt op
basis van een vast tijdsinterval. Hoofdstuk 4 introduceert een uitbreiding op die algoritme.
Deze uitbreiding volgt niet langer een vast tijdsinterval, maar maakt gebruik van clustering
in ware tijd. Dit uitgebreide algoritme wordt in Hoofdstuk 5 verder aangevuld. Hier
wordt beschreven hoe de gegenereerde commentaar omgezet wordt naar spraak en hoe we
uiteindelijk tot een commentaarapplicatie komen. In Hoofdstuk 6 wordt de evaluatie van
het commentaarsysteem besproken. Ten slotte be¨eindigen we deze masterproef met een
besluit en een overzicht van eventueel toekomstig werk in Hoofdstuk 7.
4
Hoofdstuk 2
Gerelateerd werk
Het systeem dat in het kader van deze masterproef ontwikkeld wordt, bestaat uit twee
belangrijke componenten. De hoofdcomponent van het systeem zal ervoor zorgen dat een
subjectieve commentaar kan worden afgeleid uit een set van tweets. Daarnaast zal er
ook gebruikgemaakt worden van een component die tekst omzet naar spraak. Rond elk
van deze individuele componenten werd reeds veel onderzoek uitgevoerd. Dit hoofdstuk
geeft een overzicht van relevante onderzoeken en technologie¨en binnen het kader van deze
masterproef.
In Sectie 2.1 worden enkele onderzoeken besproken die verband houden met Twitter.
Sectie 2.2 beschrijft de belangrijkste verwezenlijkingen uit de literatuur die relevant zijn
om de hoofdcomponent op te bouwen. In Sectie 2.3 wordt een overzicht gegeven van
grammatica-gerelateerde systemen. Ten slotte behandelen we ook nog de tweede belangrijke component van het systeem, namelijk de omzetting van de gegenereerde tekst naar
spraak in Sectie 2.4.
2.1
Inleidende literatuur
In het verleden werd reeds veel onderzoek gedaan met betrekking tot het verwerken van
Twitterdata. Om op de hoogte te zijn van de huidige evoluties in de academische wereld,
geven we in deze sectie een overzicht van relevante onderzoeksresultaten met betrekking
tot Twitter. In Sectie 2.1.1 worden de typische kenmerken van Twitterdata vermeld en
vergeleken met traditionele media. In Sectie 2.1.2 worden enkele concrete toepassingen
besproken waarin Twitter gebruikt wordt ter ondersteuning van sportverslaggeving.
5
2.1.1
Typische kenmerken van Twitterdata
In [2] vergelijken Zhao et al. de traditionele media met Twitter. Hiervoor werd de krant
The New York Times gebruikt. In dit onderzoek kwamen de auteurs tot verscheidene
conclusies. Zo merkte men op dat zowel Twitter als de traditionele media dezelfde onderwerpen aanhalen, maar dat het verschil voornamelijk ligt in de aandacht die naar
bepaalde onderwerpen gaat. Zo besteden Twittergebruikers meer aandacht aan de popcultuur, terwijl de traditionele media dieper ingaan op wereldnieuws. Ondanks het feit dat
Twittergebruikers meer aandacht besteden aan onderwerpen uit de persoonlijke levenssfeer, zijn ze wel erg actief in het retweeten van wereldnieuws. Hierdoor wordt belangrijk
nieuws sneller verspreid. De thema’s uit de persoonlijke levenssfeer, zoals sport, lokken
daarentegen meer persoonlijke meningen uit. Een laatste opmerkelijke vaststelling was
dat de woordenschat in The New York Times veel ruimer was, ondanks het feit dat er
op Twitter bijna dubbel zoveel woorden gebruikt werden om dezelfde gebeurtenissen te
beschrijven.
Perez-Tellez et al. [3] bespreken enkele problemen met betrekking tot het interpreteren
van tweets. Het doel was om voor bedrijven tweets op te delen in clusters. Op die manier kunnen bedrijven te weten komen wat mensen denken over hun activiteiten. Het is
echter geen gemakkelijke opgave om de context van een tweet te achterhalen. Zo zijn er
bijvoorbeeld bedrijven met namen die ook gewone woorden zijn. Tweets die zulke namen
bevatten zijn dus moeilijker te classificeren onder een bepaald thema. Bijgevolg is er behoefte aan een systeem dat beter in staat is om de context te begrijpen. Deze problemen
treden ook op wanneer tweets namen of bijnamen van personen bevatten.
In [4] gaan Ritter et al. verder in op de herkenning van entiteiten. Omwille van de
restrictie in het aantal tekens gebeurt het vaak dat bepaalde woorden afgekort worden.
Bovendien worden woorden vaak (al dan niet opzettelijk) fout gespeld. Zulke fouten en
afkortingen maken het begrijpen van context en samenvatten van tweets in een vloeiende
en correcte tekst een moeilijke opgave.
Choudhury en Breslin [5] concentreerden zich op het herkennen van entiteiten in sporttweets. Ook hier was de belangrijkste bevinding dat Twittergebruikers woorden of namen
vaak afkorten of vervormen. Verder worden hoogtepunten in sportwedstrijden vaak op
verschillende manieren vernoemd. Een doelpunt kan bijvoorbeeld beschreven worden als
’Goal!’, maar kan ook gewoon te herkennen zijn aan een scorevermelding of een beschrijving van de fase. Deze fenomenen maken het extra moeilijk om de context van tweets (en
dus ook het verloop van de sportwedstrijd) te interpreteren.
6
2.1.2
Hoogtepuntextractie in sportwedstrijden met behulp van
Twitter
In onderzoeken met betrekking tot sportwedstrijden werd al vaker gebruikgemaakt van
Twitter. Deze onderzoeken gaan voornamelijk op zoek naar technieken om de hoogtepunten uit wedstrijden te extraheren. Het doel van deze technieken was om een beknopte
samenvatting van de wedstrijd te bekomen. In eerste instantie lag de focus vooral op
tekstuele samenvattingen. Later ging men ook videosamenvattingen automatiseren.
[6] en [7] beschrijven systemen om automatisch hoogtepunten uit sportwedstrijden te
extraheren. Het systeem uit [6] doet dit in twee stappen. Eerst worden hoogtepunten gedetecteerd aan de hand van een plotse stijging in het aantal tweets per minuut.
Daarna worden deze hoogtepunten geanalyseerd om af te leiden wat er exact gebeurd
is. Uiteindelijk blijft er een samenvattende lijst over. Die lijst bevat alle tijdstippen van
gebeurtenissen en hun type (bijvoorbeeld goal of red card ). In [7] gebruiken de auteurs
een gelijkaardig systeem om gebeurtenissen te detecteren. In dit systeem wordt echter
niet overgegaan tot het herkennen van gebeurtenissen, maar wordt rechtstreeks een korte
samenvatting van de gebeurtenis gegenereerd uit de tweets.
Kobayashi et al. gebruikten Twitter om een subjectieve videosamenvatting te genereren in [8]. De hoogtepunten werden gedetecteerd op een gelijkaardige manier als in [6] en
[7]. Het subjectieve aspect werd gerealiseerd met behulp van een eenvoudige vorm van
sentimentanalyse. De auteurs willen op die manier de belangrijke hoogtepunten voor een
bepaalde supportersclan uit alle hoogtepunten filteren. Aan de hand van de tijdstippen
van deze hoogtepunten worden vervolgens segmenten uit de videobeelden van de partij
geknipt. Die fragmenten vormen dan samen het subjectieve videoverslag.
2.2
Automatische generatie van commentaar op basis van een verzameling tweets
Zoals eerder reeds werd aangegeven, is het genereren van de commentaar het belangrijkste doel van deze masterproef. Om die commentaar te genereren zijn twee belangrijke
stappen vereist. De eerste stap is het vinden van ´e´en of meerdere centrale thema’s in een
deelverzameling van de verzameling tweets. Vervolgens is het de bedoeling om, uit die
deelverzameling van tweets, een vloeiende tekst te genereren over deze thema’s. Sectie
2.2.1 geeft een overzicht van gerelateerd werk dat focust op verschillende clusteringstechnieken. Hierbij is het de bedoeling om een verzameling tweets op te delen in enkele
inhoudelijk samenhangende deelverzamelingen. Op die manier worden verschillende cen7
trale thema’s blootgelegd. In Sectie 2.2.2 volgt een bespreking van enkele onderzoeken
omtrent het samenvatten van microblogberichten. Deze technieken worden gebruikt om
een grote verzameling tweets samen te vatten in enkele zinnen.
2.2.1
Clusteren van tweets
In het domein van documentverwerking is men al jaren bezig met het ontwikkelen van
technieken om centrale thema’s af te leiden uit grote teksten. Deze technieken zijn de
experimentele fase intussen al voorbij en worden reeds door verschillende ontwikkelaars
aangeboden in de vorm van web API’s zoals [9, 10]. Sinds de opkomst van sociale media
werden die technieken ook toegepast op verzamelingen van korte tekstberichten, zoals
tweets. Al snel bleek dat de gekende technieken niet erg geschikt waren. Bijgevolg is er
intussen al heel wat literatuur over het clusteren van tweets rond ´e´en of meerdere centrale
thema’s.
2.2.1.1
Clustering in traditionele documenten
Larsen en Aone [11] beschrijven een clusteringsysteem voor traditionele documenten. Het
voorgestelde systeem bestaat uit twee belangrijke stappen. De eerste stap is het extraheren van de belangrijkste onderwerpen uit de documenten. Hiervoor wordt gebruikgemaakt
van Term Frequency (TF) of de iets complexere Term Frequency - Inverse Document Frequency (TF-IDF). Beide technieken kennen een bepaald gewicht toe aan woorden op
basis van de frequentie waarmee woorden terugkomen in een tekst. De tweede stap van
het clusteringsysteem is de eigenlijke clustering van de documenten. In deze stap worden gelijkaardige documenten gegroepeerd in clusters, vertrekkende van de belangrijkste
onderwerpen. De eigenlijke bedoeling is zo een hi¨erarchische structuur van clusters op te
bouwen.
Eerst worden de centra van de clusters bepaald. Vervolgens wordt op zoek gegaan naar
betere centra om uiteindelijk de resulterende clusters verder te verfijnen. De hi¨erarchische
structuur wordt dan bereikt door deze drie stappen recursief uit te voeren tot de gewenste
diepte bereikt is.
Hoewel het voorgestelde systeem erg uitgebreid beschreven is en de onderzoekers veel varianten getest hebben, is het duidelijk dat dit tot problemen zou leiden voor het clusteren
van korte tekstberichten. De eerste stap van het systeem zou namelijk falen. De berichten zijn typisch erg kort, waardoor de TF en TF-IDF waarden voor verschillende termen
weinig verschil zullen vertonen. De idee¨en uit de tweede stap kunnen echter wel nuttig
zijn voor het clusteren van tweets.
Zoals in Sectie 2.1.1 reeds vermeld werd, vergelijken Zhao et al. [2] traditionele media met
8
Twitter. Voor deze vergelijking maken ze gebruik van topic models. Om de belangrijke
thema’s in de artikelen van The New York Times te detecteren wordt gebruikgemaakt
van Latent Dirichlet Allocation (LDA). LDA maakt gebruik van statistische modellen
om documenten toe te wijzen aan een bepaald thema. Met LDA wordt het bijvoorbeeld
mogelijk om een bepaald document voor 40% aan thema A toe te wijzen, voor 25% aan
thema B en voor 35% aan thema C. Elk van deze thema’s is gedefinieerd door een set van
woorden met probabiliteiten. De verkregen thema’s kunnen dan als clusters beschouwd
worden. Deze techniek werkt over het algemeen zeer goed op gewone tekstdocumenten.
In [12] vergelijken Rosa et al. enkele technieken om tweets automatisch te clusteren.
De eerste grote stap die onderscheiden wordt in de vergelijking is de normalisatiestap.
Men stelt vier verschillende manieren voor om de tweets vooraf te filteren, met het oog
op kwalitatieve clusters. De effectieve clusteringstechnieken kunnen worden opgedeeld
in gesuperviseerde en ongesuperviseerde technieken. Bij de ongesuperviseerde technieken
worden LDA en K-means clustering besproken. Het klassieke K-means algoritme bleek
iets beter te presteren, maar uiteindelijk leidden beide algoritmen tot relatief slechte clusters. Dit is een logisch resultaat, aangezien geen van beide algoritmen voorzien is op het
clusteren van korte teksten zoals tweets. De gesuperviseerde technieken maken gebruik
van hashtags als labels voor thema’s. Uit de testresultaten van de auteurs bleek dat deze
laatste variant de beste clusters afleverde.
2.2.1.2
Clusteringstechnieken voor tweets op basis van topic models
Om het topic model uit een verzameling van tweets af te leiden, maken Zhao et al. [2]
gebruik van een techniek die gebaseerd is op LDA. De klassieke LDA presteert immers
niet goed op tweets omdat ze kort zijn. Een mogelijke aanpak om dit probleem op te
lossen is om alle tweets van ´e´enzelfde gebruiker te aggregeren tot ´e´en groot document.
Ondanks het feit dat deze aanpak relatief vaak gebruikt wordt, stellen de auteurs een
alternatieve techniek voor: Twitter-LDA. Deze techniek steunt op het feit dat een Tweet
meestal slechts ´e´en thema bevat. Na het extraheren van de centrale thema’s in de individuele tweets wordt er op zoek gegaan naar bovenliggende categorie¨en voor deze thema’s.
In [13] wijzen Ramage et al. ook op de gebreken van de klassieke LDA-techniek. Als
alternatief wordt een gesuperviseerde versie van LDA voorgesteld: Labeled LDA. De toevoeging van labels introduceert de mogelijkheid om, naast de thema’s die reeds door LDA
gevonden werden, zelf labels toe te voegen die bij bepaalde tweets horen. Op die manier
kan het model leren welke sets van woorden overeenkomen met de labels en wordt de
classificatie van tweets meer accuraat.
9
Chua en Asur [14] stellen een systeem voor om evenementen samen te vatten op basis van sociale media. Eerst wordt er gezocht naar centrale thema’s, om vervolgens een
samenvattende tekst te genereren. Het voorgestelde samenvattingssysteem is echter erg
simplistisch. Om het clusteringsprobleem op te lossen, wijst men ook hier op de gebreken
van klassieke LDA. In plaats daarvan introduceren de auteurs twee nieuwe topic models.
Het Decay Topic Model (DTM) steunt op het feit dat topics vaak evolueren na verloop
van tijd. Een conversatie over de beursintroductie van Facebook zal bijvoorbeeld beginnen bij vermeldingen van $28”, maar die prijs stijgt na verloop van tijd. Het is dan ook
”
wenselijk dat bijvoorbeeld $35” tot hetzelfde topic gerekend wordt. Het Gaussian Decay
”
Topic Model (GDTM) voegt hier nog tijdstempels aan toe, zodat de variatie in tijd nog
beter gemodelleerd kan worden.
2.2.1.3
Clusteringstechnieken voor tweets op basis van klassieke clusteringsalgoritmen
In [15] stellen Sankaranarayanan et al. TwitterStand voor. TwitterStand is een systeem
dat tweets verzamelt over belangrijke gebeurtenissen. Het belangrijkste doel van het systeem is om tweets in ware tijd op te delen in categorie¨en. Een belangrijk kenmerk van
dit probleem is dat het nooit op voorhand weet welke en hoeveel thema’s aan bod zullen
komen. Het gebruikte algoritme houdt een aantal actieve clusters bij. Elke cluster heeft
een kenmerkenvector en een tijdstempel. De kenmerkenvector is een lijst van gewogen
sleutelwoorden uit de Tweet. De weging van de woorden gebeurt op basis van TF-IDF.
Wanneer er dan een nieuwe Tweet in het systeem binnenkomt stelt men de kenmerkenvector van deze Tweet op en meet men de afstand tussen de kenmerkenvectoren van
de Tweet en de verschillende clusters. Als die afstand kleiner dan een bepaalde grens is.
hoort de Tweet bij de cluster in kwestie. Zo niet, wordt er een nieuwe cluster aangemaakt.
O’Connor et al. [16] beschrijven de werking van TweetMotif, een systeem dat berichten groepeert op basis van frequente termen. Het beschreven systeem hanteert een
hi¨erarchische aanpak. Eerst krijgen (deel)zinnen uit de tweets een score. Die weging
is gebaseerd op klassieke TF-IDF, maar houdt meer rekening met de typische korte berichten op Twitter. Elk van deze (deel)zinnen beschrijft dan een potentieel thema. Na
het toekennen van de score worden gelijkaardige thema’s samengenomen en worden de
uiteindelijke thema’s verder verfijnd. De auteurs evalueren hun aanpak echter niet.
2.2.1.4
Alternatieve clusteringstechnieken
In [17] beschrijven Martin et al. een systeem dat zinnen detecteert die een plotse groei
in populariteit kennen, zogenaamde bursts. Met dit systeem wil men journalisten helpen
10
met hun werk. Het gebruikte algoritme steunt op drie belangrijke concepten. Eerst en
vooral maakt men gebruik van n-grams. Dit zijn sequenties van n items, zoals woorden, lettergrepen,... Door met n-grams te werken kan men in het systeem bijvoorbeeld
het onderscheid maken tussen man bijt hond” en hond bijt man”. Een andere be”
”
langrijke component is Named Entity Recognition (NER). Deze component zorgt ervoor
dat bepaalde entiteiten, zoals bekende mensen, herkend kunnen worden in een tekst. Het
eigenlijk clusteringssyteem maakt gebruik van een variant op TF-IDF. Deze variant, Temporal Document Frequency - Inverse Document Frequency (DF-IDFt ), meet in welke mate
er een burst optreedt in het aantal voorkomens van een n-gram. Na het detecteren van
de meest frequente sequenties, past men een hi¨erarchisch clusteringsalgoritme toe dat de
woordsequenties die het dichtst bij elkaar liggen samenvoegt in een cluster. Uiteindelijk
bekomt men dan een lijst van clusters die beschreven kunnen worden met behulp van de
belangrijkste n-grams in de cluster. Uit de testresultaten van de auteurs bleek dat dit
systeem erg goed presteert op tweets over voetbalwedstrijden.
YaJuan et al. [18] stellen een systeem voor om thema’s op Twitter samen te vatten.
Om een samenvatting te realiseren, gaat men eerst op zoek naar interessante deelthema’s.
Hiervoor maakt men gebruik van de Term Frequency (TF). Een groot verschil met TFIDF is dat men de TF op een andere manier berekent. De TF wordt hier gemodelleerd als
een binomiale verdeling. Op die manier houdt men rekening met het feit dat de belangrijkste thema’s voorkomen wanneer er zich een plotse verhoging (burst) in het tweetvolume
voordoet. Achteraf vat men de gevonden thema’s samen op basis van de invloed die een
gebruiker heeft op Twitter.
Petrovi´c et al. [19] beschrijven een manier om tweets in ware tijd op te delen in clusters.
Dit probleem staat gekend als First Story Detection (FSD). Hierbij is het de bedoeling
om de eerste Tweet die afwijkt van alle andere op te delen in een nieuwe cluster. Typisch
wordt dit gedaan door simpelweg de afstand tussen de Tweet en alle tweets in de bestaande clusters te berekenen. Deze bewerking vergt echter enorm veel tijd en is bijgevolg
niet geschikt voor real-time applicaties. De auteurs stellen daarom voor om gebruik te
maken van Locality Sensitive Hashing (LSH). Deze techniek maakt gebruik van meerdere
hashfuncties die ervoor zorgen dat gelijkaardige tweets op ´e´enzelfde waarde mappen. Op
die manier worden natuurlijke clusters gecre¨eerd. Bijgevolg gebeurt de toewijzing aan een
cluster in constante tijd, wat wenselijk is in real-time toepassingen.
In [20] passen Osborne et al. FSD toe zoals Petrovi´c et al. dat deden in bovenstaand
artikel. Het grote verschil tussen beide systemen is dat het systeem uit [19] de tweets louter clustert, terwijl het nieuwe systeem de detectie verrijkt. Wanneer er zich een nieuwe
gebeurtenis voordoet en er dus een extra cluster gecre¨eerd wordt, gaat het systeem op zoek
11
Figuur 2.1: Voorbeeld van een graaf in het PR-algoritme. Figuur uit [22].
naar gerelateerde informatie op Wikipedia. Wanneer er een significante gelijkenis is tussen tweets en een belangrijke Wikipediapagina, is de kans ook groot dat de gedetecteerde
gebeurtenis effectief belangrijk is.
2.2.2
Samenvatten van tweets
In Sectie 2.2.1 bespraken we reeds het clusteren van korte tekstberichten. Daarnaast
zijn er afgelopen jaren verscheidene onderzoeken uitgevoerd naar het samenvatten van
tweets. Op die manier kan men automatisch beschrijvingen van bepaalde belangrijke
gebeurtenissen genereren. Voorlopig ligt de focus echter voornamelijk op het genereren
van beknopte samenvattingen of tijdslijnen (zoals [21]).
2.2.2.1
Technieken gebaseerd op Phrase Reinforcement
In 2010 stelden Sharifi et al. hun Phrase Reinforcement (PR) algoritme voor in twee verschillende publicaties ([22, 23]). Het grote nadeel van klassieke samenvattingsalgoritmen
is dat ze vaak enkel zinnen uit de totale tekst aan elkaar plakken. Het PR algoritme
steunt op twee belangrijke vaststellingen. Eerst en vooral gebruiken mensen vaak dezelfde
woorden wanneer ze een bepaald thema bespreken of een gebeurtenis beschrijven. Ten
tweede is er ook het concept van de retweet in Twitter.1 Gebruikers hebben vaak de neiging om relevante informatie te retweeten, waardoor de tweets die vaak geretweet werden
zwaarder kunnen doorwegen in de uiteindelijk samenvatting.
De eerste stap van het algoritme is het filteren van de tweets. Het eigenlijke algoritme
begint dan met ´e´en centrale zin of woordsequentie. Het systeem gaat vervolgens op zoek
1
Een retweet kan vergeleken worden met het doorsturen van een e-mail. Gebruikers sturen met andere
woorden een tweet door naar hun eigen volgers op Twitter.
12
naar woorden die frequent voorkomen vlak voor of na de woordsequentie. Rond de woordsequentie wordt dan een graaf gebouwd met al deze frequente woorden (Figuur 2.1). Het
pad dat de woorden met de hoogste frequenties bevat, zal dan de uiteindelijke zin zijn
die het centrale thema beschrijft. Die zin kan dan opnieuw gebruikt worden als centrale
knoop om zo een langere zin te verkrijgen. Het grootste nadeel aan deze techniek is dat
er per centraal topic slechts ´e´en zin gegenereerd wordt.
Nichols et al. [24] beschrijven een systeem om sportwedstrijden samen te vatten. Hun
systeem gaat aan de hand van veranderingen in de hoeveelheid tweets per minuut op
zoek naar gebeurtenissen in een wedstrijd. Hierbij steunen ze op het feit dat mensen
veel intenser reageren wanneer er effectief iets gebeurt in een wedstrijd. Statistieken van
het aantal tweets tijdens een wedstrijd vertonen ook steevast een erg grillig patroon met
veel pieken en dalen. De pieken komen steeds vlak na een hoogtepunt voor. Nadat de
hoogtepunten gedetecteerd zijn, treedt er een ruisverwijderingsmechanisme in werking.
Dit mechanisme zorgt er onder andere voor dat het taalgebruik genormaliseerd wordt
(goaaaaaaaaaal wordt bijvoorbeeld omgezet naar goal ). Om daarna een korte tekst te
genereren, wordt een gewijzigde versie van het PR-algoritme uit [22, 23, 25] gebruikt. Het
grootste verschil ligt hierbij in het feit dat men meerdere zinnen in plaats van slechts ´e´en
zin genereert. Nichols et al. beschrijven echter enkel de hoogtepunten in hun samenvatting, zodat er slechts een beknopt verslag gegenereerd wordt.
2.2.2.2
Eenvoudige selectietechnieken
In [25] beschrijven Sharifi et al. het PR-algoritme nog eens. Ze wijzen de lezer er hier
echter op dat de techniek uit het PR algoritme voor verbetering vatbaar is en stellen
een tweede samenvattingsalgoritme voor: Hybrid TF-IDF Summarization. De TF-IDFwaarde bestaat uit twee componenten. De term frequency (TF) geeft meer gewicht aan
woorden die vaker voorkomen in het document, terwijl de inverse document frequency
(IDF) ervoor zorgt dat het gewicht van stopwoorden en dergelijke gecompenseerd wordt.
Het grote probleem van deze metriek is dat hij gevoelig is aan de lengte van het document.
Op korte documenten, zoals microblogberichten, zou weinig resultaat bereikt worden. De
voorgestelde oplossing beschouwt ´e´en enkele tweet als ´e´en document, maar om de TF
te berekenen wordt de verzameling van alle updates als ´e´en groot document beschouwd.
De tweets of zinnen die na normalisatie het grootste gewicht hebben, worden dan aan
de samenvatting toegevoegd. Een potenti¨ele zwakte van deze aanpak is dat er gewerkt
wordt met letterlijke tweets. Op die manier kunnen updates met taalfouten, die toch een
groot gewicht halen, in de samenvatting terecht komen, wat net vermeden moet worden.
Daarenboven kan deze techniek ook niet werken wanneer een gebeurtenis in meerdere
zinnen moet worden beschreven. Je kan namelijk niet zomaar de tweets met de hoogste
13
TF-IDF waarde nemen. Die vertonen vaak veel overlap omdat gelijkaardige berichten ook
gelijkaardige waarderingen zullen krijgen.
In [26] bouwen Inouye en Kalita verder op het Hybrid TF-IDF Summarization algoritme
uit [25]. Een probleem met deze techniek is, zoals reeds vernoemd, dat de samenvattingen
steeds uit slechts ´e´en zin bestaan. Om langere samenvattingen te genereren, stelt men
twee oplossingen voor. In het eerste geval neemt men voor een samenvatting van lengte
k de k tweets met de hoogste TF-IDF uit het resultaat van het hybride algoritme. Om te
voorkomen dat die k tweets te veel overlap zouden bevatten, worden enkel de tweets die
genoeg verschillen met de vorige updates toegevoegd aan de samenvatting. Dit gebeurt
aan de hand van een afstandsmetriek en een grenswaarde voor het minimale verschil tussen twee tweets. Deze methode is echter zeer simplistisch en kan moeilijk werken bij het
samenvatten van evenementen met vaste types gebeurtenissen. Verschillende gebeurtenissen binnen ´e´enzelfde type lijken namelijk sterk op elkaar, waardoor ze niet als afzonderlijke
gebeurtenissen beschouwd zullen worden.
De tweede voorgestelde oplossing maakt gebruik van een clusterstap alvorens het samenvattingsalgoritme toe te passen. De idee achter deze oplossing is om de set van tweets
eerst met behulp van het k-means clustering algoritme te clusteren, waarbij k de gewenste
lengte is van de samenvatting. Op elk van die clusters wordt het hybride algoritme toegepast en de uiteindelijke resultaten vormen dan samen de samenvatting.
Chakrabarti en Punera stellen in [27] drie samenvattingsalgoritmen voor. Twee van die
drie algoritmen zijn equivalent aan de twee technieken die voorgesteld werden in [26]. De
derde techniek steunt op het feit dat het volume van Twitterdata onvoorspelbaar is. Om
dat gedrag te kunnen modelleren wordt gebruikgemaakt van een variant op het Hidden
Markov Model. Het grote nadeel van deze techniek is echter dat deze focust op het samenvatten van hoogtepunten uit een stroom van data en dus zal resulteren in een eerder
beknopte samenvatting.
2.3
Twitter en grammatica
Het merendeel van de Twittergebruikers neemt het niet zo nauw met spelling- en grammaticaregels. Dat bemoeilijkt het genereren van samenvattingen uit tweets aanzienlijk.
In het domein van de documentverwerking werden grammaticale aspecten reeds uitvoerig onderzocht, wat resulteerde in Natural Language Processing (NLP) technieken, zoals
Part-of-Speech (PoS) tagging. Door de recente opmars van Twitter in de academische
wereld werden deze technieken ook reeds aangepast aan de typische taalkenmerken op
Twitter. In Sectie 2.3.1 volgt een kort overzicht van reeds bestaande NLP implementa-
14
ties. Sectie 2.3.2 bespreekt enkele systemen om grammaticale correctheid te controleren
of bekomen.
2.3.1
Bestaande NLP implementaties
Reeds in 2000 ontwikkelden de onderzoekers van Stanford University een volledig NLP
systeem, waaronder ook een PoS tagger. Deze tagger was louter bedoeld om gewone
tekstdocumenten te taggen. De werking hiervan wordt beschreven in [28, 29]. In 2013
ontwikkelden Derczynski et al. echter een model opdat de Stanford PoS tagger ook goed
zou presteren op microblogteksten. Deze uitbreiding op de Stanford tagger werd gepubliceerd in [30].
Een groep onderzoekers van Carnegie Mellon University ontwikkelde in 2011 een eerste specifieke PoS tagger voor Twitter. In [31] stelden Gimpel et al. de werking van hun
tagger, genaamd TweetNLP, voor. In 2013 werkten Owoputi et al. hierop verder, wat
resulteerde in een nieuwe, verbeterde versie van TweetNLP. Deze nieuwe versie maakt
gebruik van woordclusters. Dankzij die clusters bereikte men een meer accurate tagging.
De gedetailleerde werking hiervan wordt beschreven in [32].
Ritter et al. stelden in [33, 34] hun eigen NLP systeem voor Twitter voor: TwitterNLP.
Dit systeem is in Python geschreven en laat gebruikers toe om PoS-tags van hun Twitterteksten te bekomen. Aan de hand van die tags kan TwitterNLP daarenboven de tekst
opdelen in zogenaamd chunks. Dit zijn delen uit de tekst die samen horen.
Een andere handige NLP bibliotheek is de OpenNLP bibliotheek [35]. Hoewel deze
Java-bibliotheek niet gelinkt is aan academische publicaties, bevat ze enkele krachtige
implementaties van NLP technieken. Zo bevat OpenNLP onder andere een PoS tagger
voor gewone tekst en een chunker. Verder laat deze bibliotheek ook toe om aan named
entity extraction te doen. Dit is het extraheren van entiteiten uit een tekst.
2.3.2
Grammaticale correctheid
In [36] stelden Judd en Kalita vast dat het PR algoritme vaak resulteert in goede samenvattingen, maar dat het resultaat voor sommige thema’s sterk te wensen overlaat. De
samenvattingen zijn syntactisch fout of te langdradig. Dit komt doordat het algoritme
weinig of geen aandacht schenkt aan de syntactische vorm van de gebruikte data. Om
dit probleem op te lossen, stellen de auteurs voor om de gegenereerde samenvatting te
verwerken tot een vloeiende en syntactisch correcte tekst. Met behulp van PoS tagging
worden de zinnen uit de samenvatting geanalyseerd en definieert men afhankelijkheden
15
tussen woorden. Op basis van die afhankelijkheden wordt dan beslist of een woord al dan
niet mag blijven staan in de zin. Deze correctietechniek is een erg interessante techniek
om ervoor te zorgen dat de uiteindelijke output van het PR-algoritme zo weinig mogelijk
ruis of syntactisch foute zinnen bevat. De beschreven correctie kan daarenboven toegepast
worden op samenvattingen die het resultaat zijn van andere algoritmen.
Langkilde-Geary introduceerde in [37] een systeem om een grammaticaal correcte tekst te
genereren. Het systeem, HALogen, neemt een set van relaties binnen een zin en eventuele
eigenschappen als input. Vervolgens wordt deze set, aan de hand van vooraf gedefinieerde
regels, getransformeerd tot een verzameling van mogelijke uitdrukkingen. Na enkele tussenbewerkingen bepaalt het systeem op statistische wijze de meest waarschijnlijke uitdrukkingen uit deze verzameling. Aangezien HALogen afhankelijkheden als input neemt,
kan het eventueel ook gebruikt worden in het systeem dat beschreven werd in [36].
In [38] beschrijven de auteurs een manier om de grammaticale correctheid van teksten
te controleren. Hiervoor maken ze gebruik van een statistische aanpak op basis van een
op voorhand getraind taalmodel. Dit model bevat probabiliteiten die aangeven hoe waarschijnlijk het is dat bepaalde PoS tags elkaar opvolgen. Wanneer de waarschijnlijkheid
van de sequenties van tags in een zin hoog genoeg is, wordt de zin als grammaticaal correct beschouwd. Hoewel de performantie van dit systeem op eenvoudige zinnen erg hoog
is, presteert het een stuk minder goed op complexe zinnen.
2.4
Van tekst naar spraak
Ten slotte is het ook de bedoeling om de gegenereerde subjectieve commentaarstroom
te laten uitspreken. Hiervoor zal gebruikgemaakt worden van vooraf ge¨ımplementeerde
systemen. De literatuurstudie blijft dus beperkt tot een overzicht van de beschikbare
services.
Tabel 2.1: Overzicht van beschikbare (web)services voor omzetting van tekst naar spraak.
Naam (web)service
Aanpasbare parameters?
Sentiment?
Referentie
Google Translate TTS
Mary TTS
FreeTTS
Neen
Ja
Neen
Neen
Voorzien
Neen
[39]
[40]
[41]
In het overzicht van de beschikbare text-to-speech services in Tabel 2.1 zien we een duidelijke winnaar, namelijk de Mary TTS web client. Deze webservice biedt gebruikers de
keuze tussen verschillende Britse en Amerikaanse stemmen. Verder is het ook mogelijk
16
om enkele parameters aan te passen, zoals het volume van de stem. Daarenboven zijn
de ontwikkelaars van dit project bezig met het uitwerken van sentiment in de stemmen,
waardoor het mogelijk wordt om een bepaalde tekst vrolijk of boos te laten uitspreken.
Helaas werd deze optie voorlopig nog niet uitgewerkt voor Engelstalige stemmen.
2.5
Besluit
Het generatiesysteem voor commentaar dat we met deze masterproef willen bereiken bestaat uit twee belangrijke componenten. Enerzijds is er de clusterstap, anderzijds het
samenvatten van tweets. Uit de literatuur blijkt dat er rond elk van deze componenten
reeds relatief veel onderzoek gevoerd is. De mogelijke technieken voor de eerste stap,
het clusteren van tweets, zijn onder te verdelen in drie categorie¨en. Eerst en vooral zijn
er technieken die gebaseerd zijn op LDA [2, 13, 14]. De tweede soort zijn varianten op
traditionele clustertechnieken die gebruikmaken van TF-IDF [15, 16]. Ten slotte zijn er
nog enkele alternatieve methoden, die besproken werden in [17, 12, 18, 20, 19].
Aangezien alle varianten hun voor- en nadelen hebben en de focus in de eerdere onderzoeken voornamelijk op algemeen nieuws ligt, is het moeilijk om te voorspellen welke
technieken best zullen presteren op voetbaltweets. Gezien het real-time karakter van
het beoogde systeem lijkt het aangewezen om voor eenvoudige clustertechnieken te gaan.
Vanuit dit oogpunt brengen de technieken uit [19, 20] ook interessante inzichten.
Voor het samenvatten van tweets bestaan er twee duidelijke stromingen. De eerste is gebaseerd op het Phrase Reinforcement (PR) algoritme [22, 23, 24, 36]. De tweede mogelijke
basistechniek maakt gebruik van TF-IDF om een score toe te kennen aan tweets. Aan de
hand van die score worden dan de meest relevante tweets geselecteerd [25, 26, 27].
Om de gegenereerde commentaar uit te spreken zal gebruikgemaakt worden van bestaande
Java-bibliotheken of webservices. In Sectie 2.4 bleek dat de Mary TTS web client over de
hele lijn de beste optie is voor de text-to-speech stap. Wanneer de sentimentondersteuning
van de Mary client uitgebreid wordt naar de Engelse stemmen, zal sentimentanalyse ook
een grotere rol kunnen krijgen in het uiteindelijke systeem. Voor de sentimentanalyse zal
momenteel geopteerd worden voor een eigen eenvoudige implementatie.
17
Hoofdstuk 3
Generatie van voetbalcommentaar
volgens een vast tijdsinterval
In dit hoofdstuk wordt een eerste generatiealgoritme voor voetbalcommentaar beschreven. Het doel van dit algoritme is om, gegeven een inkomende stroom van tweets, een
tekstuele commentaarstroom uit de tweets af te leiden. In een latere fase kan die tekstuele commentaarstroom verwerkt en uitgesproken worden. Eigen aan dit algoritme is dat
het de inkomende tweets volgens een vast tijdsinterval verwerkt. In Sectie 3.1 volgt een
algemene beschrijving van dit generatiealgoritme.
In Secties 3.2, 3.3 en 3.4 wordt de uitwerking van de individuele componenten van het
algoritme besproken. Deze zijn respectievelijk de filterstap, de clusterstap en de samenvattingsstap. In Secties 3.5 en 3.6 volgen ten slotte een tussentijdse evaluatie en enkele
conclusies omtrent het algoritme.
3.1
Basisidee achter het algoritme
Om de basisidee achter dit algoritme te snappen is het van essentieel belang om te weten
hoe een typische stroom van tweets eruit ziet.
Om te beginnen zijn er de tekens die eigen zijn aan Twitter, zoals het mention-teken (@)
en de hashtag (#). Tweets bevatten daarenboven ook vaak hyperlinks. Die extra tekens
en hyperlinks zijn onaangename elementen in een tekstuele verslaggeving, en al zeker
wanneer die tekst nog uitgesproken moet worden. Verder bestaat een Twitterstroom van
tweets steeds voor een groot deel uit retweets. Die retweets kunnen zorgen voor storende
herhalingen in real-time verslaggeving. Een ander kenmerkend aspect van een stroom
over een bepaald evenement (in ons geval een voetbalwedstrijd) is dat gebruikers over
meerdere verschillende gebeurtenissen tegelijkertijd rapporteren.
Uit deze Twitterkenmerken is de basisidee achter het eerste generatiealgoritme gegroeid.
18
Figuur 3.1: Een grafische weergave van de werking van het basisalgoritme.
De algemene structuur hiervan wordt afgebeeld in Figuur 3.1. Dit algoritme voert de drie
afgebeelde stappen volgens een vast tijdsinterval sequentieel uit. De lengte van dit interval
kan worden ingesteld. Een geschikte waarde hiervoor ligt tussen 15 en 45 seconden,
afhankelijk van het volume van de Twitterstroom. Deze parameter dient zo gekozen te
worden dat het interval groot genoeg is om een redelijk aantal tweets te verzamelen en
tot een aanvaardbare commentaarstroom te komen, zonder al te veel stille momenten
te introduceren. Tijdens dit interval worden alle inkomende tweets bijgehouden en na
afloop van het interval worden de ontvangen tweets doorgestuurd naar de eerste stap, de
filterstap. Die stap rekent af met storende gevolgen van de eerder genoemde kenmerken.
De filterstap wordt uitgebreid beschreven in Sectie 3.2. De clusterstap moet ervoor zorgen
dat de verschillende gebeurtenissen in de stroom van tweets ook weergegeven worden in
de commentaarstroom. Sectie 3.3 bespreekt de implementatie van deze stap. De laatste
stap van het generatiealgoritme is het samenvatten van de bekomen clusters. In Sectie
3.4 volgt een uitgebreide bespreking van deze stap. Het resulterende algoritme wordt in
Sectie 3.5 ge¨evalueerd. In Sectie 3.6 sluiten we dit hoofdstuk af met enkele conclusies.
3.2
Filteren van tweets
Zoals reeds vermeld werd in Sectie 3.1, is de filterstap verantwoordelijk voor het voorkomen
van storende elementen in de output van het commentaaralgoritme. Deze stap is technisch
gezien de minst complexe stap uit het hele proces, maar heeft wel grote gevolgen. In deze
19
stap worden drie verschillende filters toegepast. De eerste filter verwijdert retweets, de
tweede filtert de inhoud van de tweets en ten slotte zorgt de laatste filter ervoor dat enkel
de Engelstalige tweets in rekening gebracht worden. Deze filters worden respectievelijk
beschreven in Secties 3.2.1, 3.2.2 en 3.2.3.
3.2.1
Filteren van retweets
Het filteren van retweets spitst zich toe op het verwijderen van zogenaamde schaduwgebeurtenissen. Dit zijn pieken in het tweetvolume die veroorzaakt worden door retweets.
Hierdoor detecteren systemen voor hoogtepuntextractie een gebeurtenis, terwijl er helemaal niks aan de hand is. Ook wanneer we een set tweets willen samenvatten, zijn
zulke pieken in het tweetvolume storend. Die pieken overschaduwen de nuttige of nieuwe
informatie in de verzameling, waardoor er te veel herhaling optreedt in de gegenereerde
commentaar (en te weinig nieuwe informatie gegeven wordt).
Toch is het niet de bedoeling zomaar alle retweets weg te gooien. Het feit dat een bepaalde
status geretweet is, geeft immers een indicatie dat die status interessanter, geloofwaardiger of grappiger is dan andere tweets. Dat is meteen ook de reden waarom de retweetfilter
die ge¨ımplementeerd werd in het kader van deze masterproef bepaalde retweets bijhoudt.
Deze filter controleert voor elke tweet die binnenkomt of deze al dan niet een retweet
is. De meeste retweets zijn eenvoudig te herkennen aan de waarheidswaarde isRetweet
van de inkomende tweet. Als de waarde aangeeft dat de tweet een retweet is, haalt de
filter de originele tweet op. De retweet in kwestie wordt enkel bijgehouden wanneer het
moment waarop de originele tweet verstuurd werd binnen een venster van 30 seconden
v´o´or het moment van de retweet valt. Op die manier is zeker dat het systeem met recente
informatie werkt. De keuze van de venstergrootte is een experimentele keuze.
Een extra manier om retweets te herkennen is door de geretweette tekst te controleren.
Retweets beginnen namelijk vaak met de letters ’RT’.
3.2.2
Filteren van inhoud
In Sectie 3.1 werd de inhoud van tweets al aangehaald als een storende factor. Hyperlinks,
mentions, hashtags, exotische tekens e.d. zijn niet gewenst in de commentaartekst. Zeker
met het oog op de verdere fase, wanneer de commentaar voorgelezen zal worden, moeten
deze elementen verwijderd worden. De werking van deze filter is dan ook erg eenvoudig:
elke tweet die de filter binnenkomt wordt woord per woord, teken per teken gecontroleerd. Als de beginsequentie van een woord doet vermoeden dat we te maken hebben met
een hyperlink, wordt het hele woord verwijderd. Overbodige witruimte, exotische tekens,
speciale symbolen, @-symbolen en #-symbolen worden ook geschrapt door deze filter.
20
Eens deze factoren uitgeschakeld zijn, blijft er nog ´e´en storende (inhoudelijke) factor
over: de trefwoorden bij een hashtag. Hierbij moet een duidelijk onderscheid gemaakt
worden tussen de hashtags die deel uitmaken van de tweet en de zogenaamde topic statements. Topic statements zijn de trefwoorden op het einde van de verstuurde tweet. Zij
dragen dus op inhoudelijk vlak niks bij tot de tweet. Daarom werd besloten om, alvorens
de inhoud te filteren op overbodige of storende elementen, eerst de topic statements te
verwijderen uit de tweet.
Een algemeen probleem met de inhoud van tweets is dat de gebruikers het niet zo nauw
nemen met de spelling- en grammaticaregels. Helaas is het moeilijk om zulke fouten volledig te corrigeren in ware tijd, aangezien we te maken hebben met zeer grote datastromen.
Toch werd in deze filter een extra stap toegevoegd, die op een eenvoudige manier een
deel van de fouten kan oplossen. In deze stap wordt de tweet in kwestie namelijk genormaliseerd. Concreet houdt dit in dat verschillende schrijfwijzen van woorden op elkaar
worden gemapt. Zo zal de foute spelling ’Gooaal’ gemapt worden op ’Goal’. Daartoe
werden enkele regels ge¨ımplementeerd, zonder nieuwe taalfouten te introduceren. Een
kort overzicht:
• Gedupliceerde punctuatie wordt verwijderd
• Onprintbare karakters worden verwijderd
• Als drie (of meer) opeenvolgende letters in een woord gelijk zijn, gooien we letters weg tot er slechts twee overblijven (bv: ’goood’ wordt ’good’, ’hellllllo’ wordt
’hello’,. . . )
• Meerklanken waarin ´e´en of meerdere klinkers gedupliceerd zijn, worden omgevormd
tot gewone meerklanken (bv: ’gooal’ en ’goooaaaaal’ worden ’goal’)
3.2.3
Filteren op taal
Aangezien het systeem in deze masterproef gebruik maakt van een dataset met tweets
uit de Engelse Premier League, is de meerderheid van de tweets Engelstalig. De Premier
League wordt echter ook live uitgezonden en gevolgd in tientallen andere landen, met als
gevolg dat een deel van de tweets anderstalig is. Normaal gezien zijn er zelden voldoende
anderstalige tweets om een grote invloed te hebben op de uitvoer van het algoritme, maar
in uitzonderlijke gevallen kan dit toch gebeuren. Om hinder door anderstalige tweets tot
een minimum te beperken, werd een taalfilter toegevoegd. Deze filter maakt gebruik van
een Java-bibliotheek voor taaldetectie [42], die claimt 99% accuraat te zijn over 53 talen
heen. Enkele eenvoudige tests wezen uit dat deze bibliotheek effectief goed werkt op lange
21
niet-Engelse tweets. Wanneer korte tweets beoordeeld worden, is de taaldetectie echter
minder accuraat. Zo wordt de Spaanse tekst ’Gol, K¨
un Aguero!’ valselijk als Engelse
tekst aanzien. Zulke fouten zijn echter aanvaardbaar, aangezien ze eveneens als fouten
tegen de Engelse spelling of grammatica kunnen doorgaan. Die fouten zijn namelijk
alomtegenwoordig op Twitter en, zoals reeds vermeld werd in Sectie 3.2.2, moeilijk te
corrigeren in ware tijd.
3.3
Clusteren van tweets
De tweede stap van het commentaaralgoritme, de clusterstap, probeert de verschillende
onderwerpen in de stroom van tweets van elkaar af te zonderen. De grote uitdaging voor
de clusterstap is de vereiste om in (bijna) ware tijd te werken. Daarenboven wordt het
clusteren bemoeilijkt door het feit dat Twittergebruikers tientallen verschillende schrijfwijzen voor ´e´enzelfde woord gebruiken. Het is bijgevolg noodzakelijk om gelijkaardige
woorden zo goed mogelijk op elkaar te mappen, zonder al te veel extra vertraging in het
systeem te veroorzaken. In de eerste versie van het commentaaralgoritme werd geopteerd
om te clusteren met behulp van de traditionele clusteringstechnieken. Eerst en vooral
wordt in Sectie 3.3.1 besproken hoe we de gelijkenis tussen tweets kunnen meten. Sectie
3.3.2 beschrijft een eerste clusteringsmethode, gebaseerd op een hi¨erarchische aanpak. In
Sectie 3.3.3 schakelen we over naar een vorm van k-means clustering. Ten slotte volgt een
kort besluit in Sectie 3.3.4.
3.3.1
De gelijkenis tussen tweets meten
Om tweets te kunnen clusteren, is er een metriek nodig die toelaat om de gelijkenis
tussen tweets te meten. Hiervoor werd gebruikgemaakt van de cosine similarity measure
(Formule 3.1). Deze metriek wordt typisch gebruikt om de gelijkenis tussen vectoren te
meten.
A·B
=rn
Similarity(A, B) = cos(θ) =
P
kAk kBk
n
P
Ai × Bi
rn
P
2
(Ai ) ×
(Bi )2
i=1
i=1
(3.1)
i=1
Om de cosine similarity te kunnen meten, moeten tweets eerst worden omgezet in woordvectoren. Zo een woordvector bevat het aantal voorkomens van elk woord in de tweet.
Hier speelt spelling een grote rol: wanneer we niets doen aan misspellingen, zullen de
woorden ’Goal’ en ’Goooaaaaal’ als verschillende woorden aanzien worden. Als twee
tweets elk ´e´en van deze spellingswijzen gebruiken, zullen ze intrinsiek wel heel gelijkaardig zijn, maar zal de cosine similarity een stuk lager liggen, aangezien het hier niet om
22
Figuur 3.2: Een illustratie van de bottom-up aanpak bij hi¨erarchisch clusteren.
hetzelfde ’element’ in de vector gaat. Om zulke fouten te minimaliseren worden de tweets
in kwestie genormaliseerd, alvorens de cosine similarity te berekenen. Hier blijkt met
andere woorden al waarom de normalisatiestap uit de inhoudelijke filter (Sectie 3.2.2) zo
belangrijk is. Na splitsing van de tweets worden de individuele woorden ook nog genormaliseerd. Dit houdt in dat hoofdletters worden vervangen door kleine letters en punctuatie
verwijderd wordt. De regels die daar werden ge¨ımplementeerd, zorgen ervoor dat heel wat
verschillende schrijfwijzen van woorden op elkaar gemapt kunnen worden. De mapping
zou nog beter kunnen, mochten we ervoor geopteerd hebben om bovenop dit mechanisme
steeds de afstand tussen twee potentieel dezelfde woorden te meten. Indien die afstand
klein genoeg is, kan immers aangenomen worden dat het om hetzelfde woord gaat. Een
dergelijke meting zou echter nog een pak extra vergelijkingen en dus extra vertraging met
zich meebrengen.
3.3.2
Hi¨
erarchische implementatie
De eerste mogelijk clusteringsaanpak is een hi¨erarchische aanpak. Deze aanpak lijkt erg
geschikt voor het clusteren van tweets, aangezien er op voorhand geen aantal clusters vastligt. Op die manier kan een hi¨erarchisch algoritme zich goed aanpassen naar de gedraging
van de Twitterstroom. Wanneer er bijvoorbeeld slechts twee onderwerpen in de stroom
vervat zijn, zouden er theoretisch gezien ook maar twee clusters moeten zijn. In het kader
van dit systeem werd gewerkt met een bottom-up aanpak. Daarbij wordt elke tweet initieel
als een cluster beschouwd. Clusters worden vervolgens stap voor stap samengevoegd met
de cluster waarmee ze de meeste gelijkenissen vertonen. Deze aanpak vereist maar ´e´en
parameter, namelijk een maat voor hoe sterk twee clusters op elkaar moeten lijken opdat
ze samengevoegd mogen worden. Wanneer er geen clusters meer samengevoegd mogen
worden, stopt het algoritme. Het concept wordt ook afgebeeld in Figuur 3.2.
Kort samengevat doorloopt de eigenlijke implementatie van het hi¨erarchische clusteringsalgoritme volgende stappen:
1. Maak van elke tweet een cluster
23
2. Ga op zoek naar de twee clusters die het best op elkaar lijken
3. Voeg de twee clusters uit de vorige stap samen indien de gelijkenis groot genoeg is
4. Als in de vorige stap clusters werden samengevoegd, ga terug naar stap 2. Anders
is het algoritme afgelopen.
Om de twee clusters die best op elkaar lijken te zoeken, werden alle clusters onderling
vergeleken. Een uiteindelijke gelijkenis wordt bekomen door de gelijkenissen tussen alle
tweets in de twee clusters onderling te meten en op te tellen. Daarna wordt dit cijfer
uitgemiddeld, waardoor we de gemiddelde gelijkenis tussen twee tweets in de clusters bekomen. De clusters waarvoor die waarde het hoogst is, worden dan de kandidaat-clusters.
De parameter voor de minimale gelijkenis opdat twee clusters samengevoegd mogen worden werd ingesteld op 0.3. Deze waarde werd experimenteel vastgelegd.
Na enkele eenvoudige testen van het hi¨erarchische clusteringsalgoritme bleek dat deze
aanpak niet geschikt was in een near real time systeem. Enkele alternatieven met een andere afstandsfunctie bleken even traag uit te voeren. Zo werd er geprobeerd om, in plaats
van de gemiddelde gelijkenis tussen de tweets in de twee clusters in kwestie te maximaliseren, de gelijkenis tussen de gemiddelde tweetvectoren van twee clusters te maximaliseren.
De vertraging met eender welke geteste variant bleek echter onaanvaardbaar voor een
systeem dat in bijna ware tijd moet werken.
3.3.3
K-means clustering
De tweede mogelijke clusteringstechniek is het K-means algoritme. Dit algoritme is iets
minder geschikt voor het clusteren van tweets, aangezien het vereist dat je vooraf het
aantal clusters kent. We weten immers nooit op voorhand hoeveel verschillende onderwerpen er aanwezig zijn in de Twitterstroom, waardoor het vastleggen van de parameter
k moeilijk is.
K-means clustering vertrekt vanuit k initi¨ele clusters, in dit geval tweets. De keuze van
deze initi¨ele clusters is bepalend voor het eindresultaat van de clustering. In deze implementatie worden de eerste tweets uit de te clusteren lijst als initi¨ele clusters gekozen.
Vervolgens worden alle overige tweets toegewezen aan ´e´en van de k clusters, meer bepaald
de cluster waarmee ze de meeste gelijkenissen vertonen. Eens alle tweets aan een cluster
zijn toegewezen, worden de centro¨ıden van de k clusters herberekend. Die centro¨ıden
zijn de gemiddelde tweetvectoren van de clusters. Hierna begint de tweede iteratie. Dit
houdt in dat elke tweet opnieuw wordt toegewezen aan de cluster waarmee hij de meeste
gelijkenis vertoont. Die gelijkenis wordt nu berekend als de afstand tot het centro¨ıde van
24
de cluster. Indien nodig, wordt de tweet verplaatst naar een andere cluster. Op het einde
van de iteratie worden de centro¨ıden opnieuw herberekend.
Het clusteringsproces stopt wanneer een opgelegde bovengrens voor het aantal iteraties
bereikt wordt, of wanneer de clusters stabiel zijn. Stabiele clusters worden bereikt wanneer de uitvoer van twee opeenvolgende iteraties identiek is. In dit systeem werd gekozen
voor k = 3. Het gebeurt namelijk zelden dat er meer dan drie belangrijke gedachtegangen
in een stroom van tweets vervat zitten. Het maximale aantal iteraties werd vastgelegd
op 50. Dit cijfer werd experimenteel bepaald, aan de hand van de uitvoeringstijd indien
een bepaald aantal iteraties uitgevoerd worden. Op die manier blijft de vertraging die de
clusterstap introduceert in het commentaarsysteem beperkt.
3.3.4
Besluit
In Sectie 3.3 werden twee clusteringstechnieken besproken: een hi¨erarchische aanpak en
het k-means algoritme. De verwachting was dat de hi¨erarchische aanpak de beste oplossing zou bieden tot het clusteringsprobleem, gezien haar flexibiliteit. Deze aanpak bleek
echter niet geschikt om tweets in (bijna) ware tijd te clusteren. Het k-means algoritme
laat w´el toe om in ware tijd te clusteren, maar heeft enkele zwaktes ten opzichte van de
hi¨erarchische aanpak. In de eerste plaats moet men vooraf het aantal clusters vastleggen,
waardoor de kans re¨eel is dat er te veel of te weinig clusters gevormd worden. Ruizige
tweets zullen daarenboven ook meestal niet in afzonderlijke clusters terechtkomen, waardoor er een grotere kans is dat deze invloed hebben op de uiteindelijke samenvatting. Bij
een hi¨erarchische aanpak komen de tweets die drastisch afwijken van alle andere tweets
daarentegen terecht in eenzame, kleine clusters, die uiteindelijk niet worden meegenomen
in de samenvattingsstap.
Een nadeel van beide technieken is dat het clusteren volgens tweetvectoren een na¨ıeve
benadering is. Teksten als ’Red card for Vincent Kompany!’ en ’The ref sent off Kompany for a late tackle.’ horen intrinsiek in dezelfde cluster, maar hebben een enorm lage
similariteit volgens deze aanpak. Tot op heden bestaan er echter geen snelle methodes
die deze similariteit beter kunnen meten.
3.4
Samenvatten van tweets
De laatste stap van het commentaaralgoritme is het samenvatten van een set tweets. In
Hoofdstuk 2 zagen we reeds dat er twee grote stromingen zijn in de literatuur wanneer het
aankomt op het genereren van samenvattingen van tweets, namelijk selectietechnieken en
25
het Phrase Reinforcement (PR) algoritme. Eerst en vooral wordt de weging van termen
besproken in Sectie 3.4.1. Deze weging wordt gebruikt in de implementatie voor beide
samenvattingsalgoritmen. Vervolgens bespreken we de eerste samenvattingstechniek. Dit
is de relatief eenvoudige selectietechniek, waarbij we op zoek gaan naar de meest representatieve tweet. Deze techniek wordt besproken in Sectie 3.4.2. De tweede techniek is
het PR-algoritme. De implementatie hiervan wordt besproken in Sectie 3.4.3. Ten slotte
volgen in Sectie 3.4.4 enkele conclusies.
3.4.1
Berekenen van TF-IDF gewichten
Zoals reeds in Sectie 2 werd gesteld, is TF-IDF een krachtig instrument om samenvattingen te genereren. In de literatuur [25, 26, 27] stelt men voornamelijk voor om deze
metriek te gebruiken wanneer men een selectietechniek toepast, zoals in Sectie 3.4.2. In
deze masterproef worden TF-IDF gewichten ook gebruikt wanneer het PR algoritme wordt
toegepast, zoals zal blijken in Sectie 3.4.3.
Sectie 2.2.2.2 introduceerde reeds de hybrid TF-IDF metriek. Deze beschouwt ´e´en enkele
tweet als ´e´en document, maar om de TF component te berekenen wordt de verzameling
van alle updates als ´e´en groot document gezien. Concreet geeft dit volgende formules:
Aantal keer dat het woord voorkomt in alle tweets
Aantal woorden in alle tweets
Aantal tweets in set
IDF (woord) =
Aantal tweets waarin het woord voorkomt
T F IDF (woord) = T F (woord) ∗ log2 (IDF (woord))
T F (woord) =
(3.2)
(3.3)
(3.4)
Algoritme 1 beschrijft de procedure om de TF-IDF gewichten van alle gebruikte woorden
in een set van tweets te berekenen in pseudocode. Eerst worden alle tweets achter elkaar
geplakt zodat ze ´e´en lange zin vormen. Deze zin wordt daarna gesplitst op witruimte. In
de inhoudelijke filter (Sectie 3.2.2) werden de tweets reeds genormaliseerd. Bovenop die
normalisatiestap worden alle ’woorden’ na splitsing ook nog eens genormaliseerd. Deze
normalisering houdt in dat hoofdletters vervangen worden door kleine letters en aangrenzende punctuatie aan het einde van het woord verwijderd wordt. Dit gebeurt op dezelfde
manier als in Sectie 3.3.1, zodat verschillende schrijfwijzen en fout gespelde woorden op
elkaar mappen. Het aantal voorkomens van deze genormaliseerde woorden wordt bijgehouden. Eens het aantal voorkomens van elk genormaliseerd woord gekend is, itereert
het algoritme nogmaals over alle woorden. In deze iteratie wordt het TF-IDF gewicht
van elk genormaliseerd woord bepaald. Hiervoor bepaalt het systeem het aantal (genormaliseerde) tweets dat het (genormaliseerde) woord in kwestie bevat. Dan is meteen alle
informatie aanwezig om Formules 3.2, 3.3 en bijgevolg Formule 3.4 te berekenen voor het
26
Algoritme 1 TF-IDF gewichten berekenen
Require: Set tweets
1: for all tweet in tweets do
2:
V olledigeT ekst ← V olledigeT ekst + tweet
3: end for
4: AlleW oorden ← V olledigeT ekst.split(witruimte)
5: for all W oord in AlleW oorden do
6:
Normaliseer W oord
7:
Incrementeer aantal voorkomens van GenormaliseerdW oord
8: end for
9: for all W oord in AlleW oorden do
10:
tweetsDieGenormaliseerdW oordBevatten ← 0
11:
for all tweet in tweets do
12:
if Genormaliseerdetweet bevat GenormaliseerdW oord then
13:
tweetsDieGenormaliseerdW oordBevatten + +
14:
end if
15:
end for
16:
Bereken TF, IDF en TF-IDF volgens Formules 3.2, 3.3 en 3.4
17: end for
beschouwde genormaliseerd woord.
De genormaliseerde woorden en hun berekend gewicht worden samen opgeslagen, zodat
ze achteraf eenvoudig op te vragen zijn door de samenvattingsalgoritmen. De berekening
van deze gewichten is met andere woorden steeds een pre-processing stap.
3.4.2
Algoritme 1: Selectie van de meest representatieve tweet
Het eerste samenvattingsalgoritme voor tweets dat gebruikt werd is de selectietechniek.
Om een samenvatting van tweets te genereren, is deze techniek de meest voor de hand
liggende. Dit algoritme gaat op zoek naar de tweet die het meest representatief is voor
de hele set tweets. Zoals reeds eerder vermeld werd, steunt deze techniek op de TF-IDF
wegingen van de woorden in de set van tweets. Om de meest representatieve tweet te
bepalen, wordt voor elke tweet het totale gewicht opgeteld en vervolgens gedeeld door
een normalisatiefactor. Aangezien TF-IDF een natuurlijke voorkeur heeft voor langere
zinnen, wordt die normalisatiefactor ge¨ıntroduceerd. In formules ziet de berekening van
het gewicht van de tweet er als volgt uit:
N ormalisatief actor (tweet) = max(M inimale gewenste lengte van samenvatting,
Aantal woorden in tweet)
Gewicht (tweet) =
#W oorden
P in tweet
T F IDF (W oordi )
i=0
N ormalisatief actor(tweet)
27
(3.5)
(3.6)
Zoals te zien is in Formule 3.5, wordt de normalisatiefactor bepaald door twee factoren.
Enerzijds is er de lengte van de tweet die in beschouwing genomen wordt, anderzijds is
er een ondergrens voor de gewenste lengte van de gekozen tweet. De normalisatiefactor
zorgt ervoor dat het totale gewicht van de tweet wordt uitgemiddeld over de lengte van
de tweet. Wanneer de tweet echter korter is dan de opgelegde ondergrens voor de samenvatting, zal het gewicht van de tweet gedeeld worden door die ondergrens. Dit is ook af te
lezen in Formule 3.6. De normalisatiefactor zorgt er met andere woorden dus niet enkel
voor dat langere tweets niet bevoordeeld worden, maar bestraft daarenboven ook te korte
tweets.
Bijgevolg is de tweet die de hoogste score haalt de meest relevante. Het is ook mogelijk om de k meest relevante tweets te selecteren, waarbij k > 1. In dat geval worden
de k hoogst scorende tweets gekozen, met als extra voorwaarde dat de gelijkenis tussen
deze k tweets onder een bepaalde grens ligt. De k meest relevante tweets zijn dus niet
noodzakelijk de k tweets met de hoogste score.
3.4.3
Algoritme 2: Phrase Reinforcement
De tweede samenvattingstechniek die onderzocht wordt in deze masterproef is een aangepaste versie van het Phrase Reinforcement (PR) algoritme van Sharifi et al. [22]. Deze
techniek maakt gebruik van een graaf om de samenvatting te genereren. Anders dan bij de
na¨ıeve selectietechniek is het resultaat van het PR-algoritme geen ’letterlijke’ tweet. Het
PR-algoritme combineert elementen uit verschillende tweets tot ´e´en zin. Die combinatie
wordt verwezenlijkt door de inkomende tweets die een bepaald centraal thema bespreken
op te splitsen, om vervolgens de afgesplitste delen voor te stellen als knopen in een graaf.
Hoe meer een bepaalde overgang tussen woorden voorkomt, hoe dominanter die overgang
in de graaf wordt. De samenvatting van de set tweets wordt vervolgens bekomen door
het zwaarst gewogen pad rond het centrale thema te zoeken in de graaf. In Sectie 3.4.3.1
wordt kort uitgelegd hoe het centrale thema voor de samenvatting bepaald wordt. De opbouw van de PR-graaf wordt gedetailleerd uitgelegd in Sectie 3.4.3.2. Ten slotte bespreekt
Sectie 3.4.3.3 hoe de uiteindelijke samenvatting van een cluster uit de graaf gehaald wordt.
Figuur 3.3 geeft een voorbeeld van hoe een dergelijke graaf er kan uitzien. De graaf in dit
voorbeeld is opgebouwd uit drie tweets uit de wedstrijd Everton - Manchester City:
• LUKAKUUU! EFC 1-0 MCFC Terrible defending by Lescott Hart should have done
better
• Hart should have done better, where have we heard that one before?
28
Figuur 3.3: Een PR-graaf opgebouwd uit drie tweets. De donkere knopen zijn knopen die
niet-unieke inkomende of uitgaande links hebben.
• LUKAKUUU! GREAT START!
De werking van het PR-algoritme zal in de volgende deelsecties worden uitgelegd aan de
hand van deze voorbeeldgraaf.
3.4.3.1
Selectie van een centraal thema
Het bepalen van een centraal thema in een verzameling tweets is een complex probleem.
Topic models (zie Sectie 2.2.1.2) zijn niet bruikbaar in deze context, aangezien ze een
trainingsperiode vereisen. Die trainingsperiode zou extra vertraging veroorzaken in het
systeem, wat niet wenselijk is. Net zoals bij clustering het geval was moet ook hier geopteerd worden voor een na¨ıeve aanpak. De in Sectie 3.4.1 voorgestelde TF-IDF weging
kan hier een uitweg bieden. Die gewichten geven namelijk aan hoe dominant bepaalde
termen zijn in een verzameling van tweets. De meest voor de hand liggende optie is dan
ook om te kiezen voor de term die het grootste TF-IDF gewicht heeft.
De keuze voor deze term als centraal thema heeft wel enkele gevolgen voor het verdere
systeem. Zo is het noodzakelijk dat knopen in de graaf op dezelfde manier genormaliseerd
zijn als wanneer de TF-IDF gewichten bepaald werden. Indien dit niet het geval is, zal
het centrale thema niet teruggevonden worden in de graaf en wordt het onmogelijk om in
een verdere stap een samenvattende zin te genereren. In de voorbeeldgraaf uit Figuur 3.3
zou ’hart’ bijvoorbeeld het centrale thema kunnen zijn.
Een potenti¨ele zwakte van deze aanpak is dat de dominante termen, qua weging, vaak
dezelfde zijn (denk bijvoorbeeld aan hashtags die niet als topic statements gekwalificeerd
werden). Dit verhoogt het risico op (storende) herhalingen.
29
3.4.3.2
Opbouwen van de graaf
Zoals in Sectie 3.4.3.1 reeds gezegd werd, bestaat de graaf uit knopen die woorden voorstellen en overgangen tussen deze knopen. Deze graaf maakt het mogelijk om stukken
tekst uit verschillende tweets te combineren tot ´e´en zin. Figuur 3.3 toont een voorbeeldgraaf. De opbouw van de graaf wordt aan de hand van dit voorbeeld in verschillende,
incrementele stappen uitgelegd.
Eerst en vooral bespreken we de basisstructuur van de graaf. Om de graaf te representeren wordt gebruikgemaakt van twee datastructuren. Enerzijds is er een structuur
die een knoop voorstelt (genaamd WordGraphNode), anderzijds is er een structuur voor de
voorstelling van een overgang tussen twee knopen in de graaf (genaamd WordGraphArc).
De graaf wordt voorgesteld als een mapping van namen van knopen op WordGraphNode
datastructuren. Op die manier kan een knoop eenvoudig worden opgevraagd uit de graaf.
Een WordGraphNode bevat een overzicht van alle inkomende en uitgaande links in de
knoop. Dit overzicht houdt voor elke link bij wat de naam van de knoop aan het andere
uiteinde van de link is en houdt een instantie van de WordGraphArc datastructuur bij.
Deze datastructuur houdt de kenmerken van de link bij, zoals de naam van de knoop
waarnaar de link wijst en het gewicht van de link.
Wanneer een verzameling tweets samengevat moet worden, worden alle tweets rond een
bepaald centraal thema uit de verzameling tweets gehaald. In de meest eenvoudige versie
worden de tweets vervolgens gesplitst en genormaliseerd, zodat er geen hoofdletters en
leestekens meer overblijven. Dit gebeurt tweet per tweet. Elk woord uit de gesplitste
tweet wordt toegekend aan een knoop. Indien er nog geen knoop bestond voor dit woord,
wordt een nieuwe knoop aangemaakt. Als er een voorafgaand woord in de tweet is, wordt
vervolgens aan een inkomende link vanuit het voorgaande woord aan de knoop toegevoegd.
Hetzelfde wordt gedaan voor een eventuele uitgaande link naar een volgend woord. Het
gewicht van een inkomende link wordt bepaald door het aantal keren dat die link effectief
voorkomt. Hoe meer tweets de twee woorden in kwestie dus na elkaar gebruiken, hoe
groter het gewicht van de link tussen die twee woorden is. De graaf in Figuur 3.3 toont
de basisstructuur die bekomen wordt. Zo komt de link tussen ’hart’ en ’should’ twee keer
voor, nl. in de eerste en tweede tweet.
Doordat alle woorden in de graaf genormaliseerd zijn, is de output van deze graaf moeilijk
leesbaar. De output bevat immers geen hoofdletters of leestekens. Om dit probleem op te
lossen, werd de WordGraphArc datastructuur uitgebreid. Naast het gewicht en de genormaliseerde naam van de knoop aan het uiteinde van de link, wordt een lijst met mogelijke
representaties van dat genormaliseerde woord bijgehouden. Die representatielijst bevat
30
vormen van het woord in kwestie, zoals het eruit zag v´oo´r normalisatie. Een illustratie
hiervan, aan de hand van de voorbeeldgraaf in Figuur 3.3, is dat de knoop met naam
’lukakuuu’ in de tweets eigenlijk geschreven was als ’LUKAKUUU!’. Beide links in die
knoop zullen met andere woorden die representatie bevatten. Ook meerdere representaties zijn mogelijk, zoals bijvoorbeeld het geval is voor de link tussen ’done’ en ’better’.
De knoop ’better’ wordt in de tweets namelijk eens geschreven als ’better’, maar ook eens
als ’better,’. Op die manier worden leestekens ook meegenomen in de uitvoer.
De toevoeging van representaties zorgt voor meer leesbaarheid in de uitvoer, terwijl de
intrinsieke structuur van de graaf ongewijzigd blijft. Er wordt namelijk geen kwaliteit ingeboet op het vlak van mapping van licht verschillende woorden op ´e´enzelfde knoop. Toch
zijn er nog steeds veel situaties waarin knopen slecht op elkaar mappen. Wanneer we bijvoorbeeld de graaf uit Figuur 3.3 beschouwen, is het perfect mogelijk dat Lukaku’s naam
op een andere manier geschreven wordt. Wanneer de naam geschreven is als ’Lukakuu!’,
zal die bijgevolg (na normalisatie tot ’lukakuu’) niet in dezelfde knoop terechtkomen als
wanneer de naam geschreven wordt als ’lukakuuu’. Dit probleem wordt echter opgevangen
door de normalisatiestap in de inhoudelijke filter (zie Sectie 3.2.2). Dankzij deze extra
stap in de inhoudelijke filtering gaan er nog meer schrijfwijzen van ´e´enzelfde woord op
dezelfde knoop in de graaf mappen. Dit komt de kwaliteit van de samenvatting enkel ten
goede. Deze stap zal er dan ook voor zorgen dat de kans op combinatie van verschillende
tweets verhoogt, doordat knopen in de graaf meer inkomende en uitgaande links zullen
hebben.
In de praktijk was het echter opvallend dat er nog steeds veel letterlijke tweets uit de
graaf gehaald worden. Dit fenomeen wordt veroorzaakt door de retweets die voorbij de
filterstap raakten. Zoals in Sectie 3.2.1 werd aangegeven, worden niet alle retweets verwijderd uit de stroom van tweets. Eerder werd reeds vermeld dat de weging van de links
tussen twee woorden afhangt van hoe vaak die woorden na elkaar gebruikt werden in de
tweets. Bijgevolg hebben de woordcombinaties die gebruikt worden in een (op korte tijd)
massaal geretweete status een groot gewicht in de graaf. Retweets zijn met andere woorden te dominant tijdens de opbouw van de graaf. Om het belang van de retweets toch
nog mee te nemen, maar hun dominantie grotendeels uit te schakelen, werd de weging
van een retweet in de opbouw van de graaf verminderd met factor 10. Zo zal een link uit
een status die 10 keer geretweet werd hetzelfde gewicht hebben als een link die gebruikt
werd in twee unieke statussen.
Figuur 3.4 geeft, aan de hand van twee voorbeeldknopen, weer hoe de PR-graaf uiteindelijk intern opgeslagen wordt. Deze graaf zou in het systeem als volgt bijgehouden
worden worden:
31
Figuur 3.4: Een illustratie van de interne structuur van de PR-graaf.
Map<String, WordGraphNode> graaf =
{(nice -> nodeNice),(goal -> nodeGoal),...},
Hierbij zijn nodeNice en nodeGoal de WordGraphNode instanties zijn van de afgebeelde
knopen. Deze instanties bevatten dan elk een map met inkomende links en een map
met uitgaande links. Figuur 3.4 toont ook de inhoud van inkomende en uitgaande links
(WordGraphArc instanties) voor beide knopen.
3.4.3.3
Samenvatting uit de graaf bepalen
Wanneer de graaf is opgebouwd, rest ons enkel nog de laatste stap: de samenvatting
afleiden uit de PR graaf. Die opbouw start vanuit het centrale thema dat bekomen werd
in Sectie 3.4.3.1. Algoritme 2 beschrijft deze procedure in pseudocode.
De effectieve opbouw van de zin begint bij het ophalen van de knoop die het centrale
thema bevat. Vervolgens begint het algoritme aan een lus, voorgesteld vanaf lijn 6 tot en
met lijn 20 in Algoritme 2. Die lus zorgt ervoor dat de samenvattende zin wordt uitgebreid
door woorden vooraan of achteraan de zin toe te voegen. Dit proced´e loopt door zolang
de zin niet aan een vooraf ingestelde maximale lengte zit, of tot wanneer de zin niet meer
uitgebreid kan worden. In deze lus worden steeds het eerste en laatste woord van de zin
bijgehouden. Deze zijn nodig om de inkomende en uitgaande links van de zin in de graaf
te kunnen opvragen. Indien er nog inkomende en/of uitgaande links zijn, worden de lijsten
hiervan opgehaald uit de respectievelijk eerste en laatste node van de huidig gevormde
zin. De inkomende of uitgaande link met het hoogste gewicht wordt vervolgens gevolgd.
Om te bepalen welke woordrepresentatie aan de outputzin wordt toegevoegd, wordt de
lijst van mogelijke representaties die bij de link hoort opgehaald. De representatie die
het meeste voorkomt wordt dan geselecteerd als aanvulling op de outputzin. Ten slotte
worden de genomen links tussen het oude eerste (of laatste) woord en het nieuwe eerste
(of laatste) woord verwijderd, zodat er geen oneindige lus kan optreden. Na deze stap
32
begint de volgende iteratie van de lus. Uiteindelijk wordt de gegenereerde samenvatting,
indien nodig, nog voorzien van een hoofdletter aan het begin en een punt op het einde
(lijn 21).
Algoritme 2 Samenvatting bepalen uit de PR graaf
Require: Graaf , T hema
1: Samenvatting ← T hema
2: HuidigeKnoop ← Graaf .get(T hema)
3: EersteKnoopV anZin ← T hema
4: LaatsteKnoopV anZin ← T hema
5: Lengte ← 1
6: while Lengte ≤ M axLengte and U itbreidingM ogelijk do
7:
EersteKnoop ← Graaf .get(EersteKnoopV anZin)
8:
LaatsteKnoop ← Graaf .get(LaatsteKnoopV anZin)
9:
InkomendeLinks ← EersteKnoop.haalInkomendeLinksOp()
10:
U itgaandeLinks ← LaatsteKnoop.haalUitgaandeLinksOp()
11:
if Uitgaande en/of Inkomende links aanwezig then
12:
Zoek link met grootste gewicht
13:
Haal beste representatie voor die link op
14:
Voeg representatie vooraan/achteraan de Samenvatting toe
15:
Update EersteKnoopV anZin/LaatsteKnoopV anZin
16:
Lengte ← Lengte + 1
17:
else
18:
U itbreidingM ogelijk ← f alse
19:
end if
20: end while
21: Voeg, indien nodig, een hoofdletter aan het begin en een punt aan het eind van de zin
toe
22: return Samenvatting
3.4.4
Besluit
In Sectie 3.4 werden twee samenvattingstechnieken besproken: een selectietechniek en het
PR-algoritme. Het is in deze masterproef de bedoeling om beide technieken te testen en
hun prestaties te evalueren ten opzichte van de commentaar op televisie.
Sectie 3.4.2 besprak de implementatie van de selectietechniek. Deze techniek is nuttig,
maar tegelijk ook risicovol. Via deze techniek is het steeds zeker dat er enige samenhang
in de gegenereerde zinnen zal zitten. Het risico is echter dat wanneer er eventueel spamtweets tot in deze stap geraken, die volledig in de samenvatting terecht kunnen komen.
Sommige Twittergebruikers maken immers gebruik van de zogenaamde trending topics
om spam, mede met behulp van zelf gegenereerde retweets, te verspreiden. Het spreekt
33
voor zich dat zulke tweets niet wenselijk zijn in een commentaarstroom. Het resultaat van
deze techniek hangt dan ook sterk af van de filterstap. Wanneer bijvoorbeeld de inhoudelijke filter weggelaten zou worden, zouden er in quasi alle gegenereerde commentaren
storende hyperlinks of hashtags voorkomen. Het toevoegen van een spamfilter zou het
risico van deze methode wel kunnen wegnemen.
De gewijzigde versie van het Phrase Reinforcement (PR) algoritme, waarvan de werking in Sectie 3.4.3 besproken werd, is minder vatbaar voor spam. Dit komt door de
aangepaste weging van retweets. Er moeten namelijk al erg veel retweets optreden opdat
een spamtweet invloed zou hebben op de samenvatting. Sharifi et al. [22] pasten het PRalgoritme voornamelijk toe op grote datasets. De beoogde toepassing in deze masterproef,
voetbalcommentaar, werkt doorgaans met kleinere sets. Om beter te kunnen omgaan met
die kleinere datasets werd het algoritme van Sharifi et al. [22] op twee punten aangepast.
Enerzijds stellen Sharifi et al. voor om de PR graaf enkel op te bouwen rond het centrale
thema. Tweets die m.a.w. het centrale thema niet bevatten, worden niet opgenomen in
de graaf. Dit maakt de keuzemogelijkheden echter nog kleiner, waardoor er amper verschillen in gewichten optreden in de graaf en de gemaakte keuzes relatief willekeurig zijn.
Het tweede punt waarop het algoritme afwijkt van de uitleg van [22] is het genereren van
de samenvattende zin. Sharifi et al. stellen voor om enkel niet-unieke paden in de graaf
te volgen bij het opbouwen van de zin. Dit komt erop neer dat er enkel links met een
gewicht groter dan 1 genomen mogen worden. Uit experimenten bleek echter dat deze
regel ervoor zorgde dat de lengte van de gegenereerde zinnen erg vaak te kort was (≤ 3
woorden). Daarom is er in deze masterproef voor gekozen om ook het volgen van unieke
links toe te laten. Dit zorgt uiteraard wel voor een minder goede samenhang van de
samenvatting.
3.5
Evaluatie
Nadat alle individuele componenten van het generatiealgoritme uit dit hoofdstuk voorgesteld zijn, volgt een korte evaluatie. Tabellen 3.1 en 3.2 bevatten enkele resultaten
die bekomen werden wanneer gebruikgemaakt werd van het in dit hoofdstuk beschreven
basisalgoritme. Hier zien we al een duidelijk verschil tussen de implementatie die gebruik
maakt van de selectietechniek (Tabel 3.1) en de implementatie die het Phrase Reinforcement algoritme gebruikt om samenvattingen te genereren (Tabel 3.2).
Een opvallend aspect van de variant die PR gebruikt is dat er erg weinig samenhang in
de gegenereerde tekst zit. Dit is enerzijds te wijten aan de gebrekkige clusterstap. De
clusters zijn niet altijd even groot, waardoor er minder sterke links in de graaf zijn, en de
gegenereerde zin redelijk willekeurig is. Zoals reeds vermeld werd in Sectie 3.3.3, hangt
34
Tabel 3.1: Commentaar gegenereerd aan de hand van de selectietechniek voor de eerste minuten
uit de wedstrijd Arsenal-Liverpool.
Tijd
0’00”
0’30”
1’00”
1’30”
2’00”
2’30”
Commentaar
Initialisatie algoritme
Game on! COME ON YOU GUNNERS! arsenal. I am so nervous for
the AFCvLFC game. Let’s go Liverpool LFC YNWA ?
Arsenal vs Liverpool. Come on you Reds! Liverpool liverpool liverpool
liverpool liverpool *chanting voice*. Time to watch Arsenal to beat
Liverpool and stay top of the league.
Nervous for this Liverpool game ? .and now, the game of the day.
Liverpool! Come on you mighty Reds!
KICK-OFF Liverpool get our last BPL match under way on Saturday
at the Emirates Stadium against Arsenal. Liverpool vs Arsenal. COME
ON LIVERPOOL. ? ? Arsenal - Liverpool! ? ?!
Let the game begin! Arsenal vs Liverpool. Kick off let’s go lfc LFC.
Go gunners ! Arsenal: We’re underway at the Emirates. Come on you
Gunners! 0-0 (1).
Tabel 3.2: Commentaar gegenereerd aan de hand van het PR algoritme voor de eerste minuten
uit de wedstrijd Arsenal-Liverpool.
Tijd
0’00”
0’30”
1’00”
1’30”
2’00”
2’30”
Commentaar
Initialisatie algoritme
Game on! Come on the table. In the bench. Man in BBQ sauce last
night. for this is the teams emerge. ? ? : ? realmadrid FCBarcelona
CFC AFC LFC vs. Liverpool LFC YNWA Let’s go.
Here we Go Arsenal V liverpool liverpool ? ? : LIVE ford Saturday
night in. Off is moments away in the game of the season so far at the
best. Game. Come on arsenal ! SNF LFC YNWA AFCVLFC LFC
Come.
Come on you reds! walk alone <3. Hoping for the teams emerge.
AFCvLFC nerve wrecking. On LFC lets do this Game on Come on
arsenal COME in my hand,cheeky score.
Underway at the Emirates Stadium against Arsenal vs Liverpool. ? ?
- Liverpool! get our. Massive Game on the Emirates. Come on arsenal
! LFC YNWA ARSLIV LIVE on you. Lets do this game I reckon our
bench is it! must win this. is up.
”Arsenal: We’re underway at the Emirates. Come on you Gunners! 0-0
(1). Hoping for a draw would be a good soccer dis evening! Top of the
game begin between LFC let’s go go Liverpool. ? ? Like Obama.
35
het resultaat van het k-means algoritme ook af van de gekozen initi¨ele clusters, wat deze
clusteringstechniek nog onbetrouwbaarder maakt. Anderzijds is de gebrekkige samenhang
van het verhaal ook een gevolg van het feit dat tweets bij de opbouw van de graaf op witruimte gesplitst worden. Bepaalde woorden die samen horen (bijvoorbeeld ’Manchester
United’) worden hierdoor opgesplitst over twee knopen. Bijgevolg bestaat de kans dat het
geheel van die twee woorden wordt weggegooid en er dus belangrijke informatie verloren
gaat. Tabel 3.2 toont met ’Come on the table.’ een mooi voorbeeld van een foute samenvoeging van deelzinnen.
Verder is het ook duidelijk dat er in een voetbalwedstrijd niet elke 30 seconden verschillende gebeurtenissen zijn en er dus simpelweg niet genoeg samenhangende tweets
binnenkomen op deze 30 seconden om een kwalitatieve PR graaf te bekomen. De selectietechniek verbergt deze gebreken, aangezien er hoe dan ook een tweet geselecteerd wordt,
zelfs al bevat een cluster slechts ´e´en tweet. Hoewel je dit als eindgebruiker niet merkt, is
het niet de bedoeling dat ’rustige’ momenten in de wedstrijd even veel aandacht krijgen
als belangrijke momenten. Wat betreft de samenhang van het verhaal is de selectietechniek afhankelijk van de gebruiker die de status deelde, maar over het algemeen geeft dit
ook geen problemen.
Het algoritme is voor beide versies snel genoeg om in (bijna) ware tijd te werken. De
totale vertraging ten opzichte van de echte gebeurtenissen blijft immers beperkt. De vertraging bestaat uit drie componenten: de reactiesnelheid van Twitteraars, de grootte van
het werkingsinterval (voor deze evaluatie 30 seconden) en ten slotte de uitvoeringstijd van
de filter-, cluster- en samenvattingsstap.
De reactiesnelheid van Twitteraars hangt af van de manier waarop ze de wedstrijd bekijken. Mensen die op televisie kijken, kijken namelijk al met enige vertraging naar de
wedstrijd. Als we er echter vanuit gaan dat alle tweets uit het stadion komen, blijft deze
vertraging beperkt. De effectieve uitvoering van het algoritme (filteren, clusteren en samenvatten) duurt typisch maximaal vijf seconden. Bovenop die vijf seconden komt dan
nog de grootte van het interval. Dit alles geeft samen een vertraging die kleiner is dan
´e´en minuut, wat aanvaardbaar is. Televisie- en radio-uitzendingen komen namelijk zelf
ook steeds met enige vertraging in de huiskamers door de regie en transmissie, waardoor
de beelden weinig of niet vertraagd moeten worden.
3.6
Besluit
In dit hoofdstuk werd een generatiealgoritme voor voetbalcommentaar op basis van een
vast tijdsinterval voorgesteld. Dit algoritme doorloopt, volgens een vast tijdsinterval,
36
drie stappen. De tweets die tijdens het interval binnenkwamen, worden eerst gefilterd.
Vervolgens worden de resterende tweets geclusterd en worden de resulterende clusters samengevat.
De eerste stap, de filterstap, werd besproken in Sectie 3.2. In Sectie 3.3 werd de clusterstap
besproken. Hier werden twee mogelijke clusteringstechnieken besproken: de hi¨erarchische
aanpak en het k-means algoritme. Uit experimenten bleek dat enkel het k-means algoritme geschikt is voor een toepassing in (bijna) ware tijd. Ook om de clusters samen te
vatten (zie Sectie 3.4) werden twee mogelijke manieren voorgesteld. Enerzijds is er de
selectietechniek, anderzijds het Phrase Reinforcement (PR) algoritme. Beide technieken
bleken hun voor- en nadelen te hebben. Zo blijkt uit Sectie 3.5 dat de selectietechniek
tot meer samenhangende samenvattingen leidt dan het PR-algoritme, maar op zijn beurt
dan weer gevoeliger is aan spam.
De keuze voor een beperkte evaluatie is het gevolg van de bedenkelijke kwaliteit van de
commentaarstroom, zoals ook blijkt in Sectie 3.5. Kiezen om te werken volgens een vast
tijdsinterval bleek een na¨ıeve benadering te zijn. Deze bevindingen hebben ertoe aangezet om over te schakelen naar een tweede algoritme voor de generatie van commentaar.
Dit alternatief algoritme probeert de problemen die in Sectie 3.5 werden aangekaart op
te lossen met behulp van variabele timing en real-time clustering. De werking van dit
systeem komt uitvoerig aan bod in Hoofdstuk 4.
37
Hoofdstuk 4
Generatiealgoritme voor
voetbalcommentaar met clustering
in ware tijd
Hoofdstuk 3 besprak reeds een generatiealgoritme voor voetbalcommentaar. Dit algoritme
maakt gebruik van een vast tijdsinterval. Het daar beschreven idee was echter duidelijk
nog voor verbetering vatbaar. Zo gaat dit algoritme er bijvoorbeeld vanuit dat er steeds
een vast aantal clusters in de Twitterstroom te vinden is. Ook de idee om te werken met
een vast tijdsinterval bleek na¨ıef: momenten waarop er veel actie is op Twitter krijgen in
de gegenereerde commentaarstroom exact evenveel aandacht als stille momenten.
Dit hoofdstuk beschrijft een generatiealgoritme dat een uitbreiding is op de versie uit
Hoofdstuk 3. Het verbeterde algoritme tracht de zwaktes die in het vorige hoofdstuk
werden beschreven aan te pakken. Sectie 4.1 beschrijft de algemene vorm van het nieuwe
algoritme. De filterstap uit Hoofdstuk 3 bleef bewaard in dit systeem. Secties 4.2 en 4.3
beschrijven de vernieuwingen op het vlak van clustering en samenvatten van tweets. In
Sectie 4.4 volgen enkele conclusies.
4.1
Basisidee achter het algoritme
Zoals hiervoor reeds vermeld werd, heeft dit algoritme tot doel om de zwaktes van het
algoritme uit Hoofdstuk 3 weg te werken. De uitbreiding die in dit hoofdstuk wordt
besproken maakt daarom gebruik van een variabele timing. Elke seconde worden de
tweets die gedurende die seconde binnenkwamen gefilterd en toegekend aan een cluster.
Nadat elke tweet (die voorbij de filterstap geraakte) toegekend is aan een cluster, worden
de aanwezige clusters geanalyseerd. Dit houdt in dat per cluster beslist wordt of de cluster
in kwestie al dan niet verwijderd moet worden. Vervolgens moet het systeem bepalen of
38
de verwijderde cluster samengevat moet worden. Om het mechanisme nog verder uit te
breiden werd er ook een mechanisme voorzien om ’stille’ momenten op te vangen. Dit
mechanisme zorgt ervoor dat de commentator een willekeurig feit over een concept in de
tweets genereert. De exacte werking van het clusteringsmechanisme en het samenvatten
van de clusters wordt verderop besproken in deze masterproef, in Secties 4.2 en 4.3. Figuur
4.1 illustreert de werking van het algoritme.
4.2
Clusteren van tweets
Aangezien dit generatiealgoritme met een variabele timing werkt, moet het clusteringsmechanisme ook een verandering ondergaan. Het feit dat de tweets per seconde verwerkt
moeten worden, betekent ook dat de toekenning van de tweets aan een cluster binnen de
seconde moet kunnen gebeuren. In de literatuur met betrekking tot First Story Detection (zie Sectie 2.2.1.4) werd reeds een gelijkaardig clusteringsprobleem besproken. Het
clusteringsmechanisme dat gekozen werd pakt dit probleem echter op een andere manier
aan.
Het clusteringsmechanisme dat door dit generatiealgoritme gebruikt wordt, heeft als
sterkte dat er op voorhand geen aantal clusters opgegeven moet worden. Clusters worden
met andere woorden aangemaakt en verwijderd wanneer nodig. Elke inkomende tweet
wordt hierbij vergeleken met de aanwezige clusters. Indien uit deze vergelijking blijkt dat
er geen enkele cluster dicht genoeg aanleunt bij de tweet, cre¨eert het systeem een nieuwe
cluster. In het andere geval vervoegt de tweet de meest passende cluster.
Aangezien de vergelijking binnen aanvaardbare tijd tot een goed einde gebracht moet
worden, is het onmogelijk om elke tweet in elke cluster te beschouwen. Daarom kozen we
ervoor om per cluster een kern van unieke tweets bij te houden. Deze kern bevat slechts
een fractie van de tweets in de cluster en wordt opgebouwd tijdens de opbouw van de
cluster. De eerste k unieke tweets die aan de cluster worden toegevoegd, worden lid van
de kern. Deze variabele werd vastgelegd op 20. Met unieke tweets wordt bedoeld dat
retweets niet aanvaard worden. Op die manier proberen we de diversiteit in de cluster
wat hoger te houden. Om inkomende tweets eenvoudig met clusters te kunnen vergelijken,
houdt een cluster ook de gemiddelde tweetvector van de clusterkern bij. Die gemiddelde
vector wordt ook steeds meteen ge¨
updatet wanneer een nieuwe tweet in de kern terecht
komt.
De totale werking van het clusteringssysteem wordt in pseudocode ge¨ıllustreerd in Algoritme 3.
39
(a) De eerste seconde van het algoritme...
(b) Enkele seconden later...
Figuur 4.1: Een illustratie van de werking van het algoritme. In Figuur 4.1(a) zien we enkele
tweets binnenkomen in de eerste seconde. Deze tweets worden gefilterd en vervolgens toegekend
aan clusters. Deze twee clusters worden tijdens de toekenning gecre¨eerd. Enkele seconden later,
in Figuur 4.1(b), zien we dat de eerste cluster intussen inactief geworden is en dat een nieuwe
derde cluster aangemaakt wordt. De inactieve eerste cluster wordt verwijderd en (eventueel)
samengevat.
40
Algoritme 3 Tweets uit de afgelopen seconde toekennen aan een cluster.
Require: Set T weets
1: for all T weet in T weets do
2:
BesteCluster ←NULL
3:
BesteGelijkenis ← 0
4:
for all Cluster in ActieveClusters do
5:
if Gelijkenis(T weet, ClusterKern) > BesteGelijkenis then
6:
BesteCluster ← Cluster
7:
BesteGelijkenis ← Gelijkenis(T weet, ClusterKern)
8:
end if
9:
end for
10:
if BesteGelijkenis > M inimaleGelijkenis then
11:
Voeg T weet toe aan BesteCluster (en eventueel aan de kern van deze cluster)
12:
else
13:
Start nieuwe cluster met T weet
14:
end if
15: end for
4.3
Samenvatten van tweets
De grootste problemen met het eerste generatiealgoritme lagen, zoals eerder vermeld, niet
bij het samenvatten van de tweets. De selectietechniek lijkt geen betere resultaten te kunnen behalen dan voorheen, aangezien de uitvoer daarvan quasi volledig afhangt van de
filterstap en de aanwezige clusters. De resultaten die in Sectie 3.6 werden besproken toonden echter wel aan dat er relatief weinig samenhang in de output van het PR algoritme
zat. Daarom werd het aangepaste PR algoritme uit Hoofdstuk 3 tijdens de ontwikkeling
van dit uitgebreide generatiealgoritme verbeterd. Deze verbetering wordt besproken in
Sectie 4.3.1.
Aangezien de uitgebreide versie van het generatiealgoritme met variabele timing werkt,
vergroot ook het risico op ’stille’ momenten in de commentaarstroom. Om die momenten
op te vullen, werd ook een systeem gecre¨eerd dat aan de wedstrijd gerelateerde, willekeurige feiten van het internet haalt. Dit systeem wordt in Sectie 4.3.2 uit de doeken gedaan.
Een ander gevolg van de variabele timing is dat het systeem nu voortdurend moet controleren wanneer een cluster samengevat moet worden. Dit controlesysteem is erg belangrijk
voor de samenvattingsstap en wordt gedetailleerd besproken in Sectie 4.3.3.
4.3.1
Aanpassing van het PR algoritme
Een algemeen probleem met de eerste versie van het PR algoritme was dat de uitvoer weinig samenhang vertoonde. Dit probleem wordt veroorzaakt door het feit dat elke knoop in
de PR graaf slechts ´e´en woord bevat. De graaf bestaat met andere woorden uitsluitend uit
unigrams. Deze aanpak kan er echter voor zorgen dat woorden die samen horen worden
41
opgesplitst in de uiteindelijke samenvatting. Om dit probleem op te lossen, werd gebruik
gemaakt van NLP tools, die reeds besproken werden in Sectie 2.3 van de literatuurstudie.
Concreet kan dit probleem opgelost worden met behulp van een PoS tagger en een chunker.
In dit systeem werd gebruik gemaakt van de Stanford PoS tagger [28, 29], in combinatie
met het Twitter-model uit [30] en de OpenNLP chunker [35]. De idee is om in dit systeem de knopen in de PR graaf voor te stellen als n-grams. Daardoor worden woorden die
samen horen ook samen gehouden in de graaf. Hierdoor wordt de opbouw van de graaf
licht gewijzigd.
In plaats van de tweet in het begin te splitsen op witruimte, krijgen de woorden in de
tweets nu eerst een PoS label van de PoS tagger. Een PoS label geeft de rol van een woord
binnen een zin aan. Het duidt aan of een woord een werkwoord, zelfstandig naamwoord,...
is. De labels van die tweet worden vervolgens door de chunker verwerkt. De output van
de chunker geeft dan aan welke woorden samen horen. Het enige probleem dat dan nog
rest, is dat sommige woordsequenties intrinsiek dezelfde zijn, maar anders verwoord zijn.
Zo betekenen ’in the goal’ en ’in goal’ eigenlijk hetzelfde, maar zouden deze n-grams toch
in andere knopen in de graaf terechtkomen. Om dit probleem te beperken worden de ngrams die het resultaat zijn van de chunker nog eens gefilterd, zodat bij langere sequenties
enkel werkwoorden en zelfstandige naamwoorden worden overgehouden. Hierdoor zullen
bijvoorbeeld de sequenties ’beautiful goal’ en ’nice goal’ op ´e´enzelfde knoop met naam
’goal’ mappen in de graaf. Wanneer een n-gram echter geen werkwoorden of zelfstandige
naamwoorden bevat, wordt de sequentie in haar geheel in een knoop opgeslagen. De verdere opbouw van de graaf verloopt zoals beschreven in Sectie 3.4.3.2.
Door deze aanpassing moet ook de bepaling van het centrale thema aangepast worden.
Het centrale thema moet namelijk nog steeds kunnen mappen op de namen van de knopen. Hier werd echter ook dezelfde techniek gebruikt als in 3.4.3.1. Het enige verschil is
dat nu de n-grams in een tweet als term worden beschouwd, waardoor we eigenlijk een
mapping tussen n-grams en hun gewicht verkrijgen, in plaats van een mapping tussen
unigrams en hun gewicht.
4.3.2
Commentaar verrijken met willekeurige feiten
Een tweede toevoeging aan de samenvattingsstap zijn willekeurige feiten. Aangezien de
verbeterde versie van het generatiealgoritme met een variabele timing werkt, is het niet
ondenkbaar dat er soms stille momenten zijn in de gegenereerde commentaarstroom. Wanneer een stil moment zich voordoet, is het opportuun om de commentaar te verrijken met
willekeurige, maar gerelateerde weetjes. Het systeem dat hiertoe werd ontwikkeld in deze
42
masterproef is slechts een proof-of-concept en is dus nog voor verbetering vatbaar.
Wanneer het generatiealgoritme een stil moment detecteert, zal het een nieuwe programmadraad opstarten, die aan de slag gaat met de huidige actieve clusters. In een eerste
stap voegt deze draad alle tweets uit alle actieve clusters samen. Al deze tweets worden
vervolgens samengevoegd tot ´e´en lange tekst. Met behulp van de DBPedia Spotlight web
service [43] gaan we in de volgende stap op zoek naar concepten in de tekst. Die concepten worden afgeleid uit concepten die bestaan op DBPedia [44]. Uit de bekomen lijst
van concepten wordt dan het meest voorkomende concept gekozen. In een laatste stap
wordt het gekozen concept opgezocht op DBPedia en worden de eerste twee zinnen uit
het Engelstalige abstract over dit concept toegevoegd aan de commentaarstroom.
Deze aanpak is echter niet voldoende gesofisticeerd, aangezien het systeem steeds voor
het meest voorkomende concept kiest. Dit concept zal vaak hetzelfde zijn: in het geval
van de voetbalcommentator is het gekozen concept bijna altijd ´e´en van de twee teams.
Ook het feit dat we steevast voor de eerste twee zinnen uit het abstract kiezen is na¨ıef.
Doordat meestal dezelfde concepten terugkomen, wordt ook steeds dezelfde tekst als willekeurig feit gekozen.
4.3.3
Beslissen wanneer een cluster samengevat moet worden
Een laatste, maar daarom niet minder belangrijke toevoeging, is het controleren van de
clusters. De idee hierachter is dat we in elke iteratie van het verbeterde generatiealgoritme moeten controleren welke clusters verwijderd en eventueel samengevat moeten
worden. Deze extra stap is een gevolg van het clusteren in ware tijd. In het oude systeem
was deze beslissing niet nodig, aangezien elke gegenereerde cluster daar samengevat werd.
Dit beslissingsmechanisme treedt in werking wanneer de clusterstap afgerond is. Wanneer alle statussen uit de afgelopen seconde uiteindelijk toegekend zijn aan een cluster,
wordt de informatie over de aanwezige clusters bijgewerkt. Die informatie is van groot
belang bij de beslissing of de cluster in kwestie verwijderd en eventueel samengevat moet
worden. Een omschrijving van de hiervoor gebruikte variabelen en hun functie in de
beslissingsprocedure volgt hier:
• Aantal verwerkte tweets sinds creatie van de cluster
Deze variabele houdt bij hoeveel tweets reeds door het hele algoritme werden verwerkt sinds de creatie van de cluster in kwestie. Aan de hand van dit getal kan
bepaald worden hoe belangrijk de cluster in kwestie is ten opzichte van de hele
stroom van tweets. De graad van belang kan gemeten worden door de grootte van
43
de cluster te delen door deze parameter. Deze graad van belang is tevens een indicator voor de activiteit van een cluster. Een cluster die niet langer actief is kan
worden verwijderd en eventueel worden samengevat.
• Aantal seconden dat de cluster actief is
De variabele die de levensduur van een cluster meet, wordt gebruikt om ervoor
te zorgen dat dominante clusters ook ooit worden samengevat. Het kan namelijk
gebeuren dat ´e´en cluster quasi alle statussen toegewezen krijgt en bijgevolg voor
een lange tijd als actief wordt aanzien. Als het systeem in dat geval moet wachten
tot de cluster inactief wordt, loopt de commentaar in kwestie een onaanvaardbare
vertraging op ten opzichte van de beschreven gebeurtenis. Dit probleem wordt
opgelost door een bovengrens te zetten op de levensduur van de cluster.
• Aantal opeenvolgende iteraties waarin de cluster niet meer significant is
Deze variabele houdt bij gedurende hoeveel opeenvolgende iteraties de cluster in
kwestie niet langer een significant deel van de Twitterstroom uitmaakte. Deze variabele werd in het leven geroepen om clusters die rond een opgelegde significantiegrens
schommelen, niet meteen te verwijderen.
Naast deze variabelen, zijn er ook verschillende parameters betrokken in de implementatie van de beslissingsprocedure. Deze parameters zijn op te delen in twee categorie¨en.
Enerzijds zijn er de parameters die optreden als trigger om een cluster te verwijderen en
samen te vatten. Anderzijds zijn er ook nog twee parameters die bepalen wanneer een
willekeurig weetje gegenereerd moet worden. Daarnaast is er ook een parameter die de
grootte van de kern van de cluster bepaalt, zoals reeds vermeld werd in Sectie 3.
De parameters die optreden tijdens de beslissing om over te gaan tot verwijdering en
eventueel samenvatting zijn af te leiden uit de hierboven besproken variabelen. Een kort
overzicht:
• Minimaal vereiste clustersignificantie
Deze parameter bepaalt een ondergrens voor de significantie van een cluster opdat
die cluster actief zou blijven. Wanneer de significantie onder deze grens zakt en
gedurende een bepaalde tijd laag blijft, kan de cluster verwijderd worden.
Gekozen parameterwaarde: 30%. Deze waarde is op experimentele wijze bekomen.
• Aantal opeenvolgende iteraties waarin de cluster niet significant is, alvorens over te gaan tot verwijdering
Dit aantal iteraties bepaalt in hoeveel opeenvolgende iteraties de significantie van
de cluster onder de ondergrens moet liggen vooraleer die cluster verwijderd wordt.
Gekozen parameterwaarde: 15 iteraties (seconden). Op deze manier worden uitlopers van pieken in het tweetvolume nog meegenomen in de cluster.
44
• Maximale levensduur van een cluster
Een tweede reden om over te gaan tot verwijdering is een te lange levensduur. Wanneer een cluster reeds langer bestaat dan deze bovengrens, wordt overgegaan tot
verwijdering van de cluster.
Gekozen parameterwaarde: 30 seconden. Deze waarde werd zo gekozen dat de
maximale vertraging op het systeem niet groter zou zijn dan bij het eerste generatiealgoritme.
• Vereiste clustergrootte om over te gaan tot samenvatting
Eens de beslissing genomen is om een cluster te verwijderen, moet nog beslist worden
of die cluster al dan niet samengevat moet worden. Wanneer de cluster in kwestie
meer tweets bevat dan deze ondergrens wordt de cluster samengevat.
Gekozen parameterwaarde: 5 tweets. Deze parameter is de meest onzekere en hangt
af van het volume van de Twitterstroom. Hoe meer tweets er binnenkomen, hoe
groter de clusters worden en hoe selectiever we kunnen zijn.
De parameters die meespelen in de beslissing om een willekeurig feit te genereren zijn de
volgende:
• Maximale stilte na een samengevatte cluster
Deze parameter bepaalt hoe lang het algoritme maximaal mag wachten alvorens een
willekeurig feit te genereren. Deze tijd wordt in het algoritme gemeten vanaf het
ogenblik dat de generatie van de samenvatting begon.
Gekozen parameterwaarde: 7 seconden. Gemiddeld duurt het 4 seconden om een
tweet voor te lezen.1 Reken hierbij enkele extra verwerkingsseconden en we komen
aan 7 seconden.
• Maximale stilte na een willekeurig feit
Omdat het over het algemeen wat langer duurt om willekeurige feiten te lezen of
voor te lezen, is er ook een aparte parameter om te beslissen hoe lang er gewacht
moet worden tussen het genereren van twee willekeurige feiten. De werking hiervan
is gelijkaardig als bij de vorige parameter.
Gekozen parameterwaarde: 15 seconden. Zoals hierboven reeds vermeld, is een
groter tijdsvenster aangewezen voor willekeurige feiten.
Nu alle parameters en variabelen die een rol spelen in het algoritme gekend zijn, kan het
beslissingsproces ook in detail uitgelegd worden. Algoritme 4 geeft dit proces weer in
pseudocode.
Wanneer de clusterstap afgelopen is, worden alle clusters ´e´en voor ´e´en overlopen. Eerst
1
Deze waarde werd bekomen door een experimentele test met typische voetbaltweets.
45
worden de clustervariabelen van de cluster in kwestie bijgewerkt, zoals reeds vermeld
werd. Nadat deze variabelen bijgewerkt zijn, controleert het algoritme of er voldaan is
aan (minstens) ´e´en van de voorwaarden voor verwijdering. Dit is het geval wanneer de
maximale levensduur van de cluster overschreden is, of wanneer de cluster reeds een bepaalde tijd niet meer significant is. Als dat het geval is, moet enkel nog worden nagegaan
of de cluster in kwestie groot genoeg is om ook samen te vatten. Wanneer een cluster
wordt samengevat, wordt meteen ook de starttijd van de generatie opgeslagen.
Eens elke cluster gecontroleerd en eventueel verwijderd en samengevat is, controleert het
systeem of de commentaarstroom al dan niet in een stil moment zit. Hiervoor wordt de
opgeslagen starttijd van de laatste samengevatte cluster gebruikt. Wanneer dit moment
reeds lang genoeg geleden is, wordt een willekeurig feit gegenereerd. Hierbij moet wel
een onderscheid gemaakt worden tussen de aard van de laatst gegenereerde tekst in de
commentaarstroom. Een willekeurig feit is doorgaans langer dan een zin die uit tweets
gegenereerd werd. Bijgevolg mag de tijd die verstrijkt tussen de generatie van twee willekeurige feiten wat groter zijn dan de tijd tussen de generatie van een samenvatting en
een willekeurig feit.
Algoritme 4 Samenvatten van clusters en genereren van willekeurige feiten.
Require: Set ActieveClusters
1: for all Cluster in ActieveClusters do
2:
Update clustervariabelen
3:
if ClusterLevensduur > M axLevensduur or ClusterInsignif icantieT eller >
M axInsignif icantieT ijd then
4:
if ClusterGrootte > M inimaleGrootte then
5:
Start samenvattingsdraad op
6:
LaatsteSamenvattingT ijd ← HuidigeT ijd
7:
LaatsteF eitT ijd ← 0
8:
end if
9:
Verwijder Cluster
10:
end if
11: end for
12: if (LaatsteSamenvattingT ijd 6= 0 and T ijd − LaatsteSamenvattingT ijd >
M axStilteN aSamenvatting) or (LaatsteF eitT ijd
6=
0 and T ijd −
LaatsteF eitT ijd > M axStilteN aF eit) then
13:
Genereer willekeurig feit
14:
LaatsteF eitT ijd ← HuidigeT ijd
15:
LaatsteSamenvattingT ijd ← 0
16: end if
46
4.4
Besluit
In dit hoofdstuk werd een uitbreiding op het algoritme uit Hoofdstuk 3 besproken. Deze
uitbreiding maakt niet langer gebruik van een vast tijdsinterval, maar clustert de inkomende tweets in ware tijd. Elke tweet die binnenkomt wordt de volgende seconde
gefilterd en toegevoegd aan een cluster. Ook het samenvatten van clusters gebeurt op uiteenlopende momenten, afhankelijk van een reeks clustereigenschappen, zoals besproken
in Sectie 4.3.3. Daarenboven voegt dit algoritme willekeurige feiten toe aan de commentaarstroom. Op die manier kunnen stille momenten in de commentaarstroom opgevangen
worden. Dankzij deze aanpassingen worden verscheidene zwaktes van het eerste generatiealgoritme weggewerkt.
Ook wat betreft de uitvoeringstijd doet dit generatiealgoritme beter dan de versie uit
Hoofdstuk 3. Bij deze aanpak is de vaste intervaltijd namelijk uitgeschakeld. Wanneer
de parameter voor de maximale levensduur van een cluster gelijkgesteld wordt aan de
intervalgrootte uit het eerdere algoritme, is dit generatiealgoritme steeds minstens even
snel. Deze versie is echter meer geschikt voor een toepassing in ware tijd, aangezien er
vaak ook minder tijd zal verstrijken alvorens een samenvatting gegenereerd wordt.
Een ander sterk punt ten opzichte van het generatiealgoritme op basis van een vast tijdsinterval is het resultaat van de clusterstap. In dit algoritme zullen sterk afwijkende tweets
namelijk terecht komen in aparte, afgezonderde clusters. Die clusters zullen doorgaans
erg klein zijn en dus niet samengevat worden. Bijgevolg hebben deze tweets geen invloed
op de commentaarstroom.
Toch heeft het systeem uit dit hoofdstuk ook enkele nadelen. Zo werd in Sectie 3.4.4
de grootte van de datasets reeds aangehaald als probleem bij de samenvattingsalgoritmen. Dit probleem kan echter niet opgelost worden door het generatiealgoritme uit dit
hoofdstuk.
Een tweede nadeel is dat het in dit systeem moeilijk te controleren is hoeveel uitvoer
het generatiealgoritme genereert. Bijgevolg is het mogelijk dat er meer tekst gegenereerd
wordt dan er uitgesproken kan worden op diezelfde tijd. Dit probleem is in het eerste systeem beter te controleren, aangezien dat systeem toelaat om te bepalen hoeveel clusters
(en dus ook samenvattende zinnen) er per keer gevormd moeten worden.
47
Hoofdstuk 5
Van gegenereerde tekst naar een
volledige commentator
Om een compleet commentaarsysteem te cre¨eren, werd het systeem uit Hoofdstuk 4 verder
uitgebreid. Het systeem zal nu ook de gegenereerde commentaar uitspreken. Het is bij
voetbalwedstrijden namelijk altijd leuk om naast geluid ook beeld te hebben. Hiertoe werd
een systeem ontwikkeld dat de gegenereerde commentaar omzet naar spraak. Dit systeem
wordt besproken in Sectie 5.1. Om dit alles te demonstreren werd een demo-applicatie
ontwikkeld. Deze applicatie laat toe om de gegenereerde commentaar te beluisteren naast
de beelden van de voetbalwedstrijd in kwestie. In deze stap wordt ook de gepersonaliseerde
toets toegevoegd aan de commentaarstroom. Daarenboven laat de applicatie toe om,
gegeven bepaalde trefwoorden, een rechtstreekse Twitterstroom te becommentari¨eren.
Deze functionaliteit wordt kort besproken in Sectie 5.2.
5.1
Omzetting van tekst naar spraak
Een belangrijke component om tot een volledige commentator te komen is het uitspreken
van de gegenereerde commentaar. Het zelf ontwikkelen van een text-to-speech systeem zou
te ver afwijken van de doelstelling van deze masterproef. Daarom zal hiervoor gebruikgemaakt worden van een bestaand systeem. Toch komen in deze stap nog enkele andere
specifieke bewerkingen aan bod. Zo is het bijvoorbeeld belangrijk dat de commentator
genoeg tijd heeft om gegenereerde tekst uit te spreken (en dus geen achterstand oploopt
ten opzichte van de Twitterstroom). Sectie 5.1.1 beschrijft de keuzes en eigenheden van
deze component.
Aangezien het systeem dat in deze masterproef wordt voorgesteld met sociale media werkt,
is het ook interessant om emoties te betrekken in de uitgesproken commentaar. De mogelijkheden hieromtrent worden besproken in Sectie 5.1.2.
48
5.1.1
Werking
Zoals reeds in de inleiding van dit hoofdstuk werd vermeld, wordt in deze masterproef
gebruik gemaakt van een reeds beschikbaar text-to-speech systeem. In Sectie 2.4 werd een
overzicht gegeven van beschikbare webservices. Hieruit concludeerden we dat Mary TTS
([40]) als duidelijke winnaar uit de vergelijking kwam. Deze web service stelt meerdere
stemmen ter beschikking en laat toe om geluidsparameters te be¨ınvloeden. Het is ook
mogelijk om deze service op een eigen (lokale) server te installeren, zodat het systeem niet
afhankelijk is van een externe server.
Het volstaat echter niet om zomaar alle gegenereerde commentaar door te sturen naar deze
web service. Het generatiealgoritme voor commentaar controleert namelijk niet hoeveel
tekst er gegenereerd wordt. Bijgevolg is het mogelijk dat er meer tekst gegenereerd wordt
dan op dezelfde tijd uitgesproken kan worden. Hiertoe werd een systeem ge¨ımplementeerd
dat gebruik maakt van een wachtlijn.
Dit systeem loopt in een aparte programmadraad en ontvangt de uit te spreken tekst van
de effectieve samenvattingsdraden. De ontvangen tekst wordt vervolgens opgeslagen in
een wachtlijn. Deze wachtlijn heeft enkele bijzondere kenmerken:
• Wanneer tijdens het voorlezen van een willekeurig feit een samenvatting van een
cluster binnenkomt, moet het voorlezen van het willekeurig feit afgebroken worden
en de meer relevante samenvatting voorgelezen worden.
• Wanneer er zich meerdere teksten in de wachtlijn bevinden, worden in de regel de
recentste berichten eerst gelezen.
• Wanneer er zich echter een iets oudere1 tekst met hogere prioriteit in de wachtlijn
bevindt, wordt dit bericht eerder gelezen. Willekeurige feiten hebben de laagste
prioriteit. Teksten die gegenereerd werden uit grote clusters krijgen de hoogste
prioriteit.
• Wanneer een bericht reeds langer dan 30 seconden in de wachtlijn zit, wordt het
verwijderd. We willen namelijk niet dat het commentaarsysteem op een later, stil
moment oude informatie begint voor te lezen.
1
Hiervoor wordt een verschil van maximaal 10 seconden geaccepteerd. Deze waarde kan verklaard
worden door het feit dat een gemiddelde tweet op 4 seconden voorgelezen kan worden. Wanneer een
prioritair bericht binnenkomt vlak nadat het systeem een andere tekst is beginnen lezen, kan het dus nog
wel even duur eer het prioritair bericht aan de beurt is.
49
5.1.2
Toevoegen van emotie
Voetbal wekt steeds veel emotie op. Dat uit zich ook in de tweets van voetbalfans. Aangezien deze masterproef als doel heeft om een gepersonaliseerd commentaarsysteem af
te leveren, vormt het toevoegen van sentiment aan de gesproken commentaar een meerwaarde. Sentimentanalyse is echter niet het hoofddoel van deze masterproef. Daarom
werd er voor deze stap gekozen om een proof-of-concept te bouwen. Dit systeem voert een
eenvoudige analyse van de gegenereerde commentaar uit: het telt het aantal hoofdletters
in de zin. Wanneer meer dan 30% van de tekens in de tekst een hoofdletter is, wordt
het commentaarvolume verdubbeld. Op die manier zal de commentator luider spreken
wanneer Twittergebruikers ’roepen’.
In Sectie 2.4 werd reeds vermeld dat de ontwikkelaars van Mary TTS nog volop onderzoek voeren naar het voorzien van emoties in de stemmen. Deze implementatie is
echter nog niet beschikbaar voor de Engelstalige stemmen en kan dus voorlopig nog niet
gebruikt worden in deze masterproef. Eens de implementatie echter beschikbaar is, kan
de commentator verbeterd worden door een uitgebreid sentimentanalysesysteem in gebruik te nemen. Op die manier kunnen emoties zoals boosheid, vrolijkheid en triestheid
gedetecteerd worden, waardoor de uitgesproken commentaar aantrekkelijker wordt.
5.2
Volledige commentator
Het laatste aspect dat nog ontbreekt aan het systeem dat tot nu toe besproken werd,
is de uitwerking van het gepersonaliseerde aspect. Dit aspect werd meegenomen bij de
uitwerking van een demo-applicatie. Daarenboven is het ook de bedoeling dat het systeem uit deze masterproef gedemonstreerd kan worden, bijvoorbeeld in combinatie met
videobeelden.
De commentaarapplicatie biedt twee opties. De gebruiker kan ervoor kiezen om een voetbalwedstrijd uit een databank te becommentari¨eren, of om live commentaar te genereren
uit een Twitterstroom. Figuur 5.1 geeft deze keuze weer. Sectie 5.2.1 bespreekt de werking van de commentaarapplicatie met videobeelden. In Sectie 5.2.2 gaan we kort in op
de tweede optie, de rechtstreekse Twitterstroom.
50
Figuur 5.1: Wanneer de commentaarapplicatie opgestart wordt, krijgt de gebruiker de keuze
om een voetbalwedstrijd uit de databank in te laden of een rechtstreekse Twitterstroom te
becommentari¨eren.
5.2.1
Becommentari¨
eren van een voetbalwedstrijd met videobeelden
Wanneer de gebruiker ervoor kiest om tweets over een wedstrijd uit de databank in te laden, krijgt hij eerst een keuzevenster te zien. In dat keuzevenster kan de gebruiker kiezen
welke wedstrijd hij becommentarieerd wil zien. Figuur 5.2 toont deze keuze.
Nadat de gebruiker een wedstrijd gekozen heeft, krijgt hij de kans om de commentator te
personaliseren. De gebruiker krijgt namelijk de keuze om zijn favoriete team te kiezen.
Daarnaast kan er ook voor gekozen worden om de volledige stroom van tweets in beschouwing te nemen. Deze keuze wordt ge¨ıllusteerd in Figuur 5.3. In deze applicatie wordt de
opdeling van de teams gemaakt op basis van hashtags. Bij het voorbeeld in Figuur 5.3
wordt de commentaar voor fans van Manchester United bijvoorbeeld gevormd op basis
van de tweets die onder andere de hashtags #MUFC en #ManUtd bevatten. Deze techniek is
echter voor verbetering vatbaar, aangezien andere fans deze hashtags ook soms gebruiken.
Eens de gebruiker alle keuzes gemaakt heeft, krijgt hij het venster in Figuur 5.4 te zien.
Hiervoor werden beelden van het Engelse Sky Sports en het Canadese Sportsnet gebruikt.
51
Figuur 5.2: Het venster dat de gebruiker toelaat een wedstrijd uit de databank in te laden.
Figuur 5.3: Na de keuze voor een wedstrijd, moet de gebruiker aangeven welk team zijn voorkeur
geniet. De gebruiker kan er ook voor kiezen om alle tweets in beschouwing te nemen.
52
Figuur 5.4: Wanneer alle keuzes gemaakt werden, krijgt de gebruiker de beelden van de wedstrijd
in kwestie te zien, terwijl de gegenereerde commentaar getoond en voorgelezen wordt.
Met behulp van de Java-bibliotheek vlcj [45] worden de beelden weergegeven in de applicatie. Om te zorgen dat de timing van de commentaar overeenkomt met de beelden, werd
ervoor gezorgd dat het begin van elk van de video’s gelijk valt met het begin van de Twitterstroom in de databank. Hiertoe werd het moment van de eerste tweet die rapporteert
over de aftrap gelijkgezet met het moment van de aftrap in de videostroom.
5.2.2
Becommentari¨
eren van een rechtstreekse Twitterstroom
De tweede mogelijke optie die de gebruiker krijgt is het becommentari¨eren van een rechtstreekse Twitterstroom. Deze optie werd toegevoegd als toepassing van het ongesuperviseerde aspect van het commentaarsysteem uit deze masterproef. Met behulp van de
live commentator kunnen ook andere evenementen of gebeurtenissen becommentarieerd
worden. Figuur 5.5 toont het venster dat de gebruiker toelaat om de gewenste Twitterstroom te defini¨eren. Op basis van deze rechtstreekse Twitterstroom wordt vervolgens
de commentaar gegenereerd, zoals in Figuur 5.6. Dit voorbeeld toont een commentaarstroom over de promotie van Cambridge United naar The Football League (de Engelse
vierde klasse). Deze commentator werkt echter ook voor Twitterstromen die helemaal
niet gerelateerd zijn aan voetbal, zoals bijvoorbeeld de dood van een bekend persoon, een
belangrijk evenement,...
53
Figuur 5.5: Eerst moet de gebruiker de trefwoorden voor de Twitterstroom ingeven. Vervolgens
kan het systeem op basis van die Twitterstroom een commentaarstroom genereren.
Het gepersonaliseerde aspect in deze toepassing wordt gerealiseerd door de gebruiker zelf
te laten kiezen op basis van welke Twitterstroom de commentaar gegenereerd wordt.
5.3
Besluit
Dit hoofdstuk besprak hoe de gegenereerde tekstuele commentaar werd omgevormd tot
een volwaardige commentaarapplicatie. Dit gebeurt in twee stappen. In de eerste stap
wordt de gegenereerde tekst omgezet naar spraak. De tweede stap voegt het persoonlijke
aspect toe aan de commentaar. Dit alles wordt omringd door een applicatie die toelaat
de commentaar te beluisteren bij de videobeelden.
In de eerste stap, de omzetting van tekst naar spraak, zagen we dat niet zomaar alle
gegenereerde tekst uitgesproken kan worden. Het is immers moeilijk te voorspellen hoeveel tekst er uit het generatiealgoritme zal komen. Daarnaast werd in deze stap ook
rekening gehouden met emotie. In deze masterproef werd hiervoor een eenvoudig mechanisme gebruikt. Wanneer de gebruikte TTS client, Mary TTS, emotie ondersteunt voor
de Engelse stemmen, is het aangewezen om meer geavanceerde technieken te gebruiken.
De tweede stap introduceert het gepersonaliseerde aspect van de commentator. Dit werd
gerealiseerd door de Twitterstroom op te splitsen met behulp van hashtags. Daarnaast
zorgt deze stap ervoor dat de commentaar ook bij de videobeelden beluisterd kan worden.
54
Figuur 5.6: Nadat de gebruiker de trefwoorden voor de Twitterstroom opgegeven heeft, begint
het systeem commentaar te genereren op basis van de inkomende tweets.
55
Hoofdstuk 6
Evaluatie
In dit hoofdstuk wordt het commentaarsysteem ge¨evalueerd. In deze evaluatie wordt enkel
het algoritme uit Hoofdstuk 4 in beschouwing genomen. Het algoritme uit Hoofdstuk 3
werd immers al kort ge¨evalueerd in Sectie 3.5, waar bleek dat de kwaliteit van de (door
dit systeem) gegenereerde commentaar te laag is.
Dit hoofdstuk evalueert de uitvoer van het volledige commentaarsysteem. Dit is de uitvoer
van de commentaarapplicatie, zoals die bekomen wordt in Hoofdstuk 5. Om het systeem
te evalueren, werden enkele videofragmenten met bijhorende commentaren voorgelegd aan
een testpubliek.
In Sectie 6.1 wordt beschreven op welke vlakken de commentaren ge¨evalueerd werden.
Vervolgens wordt het testpubliek gekarakteriseerd in Sectie 6.2. Sectie 6.3 bespreekt de
resultaten die bekomen werden. In Sectie 6.4 sluiten we het hoofdstuk af met enkele
bevindingen.
6.1
Opbouw van de vragenlijst
Zoals in de inleiding van dit hoofdstuk reeds vermeld werd, gebeurde de evaluatie van
het commentaarsysteem aan de hand van een vragenlijst. De deelnemers kregen bij het
invullen vijf videofragmenten te zien. Deze fragmenten waren afkomstig van vier wedstrijden uit de verzamelde dataset (zie Bijlage C). Voor elk van deze videofragmenten
werden vijf verschillende commentaarfragmenten voorgelegd aan het testpubliek. Deze
vijf commentaarfragmenten zijn steeds:
• De originele commentaar, die bij de beelden hoort.
• Een commentaarfragment dat gegenereerd werd m.b.v. de selectietechniek, uit de
volledige set van tweets.
56
• Een commentaarfragment dat gegenereerd werd m.b.v. de selectietechniek en gepersonaliseerd is voor ´e´en van beide teams.
• Een commentaarfragment dat gegenereerd werd m.b.v. Phrase Reinforcement, uit
de volledige set van tweets.
• Een commentaarfragment dat gegenereerd werd m.b.v. Phrase Reinforcement en
gepersonaliseerd is voor ´e´en van beide teams.
De keuze om steeds slechts ´e´en gepersonaliseerd fragment per techniek te tonen is een
bewuste keuze. Hoe meer fragmenten de leden van het testpubliek te zien krijgen, hoe
moeilijker zij deze fragmenten kunnen vergelijken. Dat is ook een extra reden waarom
het algoritme uit Hoofdstuk 3 niet in deze evaluatie werd betrokken.
Tabel 6.1 geeft aan voor welk team de gepersonaliseerde commentaarfragmenten gegenereerd werden. Deze keuze gebeurde willekeurig. De commentaarteksten kunnen gelezen
worden in Bijlage B. De volgorde die in deze bijlage wordt gehanteerd is ook de volgorde
waarin het testpubliek de fragmenten te zien kreeg.
De gekozen videofragmenten bevatten verscheidene situaties. Zo zijn er drie fragmenten die een doelpunt bevatten. Op deze momenten is er met andere woorden veel actie.
Bijgevolg is er dan ook veel stof om over te praten. De andere twee fragmenten bevatten
minder actie. In het fragment uit de wedstrijd Manchester United - Arsenal gebeurt er
een hele tijd niks belangrijks. Op het einde van het fragment is er echter wel een discutabele strafschopfase. Het laatste fragment, uit de wedstrijd Arsenal - Liverpool, vertoont,
behalve een herhaling van een doelpunt, ook bijster weinig actie. Dat fragment eindigt
echter ook met een actie: een vervanging.
Voor elk van de vijf commentaarfragmenten bij een videofragment kregen de deelnemers de
vraag om het fragment te evalueren op vlak van drie parameters. Deze werden beoordeeld
aan de hand van een score van 1 tot 5.
• Originaliteit
Hoe origineel is het commentaarfragment in kwestie? Brengt het fragment veel
nieuwe en/of leuke inzichten, naast wat er in de video gebeurt, of niet?
• Relevantie
Is het commentaarfragment relevant? Komt de inhoud van het fragment overeen
met wat er gebeurt in de video?
• Leukheid
Hoe leuk is de commentaar in kwestie?
57
Tabel 6.1: Een overzicht van de ge¨evalueerde videofragmenten en bijhorende gepersonaliseerde
commentaarfragmenten. De tekst van deze (en de niet-gepersonaliseerde) commentaarfragmenten is terug te vinden in Bijlage B.
Videofragment
Gepersonaliseerd
Gepersonaliseerd
fragment via selectie? fragment via PR?
Arsenal - Liverpool, doelpunt
Santi Cazorla
Everton - Liverpool, doelpunt
Kevin Mirallas
Manchester United - Arsenal,
penaltyfase
Sunderland - Manchester United, doelpunt Craig Gardner
Arsenal - Liverpool, vervanging
Arsenal
Arsenal
Liverpool
Everton
Arsenal
Manchester United
Manchester United
Manchester United
Liverpool
Arsenal
Daarnaast werd er, per videofragment, gevraagd om drie keer een keuze te maken tussen
de vijf commentaarfragmenten. Hierbij werd aan de deelnemers gevraagd om zich in de
plaats te stellen van een fan van de thuisploeg, een fan van de uitploeg en een neutrale
fan. Op die manier wordt ook het gepersonaliseerde aspect ge¨evalueerd.
6.2
Testpubliek
De vragenlijst werd via sociale media verspreid onder vrienden en kennissen. Daarnaast
werd de vragenlijst ook verspreid binnen enkele fanclubs. In totaal vulden 22 personen
de vragenlijst in. Onder het testpubliek bevindt zich ook ´e´en sportjournalist: Johan De
Caluw´e. Dhr. De Caluw´e becommentarieert wekelijks wedstrijden uit de Belgische Jupiler
Pro League voor Sporza Radio. Zijn evaluatieresultaten zullen in Sectie 6.3 als referentie
gebruikt worden.
Figuur 6.1 toont enkele statistieken over het testpubliek. De deelnemers zijn tussen de 20
en 59 jaar oud. 77% is man, 23% is vrouw. Daarnaast verklaart 81% van de deelnemers
dat hij/zij minstens ´e´en keer per maand naar voetbal kijkt. 59% verklaart zelfs dat hij/zij
minstens ´e´en keer per week kijkt. De Engelse Premier League wordt door 68% van het
testpubliek gevolgd.
6.3
Resultaten
De resultaten die uit de vragenlijst kwamen, zullen per videofragment besproken worden.
Elk videofragment wordt besproken in een deelsectie.
58
(a) Het geslacht van de deelnemers.
(b) De interesse van het testpubliek in de Engelse
Premier League.
Figuur 6.1: Enkele karakteristieken van het testpubliek.
6.3.1
Eerste videofragment: Arsenal - Liverpool, doelpunt Santi
Cazorla (A)
Figuren 6.2 en 6.3 geven de evaluatieresultaten voor het eerste videofragment grafisch
weer. In Figuur 6.2 worden de scores op vlak van originaliteit, relevantie en leukheid van
de commentaarfragmenten afgebeeld. Uit deze resultaten blijkt dat alle zelf gegenereerde
commentaren op vlak van originaliteit lichtelijk beter scoren dan de originele commentaar. Wat betreft relevantie komt de originele commentaar duidelijk als winnaar uit de
bus. Dit lijkt een logisch resultaat, aangezien die commentaarstroom bij de getoonde
beelden hoort. Net zoals bij de originaliteit, liggen de resultaten op het vlak van leukheid
ook erg dicht bij elkaar. Enkel de gepersonaliseerde commentaar, die gegenereerd werd
met het PR-algoritme, valt wat uit de toon. Over de hele lijn lijkt deze variant ook als
zwakste uit de bus te komen voor dit videofragment. De scores van de referentiepersoon
(Figuur 6.2(b)), Johan De Caluw´e, sluiten aan bij de gemiddelde scores. Toch heeft hij
op het vlak van originaliteit een duidelijke voorkeur voor de gegenereerde commentaren.
Ondanks deze vaststelling, vindt hij de originele commentaar de leukste.
Als we de voorkeuren van het testpubliek gaan bekijken (Figuur 6.3), zien we dat de
Arsenalfans een gepersonaliseerde variant verkiezen. Dit is te verklaren doordat beide gepersonaliseerde varianten werden gegenereerd op basis van Arsenal-tweets. Het is echter
wel duidelijk dat de gepersonaliseerde PR-techniek aanzienlijk slechter scoort dan de gepersonaliseerde selectietechniek. De voorsprong van deze laatste techniek op de originele
commentaar is ook klein. Bij de fans van Liverpool en de neutrale fans is er een duide59
lijke winnaar: de originele commentaar. Het videofragment toont namelijk een doelpunt
van Arsenal en aangezien de gegenereerde commentaren eerder euforisch lijken, is dit een
logische uitkomst.
6.3.2
Tweede videofragment: Everton - Liverpool, doelpunt Kevin Mirallas (E)
De evaluatieresultaten voor dit videofragment zijn af te lezen in Figuren 6.4 en 6.5. De
gemiddelde scores voor originaliteit, relevantie en leukheid (Figuur 6.4(a)) liggen in dezelfde lijn als bij het eerste videofragment. Op het vlak van originaliteit en leukheid
zijn de verschillen opnieuw klein. Op het vlak van relevantie is de originele commentaar
opnieuw de grote winnaar. Deze keer is er echter een duidelijke verliezer over de hele
lijn: de gepersonaliseerde commentaar die via de selectietechniek bekomen werd. Uit de
scores van de referentiepersoon kunnen we dan weer afleiden dat de selectietechniek op de
volledige stroom van tweets eerder de verliezer is. Figuur 6.4(b) toont ook duidelijk dat
de originele commentaar de winnaar is.
Figuur 6.5 toont de keuzes van het testpubliek. Onder de Evertonfans is er onverdeeldheid. Zowel beide PR-technieken als de originele commentaar gaan met ongeveer een
kwart van de stemmen naar huis. Het feit dat de gepersonaliseerde commentaar op basis
van Phrase Reinforcement goed scoort is logisch, aangezien deze commentaar gebaseerd
is op Everton-tweets. Het is dan ook eigenaardig dat Liverpoolfans deze commentaar op
de tweede plaats zetten. Nog eigenaardiger is dat de gepersonaliseerde selectietechniek de
minste stemmen krijgt, hoewel die gebaseerd is op Liverpool-tweets.
De neutrale fan kiest ook hier duidelijk voor de originele commentaar.
60
(a) De gemiddelde evaluatieresultaten van de testgroep.
(b) De evaluatieresultaten van de referentiepersoon, Johan De Caluw´e.
Figuur 6.2: Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het eerste
videofragment.
61
(a) Voorkeur wanneer testpersonen Arsenalfans zijn.
(b) Voorkeur wanneer testpersonen Liverpoolfans zijn.
(c) Voorkeur wanneer testpersonen neutrale fans zijn.
Figuur 6.3: Evaluatie van de voorkeuren van het testpubliek voor het eerste videofragment.
62
(a) De gemiddelde evaluatieresultaten van de testgroep.
(b) De evaluatieresultaten van de referentiepersoon, Johan De Caluw´e.
Figuur 6.4: Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het tweede
videofragment.
63
(a) Voorkeur wanneer testpersonen Evertonfans zijn.
(b) Voorkeur wanneer testpersonen Liverpoolfans zijn.
(c) Voorkeur wanneer testpersonen neutrale fans zijn.
Figuur 6.5: Evaluatie van de voorkeuren van het testpubliek voor het tweede videofragment.
64
6.3.3
Derde videofragment: Manchester United - Arsenal, penaltyfase
Figuren 6.6 en 6.7 tonen de evaluatieresultaten voor het derde videofragment. Opmerkelijk aan deze resultaten is dat drie van de vier gegenereerde resultaten een score van slechts
2, 5 of lager halen op relevantie. Dit is waarschijnlijk te wijten aan het feit dat er weinig
gebeurt tijdens dit videofragment. Hier haalt de gepersonaliseerde commentaar op basis
van het PR-algoritme opnieuw de minst goede resultaten. Over de hele lijn scoren de originele commentaar en de commentaar uit de selectietechniek het best. De referentiepersoon
lijkt, op vlak van originaliteit en leukheid ook een voorkeur te hebben voor de commentaar uit de selectietechniek. Ook de commentaar uit het PR-algoritme krijgt goede scores.
In Figuur 6.7(c) zien we opnieuw dat neutrale fans de voorkeur geven aan de originele
commentaar. Figuur 6.7(a) toont de keuze van Manchester Unitedfans. Voor dit fragment geven zij duidelijk de voorkeur aan de commentaar uit de selectietechniek. De
originele commentaar komt op de tweede plaats. De gepersonaliseerde commentaar uit
het PR-algoritme, die gegenereerd werd uit de Manchester United-tweets, krijgt daarentegen erg weinig stemmen. Dit wijst er waarschijnlijk op dat de tekstkwaliteit te laag is.
De Arsenalfans kiezen echter wel duidelijk voor de gepersonaliseerde commentaar uit de
Arsenal-tweets. Dit kan afgeleid worden uit Figuur 6.7(b). Ook hier komt de originele
commentaar op plaats twee.
6.3.4
Vierde videofragment: Sunderland - Manchester United,
doelpunt Craig Gardner (S)
De scores voor de commentaren bij het vierde videofragment liggen opnieuw in dezelfde
lijn als bij vorige videofragmenten. Figuur 6.8(a) toont dat de gepersonaliseerde commentaar uit het PR-algoritme opnieuw de zwakste scores haalt. De commentaar uit het
PR-algoritme (gebaseerd op de volledige stroom van tweets) scoort daarentegen over de
hele lijn beter dan de andere gegenereerde commentaren. Onze referentiepersoon heeft
voor dit fragment opnieuw een duidelijke voorkeur voor de originele commentaar.
In Figuur 6.9 merken we dat Sunderlandfans voornamelijk de originele commentaar verkiezen. De gepersonaliseerde commentaren zijn hier namelijk allebei gebaseerd op de
Manchester United-tweets. Toch kiezen de fans van Manchester United niet voor ´e´en van
beide gepersonaliseerde commentaren. Hun voorkeur gaat uit naar de commentaar uit
het PR-algoritme en de originele commentaar. Zoals dat bij vorige videofragmenten het
geval was, kiezen neutrale fans ook hier massaal voor de originele commentaar.
65
(a) De gemiddelde evaluatieresultaten van de testgroep.
(b) De evaluatieresultaten van de referentiepersoon, Johan De Caluw´e.
Figuur 6.6: Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het derde
videofragment.
66
(a) Voorkeur wanneer testpersonen Manchester Unitedfans zijn.
(b) Voorkeur wanneer testpersonen Arsenalfans zijn.
(c) Voorkeur wanneer testpersonen neutrale fans zijn.
Figuur 6.7: Evaluatie van de voorkeuren van het testpubliek voor het derde videofragment.
67
(a) De gemiddelde evaluatieresultaten van de testgroep.
(b) De evaluatieresultaten van de referentiepersoon, Johan De Caluw´e.
Figuur 6.8: Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het vierde
videofragment.
68
(a) Voorkeur wanneer testpersonen Sunderlandfans zijn.
(b) Voorkeur wanneer testpersonen Manchester Unitedfans zijn.
(c) Voorkeur wanneer testpersonen neutrale fans zijn.
Figuur 6.9: Evaluatie van de voorkeuren van het testpubliek voor het vierde videofragment.
69
(a) De gemiddelde evaluatieresultaten van de testgroep.
(b) De evaluatieresultaten van de referentiepersoon, Johan De Caluw´e.
Figuur 6.10: Evaluatie van originaliteit, relevantie en leukheid van commentaren bij het vijfde
videofragment.
70
(a) Voorkeur wanneer testpersonen Arsenalfans zijn.
(b) Voorkeur wanneer testpersonen Manchester Unitedfans zijn.
(c) Voorkeur wanneer testpersonen neutrale fans zijn.
Figuur 6.11: Evaluatie van de voorkeuren van het testpubliek voor het vijfde videofragment.
71
6.3.5
Vijfde videofragment: Arsenal - Liverpool, vervanging
De evaluatieresultaten voor het laatste videofragment worden weergegeven in Figuren
6.10 en 6.11. Naast de originele commentaar halen de twee commentaren uit de selectietechniek de beste scores. Toch steekt ook hier opnieuw geen enkele commentaar echt
bovenuit. Onze referentiepersoon heeft een andere mening. Zijn voorkeur lijk uit te gaan
naar de gepersonaliseerde commentaar uit het PR-algoritme. Dit is opvallend, aangezien
deze commentaar gemiddeld gezien het minst goed scoort bij het testpubliek.
In Figuur 6.11 zien we dat zowel de neutrale fans als de fans van Liverpool de originele commentaar verkiezen. De Arsenalfans verkiezen de commentaar uit de selectietechniek. Opvallend aan deze resultaten is dat geen van beide supportersclans voor zijn eigen
gepersonaliseerde commentaar kiest.
6.4
Besluit
Uit de evaluatieresultaten van de vijf individuele fragmenten werd de grafiek in Figuur
6.12 afgeleid. Uit deze grafiek kunnen enkele algemene bevindingen opgemaakt worden.
Een eerste opmerking is dat de scores over het algemeen laag zijn. Op de relevantie
van de originele commentaar na, wordt nergens een score hoger dan 3, 3 op 5 gehaald.
Daarenboven is het verschil met de laagste score (2, 45) klein. De algemene resultaten
liggen met andere woorden erg dicht bij elkaar. We kunnen echter wel stellen dat de
niet-gepersonaliseerde commentaren1 beter beoordeeld worden dan de gepersonaliseerde
commentaren. Hoogstwaarschijnlijk is dit het gevolg van de hoeveelheid tweets die naar
het generatiealgoritme vertrekken. Uit Bijlage C blijkt namelijk dat de Twitterstromen
voor individuele teams soms gevoelig kleiner is. Dat is meteen ook de reden waarom de
gepersonaliseerde commentaar op basis van het PR-algoritme het zwakst presteert. Bij de
toepassing van het PR-algoritme laat een gebrek aan data zich namelijk sneller opmerken
dan bij gebruik van de selectietechniek.2
Ondanks de ietwat lage scores, bleken er in de evaluatieresultaten slechts twee personen
te zijn die de gegenereerde commentaren helemaal niks vinden. Dit toont toch enig potentieel aan. Mensen lijken de persoonlijke toets die Twitter met zich meebrengt toch
enigszins te appreci¨eren.
In de diagrammen die de voorkeuren van de fans weerspiegelen, zagen we echter wel
dat de fans zeer vaak opteerden voor de originele commentaar. In andere gevallen was
1
De commentaren die gegenereerd werden op basis van de volledige stroom van tweets.
Wanneer er weinig tweets voorhanden zijn, zijn de clusters automatisch kleiner. Dat leidt, zoals reeds
vermeld werd in Sectie 3.5, tot een lagere kwaliteit van de uitvoer bij het PR-algoritme.
2
72
de originele commentaar steeds de tweede meest frequent gekozen commentaar. Neutrale
fans kozen keer op keer overtuigend voor de originele commentaar. De fans van de teams
kiezen over het algemeen voor een gegenereerde commentaar wanneer die commentaar
hun team bejubelt.
Toch viel het op dat fans zelden voor hun eigen gepersonaliseerde commentaar kozen.
Dit wordt reeds verklaard door de lagere scores voor de gepersonaliseerde commentaren.
Anderzijds zijn de niet-gepersonaliseerde commentaren ook redelijk partijdig. Wanneer
een team bijvoorbeeld scoort, zal de totale stroom van tweets ook overheerst worden door
tweets van blije fans. Fans van het andere team zijn op die momenten ’stiller’, waardoor
hun tweets zelden of nooit in de commentaar verschijnen.
Figuur 6.12: Deze grafiek toont de gemiddelde scores van de vijf commentaren over de vijf
fragmenten heen.
73
Hoofdstuk 7
Besluit en toekomstig werk
7.1
Besluit
In deze masterproef werd een systeem voorgesteld dat voetbalcommentaar genereert op
basis van Twitterberichten. Dit systeem werkt in (bijna) ware tijd en op een ongesuperviseerde manier.
We beschreven twee generatiealgoritmen voor commentaar. Het eerste algoritme maakt
gebruik van een vast tijdsinterval. Dit algoritme verzamelt gedurende het interval alle
tweets die binnenkomen. Na afloop van het interval worden deze tweets geclusterd en
wordt elke cluster apart samengevat. Wat betreft het samenvatten werden twee mogelijke
technieken voorgesteld: Phrase Reinforcement (PR) en een selectietechniek. In de evaluatie van dit systeem bleek echter al deze aanpak te na¨ıef is. Elk moment in de stroom
werd even belangrijk geacht en de tekstkwaliteit liet te wensen over. Ook de manier van
clusteren, via het k-means algoritme, is niet ideaal voor deze toepassing.
De zwaktes van dit eerste algoritme werden weggewerkt in het tweede algoritme. Dit
algoritme maakt gebruik van clustering in ware tijd. Tweets die binnenkomen worden
meteen toegewezen aan een bestaande of nieuwe cluster. Wanneer clusters na een bepaalde periode niet meer actief zijn, of reeds te lang actief zijn, worden ze verwijderd en
eventueel samengevat. Om te voorkomen dat er stille momenten opduiken in de commentaarstroom, werden in dit algoritme willekeurige feiten ge¨ıntroduceerd. Dit zijn weetjes
die verband houden met wat er op Twitter wordt gezegd.
Het commentaarsysteem leest vervolgens de gegenereerde commentaar voor. Aangezien
het generatiealgoritme echter niet kan weten hoeveel tekst er gegenereerd mag worden,
werd in deze stap een prioriteitswachtlijn gebruikt. Bepaalde belangrijke samenvattingen
kregen hierdoor voorrang op andere samenvattingen (zoals willekeurige feiten). Verder
74
voorziet deze stap ook in een eenvoudige vorm van sentimentanalyse.
Tijdens de evaluatie van het commentaarsysteem kreeg het testpubliek enkele videofragmenten en bijhorende commentaren1 voorgelegd. Over het algemeen lagen de scores voor
alle commentaren, inclusief de originele commentaar bij de videofragmenten, erg laag. Enkel de relevantie van de originele commentaar kreeg steeds een hoge score. Dit is logisch,
aangezien deze commentaar ingesproken is door mensen die naar dezelfde beelden keken.
Enerzijds lijken de lage scores erop te wijzen dat het testpubliek niet zit te wachten op
een commentator die voornamelijk informatie vanop Twitter gebruikt. Anderzijds werd
geen enkele van de gegenereerde commentaren volledig afgebroken. Het testpubliek staat
met andere woorden toch enigszins open voor toevoegingen op basis van Twitter.
Ondanks het feit dat het testpubliek de gegenereerde commentaren niet radicaal afkeurde
(ten opzichte van de originele commentaar), verkoos een groot aantal personen steeds de
originele commentaar. Nochtans scoorde die commentaar lager op het vlak van originaliteit en leukheid. De hoge relevantie van de originele commentaar is hier waarschijnlijk
de doorslaggevende factor.
Daarom lijkt het ons voorlopig beter om, in plaats van een volledige commentaarstroom,
eerder gepersonaliseerde, uitgebreide samenvattingen te genereren. Dit kan gerealiseerd
worden met behulp van hoogtepuntextractiesystemen. Over de verscheidene hoogtepunten kan het systeem dan vervolgens enkele samenvattende zinnen genereren.
7.2
Toekomstig werk
Om in de toekomst tot commentaarstromen van een hogere kwaliteit te komen, kunnen
nog enkele potenti¨ele verbeteringen toegepast worden.
Zo is het nuttig om verder onderzoek te voeren naar betere afstandsmetrieken voor de
clusterstap. De gebruikte metriek, cosine similarity, houdt namelijk geen rekening met de
context van tweets. Zo is het perfect mogelijk dat twee tweets die hetzelfde thema behandelen toch in andere clusters zullen vallen, omdat ze een andere woordenschat gebruiken.
Daarnaast werkt het commentaarsysteem met een proof-of-concept voor de generatie van
willekeurige feiten en de toevoeging van emotie aan de gesproken commentaar. Deze aspecten kunnen bijgevolg in de toekomst verder uitgewerkt worden.
Ook het gepersonaliseerde aspect van de voetbalcommentator kan verbeterd worden. Mo1
De deelnemers kregen de originele commentaar en vier gegenereerde commentaren te zien, zoals
uitgelegd in Hoofdstuk 6.
75
menteel worden de gepersonaliseerde commentaren gegenereerd uit tweets die gebruikmaken van de hashtags voor een bepaald team. Toch gebruiken fans van andere teams
deze hashtags ook. De toevoeging van een classificator zou tot een betere opsplitsing van
tweets kunnen leiden.
Ten slotte is ook het tijdsaspect voor verbetering vatbaar. Het is immers moeilijk om
de gegenereerde commentaar goed af te stemmen op de videobeelden. Om de commentator toe te passen op live voetbalbeelden, is verder onderzoek rond de vertragingstijden
van voetbalbeelden en Twitterberichten vereist.
Een algemene bemerking is dat het systeem enkel werd getest op voetbalwedstrijden.
Aangezien het systeem ongesuperviseerd werkt, is het ook mogelijk om commentaar te
genereren bij evenementen, gebeurtenissen of wedstrijden in andere sporten. Deze mogelijkheid werd echter nog niet getest. Door verder onderzoek uit te voeren zal het systeem
ook getest worden met grotere datasets. Enerzijds kunnen we verwachten dat het PRalgoritme beter zal presteren. Anderzijds zal een overvloed aan data de samenvattingsstap
uit het generatiealgoritme vertragen.
76
Bijlage A
Configuraties
Deze bijlage bevat uitleg over de twee configuratiebestanden die gebruikt worden door
het systeem uit deze masterproef. Enerzijds is er een configuratiebestand waarin de parameters voor uitvoering van het commentaaralgoritme zijn opgenomen. Deze configuratie
wordt uitgelegd in A.1. Anderzijds is er een configuratiebestand dat databank- en serverconfiguraties bevat. Dit wordt besproken in A.2.
A.1
Configuratie van het commentaaralgoritme
In Hoofdstukken 3 en 4 kwamen heel wat parameters voor de besproken algoritmen aan
bod. Deze parameterwaarden zijn eenvoudig aan te passen aan de hand van het bestand
algorithmConfig.properties. Dit bestand bestaat uit enkele verschillende afdelingen.
De eerste afdeling bevat parameters die bepalen of het algoritme uit Hoofdstuk 3 of
het algoritme uit Hoofdstuk 4 gebruikt moet worden.
# ==========================================================
#
A l g o r i t h m Choice P r o p e r t i e s
# ==========================================================
# Value t o i n d i c a t e w h e t h e r t o use t h e dynamic summarization
# system or t h e f i x e d i n t e r v a l summarization system
# p o s s i b l e v a l u e s : f i x e d , dynamic
timing mode=dynamic
# Value t h a t i n d i c a t e s w h e t h e r we want t o use PR or t w e e t
# selection
# p o s s i b l e v a l u e s : pr , s e l e c t i o n
s u m m a r i z a t i o n a l g o r i t h m=s e l e c t i o n
77
# Value t h a t i n d i c a t e s w h e t h e r we w i l l s p l i t up t w e e t s i n
# unigrams or n−grams . This parameter i s o n l y u s e f u l when
# working i n PR mode .
# p o s s i b l e v a l u e s : unigram , ngram
t e x t s p l i t t i n g m o d e=ngram
De variabele timing mode bepaalt welk algoritme gebruikt moet worden. Aan de hand van
de variabele summarization algorithm kan de gebruiker kiezen welk samenvattingsalgoritme hij wil gebruiken: het PR-algoritme of de selectietechniek. De laatste variabele,
text splitting mode, bepaalt of tweets gesplitst moeten worden op witruimte of via een
chunker. Deze variabele is enkel van belang wanneer het PR-algoritme gebruikt wordt.
De tweede afdeling van het configuratiebestand bevat parameters die eigen zijn aan het
algoritme uit Hoofdstuk 3.
# ==========================================================
#
Fixed I n t e r v a l A l g o r i t h m P r o p e r t i e s
# ==========================================================
# General P r o p e r t i e s
# −−−−−−−−−−−−−−−−−−−
# The s i z e o f t h e time window i n which incoming Tweets are
# h a n d l e d by t h e a l g o r i t h m
a l g o r i t h m r u n i n t e r v a l =30000
# Clustering Properties
# −−−−−−−−−−−−−−−−−−−−−
# The parameter K used i n K−means c l u s t e r i n g
k means parameter=3
# The maximal number o f i t e r a t i o n s t o be done i n K−means
# c l u s t e r i n g ( i n c a s e t h e s t o p c o n d i t i o n i s not met w i t h i n
# r e a s o n a b l e time )
k m e a n s m a x i t e r a t i o n s =50
Hier kan een opdeling gemaakt worden tussen algemene variabelen en clusteringsvariabelen. De enige algemene variabele, algorithm run interval, legt de grootte van het
tijdsinterval vast. Deze waarde wordt uitgedrukt in seconden.
De clusteringsvariabelen zijn k means parameter en k means maxiterations. De eerste
variabele is de parameter k uit het k-means algoritme. De tweede parameter legt het
78
maximale aantal iteraties voor dit algoritme vast.
De volgende afdeling in het configuratiebestand bevat de vele parameters voor het algoritme uit Hoofdstuk 4.
# ==========================================================
#
Variable I n t e r v a l Algorithm P r o p e r ti e s
# ==========================================================
# Maximal s i z e o f t h e c l u s t e r core , t h a t i s used t o d e c i d e
# i n what c l u s t e r a s t a t u s b e l o n g s
m a x c l u s t e r c o r e s i z e =20
# Minimal % o f a l l t w e e t s t h a t have t o be i n a c l u s t e r , f o r
# t h e c l u s t e r t o be c o n s i d e r e d as ’ newsworthy ’ . When t h e
# r a t i o d r o p s b e n e a t h t h i s r a t e , a summary i s g e n e r a t e d f o r
# the c l u s t e r .
c l u s t e r s t r e a m i m p o r t a n c e r a t i o t h r e s h o l d =0.3
# Minimal s i m i l a r i t y t h a t i s needed f o r a s t a t u s t o be
# added t o a c l u s t e r .
m i n i m a l s i m i l a r i t y t h r e s h o l d =0.2
# Minimal time t h a t has t o go by w h i l e t h e importance r a t i o
# i s b e n e a t h t h e t h r e s h o l d b e f o r e t h e c l u s t e r i s removed
# ( and e v e n t u a l l y summarized ) . In s e c o n d s .
c l u s t e r d e l e t i o n t r i g g e r t i m e =15
# Maximal number o f s e c o n d s t h a t a c l u s t e r can be a c t i v e .
# This i s used t o p r e v e n t t h e c a s e when one c l u s t e r i s
# a c t i v e a l l o f t h e time . In s e c o n d s .
c l u s t e r m a x a l i v e t i m e =30
# The minimal c l u s t e r s i z e t h a t i s needed b e f o r e t h e
# c l u s t e r p r o c e e d s t o t h e summarization s t e p .
m i n i m a l c l u s t e r s i z e f o r s u m m a r i z a t i o n =5
# Maximal time i n between t h e g e n e r a t i o n o f two summaries .
# This v a r i a b l e i s used t o p r e v e n t s i l e n t moments . I f t h i s
# time i s exceeded , t h e system w i l l p r o v i d e a random f a c t .
# Time i n s e c o n d s .
m a x s i l e n c e t i m e =7
# Maximal time t h a t has t o be between 2 random f a c t s .
# In s e c o n d s .
m i n t i m e b e t w e e n r a n d o m f a c t s =15
79
De eerste parameter legt de maximale grootte van de clusterkern vast. De tweede parameter geeft aan hoe belangrijk een cluster moet zijn opdat die cluster actief blijft. De variabele minimal similarity threshold geeft aan hoe groot de gelijkenis tussen een tweet en
een cluster minstens moet zijn opdat de tweet in de cluster komt. De volgende twee variabelen leggen vast wanneer een cluster verwijderd moet worden. Deze bepalen respectievelijk hoe lang een cluster inactief moet zijn voor die cluster verwijderd wordt en hoe lang een
cluster maximaal kan bestaan. De variabele minimal cluster size for summarization
bepaalt hoe groot een verwijderde cluster moet zijn om samengevat te worden. De laatste
variabelen, max silence time en min time between random facts, worden gebruikt om
te bepalen wanneer willekeurige feiten gegenereerd worden.
A.2
Databank- en serverconfiguratie
De instellingen voor datatoegang en voor de text-to-speech server worden opgeslagen in
het bestand serverConfig.properties. Dit bestand ziet er als volgt uit.
# ==========================================================
#
Data p r o p e r t i e s
# ==========================================================
# Base l o c a t i o n o f t h e f o l d e r where a l l ( v i d e o ) d a t a i s
# k e p t . This i s t h e f o l d e r t h a t c o n t a i n s t h e match−f o l d e r s
# ( e . g . ’ A r s e n a l L i v e r p o o l 02112013 ’)
v i d e o b a s e l o c a t i o n =/U s e r s / g e r t j a n g o o s s e n s / T h e s i s /Data/
# ==========================================================
#
TTS p r o p e r t i e s
# ==========================================================
# Address o f t h e TTS s e r v e r
t t s s e r v e r a d d r e s s=http : / / mary . d f k i . de : 5 9 1 2 5 / p r o c e s s ?
#t t s s e r v e r a d d r e s s=h t t p : / / l o c a l h o s t : 5 9 1 2 5 / p r o c e s s ?
# ==========================================================
#
Database p r o p e r t i e s
# ==========================================================
# Link t o c o n n e c t t o u s i n g t h e j a v a mysql c o n n e c t o r .
m y s q l c o n n e c t i o n l i n k=l o c a l h o s t : 8 8 8 9 / v o e t b a l t w e e t s ? u s e r=r o o t
&password=r o o t
80
De variabele video base location legt de map vast waar de videobeelden voor de verzamelde dataset opgeslagen zijn. De relatieve link naar de specifieke videobestanden vanuit
deze map is opgeslagen in de databank.
Met behulp van de variabele tts server address kan de gebruiker de link naar de gebruikte Mary TTS [40] server vastleggen. Deze link kan naar de server van de ontwikkelaars verwijzen, maar kan ook verwijzen naar een lokale installatie.
Ten slotte geeft de variabele mysql connection link aan via welke link het programma
kan verbinden met de database die de datasets bevat.
81
Bijlage B
Commentaarfragmenten bij de
evaluatie
Deze bijlage geeft een overzicht van de commentaarfragmenten die voorgelegd werden aan
het testpubliek. Deze fragmenten worden steeds gegeven in de volgorde zoals ze in de
vragenlijst verschenen. Ook de links naar de bijhorende videofragmenten worden hier
gegeven. Om deze fragmenten te kunnen bekijken of downloaden kan ingelogd worden
met gebruikersnaam user en wachtwoord evaluatie.
B.1
Eerste videofragment: Arsenal - Liverpool, doelpunt Santi Cazorla (A)
Dit videofragment is te bekijken of te downloaden op http://www.gertjangoossens.be/
Masterproef/Fragment1.mp4. De commentaarfragmenten die in de vragenlijst werden
opgenomen worden gegeven zijn de volgende:
Commentaar - Originele commentaar
Once again good pressure from Liverpool. Forcing Arsenal to play back square. Mikel
Arteta, Sagna, Giroud is in the middle who is hanging on there. In the it’s the header
that hits the post. But the rebound is in! Santi Cazorla! At the second attempt. And it
all stammed from a carefully crafted pass from Ramsey inside his own half, that relieved
Rosicky. Here it is, it’s a really good pass. Then played in from Sagna. Skrtel and Kolo
Toure are waiting in that near-post area, and it’s a great reaction from Cazorla. First he
comes in at the far post. Where was Flanagan? He’s nowhere in the picture, he was still
high up the field. But what a good finish it is, second time realm. Sagna, the provider
down that right-hand side. That’s the problem with the back three. Sakho had to go out
and stop the cross. They were the outnumbered in the box, and Flanagan was caught
82
high up the field. Santi Cazorla on the Arsenal score sheet for the first time this season.
Commentaar - Selectietechniek op Arsenal-tweets
This is a brilliant game so far. This is going to be a close one.
RANDOM FACT: Arsenal Football Club is an English Premier ... (afgebroken)
Common Arsenal we need to win this game.
RANDOM FACT: Liverpool Football Club is an English Premier League football club
based in... (afgebroken)
Lfc I predict a win for liverpool of 27-0. Yes I said 27-0. GET THE FUCK IN THERE!
1-0 the Arsenal! CAZORLA! Arsenal take the lead! 1-0! My little silent celebrations
make me think I’m slightly crazy. Cazorlaa! Get in there arsenal ?AFCvLFC. What a
goal off of the rebound omg. EPL Match Update - Goal - Arsenal 1 - 0 Liverpool - Santi.
What a sweet goal for Santi Carzola. Fucking yes! About time I got a bit of luck! Carzola!
Come on arsenal! 1-0 to the arsenal. What a goal that is santi. Get in Cazorla! What a
finish! WE ARE TOP OF THE LEAGUE, SAY WE ARE TOP OF THE LEAGUE.
Commentaar - Selectietechniek op alle tweets
This is a brilliant game so far. Flanagan having a good game thus far.
RANDOM FACT: Liverpool Football Club is an English Premier League football club ...
(afgebroken)
Common Arsenal we need to win this game. This match is getting a bit violent ?arsenal.
GOAL ARSENAL SANTI CAZORLA 1-0. GET THE FUCK IN THERE! 1-0 the Arsenal! YESS! arsenal! Get the fuck in! GOAL: Arsenal 1 - 0 Liverpool. Santi Cazorla
finishes well. What a sweet goal for Santi Carzola. That’s how you follow up lads! Cazorla! The Gunners took the lead. That’s a time to score ur first of the season.santi
caazzoorrllaa. Come on arsenal! 1-0 to the arsenal. Come On Arsenal! Get in there Santi
Cazorla.
Commentaar - Phrase Reinforcement op alle tweets
That problem for us, or a Liverpool win the league. Flanno doing good so far!
RANDOM FACT: The Premier League is an English professional league for association
football clubs. At the top of the English football league system, it is the country’s primary
football competition.
I predict a win this game deserves to be a top of the table clash. Come on the counter.
Take the lead! OO SANTI CAZOORRLLAA. You didn’t sign him. Get in there. What
goal off the post! Goal from Arsenal. I like him. That was beautiful! Arsenal the defence
doing FUK OFF. I got a bit of luck! Carzola! Goal! Arsenal! Sagna puts a good cross
in, Cazorla heads it goalwards but it hits the post, he’s there for the rebound though 1-0.
With the assist for Cazorla. Come on arsenal! 1-0 to the Arse-nal! Come on arsenal! Get
83
in there Santi Cazorla. Come on 18MINS AFTER THE BALL HE THE POST, SAKHO
LOST SAGNA WHO CROSSED IT. That was nice, That was class.
Commentaar - Phrase Reinforcement op Arsenal-tweets
This is i hope you want the two teams to lose. arsliv. We can win this. I hope someday i
get to cheer for him in my room with my tv and I’ve put the football on. Arsenal right
from there. We have hardly any passion in the box, not much else.
RANDOM FACT: A trophy is a reword for a specific achievement, and serves as recognition or evidence of merit. Trophies are most often rewarded for sporting achievements...
(onderbroken)
A top of the table clash. Come on lads! Love my boy Santi. Get in there Santi. What
a goal off the post. AFC 1-0. What a sweet goal by Arsenal needed that goal for Santi
Cazorla. I got a bit of luck! Carzola!
B.2
Tweede videofragment: Everton - Liverpool, doelpunt Kevin Mirallas (E)
Dit videofragment is te bekijken of te downloaden op http://www.gertjangoossens.be/
Masterproef/Fragment2.mp4. De commentaarfragmenten die in de vragenlijst werden
opgenomen worden gegeven zijn de volgende:
Commentaar - Selectietechniek op Liverpool-tweets
GOAL! Phil Coutinho puts LFC ahead, LFC 1-0. GET NEW F O L L O WERS?Visit satchat,TurnUp,DoctorWho50th,YNWA,LFC,acl,Derrick Rose,JFK,Catching Fire,Pandora.
MIrallas! 1-1 What a start to the game! WHAT A GAME THIS IS GOING TO BE !
Two GOALS in two minutes! Wow! What a start to a derby! We can’t defend set pieces
for shit. Pathetic defending, yet again we concede from a corner. EFC 1-1. What a start
to the game !
Commentaar - Originele commentaar
Pienaar, to McCarthy. Jagielka. Always so important for teams to settle, on a day like
today. And that will certainly have settled Liverpool. Yeah, and I believe Liverpool’s
record in going ahead in games this seasons is very strong too, so things are going very
well for them. Now Mignolets clearance in combination with Skrtel, allowing Everton
to apply some more early pressure here. My only concern for Everton is just how they
allowed Coutinho so much room. Lucas has been doing more travelling than most. He’s
been off to Miami and Toronto. His task week with the Brazil national team, he came off
the bench twice.
84
It’s been left to Leighton Baines, and his dead ball expertise to flow this one in. For
Liverpool, Lukaku and Distin are the guys they principally need to make sure to keep
tight. So Distin round the back. Skrtel! OH YES! Tapped it in for the leveller, Kevin
Mirallas! 2 goals in a few minutes in the Merseyside! That’s got them rolling here!
Commentaar - Phrase Reinforcement op Everton-tweets
RANDOM FACT: The Premier League is an English professional league ... (afgebroken)
Come on Reds! 0-1 eveliv YNWA! Phil Coutinho. What a game THIS is going to be one
crazy game. Well this is definitely shaping up. Come on everton! Goodison erupts as
Mirallas prods home from a Baines free kick. EFC 1 LFC 1. This is this actually a. Two
goals in a few minutes gone derby day has started with a bang!
RANDOM FACT: The 2008-09 Premier League season (known as the Barclays Premier
... (afgebroken)
Come on Everton. By themselves. The match will end up 5-5 at fault this time.
RANDOM FACT: The Merseyside derby is the name given ... (afgebroken)
Is something else, dead ball specialist Leighton Baines creates from a set piece. When are
we are made of.
Commentaar - Phrase Reinforcement op alle tweets
Up 1-0 is worth the early start this morning.
RANDOM FACT: The Premier League is an English professional league for association
(afgebroken)...
Goal by Coutinho from a set piece, now let’s defend them properly. Get in Coutinho.
Goal! everton liverpool (kevin mirallas,. WHAT A GAME this is going to be a loong
night. Come on Everton! Well this is going to be.Goodison erupts as Mirallas prods home
from a Baines free kick. EFC 1 LFC 1. Goal! Mirallas grabs an equaliser. EFC right back
in it. This is the Derby as usual! 1-1. Come on Gerrard’s corner. On set pieces seems
to be working. Be some game this! 1-1. By mirallas! everton 1- 1 liverpool at this time.
Reds defenders were confused by themselves. The match will end up 5-5 at this point.
Commentaar - Selectietechniek op alle tweets
They Marked the Big Guys and the Smallest find the net coutinho LFC 1-0. Liverpool
1-0 Everton LIVE ON ¿¿. Two GOALS in two minutes! Wow! COUTINHO! Liverpool
lead in the Derby! YESS MIRALLAS! Everton 1 - 1 Liverpool. WHAT A GAME THIS
IS GOING TO BE ! GOAL! Everton 1-1 Liverpool (Kevin Mirallas, 8’). This looks to be
a good match. Poor marking, goal for EFC 1-1. Putain Mirallas. Liverpool 1 - 1 Everton.
Goodison erupts as Mirallas prods home from a Baines free kick. EFC 1 LFC 1. What a
start to a derby! Goal! Mirallas grabs an equaliser. EFC right back in it. What a start
to the game ! 2 goals in 7 minutes . Merseyside Derby .
85
B.3
Derde videofragment: Manchester United - Arsenal, penaltyfase
Dit videofragment is te bekijken of te downloaden op http://www.gertjangoossens.be/
Masterproef/Fragment3.mp4. De commentaarfragmenten die in de vragenlijst werden
opgenomen worden gegeven zijn de volgende:
Commentaar - Phrase Reinforcement op Manchester United-tweets
In formation at HT. Is this Goal a msg to that corner!.mufc. Like a team thats won the
league before. Giroud gets his head on it had to be him didn’t it? RVP got on a deflected
cross, but he’s a long way out and. Of my chilled favMUFC. For Free ”Crucifi X: RT4RT?
. We’ll do what we are around the world, twice the amount of energy. Cheering for Man
U very strong persie! You go ahead and celebrate vs. former teams”garbage. These are
grown men. It’s sad If RvP celebrating hurts their feelings. We gonna take the lead till
the very end.
Commentaar - Selectietechniek op Arsenal-tweets
This match is slow. Arsenal vs. You say?”piersmorgan: We’re in complete control. Maybe
you are watching it in slow motion piersmorgan: We’re in complete control. FUCKING
RIGHT piersmorgan: We’re in complete control. Afc. Yh, ur team was in complete
control of d ”Park Da Bus”formation b4 RVP burst ur bubble. piersmorgan: We’re in
complete control. Afc the game is still young we will still turn the tables. ”piersmorgan:
We’re in complete control. Afc”Madting. Maybe not”piersmorgan: We’re in complete
control. Not looking good for Arsenal. it may get worse in the second half if TheBoyWonder enters the match! AFC this game is way too big for Aaron Ramsey. Come on
Arsenal! come on Arsenal! come on Arsenal! come on Arsenal! come on Arsenal! come
on Arsenal! come on Arsenal!
Commentaar - Selectietechniek op alle tweets
We haven’t turned up so far for this game. We are better than this. Arsenal can only win
this when they control the game but as it is now, MUFC is owning it. LOL ”captainugros:
UNITED 1 - CONTROL 0 piersmorgan: We’re in complete control. Nobody knows how
to play Arsenal better than ManchesterUnited, absolutely nobody! United’s passing has
been really good. Something which we definitely lack. Arsenal need to keep the ball
more! Penalty. Wtf. That was a penalty. United united united! Manchester united! We
are back, and with a BANG! Valencia shouldn’t be allowed to cross the ball likewise to
Rooney he shouldn’t make a turn while the ball is on his right foot. ? mufc rvp he scores
when he wants! Containing the rest of the hype til the match is over never know what
86
can happen in these games ? ”piersmorgan: We’re in complete control. Afc”lol. That
looked shoulder to shoulder on Rooney.
Commentaar - Phrase Reinforcement op alle tweets
”piersmorgan: We’re in complete control. Haven’t really got going in complete control.
Love ma GirlFriend. BusbyMUFC insideManutd;. Over o: tweetDapsyn: Cracker heading from OUTSIDE THE BOX FFS! We’re in complete control. Know just changed.
If we continue playing like this we will lose. We’re in complete control. Come on it.
With the header and WayneRooney with this ”don’t celebrate vs. former teams”garbage.
Thees are grown men. It’s sad If RvP celebrating hurts their feelings. ”piersmorgan:
We’re in complete control. For Free ”Crucifi X: RT4RT?.
Commentaar - Originele commentaar
Smalling, Kagawa, Rooney, Valencia, away from Vermaelen! Flashed right across behind
the penalty spot. Played out by Ramsey, he’s not happy with his clearance.
Rooney. Long ball by Evans. Again by Smalling. United are in the perfect zone, man to
man, but I would prefer, certainly as a coach, to just be getting blocks on Luis (Valencia),
because if you give him a chance for a running job, it’s very hard to deal with. They’re
gonna have the advantage. If you stop the run, you get arms and bodies in the way, I
think it helps your case enormously. Taken by Kagawa, he has only Van Persie in advance
of him. Rooney’s squre, and now Valencia getting up as well. Kagawa. Here comes Evra.
Koscielny away of Rooney, but it comes back to Rooney from an Arsenal player. Ronney
went over, thinks he should have a penalty, but the referee, looking through a crowd,
thought otherwise.
B.4
Vierde videofragment: Sunderland - Manchester
United, doelpunt Craig Gardner (S)
Dit videofragment is te bekijken of te downloaden op http://www.gertjangoossens.be/
Masterproef/Fragment4.mp4. De commentaarfragmenten die in de vragenlijst werden
opgenomen worden gegeven zijn de volgende:
Commentaar - Phrase Reinforcement op alle tweets
Go wild, wild, wild! we’ll go wild.wild.wild. Under way at Sunderland as they take on
Man Utd in the. Come on United!
RANDOM FACT: Manchester United Football Club is an English professional football
club, based in Old Trafford, Greater Manchester, that plays in the Premier League. Founded as Newton Heath LYR Football Club in 1878, the club changed its name to Manchester
87
United in 1902 and moved to Old Trafford in 1910.
We are HERE again! 1 point as usual ”MUFCSupport: LET’S GET something tonight,
think Kevin Ball’s attitude as a player will help me sleep at the Stadium. Is in week out!
Fuck off. Come onn mann wtf. We are so damn screwed with this sort of defending! down
already! U sure its man u’s match or u r fflin d commentary on United! Bring out the
flare that was. Is this a bad dream? Please tell me this may be a loong 90 mins. Come
on Sunderland. What was the defence doing! What the fuckin hell was that AWFUL!
With the strike, Vidic with the poor attempted clearance again. We can’t clear!
Commentaar - Phrase Reinforcement op Manchester United-tweets
So Come on. Under way at Sunderland as they take on Man Utd in the. Come on United!
Come on United!
RANDOM FACT: Manchester United Football Club is an English professional football
club, based in Old Trafford, Greater Manchester, that plays in the Premier League. Founded as Newton Heath LYR Football Club in 1878, the club changed its name to Manchester
United in 1902 and moved to Old Trafford in 1910.
Is in week out! Fuck off. Shit are united. Is so so so poor. What a goal, amazing manutd
defending that was. come on Sunderland. Here we go again. From vidic what the hell
was that AWFUL! Watching the game is on Utd! In play now but not happy about it.
What THE ACTUAL FUCK?!
Commentaar - Originele commentaar
It’s quite a chance today, for the 18 year old, Belgium born player, Adnan Januzaj. What
do you make of him? Well he’s a real talent. Great pass play, not saying he is the quickest
of players, but there is a balance about him. He was fantastic in pre-season. Fully deserves his chance. He could boost up his own value with a good performance here today.
Played back by Phil Jones. This is Nemanja Vidic. De Gea was just a spectator here, last
seasons. He was out for a long period, after crashing into his own player, Vidic. It was a
flat Sunderland performance that day. Perhaps these first four minutes, they were better
than the whole 90 minutes back then. Here’s Giaccherini. He’s got away from Patrice
Evra. Looked for Altidore with a cross. Jones, oh it’s come back! And Gardner strikes,
and Sunderland strike early. And what a boost that is for the home side! The bottom
side in the divison lead the champions! Craig Gardner scores!
Commentaar - Selectietechniek op Manchester United-tweets
So come on david moyes, play like fergie’s boys. we’ll go wild, wild, wild! we’ll go wild,
wild, wild! Probably the only match I want MUFC to win! We really can’t keep the
football can we.
RANDOM FACT: Manchester United Football ... (afgebroken)
88
Game on! Come on you, lads!
RANDOM FACT: Manchester United Football Club is an English professional football
club, based in Old Trafford, Greater Manchester, that plays in the Premier League. Founded as Newton Heath LYR Football Club in 1878, the club changed its name to Manchester
United in 1902 and moved to Old Trafford in 1910.
Vidic is a liability at the moment. The pub down the road LFC MUFC. Sunderland
1-0. Again terrible defending by United. Mufc fuck !:’(:’(:’(. Goal. Sunderland 1 - 0
Manchester United. What a way to start Sunderland? Are you fuckin serious! what is
going on Davey? Dear oh dear this not good at all.
Commentaar - Selectietechniek op alle tweets
So come on david moyes, play like fergie’s boys. we’ll go wild, wild, wild! we’ll go wild,
wild, wild! Probably the only match I want MUFC to win! We really can’t keep the
football can we. Game on! Come on you, lads! Mufc: David Moyes should keep the suits
off and go for the track down.
RANDOM FACT: Manchester United Football Club is an English professional football
club, ...(afgebroken)
Come on! Get the fuck in! Mufc wtf was that ? Come onn mann wtf. The pub down
the road LFC MUFC. Sunderland 1-0. Again terrible defending by United. Really really,
Manutd. Moyes what are you doing. Horrible, horrible start. Clear. The. Ball. What
a way to start Sunderland? Hahahaha Sunderland up on ManUtd thanks to Vidic’s fuck
up.
B.5
Vijfde videofragment: Arsenal - Liverpool, vervanging
Dit videofragment is te bekijken of te downloaden op http://www.gertjangoossens.be/
Masterproef/Fragment5.mp4. De commentaarfragmenten die in de vragenlijst werden
opgenomen worden gegeven zijn de volgende:
Commentaar - Selectietechniek op alle tweets
Aaron Ramsey is utterly brilliant. 2-0 to the Arsenal. I don’t hear the Liverpool fans.
We love you Arsenal we do We love you Arsenal we do We love you Arsenal we do ARSENAL, WE LOVE YOU! This game is not over yet. It’s all quiet it’s all quiet over there
ZunaiD wasim t93 nbalera mweezy6. What a shit game this is. WE ARE TOP OF THE
LEAGUE , SAY WE ARE TOP OF THE LEAGUE. Oh so proud to be a. ”ArtisticArsenal: WERE TOP OF THE LEAGUE, WERE TOP OF THE LEAGUE. ARSENAL
FOOTBALL CLUB, WERE TOP OF THE LEAGUE! This is a quality Arsenal side!
89
Wenger OUT! Be happy for Monreal and Vermaelen to come on now and just calmly see
the game out! It’s my Game ,it’s my pattern.en besides am at Home. Struggling to keep
possession in the last 10 minutes, need to settle the game down. What a game! This is
wonderful to watch! Honestly though, I think we look a touch complacent today. One
more goal. One more goal. And this is sealed. COYG. Monreal on for Rosicky. 2-0 (71).
Rosicky off, Monreal on Arsenal still 2-0 to the good.
Commentaar - Originele commentaar
Giroud. Gerrard. Coutinho. Szczesny bowls it out. Skrtel is watchful enough to go
across. Monreal is ready to come on for Arsenal. We’ve seen him many times this season.
He usually comes on not at left back, but at left midfield, in place of Cazorla or zil.
Jordan Henderson with the early cross towards Sturridge. What an opportunity. Brilliant
cross from Henderson, he’s done well since he’s gone to right back. It might be Ramsey
coming off.
Here’s the run of Ramsey, good first touch from him, great second touch. Great strike,
Mignolet had absolutely no chance. Does zil get another assist for that little pass?
Tomas Rosicky making way. Nacho Monreal, the Spaniard, takes his place.
Commentaar - Phrase Reinforcement op Arsenal-tweets
He is in the world, he could of been one of the best players in the mafia? We love you
Arsenal we do in January. hate to see you know what to do We can win this! :D. Is in
great form. AFCvLFC Arsene ¡3. ”piersmorgan: Come on Chomper, you know what to
do in January. hate to see you suffer like this. luis16suarez. I could wish i can’t :( don’t
worry u’l get enough of 12-15 years. In January. hate to see you know what to do in
the last 20 minutes is needed to ensure our win it! Is off. Being outplayed by Arsenal.
ARSLIV MISSING JOHNSON SO BADLY RIGHT NOW.
Commentaar - Selectietechniek op Liverpool-tweets
Moses is on to part the Red Sea. So Rodgers takes out Flanagan and replaces him with
Moses so who plays Right Back Now SMH. What a shit game this is. I can’t see any way
back in this game. Apart from the first 10 mins we’ve been poor today. Bitterly disappointed. WE ARE TOP OF THE LEAGUE , SAY WE ARE TOP OF THE LEAGUE.
Arsenal 2 liverpool 0 with 20 mins to go. Whats gonna happen next? :p. Be happy for
Monreal and Vermaelen to come on now and just calmly see the game out! When at
their best, watching Arsenal is like watching Barcelona. It’s my Game ,it’s my pattern.en
besides am at Home. What a game! This is wonderful to see! What a game! This
is wonderful to watch! ”ckeogh1971: Luis, you wanna win the title ? You wanna play
Champions league ? You know what to do. FreeSuarez AFCVLFC”hahahaha. Rosicky
off Monreal on. Great shift Tomas.
90
Commentaar - Phrase Reinforcement op alle tweets
With moses on. It’s all quiet it’s. ”piersmorgan: Come on Chomper, you know what
to do in January. hate to see you suffer like this. luis16suarez. ”piersmorgan: Come on
Chomper, you know what to do in January. hate to see you suffer like. In the EPL, it’s the
jersey. Need something special to clinch this back. Possible. WERE TOP of the hatred
from our tea am tonight is upset CarolRadull. In it for giving hom the chance. So secured
sia. You all night! You beautiful, beautiful man. I see why Suarez wants to that 5-point
gap :D. At the moment! To Ozil? He needs to learn how we play from OlivierGiroud
2-0 (71). I think Real Madrid bought the wrong welsh man. I agree iamLiQuiD: Ur vision
blur bro”0Lamlde: I do like Henderson at right back.
91
Bijlage C
Overzicht van de verzamelde
datasets
In het kader van deze masterproef werden tweets verzameld tijdens 22 verschillende wedstrijden uit de Engelse Premier League. Deze wedstrijden vonden plaats tussen september
2013 en december 2013. Niet alle sets waren echter bruikbaar. Tijdens een deel van de
wedstrijden bleken er immers niet genoeg tweets te zijn om een kwalitatieve commentaarstroom te genereren. Na filtering bleven er nog minder tweets over. Tabel C.1 geeft
een overzicht van alle verzamelde data. Het aantal tweets dat hier vermeld wordt, is het
aantal tweets dat tijdens de 90 minuten verstuurd werd.
Daarnaast wordt ook het aantal tweets voor de thuisploeg en de uitploeg individueel
weergegeven. De som van deze aantallen is groter dan het totale aantal tweets voor de
wedstrijden. Dit komt doordat bepaalde hashtags overlappen. Sommige gebruikers gebruiken namelijk hashtags van beide teams in hun tweets. Ook de algemene hashtags voor
de wedstrijd (bijvoorbeeld: #ARSLIV, #AFCvLFC) kunnen voor beide teams gebruikt
worden.
92
93
Datum
Arsenal - Liverpool
2 november 2013
Arsenal - Norwich
19 oktober 2013
Chelsea - West Bromwich Albion 9 november 2013
Crystal Palace - Arsenal
26 oktober 2013
Everton - Liverpool
23 november 2013
Everton - Newcastle United
30 september 2013
Fulham - Manchester United
2 november 2013
Liverpool - Crystal Palace
5 oktober 2013
Manchester City - Everton
5 oktober 2013
Manchester United - Arsenal
10 november 2013
Manchester United - Stoke City
26 oktober 2013
Newcastle United - Chelsea
2 november 2013
Newcastle United - Liverpool
19 oktober 2013
Norwich - Chelsea
6 oktober 2013
Sunderland - Arsenal
14 september 2013
Sunderland - Manchester City
10 november 2013
Sunderland - Manchester United 5 oktober 2013
Sunderland - Newcastle United
27 oktober 2013
Swansea - Liverpool
16 september 2013
Tottenham - Chelsea
28 september 2013
Tottenham - Manchester United 1 december 2013
West Bromwich Albion - Arsenal 6 oktober 2013
Wedstrijd
115278
83560
30112
59518
65656
27127
50019
43001
14752
116485
50808
45596
53458
33732
83590
7344
68468
15415
48683
50587
47888
52720
Totaal aantal tweets
92005
74342
26061
26950
40102
14249
10524
13716
10029
70516
48141
24980
30309
8001
27096
4050
17520
7575
13228
24937
21832
23503
Aantal tweets (T)
Tabel C.1: Een overzicht van de verzamelde data
73631
35987
9009
53303
58073
16007
45030
39922
7626
75572
4555
31110
43401
28986
69871
5184
59420
11476
42986
40906
37792
46920
Aantal tweets (U)
Bibliografie
[1] HTC.
Voetbalfan in stadion twittert meer dan kijker thuis, May
2014.
URL http://www.marketingtribune.nl/online/nieuws/2013/10/
voetbalfan-in-stadion-twittert-meer-dan-kijker-thuis/index.xml.
[2] Wayne Xin Zhao, Jing Jiang, Jianshu Weng, Jing He, Ee-Peng Lim, Hongfei Yan,
en Xiaoming Li. Comparing Twitter and Traditional Media Using Topic Models. In
Proceedings of the 33rd European conference on Advances in information retrieval,
ECIR’11, pages 338–349, Berlin, Heidelberg, 2011. Springer-Verlag. ISBN 978-3-64220160-8.
[3] Fernando Perez-Tellez, David Pinto, John Cardiff, en Paolo Rosso. On the difficulty
of clustering company tweets. In Proceedings of the 2nd international workshop on
Search and mining user-generated contents, SMUC ’10, pages 95–102, New York,
NY, USA, 2010. ACM. ISBN 978-1-4503-0386-6.
[4] Alan Ritter, Sam Clark, en Oren Etzioni. Named entity recognition in tweets: an experimental study. In Proceedings of the Conference on Empirical Methods in Natural
Language Processing, pages 1524–1534. Association for Computational Linguistics,
2011.
[5] Smitashree Choudhury en John G. Breslin. Extracting semantic entities and events
from sports tweets. In Proceedings, 1st Workshop on Making Sense of Microposts
(#MSM2011): Big things come in small packages, pages 22–32, 2011.
[6] Siqi Zhao, Lin Zhong, Jehan Wickramasuriya, en Venu Vasudevan. Human as realtime sensors of social and physical events: A case study of Twitter and sports games.
2011.
[7] Omar Alonso en Kyle Shiells. Timelines as Summaries of Popular Scheduled Events.
In Proceedings of the 22nd international conference on World Wide Web companion,
pages 1037–1044. International World Wide Web Conferences Steering Committee,
2013.
94
[8] Takashi Kobayashi, Tomokazu Takahashi, Daisuke Deguchi, Ichiro Ide, en Hiroshi
Murase. Detection of Biased Broadcast Sports Video Highlights by Attribute-Based
Tweets Analysis. In Shipeng Li, Abdulmotaleb El-Saddik, Meng Wang, Tao Mei,
Nicu Sebe, Shuicheng Yan, Richang Hong, en Cathal Gurrin, editors, MMM (2),
volume 7733 of Lecture Notes in Computer Science, pages 364–373. Springer, 2013.
ISBN 978-3-642-35728-2.
[9] Alchemy API, February 2014. URL http://www.alchemyapi.com/.
[10] TextRazor, November 2013. URL http://www.textrazor.com/.
[11] Bjornar Larsen en Chinatsu Aone. Fast and Effective Text Mining Using LinearTime Document Clustering. In Proceedings of the fifth ACM SIGKDD international
conference on Knowledge discovery and data mining, KDD ’99, pages 16–22, New
York, NY, USA, 1999. ACM. ISBN 1-58113-143-7.
[12] Kevin Dela Rosa, Rushin Shah, Bo Lin, Anatole Gershman, en Robert Frederking.
Topical Clustering of Tweets. In Proceedings of SIGIR Workshop on Social Web
Search and Mining, 2011.
[13] Daniel Ramage, Susan T. Dumais, en Daniel J. Liebling. Characterizing Microblogs
with Topic Models. In William W. Cohen en Samuel Gosling, editors, ICWSM. The
AAAI Press, 2010.
[14] Freddy Chong Tat Chua en Sitaram Asur. Automatic Summarization of Events From
Social Media. 2013.
[15] Jagan Sankaranarayanan, Hanan Samet, Benjamin E. Teitler, Michael D. Lieberman,
en Jon Sperling. TwitterStand: News in Tweets. In Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems,
GIS ’09, pages 42–51, New York, NY, USA, 2009. ACM. ISBN 978-1-60558-649-6.
[16] Brendan O’Connor, Michel Krieger, en David Ahn. TweetMotif: Exploratory Search
and Topic Summarization for Twitter. In Proceedings of the 4th International AAAI
Conference on Weblogs and Social Media (ICWSM), 2010.
[17] Carlos Martin, David Corney, en Ayse G¨oker. Finding Newsworthy Topics on Twitter. October 2013.
[18] Duan YaJuan, Chen Zhimin Wei Furu, Thou Ming, en Heung-Yeung Shum. Twitter Topic Summarization by Ranking Tweets Using Social Influence and Content
Quality. In Proceedings of the 24th International Conference on Computational Linguistics, pages 763–780, Mumbai, India.
95
[19] Saˇsa Petrovi´c, Miles Osborne, en Victor Lavrenko. Streaming first story detection
with application to Twitter. In Human Language Technologies: The 2010 Annual
Conference of the North American Chapter of the Association for Computational
Linguistics, pages 181–189. Association for Computational Linguistics, 2010.
[20] Miles Osborne, Saˇsa Petrovi´c, Richard McCreadie, Craig Macdonald, en Iadh Ounis.
Bieber no more: First story detection using Twitter and Wikipedia. In Proceedings
of the Workshop on Time-aware Information Access. TAIA, volume 12, 2012.
[21] Seen.
De
jacht
op
Dzhokar
Tsarnaev
na
de
Boston
Bombings,
February
2014.
URL
http://seen.co/event/
the-hunt-for-dzhokhar-tsarnaev-boston-ma-2013-6934/.
[22] Beaux Sharifi, Mark-Anthony Hutton, en Jugal K. Kalita. Automatic Summarization
of Twitter Topics. 2010.
[23] Beaux Sharifi, Mark-Anthony Hutton, en Jugal K. Kalita. Summarizing Microblogs
Automatically. In Human Language Technologies: The 2010 Annual Conference of
the North American Chapter of the Association for Computational Linguistics, HLT
’10, pages 685–688, Stroudsburg, PA, USA, 2010. Association for Computational
Linguistics. ISBN 1-932432-65-5.
[24] Jeffrey Nichols, Jalal Mahmud, en Clemens Drews. Summarizing sporting events
using Twitter. In Proceedings of the 2012 ACM international conference on Intelligent
User Interfaces, pages 189–198. ACM, 2012.
[25] Beaux Sharifi, Mark-Anthony Hutton, en Jugal K. Kalita. Experiments in Microblog
Summarization. In Social Computing (SocialCom), 2010 IEEE Second International
Conference on, pages 49–56, 2010.
[26] David Inouye en Jugal K. Kalita. Comparing Twitter Summarization Algorithms for
Multiple Post Summaries. In Privacy, security, risk and trust (passat), 2011 IEEE
third international conference on social computing (socialcom), pages 298–306, 2011.
[27] Deepayan Chakrabarti en Kunal Punera. Event Summarization Using Tweets. In
Proceedings of the 5th International AAAI Conference on Weblogs and Social Media
(ICWSM), 2011.
[28] Kristina Toutanova en Christopher D. Manning. Enriching the knowledge sources
used in a maximum entropy part-of-speech tagger. In Proceedings of the 2000 Joint
SIGDAT conference on Empirical methods in natural language processing and very
large corpora: held in conjunction with the 38th Annual Meeting of the Association for
Computational Linguistics-Volume 13, pages 63–70. Association for Computational
Linguistics, 2000.
96
[29] Kristina Toutanova, Dan Klein, Christopher D. Manning, en Yoram Singer. Featurerich part-of-speech tagging with a cyclic dependency network. In Proceedings of
the 2003 Conference of the North American Chapter of the Association for Computational Linguistics on Human Language Technology-Volume 1, pages 173–180.
Association for Computational Linguistics, 2003.
[30] Leon Derczynski, Alan Ritter, Sam Clark, en Kalina Bontcheva. Twitter Part-ofSpeech Tagging for All: Overcoming Sparse and Noisy Data. In Proceedings of
the International Conference on Recent Advances in Natural Language Processing.
Association for Computational Linguistics, 2013.
[31] Kevin Gimpel, Nathan Schneider, Brendan O’Connor, Dipanjan Das, Daniel Mills,
Jacob Eisenstein, Michael Heilman, Dani Yogatama, Jeffrey Flanigan, en Noah A.
Smith. Part-of-speech tagging for Twitter: Annotation, features, and experiments.
In Proceedings of the 49th Annual Meeting of the Association for Computational
Linguistics: Human Language Technologies: short papers-Volume 2, pages 42–47.
Association for Computational Linguistics, 2011.
[32] Olutobi Owoputi, Brendan OConnor, Chris Dyer, Kevin Gimpel, Nathan Schneider,
en Noah A. Smith. Improved part-of-speech tagging for online conversational text
with word clusters. In Proceedings of NAACL-HLT, pages 380–390, 2013.
[33] Alan Ritter, Sam Clark, Mausam, en Oren Etzioni. Named Entity Recognition in
Tweets: An Experimental Study. In EMNLP, 2011.
[34] Alan Ritter, Mausam, Oren Etzioni, en Sam Clark. Open Domain Event Extraction
from Twitter. In KDD, 2012.
[35] OpenNLP, April 2014. URL http://opennlp.apache.org/index.html.
[36] Joel Judd en Jugal Kalita. Better Twitter Summaries? In Proceedings of NAACLHLT, pages 445–449, 2013.
[37] Irene Langkilde-Geary. An empirical verification of coverage and correctness for a
general-purpose sentence generator. In Proceedings of the 12th International Natural
Language Generation Workshop, pages 17–24, 2002.
[38] Md. Jahangir Alam, Naushad UzZaman, en Mumit Khan. N-gram based statistical
grammar checker for Bangla and English. 2006.
[39] Google Translate TTS, November 2013. URL https://code.google.com/p/
java-google-translate-text-to-speech/.
[40] Mary TTS web client, May 2014. URL http://mary.dfki.de:59125/.
97
[41] FreeTTS, November 2013. URL http://freetts.sourceforge.net/docs/index.
php.
[42] Language Detection Library for Java, April 2014. URL https://code.google.com/
p/language-detection/.
[43] DBPedia Spotlight, April 2014. URL http://spotlight.dbpedia.org.
[44] DBPedia, April 2014. URL http://dbpedia.org.
[45] Caprica Software.
The vlcj project, April 2014.
capricasoftware.co.uk/projects/vlcj/index.html.
98
URL http://www.