analyze new posts

This commit is contained in:
rusinthread 2016-12-31 19:54:28 +03:00
parent c7e5380f99
commit b17bdb0c52
5 changed files with 173 additions and 1 deletions

131
analyze_new.py Normal file
View File

@ -0,0 +1,131 @@
#!/usr/bin/python3
import re
import operator
import itertools
import sys
from pprint import pprint
def load_text(n):
with open('new/text' + str(n) + '_orig') as f:
text = f.read()
lines = re.split(r'[\?\.\!]+', text)
lines = list(map(lambda s: s.replace(' ', '').replace('-', ''), lines))
return "\n".join(lines).strip()
def letter_pos(letter):
if letter in predefined_table:
return predefined_table[letter]
else:
letter_table = table[letter]
if len(letter_table) > 0:
return letter_table[0][0]
else:
return None
alphabet = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
text = ''
text += load_text(1) + "\n"
text += load_text(3) + "\n"
#text += load_text(2)
text = text.upper()
predefined_table = {
'М': 8,
'А': 5,
'Р': 3,
'Ш': 1,
'Щ': 1,
'И': 1,
'У': 2,
'Ю': 10,
'В': 12,
'Й': 5,
'Л': 2,
'Ц': 2,
'О': 4,
'Д': 8,
'Т': 9,
'П': 5,
'Э': 3
}
table = {}
lines = text.split("\n")
for a in alphabet:
table[a] = {}
for line in lines:
indexes = [m.start() for m in re.finditer(a, line)]
for index in indexes:
index += 1
if index in table[a]:
table[a][index] += 1
else:
table[a][index] = 1
for a, t in table.items():
ts = sorted(t.items(), key=operator.itemgetter(1), reverse=True)
table[a] = ts
#pprint(table['Э'])
#sys.exit()
variants = []
for line in lines:
valid = []
for a in table:
if True:
index = letter_pos(a)
if index == None:
continue
try:
if line[index-1] == a and a not in valid:
valid.append(a)
except IndexError:
continue
if False:
letter_table = table[a]
if not len(letter_table):
continue
for i in range(3):
if i > len(letter_table)-1:
continue
if a == 'Щ':
index = 1
else:
index = letter_table[i][0]
try:
if line[index-1] == a and a not in valid:
valid.append(a)
except IndexError:
continue
variants.append(valid)
#print('('+''.join(valid)+')')
variants = list(filter(lambda a: len(a), variants))
variants = variants[11:31]
pprint(variants)
sys.exit()
#variants = variants[11:]
res = list(itertools.product(*variants))
for r in res:
if r[0] == 'Ь': continue
# if r[1] != 'А': continue
# if r[5] != 'Л': continue
# if r[4] != 'О': continue
#if r[3] != 'И': continue
#if r[2] != 'Д': continue
#if r[0] != 'Х': continue
print(''.join(r))

40
main.py
View File

@ -154,6 +154,41 @@ def decode2(s):
return buf
def decode3(s):
buf = ''
for s in re.split(r'[\?\.\!]+', s):
s = s.strip()
s = s.replace(' ', '')
s = s.replace('-', '')
if not s:
continue
print(s)
continue
s = s.upper()
if s[0] in ('Ш', 'Щ', 'И'):
buf += s[0]
elif s[4] == 'Й':
buf += s[4]
elif s[0] == 'И':
buf += 'И'
elif s[7] == 'М':
buf += 'М'
elif s[4] == 'А':
buf += 'А'
elif s[2] == 'Р':
buf += 'Р'
elif s[1] == 'У':
buf += 'У'
elif s[9] == 'Ю':
buf += 'Ю'
else:
buf += '?'
return buf
# s: source
# t: type
@ -165,6 +200,9 @@ def decode_auto(s, t, reverse_decoded=False, remove_junk=True):
elif t == 2:
result = decode2(s)
elif t == 3:
result = decode3(s)
if reverse_decoded:
# reverse string
result = result[::-1]
@ -180,7 +218,7 @@ def main():
parser.add_argument('--decode-file')
parser.add_argument('--with-junk', action='store_true')
parser.add_argument('--is-url', action='store_true')
parser.add_argument('--type', type=int, choices=[1, 2], default=1)
parser.add_argument('--type', type=int, choices=[1, 2, 3], default=1)
parser.add_argument('--reverse-decoded', action='store_true')
args = parser.parse_args()

1
new/text1_orig Normal file
View File

@ -0,0 +1 @@
Ты тоже Омск теперь вспоминай с ностальгией. Атава та еще стерва. Бурак кушать всегда тебе полезно. Шлюха она и Африке шлюха. Ироды естественно ничего не поймут. Дурное это на вкус. Тупое лезвие все настроение испортило. Особую ты и юную видел. Щука исполнила желание. И не поняли ничего. Какой хозяин такая и собака. От них и хреново можно себя почувствовать. Так он и знал ее. После он дезинтегрирует их. И что это? Она даже и такая вся из себя. Это и понял сразу. С трона не скинешь его точно. По этой дороге ты всегда ходил. Их с собой теперь не носи. Как отметили в дневнике. Только у моих подопечных. И у них есть все. Но что и аммуниции вопрос не беспокоит. Но она не думает. Он решил и выполнил. Шкурные у всех интересы. Ты роботизирован насквозь. И узнал все от меня. Если вам и такая работа по вкусу. И учуяли они.

1
new/text2_orig Normal file
View File

@ -0,0 +1 @@
Только не смотрели погоды прогноз. Даже не решились оценку вынести и утиному носу ее. А так что ни есть она не стругает. Информационная война не на пользу. Чтобы не было инверсии. После матча негде иподромить. Имели они вас. Самогон дерьмом не окажется. Атава ничего тебе не расскажет. При падении он что-то аргументирует. Атава не знал куда бежать. Падении нет укуса.

1
new/text3_orig Normal file
View File

@ -0,0 +1 @@
Если едем то на ГАЗ-53. Шок на хуторе ты что-то смотрел. Пир и это мы всегда любили. Шикарно если ты изучаешь. И сам все всегда хочет знать. На рабочей установке всегда все гладко. А устье реки в котором плавает конечность. Как по мне и юркий он уж больно. Щиплет рану эта жидкость. Использовали тебя да еще как. Пожуй немного этого растения - если вот на голову это натянешь, то и хорошо. Плавно спускается вниз. Прима это ваше любимое. То вы никогда не узнаете. Если худо надо использовать это. Так он ничего не боится. Пламя есть из этой шутки. Плева девственная хочет быть восстановлена. Изучено и шути хоть немного над этим. У целого не отнимешь. Так очень обнадеживающе звучит.