Abou Antoun Abou Antoun 2 octobre 2017 15:04

@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.


Ajouter une réaction

Pour réagir, identifiez-vous avec votre login / mot de passe