Files
gotohack/status-analyzer.py
Oleg Morozenkov a8ff1c0459 Status analyzer
2016-02-21 18:22:31 +03:00

44 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import json
import sys
from nltk.stem.snowball import RussianStemmer
from nltk.tokenize import RegexpTokenizer
# load pazans
pazansGroups = None
pazansFileName = sys.argv[2]
with open(pazansFileName) as file:
pazansGroups = json.loads(file.read())
# analyze statues
statusStats = dict()
tokenizer = RegexpTokenizer(r"[A-Za-zА-Яа-я]+")
stemmer = RussianStemmer()
usersFileName = sys.argv[1]
with open(usersFileName) as file:
for line in file:
user = json.loads(line)
id = str(user["_id"])
if id in pazansGroups:
pazanGroups = pazansGroups[id]
statusText = user.get("status", "")
filteredStatusText = "".join([stemmer.stem(token).lower() for token in tokenizer.tokenize(statusText)])
if len(filteredStatusText) > 1:
statusStatsItem = statusStats.get(filteredStatusText, {
"full": statusText,
"count-boys": 0,
"count-girls": 0,
})
statusStatsItem["count-boys"] += len(pazanGroups) * (1 if user["sex"] == 2 else 0)
statusStatsItem["count-girls"] += len(pazanGroups) * (1 if user["sex"] == 1 else 0)
statusStats[filteredStatusText] = statusStatsItem
# print result
with open(sys.argv[3], "w", encoding="utf-8") as file:
for item in sorted(statusStats.items(), key=lambda item: item[1]["count-boys"] + item[1]["count-girls"], reverse=True):
file.write(item[1]["full"] + "\n")
file.write("\tboys: " + str(item[1]["count-boys"]) + "\n")
file.write("\tgirls: " + str(item[1]["count-girls"]) + "\n")