190 |
188 |
191 } |
189 } |
192 }; |
190 }; |
193 |
191 |
194 DrawTweets.call (this); // FIXME: ugly. |
192 DrawTweets.call (this); // FIXME: ugly. |
195 if(numberOfTweet>0){Report();} |
|
196 |
193 |
197 }; |
194 }; |
198 |
195 |
199 function pourcent(value,max){ |
|
200 var myPourcentage = Math.round(value/max*1000)/10; |
|
201 return myPourcentage; |
|
202 |
|
203 } |
|
204 function round2Dec(value){ |
|
205 var myValueRounded = Math.round(value*100)/100; |
|
206 return myValueRounded |
|
207 } |
|
208 |
|
209 |
|
210 function searchKeyValueArray(mykey,myvalue,myarray){ |
|
211 for(var i=0; i<myarray.length; i++) { |
|
212 if(myarray[i][mykey]==myvalue){ |
|
213 return i; |
|
214 console.log("trouvé !"); |
|
215 } |
|
216 } |
|
217 return true; |
|
218 } |
|
219 |
|
220 var tweetConversationel = new Array(); |
|
221 var tweetConversationelSP = 0; |
|
222 var tweetClient = new Array(); |
|
223 var tweetRetweet = new Array(); |
|
224 var maxRetweet |
|
225 function tweetRetweetCount(mytweet){ |
|
226 tweet = mytweet.tsource |
|
227 var retweetIsHere = false; |
|
228 var myRT = { |
|
229 id:'', |
|
230 tweet:tweet, |
|
231 total:1, |
|
232 SPtraine:'' |
|
233 } |
|
234 if(tweet.retweet_count>0){ |
|
235 for(var i=0; i<tweetRetweet.length; i++){ |
|
236 if(tweetRetweet[i].id==myRT.id){ |
|
237 myRT = tweetRetweet[i]; |
|
238 retweetIsHere=true; |
|
239 } |
|
240 } |
|
241 |
|
242 if (mytweet.qualification==5){ |
|
243 myTclient.numberNsp+=1; |
|
244 }else{ |
|
245 myTclient.numberSp+=1; |
|
246 } |
|
247 |
|
248 if(retweetIsHere==false){ |
|
249 tweetRetweet.push(myRT); |
|
250 }else{ |
|
251 myRT.total+=1; |
|
252 } |
|
253 |
|
254 } |
|
255 } |
|
256 function tweetRetweetReport(tweet){ |
|
257 |
|
258 } |
|
259 function tweetClientCount(tweet){ |
|
260 var myTclient = { |
|
261 client:tweet.tsource.source, |
|
262 numberNsp:0, |
|
263 numberSp:0, |
|
264 total:1, |
|
265 } |
|
266 var clientIsHere = false; |
|
267 for(var i=0; i<tweetClient.length; i++) { |
|
268 if (tweetClient[i].client==tweet.tsource.source){ |
|
269 clientIsHere = true; |
|
270 myTclient = tweetClient[i]; |
|
271 } |
|
272 } |
|
273 if (tweet.qualification==5){ |
|
274 myTclient.numberNsp+=1; |
|
275 }else{ |
|
276 myTclient.numberSp+=1; |
|
277 } |
|
278 if(clientIsHere==false){ |
|
279 tweetClient.push(myTclient); |
|
280 }else{ |
|
281 myTclient.total+=1 |
|
282 } |
|
283 } |
|
284 function tweetClientSort(a,b){ |
|
285 return (a.total < b.total)?1:-1; |
|
286 } |
|
287 function tweetClientReport(){ |
|
288 tweetClient.sort(tweetClientSort); |
|
289 console.log("_______________________________"); |
|
290 for(var i=0; i<tweetClient.length; i++) { |
|
291 if(tweetClient[i].total>1){ |
|
292 console.log("t: "+tweetClient[i].total+" / sp :"+tweetClient[i].numberSp+" : "+tweetClient[i].client); |
|
293 } |
|
294 } |
|
295 console.log(JSON.stringify(tweetClient)); |
|
296 } |
|
297 function conversationalCount(tweet){ |
|
298 if(tweet.tsource.entities.user_mentions.length>2){ |
|
299 if (tweet.qualification!=5){ |
|
300 tweetConversationelSP+=1; |
|
301 } |
|
302 var myTc = { |
|
303 polemique:tweet.qualification, |
|
304 user_mentions:tweet.tsource.entities.user_mentions, |
|
305 tsource:tweet |
|
306 } |
|
307 tweetConversationel.push(myTc); |
|
308 } |
|
309 } |
|
310 function conversationalReport(){ |
|
311 console.log("_______________________________"); |
|
312 console.log("tweets conversationel : "+tweetConversationel.length); |
|
313 console.log("tweets conversationel sp : "+pourcent(tweetConversationelSP,tweetConversationel.length)); |
|
314 console.log("tweets conversationel nsp: "+pourcent(tweetConversationel.length-tweetConversationelSP,tweetConversationel.length)); |
|
315 } |
|
316 function tweetsStats(){ |
|
317 for(var i=0; i<this.tweets.length; i++) { |
|
318 conversationalCount(this.tweets[i]) |
|
319 tweetClientCount(this.tweets[i]); |
|
320 //tweetRetweetCount(tweets[i]); |
|
321 } |
|
322 conversationalReport(); |
|
323 tweetClientReport(); |
|
324 } |
|
325 function numberUserUsePolemic(){ |
|
326 |
|
327 for(var i=0; i<this.tweets.length; i++) { |
|
328 if (this.tweets[i].qualification!=5){ |
|
329 var searchKeyValueArrayTest = searchKeyValueArray('userId', this.tweets[i].userId,userPol); |
|
330 if(searchKeyValueArrayTest==true){ |
|
331 myUser = userPol.push({ |
|
332 userId: this.tweets[i].userId, |
|
333 userScreenName: this.tweets[i].userScreenName, |
|
334 tweets:[] |
|
335 }); |
|
336 } |
|
337 }else{ |
|
338 var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userPol); |
|
339 if(searchKeyValueArrayTest==true){ |
|
340 myUser = userNoPol.push({ |
|
341 userId: tweets[i].userId, |
|
342 userScreenName: tweets[i].userScreenName, |
|
343 tweets:[] |
|
344 }); |
|
345 } |
|
346 } |
|
347 |
|
348 var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userst); |
|
349 //console.log(searchKeyValueArrayTest); |
|
350 if(searchKeyValueArrayTest==true){ |
|
351 //console.log("ici"); |
|
352 myUser = userst.push({ |
|
353 userId: tweets[i].userId, |
|
354 userScreenName: tweets[i].userScreenName, |
|
355 tweetsNP:[], |
|
356 tweetsSP:[], |
|
357 ecartNP:null, |
|
358 ecartSP:null |
|
359 }); |
|
360 if(this.tweets[i].qualification!=5){ |
|
361 userst[myUser-1].tweetsNP.push(tweets); |
|
362 }else { |
|
363 userst[myUser-1].tweetsSP.push(tweets); |
|
364 } |
|
365 }else{ |
|
366 if(this.tweets[searchKeyValueArrayTest].qualification!=5){ |
|
367 userst[searchKeyValueArrayTest].tweetsNP.push(this.tweets); |
|
368 }else { |
|
369 userst[searchKeyValueArrayTest].tweetsSP.push(this.tweets); |
|
370 } |
|
371 } |
|
372 } |
|
373 |
|
374 moyenneDeTweetsNPparUsers = (numberOfTweet-qTweet_0)/userNoPol.length |
|
375 moyenneDeTweetsSPparUsers = (numberOfTweet-qTweet_0)/userPol.length |
|
376 sommeDeMesCarreSP=0; |
|
377 sommeDeMesCarreNP=0; |
|
378 for(var i=0; i<userst.length; i++) { |
|
379 myEcartSP = Math.pow(userst[i].tweetsSP.length-moyenneDeTweetsSPparUsers,2); |
|
380 userst[i].ecartSP=myEcartSP; |
|
381 sommeDeMesCarreSP+=myEcartSP; |
|
382 |
|
383 myEcartNP = Math.pow(userst[i].tweetsNP.length-moyenneDeTweetsNPparUsers,2); |
|
384 userst[i].ecartNP=myEcartNP; |
|
385 sommeDeMesCarreNP+=myEcartNP; |
|
386 } |
|
387 varianceSP = sommeDeMesCarreSP/userst.length |
|
388 varianceNP = sommeDeMesCarreNP/userst.length |
|
389 |
|
390 SommeVariances = varianceNP + varianceSP; |
|
391 |
|
392 EcartTypeSP = Math.sqrt(varianceSP); |
|
393 EcartTypeNP = Math.sqrt(varianceNP); |
|
394 |
|
395 SommeEcart = EcartTypeSP + EcartTypeNP; |
|
396 |
|
397 |
|
398 |
|
399 |
|
400 console.log("user SP : "+userPol.length); |
|
401 console.log("user nSP : "+userNoPol.length); |
|
402 console.log("nbrTP / user SP : "+round2Dec(moyenneDeTweetsSPparUsers)); |
|
403 console.log("nbrT / user nSP : "+round2Dec(moyenneDeTweetsNPparUsers)); |
|
404 console.log("varianceSP : "+round2Dec(varianceSP)); |
|
405 console.log("varianceNP : "+round2Dec(varianceNP)); |
|
406 console.log("EcartTypeSP : "+round2Dec(EcartTypeSP)); |
|
407 console.log("EcartTypeNP : "+round2Dec(EcartTypeNP)); |
|
408 |
|
409 } |
|
410 function Report(){ |
|
411 console.log("_______________________________"); |
|
412 console.log("Total de tweets : "+numberOfTweet) |
|
413 console.log("Total de tweets P : "+(numberOfTweet-qTweet_0)+" "+ pourcent((numberOfTweet-qTweet_0),numberOfTweet)+" %") |
|
414 console.log("accord : "+qTweet_OK+" "+pourcent(qTweet_OK,numberOfTweet)+" %"); |
|
415 console.log("desaccord : "+qTweet_KO+" "+pourcent(qTweet_KO,numberOfTweet)+" %"); |
|
416 console.log("question : "+qTweet_Q+" "+pourcent(qTweet_Q,numberOfTweet)+" %"); |
|
417 console.log("reference : "+qTweet_REF+" "+pourcent(qTweet_REF,numberOfTweet)+" %"); |
|
418 console.log("sans polemic : "+qTweet_0+" "+pourcent(qTweet_0,numberOfTweet)+" %"); |
|
419 // numberUserUsePolemic(); |
|
420 // tweetsStats.call(this); //fixme: ugly |
|
421 } |
|
422 // tweet Drawing (in raphael) |
196 // tweet Drawing (in raphael) |
423 function DrawTweets (){ |
197 function DrawTweets (){ |
424 // GROUPES TWEET ============================================ |
198 // GROUPES TWEET ============================================ |
425 // Count nbr of cluster and tweet in a frame an save int in "frames" |
199 // Count nbr of cluster and tweet in a frame an save int in "frames" |
426 numberOfTweet = this.tweets.length; |
200 numberOfTweet = this.tweets.length; |