@Shawford
ET/OU si vous parlez ici de programmation, parleriez
vous au delà de repérer quelqu’un par la seule analyse syntaxique ou
tout autre moyen sur le fond de l’usage de la langue ?
Les deux. Tout d’abord il faut écrire un programme d’extraction. C’est la partie technique la plus délicate dans la mesure où il faut ’simuler’ l’appui de touches ’next’ pour faire défiler les pages de commentaires. J’avais fait ce travail quand un certain ’Morice’ sévissait sur ce site, c’était un cas d’école. Le programme que j’avais écrit à l’époque ne fonctionnerait plus aujourd’hui parce que la structure des pages a changé mais ce ne serait pas trop compliqué de le mettre au goût du jour.
Il faut commencer par étudier la structure html des pages auteur cela peut se faire avec l’inspecteur de Firefox, cela fait il faut (par exemple) un programme python.
Si cela vous passionne voici mon code écrit dans une vieille version de Python la 2.6 en 2015, les lignes diésées sont des instructions de débogage transformées en commentaires et peuvent en théorie être supprimées, ce qui raccourcit d’autant le programme. Malheureusement les indentations (essentielles en Python) ne sont pas respectées.
# -*- coding : utf-8
from lxml import etree
import urllib2
import StringIO
import re, htmlentitydefs
import codecs
global results
def unescape(text) :
« »« convertit les entités html & et &x »« »
def fixup(m) :
text = m.group(0)
if text[:2] == « &# » :
# character reference
try :
if text[:3] == « &#x » :
return unichr(int(text[3 :-1], 16))
else :
return unichr(int(text[2 :-1]))
except ValueError :
pass
else :
# named entity
try :
text = unichr(htmlentitydefs.name2codepoint[text[1 :-1]])
except KeyError :
pass
return text # leave as is
return re.sub(« &# ?\w+ ; », fixup, text)
def traite_forum_fil (ffli) :
« »« Traite un résultat »« »
#global results
divs=ffli.findall(’./div’)
#sujet=divs[0].find(’./a’)
#SUJET=etree.tostring(sujet,pretty_print=True, method="html")
#SUJET=unescape(SUJET)
#SUJET=re.sub(« <[^<]*> »,« »,SUJET)
message=divs[1]
messdivs=message.findall(’./div’)
chapo=messdivs[0]
#date=chapo.findall(’./span/span’)[1]
#DATE=etree.tostring(date,pretty_print=True, method="html")
#DATE=unescape(DATE)
#DATE=re.sub(« <[^<]*> »,« »,DATE)#suppression des balises html
texte=messdivs[1]
HTML= etree.tostring(texte,pretty_print=True, method="html")
TEXT = unescape(HTML)
TEXT=re.sub(« <[^<]*> »,« »,TEXT)
results.write(TEXT.encode(’utf-8’))
#print SUJET
#print DATE
#print TEXT
def traite_page(auteur, debut) :
« »« Traite une page de résultat depuis debut jusqu’à debut+5 »« »
print debut
the_url = « http://www.agoravox.fr/auteur/ »+auteur+« ?debut_bestof="+debut+"#pagination_bestof »
req = urllib2.Request(the_url)
handle = urllib2.urlopen(req)
page = handle.read() #OK
handle.close()
parser = etree.HTMLParser()
tree= etree.parse(StringIO.StringIO(page), parser)
page=tree.find(’./body/div’)
divs_de_page=page.findall(’./div’)
gauche=divs_de_page[3]
divs_de_gauche=gauche.findall(’./div’)
commentaires=divs_de_gauche[14]
listec=commentaires.find(’./ul’)
comments=listec.findall(’./li’)
if comments==[] :
raise Exception(’fin’)
for c in comments :
traite_forum_fil(c)
def traite_auteur(auteur) :
global results
results=open(auteur+’.txt’,’w’)
i=0
while True :
traite_page(auteur,str(i))
i=i+5
try :
while True :
traite_page(auteur,str(i))
i=i+5
except Exception as ex :
print ex
print « c’est fini »
results.close()
return
traite_auteur(« C’est Nabum »)
Une fois le boulot accompli il faut utiliser une bibliothèque si on veut rester dans l’univers Python
c’est NLTK (Natural Language Tool Kit).
Ensuite vous avez la matière pour travailler (un gros fichier txt fourni par l’extraction) et un programme très puissant. A vous de définir les critères. Longueur des phrases, richesse du vocabulaire, fréquence des mots, etc... Certes, ce sont des éléments syntaxiques mais il est difficile à un auteur de tricher sur la durée chassez le naturel ...).
Donc la comparaison de deux textes avec ces critères permet déjà d’avoir une idée.
Maintenant pour répondre à votre question un participant ayant deux pseudo peut ne pas être détecté s’il est extrêmement prudent, il faut un réel dédoublement de la personnalité pouvant à son tour être simulé (aidé) par programme.
Je n’ai jamais fait usage des données collectées mais c’était amusant.
04/10 23:31 - Gasty
@Abou Antoun je connais maintenant disons.fr. Non ! pas encore mais vous pouvez apprendre à (...)
04/10 21:40 - hervepasgrave
@Self con troll re non ! vous avez raison cpas6grave. Mais bon ! maintenant j’ai mis de (...)
04/10 21:02 - Abou Antoun
@hervepasgrave J’existe et j’ai décidé de cesser ma participation à AV. Excusez de (...)
04/10 20:53 - hervepasgrave
04/10 13:43 - hervepasgrave
@hervepasgrave Il y a des silences lourd de conséquences. cestapsgrave mais toujours (...)
04/10 12:33 - bouffon(s) du roi
@Armelle Le point de vue sociologique est le plus intéressant (de mon point de vue), pour le (...)
Agoravox utilise les technologies du logiciel libre : SPIP, Apache, Ubuntu, PHP, MySQL, CKEditor.
Site hébergé par la Fondation Agoravox
A propos / Contact / Mentions légales / Cookies et données personnelles / Charte de modération