version finale
This commit is contained in:
parent
a2d179a3c0
commit
d96337b30c
7 changed files with 219 additions and 57 deletions
9
.gitignore
vendored
9
.gitignore
vendored
|
@ -125,3 +125,12 @@ dmypy.json
|
|||
|
||||
# fichiers latex
|
||||
*.tex
|
||||
|
||||
# Fichiers propres au projet
|
||||
|
||||
analyse_articles.py
|
||||
comment_clean.csv
|
||||
commentaires.py
|
||||
textes_articles.py
|
||||
traitement_articles.py
|
||||
traitement_commentaires.py
|
||||
|
|
7
Makefile
7
Makefile
|
@ -1,2 +1,7 @@
|
|||
build: rapport.md
|
||||
build: rapport.md analyse_articles.ipynb commentaires.ipynb textes_articles.ipynb traitement_articles.ipynb traitement_commentaires.ipynb
|
||||
pandoc --filter=pandoc-citeproc --dpi=180 -f markdown+raw_tex+latex_macros rapport.md -o rapport.pdf
|
||||
jupyter nbconvert --to script analyse_articles.ipynb
|
||||
jupyter nbconvert --to script commentaires.ipynb
|
||||
jupyter nbconvert --to script textes_articles.ipynb
|
||||
jupyter nbconvert --to script traitement_articles.ipynb
|
||||
jupyter nbconvert --to script traitement_commentaires.ipynb
|
|
@ -102,7 +102,7 @@
|
|||
|
||||
@misc{coulombe_french_2019,
|
||||
title = {French {LEFFF} {Lemmatizer}},
|
||||
url = {https://github.com/ClaudeCoulombe/FrenchLefffLemmatizer/commit/91c2f469bbd317213b8438072496eb1ed696a8e7},
|
||||
url = {https://github.com/ClaudeCoulombe/FrenchLefffLemmatizer},
|
||||
abstract = {A French Lemmatizer in Python based on the LEFFF (Lexique des Formes Fléchies du Français / Lexicon of French inflected forms) is a large-scale morphological and syntactic lexicon for French. A lemmatizer retrurns the lemma or more simply the dictionary entry of a word, In French, the lemmatization of a verb returns this verb to the infinitive and for the other words, the lemmatization returns this word to the masculine singular.},
|
||||
urldate = {2019-12-26},
|
||||
author = {Coulombe, Claude},
|
||||
|
@ -129,7 +129,7 @@
|
|||
|
||||
@misc{taehoon_kim_emoji_2019,
|
||||
title = {emoji},
|
||||
url = {https://github.com/carpedm20/emoji/commit/f2598b78eecec9c6839c0d8b4fea820c0feb29e8},
|
||||
url = {https://github.com/carpedm20/emoji/},
|
||||
abstract = {emoji terminal output for Python},
|
||||
author = {{Taehoon Kim} and {Kevin Wurster}},
|
||||
month = sep,
|
||||
|
|
|
@ -766,11 +766,126 @@
|
|||
"g006 = sns.catplot(x=\"media\", y=\"prop_ner_list_inter\",\n",
|
||||
" kind=\"boxen\",\n",
|
||||
" data=prop_ner_inter_post);\n",
|
||||
"g006.set_axis_labels(\"Média\", \"Nombre moyen d'entités nommées communes par commentaire\")\n",
|
||||
"g006.set_axis_labels(\"Média\", \"Nombre moyen d'entités nommées communes, par article\")\n",
|
||||
"g006.despine(offset=10, trim=True)\n",
|
||||
"g006.savefig(\"g006.pdf\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Synsets"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"textes_articles_df[\"pos_dict_lem_art\"] = textes_articles_df.apply(lambda x: lem_fr(x[\"pos_dict\"]), axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"textes_articles_df[\"synsets_art\"] = textes_articles_df.apply(lambda x: synsets_fr(x[\"pos_dict_lem_art\"]), axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"textes_articles_df[\"synsets_art_merged\"] = textes_articles_df.apply(lambda x: list(set(sum(x[\"synsets_art\"],[]))), axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"commentaires_df[\"synsets_comm_merged\"] = commentaires_df.apply(lambda x: list(set(sum(x[\"synsets\"],[]))), axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"commentaires_df[\"synsets_comm_merged_t\"] = commentaires_df.apply(lambda x: [str(i) for i in x[\"synsets_comm_merged\"]], axis=1)\n",
|
||||
"textes_articles_df[\"synsets_art_merged_t\"] = textes_articles_df.apply(lambda x: [str(i) for i in x[\"synsets_art_merged\"]], axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"d007a = commentaires_df[['media','id','post_id','synsets_comm_merged_t']].copy()\n",
|
||||
"d007a['nb_synsets'] = d007a.apply(lambda x: len(x['synsets_comm_merged_t']), axis=1)\n",
|
||||
"d007b = textes_articles_df[['media','post_id','synsets_art_merged_t']].copy()\n",
|
||||
"d007 = d007a.merge(d007b, on=['post_id','media'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"d007['synsets_inter'] = d007.apply(lambda x: len(intersection(x['synsets_comm_merged_t'],x['synsets_art_merged_t'])), axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"d007['prop_synsets_inter'] = d007['synsets_inter']/d007['nb_synsets']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"prop_synsets_inter_post = d007[['media','post_id','prop_synsets_inter']].groupby(['media','post_id']).agg('mean').reset_index(['media','post_id'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"prop_synsets_inter_post.columns = ['media','post_id','prop_synsets_inter']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"g007 = sns.catplot(x=\"media\", y=\"prop_synsets_inter\",\n",
|
||||
" kind=\"boxen\",\n",
|
||||
" data=prop_synsets_inter_post);\n",
|
||||
"g007.set_axis_labels(\"Média\", \"Proportion moyenne de synsets communs, par article\")\n",
|
||||
"g007.despine(offset=10, trim=True)\n",
|
||||
"g007.savefig(\"g007.pdf\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
139
rapport.md
139
rapport.md
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: IFT7022 - TP 3 - Commentaires Facebook en lien avec la presse écrite. Revue de littérature et quantification de la pertinence.
|
||||
title: IFT7022 - TP 3 - Commentaires Facebook en lien avec la presse écrite. Revue de littérature et mesure de la pertinence.
|
||||
author: François Pelletier
|
||||
date: \today
|
||||
citation_package: natbib
|
||||
|
@ -24,9 +24,9 @@ header-includes: |
|
|||
|
||||
# Introduction
|
||||
|
||||
# Attributs linguistiques
|
||||
Les commentaires extraits des fils de discussions sur des publications Facebook constituent une nouvelle forme de discours, complètement différent des textes formatés et normalisés qui proviennent de médias écrits. Leurs caractéristiques distinctes en tant que type littéraire à l'intersection de la critique et du dialogue vont demander des adaptations dans le traitement du langage naturel. Les attributs linguistiques, les entités nommées, la prise de position et les relations entre les commentaires seront abordés. Puis, on présente différentes approches de modélisation. Un exemple pratique permettra d'illustrer plusieurs concepts et de tirer quelques premières conclusions.
|
||||
|
||||
Les commentaires extraits des fils de discussions sur des publications Facebook constituent une nouvelle forme de discours, complètement différent des textes formatés et normalisés provenant du domaine journalistique. Il est donc nécessaire de s'y attarder en détail afin de réaliser des analyses pertinences.
|
||||
# Attributs linguistiques
|
||||
|
||||
## Analyse du discours
|
||||
|
||||
|
@ -35,23 +35,23 @@ Selon Baxter [@baxter_discourse-analytic_2010], l'analyse du discours, qui est p
|
|||
- La variabilité du langage (adaptation à l'audience et au contexte)
|
||||
- La nature du langage (descriptif, narratif, expressif ou humoristique)
|
||||
- Le répertoire (vocabulaire, grammaire, figures de style)
|
||||
- Approche macro et microanalytiques (contextes sociopolitiques et psychologiques)
|
||||
- Les contextes sociopolitiques et psychologiques
|
||||
|
||||
**Observations**: Comme le sens propre de chacun des commentaires est influencé par ces éléments, il sera pertinent de pouvoir les représenter sous forme d'attributs dans un modèle de classification de la pertinence par rapport à l'article en référence. Sinon, le modèle pourrait être biaisé, par exemple, en favorisant les commentaires qui ont un vocabulaire soutenu, davantage descriptif et sur un ton professionnel, c'est-à-dire similaire au style journalistique. Toutefois, ce dernier pourrait ne pas être davantage en lien avec le contenu de l'article qu'un commentaire humoristique avec un niveau grammatical faible.
|
||||
**Observations **: Le sens propre de chacun des commentaires est influencé par ces éléments. Ils peuvent représenter des attributs dans un modèle de classification de la pertinence par rapport à l'article en référence. Il faut noter que le modèle pourrait être biaisé, par exemple, en favorisant les commentaires qui ont un vocabulaire soutenu, davantage descriptif et sur un ton professionnel, c'est-à-dire similaire au style journalistique. Ce dernier pourrait ne pas être davantage en lien avec le contenu de l'article qu'un commentaire humoristique avec un niveau grammatical faible.
|
||||
|
||||
## Mécanismes d'emphase
|
||||
|
||||
Selon Liebeskind et al. [@liebeskind_comment_2018], les commentaires sur les réseaux sociaux présentent de nouvelles caractéristiques sémiotiques et linguistiques. En fait, on parle ici de sémiotique, car le discours n'est plus seulement signifié par des mots, mais aussi par des abréviations, des émojis, des onomatopées, des répétitions de caractères (en particulier la ponctuation).
|
||||
|
||||
On ajoute une dimension linguistique, car en plus d'un jargon spécifique à ce type de communication, les commentaires sont souvent écrits dans un niveau de langage passant du soutenu au vulgaire dans le même fil de conversation. Ces différents comportements peuvent être rassemblés sous la dénomination de mécanismes d'emphase.
|
||||
On ajoute une dimension linguistique, car en plus d'un jargon spécifique à ce type de communication, les commentaires sont souvent écrits dans un niveau de langage passant du soutenu au vulgaire dans le même fil de conversation. Ces différents comportements peuvent être rassemblés sous le nom de mécanismes d'emphase.
|
||||
|
||||
### Émojis et interjections
|
||||
|
||||
Les émojis et les interjections sont une composante essentielle des commentaires retrouvés sur les réseaux sociaux. Plus d'un commentaire sur huit contient un émoji.
|
||||
|
||||
Halté [@halte_les_2018] a étudié en détail le rôle des émoticônes (tels que `:-)`) et des interjections (tels que le fameux *lol*), ainsi que leur normalisation inspirée des caractères japonais nommés pour l'occasion `émojis` (néologisme qui relie l'anglais *emotion* et la racine japonaise *-ji* représentant la notion de symbole). Il précise d'ailleurs que des tests de substitution ou de suppression permettent d'identifier le rôle modalisateur de ces expressions (une sorte de multiplicateur de la polarité ou valence du texte).
|
||||
Halté [@halte_les_2018] a étudié en détail le rôle des émoticônes (tels que `:-)`) et des interjections (tels que le fameux *lol*). Leur normalisation inspirée des caractères japonais est nommée `émojis` (néologisme qui relie l'anglais *emotion* et la racine japonaise *-ji* représentant la notion de symbole). Il précise d'ailleurs que des tests de substitution ou de suppression permettent d'identifier le rôle modal de ces expressions (une sorte de facteur multiplicatif de la polarité ou valence du texte).
|
||||
|
||||
**Observations**: La portée d'une émoticône, tout comme la portée d'une négation, peut être déterminée en effectuant une analyse syntaxique par relations ou par constituants. Mais, règle générale, l'auteur remarque que la portée s'étend toujours sur les éléments qui précèdent l'émoticône, ce qui peut parfois limiter la recherche des fragments de la phrase qui en sont affectés (lorsqu'ils ne sont pas à la fin du commentaire).
|
||||
**Observations **: La portée d'une émoticône, tout comme la portée d'une négation, peut être déterminée en effectuant une analyse syntaxique par relations ou par constituants. Mais, règle générale, l'auteur remarque que la portée s'étend toujours sur les éléments qui précèdent l'émoticône. Ceci peut parfois limiter la recherche des fragments de la phrase qui en sont affectés (lorsqu'ils ne sont pas à la fin du commentaire).
|
||||
|
||||
### Majuscules, emphases et répétitions
|
||||
|
||||
|
@ -61,82 +61,98 @@ Cependant, leur usage moderne est davantage considéré comme l'expression de la
|
|||
|
||||
### Ponctuations
|
||||
|
||||
Plusieurs des auteurs cités dans ce rapport [@georgalou_discourse_2017], [@halte_les_2018], [@liebeskind_comment_2018] notent aussi la présence fréquente de successions de plusieurs signes de ponctuation ou de la même lettre dans un mot comme un moyen additionnel de mettre de l'emphase. Notons que le TweetTokenizer de NLTK [@bird_nltk:_2002] compte même un paramètre pour limiter le nombre de successions d'un même jeton.
|
||||
Plusieurs des auteurs cités dans ce rapport [@georgalou_discourse_2017], [@halte_les_2018], [@liebeskind_comment_2018] notent aussi la présence fréquente de successions de plusieurs signes de ponctuation ou de la même lettre dans un mot. C'est un moyen additionnel de mettre de l'emphase. Notons que le TweetTokenizer de NLTK [@bird_nltk:_2002] compte même un paramètre pour limiter le nombre de successions d'un même jeton.
|
||||
|
||||
### Impact sur la classification des parties du discours
|
||||
|
||||
Ces nouveaux attributs font de sorte qu'il ne sera plus possible d'utiliser avec autant de fiabilité les classificateurs de parties du discours (*part of speech*) aussi efficacement, car ils n'ont pas été conçus pour tenir compte de la présence de ces nouveaux éléments dans les phrases. Une approche retenue dans cette analyse pour augmenter la qualité de l'étiquetage est de séparer les émojis du contenu des phrases et de les considérer séparément, tout en conservant un marqueur de leur position dans les phrases. Comme des modèles ne tiennent généralement pas compte de la casse ni de la présence de ponctuation à l'extérieur de la phrase, il n'est pas nécessaire d'apporter d'autres modifications ici.
|
||||
Ces nouveaux attributs font de sorte qu'il ne sera plus possible d'utiliser avec autant de fiabilité les classificateurs de parties du discours (*part of speech*). Ils n'ont pas été conçus pour tenir compte de ces nouveaux éléments dans les phrases. Une approche retenue dans cette analyse pour augmenter la qualité de l'étiquetage est de séparer les émojis du contenu des phrases. Comme des modèles ne tiennent généralement pas compte de la casse ni de la présence de ponctuation à l'extérieur de la phrase, il ne sera pas nécessaire d'apporter d'autres modifications.
|
||||
|
||||
## Qualité des commentaires
|
||||
|
||||
Schultes et al.[@schultes_leave_2013] ont étudié les commentaires sur la plateforme de partage de vidéos Youtube. Le principal objectif était de classifier les commentaires selon différentes catégories de vidéos, en tenant compte à la fois des types de commentaires et de leur qualité.
|
||||
Schultes et al.[@schultes_leave_2013] ont étudié les commentaires sur la plateforme de partage de vidéos YouTube. Le principal objectif était de classifier les commentaires selon différentes catégories de vidéos, en tenant compte à la fois des types de commentaires et de leur qualité.
|
||||
|
||||
Les principaux constats de leurs travaux sont que les commentaires sont généralement mal perçus par les utilisateurs du site web, étant perçus comme agressifs, stupides et non-pertinents par près de la moitié des utilisateurs. Environ un utilisateur sur huit serait enclin à laisser des commentaires, alors que plus de la moitié ne liraient que les premiers commentaires.
|
||||
Les principaux constats de leurs travaux sont que les commentaires sont généralement mal perçus par les utilisateurs du site web, étant perçus comme agressifs, stupides et non pertinents par près de la moitié des utilisateurs. Environ un utilisateur sur huit serait enclin à laisser des commentaires, alors que plus de la moitié ne liraient que les premiers commentaires.
|
||||
|
||||
Les types de commentaires correspondent à leur rôle: participer à une discussion, décrire son expérience de façon substantielle constitue un commentaire de qualité supérieure ou au contraire, un commentaire avec une forte charge sentimentale serait de qualité inférieure. Pour mesurer la qualité, ils ont utilisé l'outil SentiStrength, un outil d'analyse de sentiment spécialisé dans les commentaires de réseaux sociaux, ainsi qu'une liste de marqueurs émotionnels. Pour mesurer la pertinence, ils ont mesuré l'appariement de mots-clés dans le commentaire avec le titre du vidéo. Enfin, selon cette étude, l'ensemble des commentaires effectués sur un vidéo permettraient en soi de fournir une description adéquate du vidéo.
|
||||
Les types de commentaires correspondent à leur rôle : participer à une discussion, décrire son expérience de façon substantielle constitue un commentaire de qualité supérieure ou au contraire, un commentaire avec une forte charge sentimentale serait de qualité inférieure. Pour mesurer la qualité, ils ont utilisé l'outil SentiStrength, un outil d'analyse de sentiment spécialisé dans les commentaires de réseaux sociaux, ainsi qu'une liste de marqueurs émotionnels. Pour mesurer la pertinence, ils ont mesuré l'appariement de mots-clés dans le commentaire avec le titre du vidéo. Enfin, selon cette étude, l'ensemble des commentaires effectués sur un vidéo permettraient en soi de fournir une description adéquate du vidéo.
|
||||
|
||||
**Observations**: On pourrait donc déduire, depuis ces travaux, que la pertinence d'un commentaire pourrait être mesurée par la contribution d'un commentaire individuel à cette représentation collective. Une hypothèse à valider serait de voir s'il est possible d'avoir cette même représentation du contenu d'articles journalistiques à travers l'ensemble des commentaires qui leurs sont associés.
|
||||
**Observations **: On pourrait donc déduire, depuis ces travaux, que la pertinence d'un commentaire pourrait être mesurée par la contribution d'un commentaire individuel à cette représentation collective. Une hypothèse à valider serait de voir s'il est possible d'avoir cette même représentation du contenu des articles dans les commentaires qui leur sont associés.
|
||||
|
||||
# Entités nommées
|
||||
|
||||
## Lieu
|
||||
|
||||
Georgalou [@georgalou_discourse_2017] décrit différentes approches pour identifier les marqueurs de localisation dans les commentaires sur Facebook, dans un rapport à l'identité de l'utilisateur. Tout d'abord, il y a l'usage de toponymes et d'anthroponymes (en particulier les gentilés). La localisation peut aussi être liée à un élément culturel (site touristique, régime alimentaire, évènement), à une personnification (nationalité, appartenance ou personnalités politiques) ou à une relativisation (par des adverbes ou adjectifs démonstratifs).
|
||||
Georgalou [@georgalou_discourse_2017] décrit différentes approches pour identifier les marqueurs de localisation dans les commentaires sur Facebook. Tout d'abord, il y a l'usage de toponymes et d'anthroponymes (en particulier les gentilés). La localisation peut aussi être liée à un élément culturel (site touristique, régime alimentaire, évènement), à une personnification (nationalité, appartenance ou personnalités politiques) ou à une relativisation (par des adverbes ou adjectifs démonstratifs).
|
||||
|
||||
**Observations**: Il sera essentiel de pouvoir ramener ces différents marqueurs de localisation à une forme normalisée pour en faire l'analyse et la comparaison avec les entités présentes dans le texte de l'article en question. De plus, il sera nécessaire ici de pouvoir utiliser une notion de méronymie ou d'holonymie dans la représentation pour en établir la pertinence. Un index géographique composé de données sémantiques telles que la base de données GeoNames sera très utile pour cette tâche.
|
||||
**Observations **: Il sera essentiel de pouvoir ramener ces différents marqueurs de localisation à une forme normalisée pour en faire l'analyse et la comparaison avec les entités présentes dans le texte de l'article en question. De plus, il sera nécessaire ici de pouvoir utiliser une notion de méronymie ou d'holonymie dans la représentation pour en établir la pertinence. Un index géographique composé de données sémantiques telles que la base de données GeoNames sera très utile pour cette tâche.
|
||||
|
||||
## Temps
|
||||
|
||||
Toujours selon Georgalou, différents types de marqueurs temporels sont utilisés dans les commentaires. Ces marqueurs peuvent représenter des durées, des moments, des références à des évènements historiques ou culturels, mais souvent aussi une référence relative à l'âge (anniversaire, vieillissement, évènement de vie, une génération ou une cohorte) ou à une expérience vécue par l'utilisateur.
|
||||
Toujours selon Georgalou, différents types de marqueurs temporels sont utilisés dans les commentaires. Ces marqueurs peuvent représenter des durées, des moments, des références à des évènements historiques ou culturels, mais souvent aussi une référence relative à l'âge (anniversaire, évènement, génération ou cohorte) ou à une expérience vécue par l'utilisateur.
|
||||
|
||||
Le temps peut aussi être mesuré avec un nombre d'évènements ou tel qu'une commodité ou une monnaie. Certaines formes de ponctuation ou d'interjections peuvent exagérer la portée d'un marqueur temporel. On pourrait aussi ajouter la présence d'émojis représentant des concepts temporels. Tout comme pour les lieux, on peut aussi retrouver des adverbes.
|
||||
Le temps peut aussi être mesuré avec un nombre d'évènements. Certaines formes de ponctuation ou d'interjections peuvent exagérer la portée d'un marqueur temporel. On pourrait aussi ajouter la présence d'émojis représentant des concepts temporels. Tout comme pour les lieux, on peut aussi retrouver des adverbes.
|
||||
|
||||
**Observations**: Pour utiliser ces entités mentionnées dans les commentaires dans la mesure de leur pertinence, il sera nécessaire de bien identifier les marqueurs de temps dans l'article, d'extraire les dates des évènements cités et de mesurer les durées entre ces différents instants.
|
||||
**Observations **: Pour utiliser ces entités mentionnées dans les commentaires dans la mesure de leur pertinence, il sera nécessaire de:
|
||||
|
||||
- bien identifier les marqueurs de temps dans l'article;
|
||||
- extraire les dates des évènements cités;
|
||||
- mesurer les durées entre ces différents instants.
|
||||
|
||||
# Prise de parole
|
||||
|
||||
## Expertise
|
||||
|
||||
Georgalou démontre aussi l'usage des commentaires sur Facebook pour démontrer une forme d'expertise, étaler son éducation et aussi s'approprier la maîtrise d'un sujet. Le réseau social est utilisé pour projeter une image positive du niveau d'éducation par les utilisateurs.
|
||||
Georgalou démontre aussi l'usage des commentaires sur Facebook pour prétendre à une forme d'expertise, étaler sa culture et son éducation et aussi s'approprier la maîtrise d'un sujet. Le réseau social est utilisé pour projeter une image positive du niveau d'éducation par les utilisateurs.
|
||||
|
||||
Cette expertise est illustrée par un choix de vocabulaire spécifique au domaine professionnel ou éducatif, par des phrases impératives ou interrogatives, par le jugement du travail des autres (parfois sarcastiques) et par l'ajout de références en lien avec le domaine d'expertise.
|
||||
Cette expertise est illustrée par:
|
||||
|
||||
**Observations**: Pour mesurer la pertinence de cette expertise avec le contenu de l'article, il faudra identifier les principaux sujets de celui-ci, puis constater si au moins un d'entre eux correspond à l'expertise prétendue par l'utilisateur.
|
||||
- le choix de vocabulaire spécifique au domaine professionnel ou éducatif;
|
||||
- l'usage de phrases impératives ou interrogatives;
|
||||
- le jugement parfois sarcastique du travail des autres;
|
||||
- l'ajout de références en lien avec le domaine d'expertise.
|
||||
|
||||
**Observations **: Pour mesurer la pertinence de cette expertise avec le contenu de l'article, il faudra identifier les principaux sujets de celui-ci. Puis, constater si au moins un d'entre eux correspond à l'expertise prétendue par l'utilisateur.
|
||||
|
||||
## Position
|
||||
|
||||
La prise de position relie le commentaire aux réalités socio-culturelles traitées dans l'article journalistique. Ces positions sont exprimées par des adjectifs et des adverbes évaluatifs, des verbes affectifs et cognitifs, des modalités, des pronoms génériques, de l'ironie, des questions rhétoriques, des citations et des paroles de chansons ainsi que l'utilisations de mécanismes d'emphase. On notera aussi l'usage de nombreuses images, notamment les *memes*, quoique ce n'est pas le sujet de ce rapport.
|
||||
La prise de position relie le commentaire aux réalités socioculturelles traitées dans l'article journalistique. Ces positions sont exprimées par des adjectifs et des adverbes évaluatifs, des verbes affectifs et cognitifs, des modalités, des pronoms génériques, de l'ironie, des questions rhétoriques, des citations ainsi que l'utilisation de mécanismes d'emphase. On notera aussi l'usage de nombreuses images, notamment les *memes*, quoique ce n'est pas le sujet de ce rapport.
|
||||
|
||||
**Observations**: On remarque ici que l'on devra utiliser des étiquettes plus détaillés que celles qu'on retrouve notamment dans Universal Dependancies [@noauthor_universal_2019] pour identifier les parties du discours impliquées dans la prise de position. Pour ce faire, il sera nécessaire d'utiliser conjointement les parties du discours et une base sémantique telle que WordNet pour augmenter le niveau de détail contenu dans les étiquettes.
|
||||
**Observations **: On remarque ici que l'on devra utiliser des étiquettes plus détaillées que celles qu'on retrouve notamment dans Universal Dependancies [@noauthor_universal_2019] pour identifier les parties du discours impliquées dans la prise de position. Pour ce faire, il sera nécessaire d'utiliser conjointement les parties du discours et une base sémantique telle que WordNet pour augmenter le niveau de détail contenu dans les étiquettes.
|
||||
|
||||
# Relations entre les commentaires
|
||||
|
||||
Halté [@halte_les_2018] caractérise le tchat par l'intermittence entre la discussion synchrone et asynchrone, la forte présence d'indices contextuels, des tours de parole segmentés, des conversations entrelacées, la présence ou l'absence de séparations syntaxiques et le présence de mécanismes d'emphase.
|
||||
Halté [@halte_les_2018] caractérise le clavardage par:
|
||||
|
||||
**Observations**: Toutes ces caractéristiques du tchat, qui peut s'apparenter fortement aux fils de discussion sur les réseaux sociaux, sont ainsi à considérer dans l'étude de la pertinence des commentaire par rapport à un article, car on ne retrouve pas seulement qu'une relation unidirectionnelle entre le commentaire et l'article, mais aussi un ensemble de relations entre les commentaires.
|
||||
- l'intermittence entre la discussion synchrone et asynchrone,
|
||||
- la forte présence d'indices contextuels,
|
||||
- les tours de parole segmentés,
|
||||
- les conversations entrelacées,
|
||||
- la présence ou l'absence de séparations syntaxiques et
|
||||
- la présence de mécanismes d'emphase.
|
||||
|
||||
**Observations **: Ces caractéristiques du clavardage sont à considérer dans l'étude de la pertinence des commentaires par rapport à un article. On ne retrouve pas seulement qu'une relation entre le commentaire et l'article, mais aussi un ensemble de relations entre les commentaires.
|
||||
|
||||
## Les types de relations
|
||||
|
||||
Ces types de relations peuvent, en quelque sorte, constituer une mesure qui représente la variable réponse dans un modèle de classification
|
||||
|
||||
- L'**intertextualité** se définit comme la relation du commentaire avec les commentaires précédents, ainsi qu'avec la publication originale. C'est le concept qui peut être représenté par une mesure de distance entre les commentaires, ainsi qu'entre un commentaire et la publication. Dans Facebook, les commentaires qui répondent à un autre commentaire sont organisés sous une structure parent-enfant.
|
||||
- L'**interdiscursivité** se définit comme l'entrecroisement de différents dialogues indépendants dans un même fil de discussion.
|
||||
- Les commentaires peuvent ainsi parfois être associés à la mauvaise discussion et mener à des quidproquo ou à des interprétations humoristiques. C'est pourquoi sur Facebook, fort heureusement, plusieurs utilisateurs vont identifier l'interlocauteur précédent dans un commentaire à l'aide de son nom d'utilisateur.
|
||||
- L'**interdiscursivité** se définit comme l'entrecroisement de différents dialogues indépendants, dans un même fil de discussion.
|
||||
- Les commentaires peuvent ainsi parfois être associés à la mauvaise discussion et mener à des quiproquos ou à des interprétations humoristiques. C'est pourquoi sur Facebook, fort heureusement, plusieurs utilisateurs vont identifier l'interlocuteur précédent dans un commentaire à l'aide de son nom d'utilisateur.
|
||||
- Il sera important de pouvoir associer le commentaire au bon fil de discussion pour en mesurer la pertinence. Pour identifier cette propriété dans les commentaires, un classificateur pourra apposer une étiquette à un commentaire qui indique à quel dialogue il appartient.
|
||||
- La **multimodalité** se définit comme l'interchangeabilité des différents modes de communication au sein d'une même discussion. C'est l'aspect multimédia des discussions sur les réseaux sociaux, où le texte, les images et les vidéos se succèdent.
|
||||
- On pourrait ici mesurer le nombre de changement de modalité du discours dans une même discussion. Il faut noter cependant que cette fonctionnalité peut être désactivée par le propriétaire de la page.
|
||||
- On pourrait ici mesurer le nombre de changements de modalité du discours dans une même discussion. Il faut noter cependant que cette fonctionnalité peut être désactivée par le propriétaire de la page.
|
||||
|
||||
# Modélisation
|
||||
|
||||
## Représentation vectorielle
|
||||
|
||||
Étant donné que les commentaires sont de courts textes, souvent formés à partir d'un très lange lexique, en tenant compte des nombreuses fautes d'orthographes et mécanismes d'emphase, leur représentation sous forme vectorielle est très creuse. Il faudra donc nécessairement utiliser une forme de réduction de dimensionnalité. Liebeskind et al. [@liebeskind_comment_2018] propose quatre approches: analyse sémantique latente (LSA), allocation dynamique de Dirichlet (LDA), projection aléatoire (Lemme de Johnson-Lindenstrauss) ou plongements de mots.
|
||||
Étant donné que les commentaires sont de courts textes, souvent formés à partir d'un très lange lexique, en tenant compte des nombreuses fautes d'orthographe et mécanismes d'emphase, leur représentation sous forme vectorielle est très creuse. Il faudra donc nécessairement utiliser une forme de réduction de dimensions. Liebeskind et al. [@liebeskind_comment_2018] propose quatre approches : analyse sémantique latente (LSA), allocation dynamique de Dirichlet (LDA), projection aléatoire (Lemme de Johnson-Lindenstrauss) ou plongements de mots.
|
||||
|
||||
Comme nos commentaires ne sont pas étiquetés, nous devons utiliser un apprentissage non-supervisé. Les deux approches consistent à construire soit un modèle commun pour les articles et les commentaires, ou deux modèles distincts. Afin d'avoir une représentation qui est davantage axée vers les thèmes généraux, les auteurs recommendent d'utiliser des vecteurs denses et cours, tout au plus quelques centaines.
|
||||
Comme nos commentaires ne sont pas étiquetés, nous devons utiliser un apprentissage non supervisé. Les deux approches consistent à construire soit un modèle commun pour les articles et les commentaires, ou deux modèles distincts. Afin d'avoir une représentation qui est davantage axée vers les thèmes généraux, les auteurs recommandent d'utiliser des vecteurs denses et cours, tout au plus quelques centaines.
|
||||
|
||||
## Classification de la pertinence
|
||||
|
||||
Selon les observations de Liebeskind et al. [@liebeskind_comment_2018], les principaux obstacles à la modélisation de la pertinence des commentaires est la présence de salutations et de commentaires obscènes, les nombreux sous-entendus entre les commentaires (contexte latent) ainsi que la présence de sarcasme. Les commentaires qui ont été classés comme non-pertinents étaient principalement des références implicites ou des salutations.
|
||||
Selon les observations de Liebeskind et al. [@liebeskind_comment_2018], les principaux obstacles à la modélisation de la pertinence des commentaires est la présence de salutations et de commentaires obscènes, les nombreux sous-entendus entre les commentaires (contexte latent) ainsi que la présence de sarcasme. Les commentaires qui ont été classés comme non pertinents étaient principalement des références implicites ou des salutations.
|
||||
|
||||
|
||||
# Exemple d'application
|
||||
|
@ -151,7 +167,7 @@ Nous analyserons les articles provenant des pages Facebook de trois médias écr
|
|||
\caption{Décompte des articles par médias}
|
||||
\end{figure}
|
||||
|
||||
Le premier corpus étudié est constitué du texte de chacun des articles qui sont liés dans les publications (l'utilisateur de Facebook devant cliquer sur le lien pour y accéder). Le titre de l'article n'est pas inclus dans ce corpus. Le second corpus est constitué d'un ensemble de commentaires publiés par des utilisateurs du réseau social et associés à chacune des publications précédentes.
|
||||
Le premier corpus étudié est constitué du texte des articles liés dans les publications (l'utilisateur de Facebook devant cliquer sur le lien pour y accéder). Le titre de l'article n'est pas inclus dans ce corpus. Le second corpus est constitué d'un ensemble de commentaires publiés par des utilisateurs du réseau social et associés à chacune des publications précédentes.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
|
@ -161,8 +177,9 @@ Le premier corpus étudié est constitué du texte de chacun des articles qui so
|
|||
|
||||
Ces deux corpus ont été créés à l'aide des données de commentaires extraites depuis l'application en ligne exportcomments.com @noauthor_exportcomments.com_2019 dans des fichiers XLSX. Les fichiers ont par la suite été utilisés par les programmes Python suivants :
|
||||
|
||||
- `commentaires.ipynb` pour extraire les commentaires depuis les fichiers téléchargés à l'aide de Pandas @mckinney_data_2010.
|
||||
- `textes_articles.ipynb` pour extraire les textes depuis les URL disponibles dans les fichiers, par récupération de données (*web scraping*), en utilisant la librairie Python `newspaper` @ou-yang_newspaper3k:_2019. Du même coup, cette librairie permet d'extraction d'entités nommées et l'étiquetage des parties du discours.
|
||||
- `commentaires.py` pour extraire les commentaires depuis les fichiers téléchargés à l'aide de Pandas @mckinney_data_2010.
|
||||
- `textes_articles.py` pour extraire les textes depuis les URL disponibles dans les fichiers, par récupération de données (*web scraping*), en utilisant la librairie Python `newspaper` @ou-yang_newspaper3k:_2019. Du même coup, cette librairie permet d'extraction d'entités nommées et l'étiquetage des parties du discours.
|
||||
- `parsing_functions.py`: fonctions d'extraction communes
|
||||
|
||||
## Méthodologie et algorithmes
|
||||
|
||||
|
@ -172,37 +189,45 @@ La plupart des analyses ont été effectuées à l'aide des différents algorith
|
|||
|
||||
La segmentation en phrases a été effectuée à l'aide de l'algorithme `PunktSentenceTokenizer` et la segmentation en mots à l'aide de `ToktokTokenizer` ou `TweetTokenizer`.
|
||||
|
||||
L'étiquetage des POS et l'extraction des entités nommées dans les articles ont été effectuées à l'aide de l'analyseur Stanford CoreNLP. Seules les étiquettes POS suivantes ont été conservées: `['ADJ','ADV','INTJ','NOUN','PROPN','VERB']` dans un dictionnaire Python. Les entités nommées ont aussi été enregistrées dans un dictionnaire Python.
|
||||
L'étiquetage des parties du discours et l'extraction des entités nommées dans les articles ont été effectués à l'aide de l'analyseur Stanford CoreNLP. Seules les étiquettes de parties du discours suivantes ont été conservées : `['ADJ',’ADV’,’INTJ’,’NOUN’,’PROPN’,’VERB’]` dans un dictionnaire Python. Les entités nommées ont aussi été enregistrées dans un dictionnaire Python.
|
||||
|
||||
Les programmes suivants ont servi au traitement:
|
||||
|
||||
- `traitement_articles.py`: traitement des articles
|
||||
- `traitement_commentaires.py`: traitement des commentaires
|
||||
- `pretraitement.py`: fonctions d'analyse communes
|
||||
|
||||
### Traitement additionnel pour les commentaires
|
||||
|
||||
Les références aux auteurs ont été identifiées en effectuant la liste des auteurs des commentaires pour chacun des articles, puis en identifiant ceux-ci dans le texte des commentaires pour le même article.
|
||||
Les références aux auteurs ont été identifiées listant les auteurs des commentaires , pour chacun des articles, puis en identifiant ceux-ci dans le texte des autres commentaires.
|
||||
|
||||
Puis, les émojis ont été convertis en texte à l'aide de la librairie `emoji` pour Python [@taehoon_kim_emoji_2019]. Ils ont aussi été extraits dans un dictionnaire Python.
|
||||
Puis, les émojis ont été convertis en texte à l'aide de la librairie `émoji` pour Python [@taehoon_kim_emoji_2019]. Ils ont aussi été extraits dans un dictionnaire Python.
|
||||
|
||||
La lemmatisation en français a été effectuée à l'aide du French LEFFF Lemmatizer de Claude Coulombe [@coulombe_french_2019], qui est compatible avec la syntaxe utilisée dans la librairie NLTK et les étiquettes POS utilisées dans WordNet.
|
||||
La lemmatisation en français a été effectuée à l'aide du French LEFFF Lemmatizer de Claude Coulombe [@coulombe_french_2019], qui est compatible avec la syntaxe utilisée dans la librairie NLTK et les étiquettes de parties du discours utilisées dans WordNet.
|
||||
|
||||
On identifie les synsets réalistes pour chaque mot admissible depuis WordNet en convertissant les étiquettes POS identifiées depuis avec CoreNLP POS Tagger en étiquettes compatibles. On recherche ensuite le mot lemmatisé dans WordNet, et on filtre les résultats obtenus selon les POS possibles.
|
||||
On identifie les synsets réalistes pour chaque mot admissible depuis WordNet en convertissant les étiquettes de parties du discours identifiées depuis avec CoreNLP POS Tagger en étiquettes compatibles. On recherche ensuite le mot lemmatisé dans WordNet, et on filtre les résultats obtenus selon les parties du discours possibles.
|
||||
|
||||
## Analyse statistique des commentaires
|
||||
|
||||
Les différentes métriques ont été calculées et les graphiques créés dans le programme `analyse_articles.py`.
|
||||
|
||||
### Distribution du niveau de langage
|
||||
|
||||
![Nombre de jetons avec POS dans WordNet, par commentaire, par média](g000.pdf)
|
||||
![Nombre de jetons avec parties du discours dans WordNet, par commentaire, par média](g000.pdf)
|
||||
|
||||
On observe une médiane entre 2 et 5 pour le nombre de mots ayant une étiquette POS et un synset dans Wordnet. Ce nombre est remarquablement plus élevé pour les commentaires sur les publications de RC. Dans presque tous les cas, il est possible d'utiliser au moins un synset pour inférer le sens de la publication et ainsi établir une relation sémantique avec l'article.
|
||||
On observe une médiane entre 2 et 5 pour le nombre de mots ayant une étiquette parties du discours et un synset dans Wordnet. Ce nombre est remarquablement plus élevé pour les commentaires sur les publications de RC. Dans presque tous les cas, il est possible d'utiliser au moins un synset pour inférer le sens de la publication et ainsi établir une relation sémantique avec l'article.
|
||||
|
||||
![Proportion de jetons avec POS dans WordNet, par commentaire, par média](g001.pdf)
|
||||
![Proportion de jetons avec parties du discours dans WordNet, par commentaire, par média](g001.pdf)
|
||||
|
||||
Dans plus de la moitié des cas, 75% des mots ayant une étiquette POS dans les commentaires sont présents dans WordNet.
|
||||
Dans plus de la moitié des cas, 75 % des mots ayant une étiquette parties du discours dans les commentaires sont présents dans WordNet.
|
||||
|
||||
![Nombre de types de POS avec classes fermées, par commentaire, par média](g002.pdf)
|
||||
![Nombre de types de parties du discours avec classes fermées, par commentaire, par média](g002.pdf)
|
||||
|
||||
La majorité des commentaires contiennent entre deux et quatre types d'étiquettes POS.
|
||||
La majorité des commentaires contiennent entre deux et quatre types d'étiquettes de parties du discours.
|
||||
|
||||
### Distribution des marqueurs d'emphase
|
||||
|
||||
![Emojis les plus fréquents, par médias](g003.pdf)
|
||||
![Émojis les plus fréquents, par médias](g003.pdf)
|
||||
|
||||
Les émojis les plus fréquents, par une large proportion, expriment le rire. Le plus fréquent est *Face With Tears of Joy*.
|
||||
|
||||
|
@ -212,7 +237,7 @@ On retrouve généralement peu de mots en majuscules, mais les rares commentaire
|
|||
|
||||
![Nombre de ponctuations successives totales, par commentaire, par média](g005.pdf)
|
||||
|
||||
On remarque qu'il y a une quantité non-négligeable de commentaires qui contiennent des ponctuations successives. Ce serait un attribut à considérer dans un modèle de classification.
|
||||
On remarque qu'il y a une quantité non négligeable de commentaires qui contiennent des ponctuations successives. Ce serait un attribut à considérer dans un modèle de classification.
|
||||
|
||||
### Indicateurs d'intertextualité
|
||||
|
||||
|
@ -221,12 +246,12 @@ Le principal indicateur de l'intertextualité est la référence directe à l'au
|
|||
\begin{figure}
|
||||
\centering
|
||||
\input{decompte_auteur_refere}
|
||||
\caption{Proportion de références d'auteurs de commentaires par médias}
|
||||
\caption{Proportion de références d'auteurs, par médias}
|
||||
\end{figure}
|
||||
|
||||
On remarque ici que la proportion de commentaires qui contiennent de telles références est constante et est aussi relativement élevée, peu importe le média. On pourrait donc conclure qu'il s'agit d'un attribut possédant de bonnes caractéristiques pour un modèle de classification binaire.
|
||||
|
||||
Un autre indicateur de l'intertextualité est l'usage de la deuxième personne, autant pour les pronoms que pous les articles possessifs. Cependant, ici, il n'est pas possible de savoir, sans devoir faire une analyse des coréférences, si la personne référée est l'auteur d'un commentaire ou une personne mentionnée dans l'article.
|
||||
Un autre indicateur de l'intertextualité est l'usage de la deuxième personne, autant pour les pronoms que pour les articles possessifs. Cependant, ici, il n'est pas possible de savoir, sans devoir faire une analyse des coréférences, si la personne référée est l'auteur d'un commentaire ou une personne mentionnée dans l'article.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
|
@ -240,18 +265,26 @@ Cet indicateur possède aussi de bonnes caractéristiques pour être un attribut
|
|||
|
||||
### Entités nommées en commun
|
||||
|
||||
Une façon d'évaluer la pertinence d'un commentaire est de dénombrer le nombre d'entités nommées communes entre ce commentaire et l'article auquel il réfère. Ici, on calcule, pour chaque commentaire, le nombre d'entités en commun avec l'article, puis on effectue la moyenne par article. C'est cette statistique qui est représentée sur la figure qui suit.
|
||||
Une façon d'évaluer la pertinence d'un commentaire est de dénombrer le nombre d'entités nommées communes entre ce commentaire et l'article auquel il réfère. Ici, on calcule, pour chaque commentaire, le nombre d'entités en commun avec l'article, puis on effectue la moyenne par article. Cette statistique est représentée sur la figure qui suit.
|
||||
|
||||
![Nombre moyen d'entités nommées en commun entre le commentaire et l'article, par article et par média](g006.pdf)
|
||||
|
||||
On remarque que le nombre moyen d'entités référées par commentaire est d'environ 1/5. On peut donc dire qu'en moyenne, 20% des commentaires réfèrent à une entité nommée de l'article. Afin d'augmenter potentiellement ce nombre, on pourrait étendre la liste des entités nommées à l'aide de relations sémantiques de méronymie.
|
||||
On remarque que le nombre moyen d'entités référées par commentaire est d'environ 1/5. On peut donc dire qu'en moyenne, 20 % des commentaires réfèrent à une entité nommée de l'article. Afin d'augmenter potentiellement ce nombre, on pourrait étendre la liste des entités nommées à l'aide de relations sémantiques de méronymie.
|
||||
|
||||
### Groupes sémantiques en commun
|
||||
|
||||
- Synsets
|
||||
Une autre façon d'évaluer la pertinence est d'accumuler tous les synsets possibles d'un article et de chacun de ses commentaires et de calculer l'intersection de ces ensembles. On calcule ensuite la proportion des synsets provenant du commentaire qui se trouvent dans l'intersection. Enfin, on calcule la moyenne, par article, de cette proportion. On a donc un indicateur moyen de la distance sémantique entre l'article et l'ensemble de ses commentaires.
|
||||
|
||||
Note : on calcule ici une proportion étant donné le nombre variable de synsets par parties du discours.
|
||||
|
||||
![Proportion moyenne de synsets en commun entre le commentaire et l'article, par article et par média](g007.pdf)
|
||||
|
||||
On remarque ici une grande différence entre les distributions de cette statistique parmi les médias. Une hypothèse à vérifier serait que celle-ci permettrait de dresser un portrait global de la relation sémantique des commentaires produits par les abonnés d'un média aux articles publiés par celui-ci.
|
||||
|
||||
# Conclusion
|
||||
|
||||
Dans ce rapport, on aborde les caractéristiques propres aux commentaires sur les réseaux sociaux. On décrit plusieurs approches possibles pour créer des attributs pour un modèle de classification de la pertinence. Des liens sont établis avec la plupart des techniques traditionnelles d'analyse et traitement du langage naturel. De plus, on présente certaines caractéristiques propres aux commentaires. Enfin, un exemple d'application est étudié et illustré avec plusieurs statistiques sur les attributs potentiels dans la modélisation. Les entités nommées et la sémantique pourraient représenter des composantes importantes pour mesurer la pertinence des commentaires.
|
||||
|
||||
\pagebreak
|
||||
|
||||
# Références
|
||||
|
|
Loading…
Reference in a new issue