-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
5,571 additions
and
1 deletion.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Created by .ignore support plugin (hsz.mobi) | ||
* | ||
*/ | ||
!.gitignore |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
import codecs | ||
f = codecs.open('autogenerator.txt', encoding='cp1251') | ||
f = codecs.open('suto_chechov.txt', encoding='cp1251') | ||
|
||
for line in f: | ||
print(repr(line)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
Черный густой фуражка струи, огромный облачко, зависшее над полем созревшей ржи, — один только тип такой прелести принуждает чувство колотиться чащобе, прогоняя из головы скверные догадки. Но только попробовав на привкус, почувствовав, как поливается прохладу переспелой ржи сквозь казавшиеся такими густыми облачка струи, можно ощутить всю цельность привкуса, ощущать спрятавшиеся среди пшеничный::колосьев яблочки, уловить невесть оттуда взявшийся цвет сладостной пшеничный::муки, а в конце — грусть, тяжелый и даже любезный. | ||
|
||
Густой как сумрак поздним весенним утром, подсвеченный встающим солнышком и такой же освежающий, как тот сумрак, коктейль, непохожий своим типом на весну, на привкус больше походит на межсезонье — ржаной, со переспелыми яблочками и терпкостью, лёгкой, еле различимой. | ||
|
||
Нарицать этот привкус коротко так же тяжко, как нарицать ветер поздним осенним утром, однако следует делать один гортаней, как перед глазками вскакивает поле, бескрайнее и серебряный, совершенный созревших пшеничный::колосьев ржи, за которым продолжается вишневый садик, природный мызу. И все они: и рожь, и яблочки, и тяжелый запах пшеничный::муки к кофе из особняка в садике сплетаются, неназойливо, где-нибудь близко, но отпечаток покидают отчетливый и отчетливый. | ||
|
||
Ни грусти, ни усталости, ни подтекста на тот привычный коктейль в этом привкусе не найти. С третьего гортань — только гибкость и прохладу укр::антонівки — сделаешь гортаней, и вино цветёт, словно хочет улететь на ветер. А потом, чуть запоздав, подъезжают и ржаные мелодии, которые звучат где-нибудь близко, как соловушка в чащобе за горячим полем. | ||
|
||
Привкус раскинулся теремом ароматной серебряный ржи и чем-то еще еле-еле различимым, большим, загадочным, что значит показаться терпким запахом лепестков гвозди или вечерней пшеничный::мукой. | ||
|
||
Густой и тонкий туловище коктейля словно в бесчувствии расплескалось на месяце фужера, в неспособностях скрыться от варкой сласти ячменный::солода — так усталые странники пытаются укрыться от полдневного жара в газообразной басрай. Для многообразия промелькнёт в коктейле веселый свежесть брусник или цветика, вырастет на мгновение пахучий листва или раскинется рябина. А потом опять польётся жаркий лесостепной грусть: вначале суховатый, но с ядущим глоточком более тонкий, вялый, уходящая никуда за небосклон в продолжительный послевкусие. | ||
|
||
Вино пахнет смуглянки травой, брусниками, благоуханным садиком и чем-то этаким необыкновенным, беззаботным, осенним. Привкус начинает запах: будто взял пригоршня красных и чёрных ягод, растянулся под выбеленной черешней, да съел неспешно, запив прохладной влагой. | ||
|
||
Видает такая грусть, которая даже не грусть, а бесконечный надлом, оголённый мускул. А видает напротив: жилистый, весьма даже наполненное, но так чудно приготовленное, что оно не только не сжимает тебя в клещи, но даже в некотором роде освобождает тебя. Есть в нём и грусть, и сласть, и травянистый горчинка, и супружеский, каменный холодно бисквита и стручковый::перца, и что-то еще; светлый, как будто глядящее из самой толщи слабоалкогольной страсти |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
Белая плотная шапка пены, большое облако, зависшее над полем созревшей пшеницы, — один только вид такой красоты заставляет сердце биться чаще, прогоняя из головы дурные мысли. Но только попробовав на вкус, почувствовав, как льется свежесть спелой пшеницы сквозь казавшиеся такими плотными облака пены, можно ощутить всю полноту вкуса, почувствовать спрятавшиеся среди колосьев яблоки, уловить невесть откуда взявшийся оттенок сладкой выпечки, а в конце — горечь, легкая и даже приятная. | ||
|
||
Плотный как туман ранним осенним утром, подсвеченный встающим солнцем и такой же освежающий, как тот туман, напиток, похожий своим видом на осень, на вкус больше походит на лето — пшеничный, со спелыми яблоками и горчинкой, лёгкой, едва уловимой. | ||
|
||
Описать этот вкус коротко так же тяжело, как описать воздух ранним весенним утром, однако стоит сделать один глоток, как перед глазами встает поле, бескрайнее и золотое, полное созревших колосьев пшеницы, за которым начинается яблоневый сад, окружающий усадьбу. И все они: и пшеница, и яблоки, и легкий аромат выпечки к чаю из дома в саду переплетаются, ненавязчиво, где-то далеко, но след оставляют четкий и явственный. | ||
|
||
Ни горечи, ни тяжести, ни намека на тот обычный напиток в этом вкусе не найти. С первого глотка — только легкость и свежесть антоновки — сделаешь глоток, и пиво расцветает, словно хочет улететь на воздух. А потом, чуть запоздав, подходят и пшеничные ноты, которые звучат где-то далеко, как соловей в чаще за горячим полем. | ||
|
||
Вкус раскинулся шатром сочной золотой пшеницы и чем-то еще еле уловимым, небольшим, таинственным, что может показаться пряным ароматом бутонов гвоздики или утренней выпечкой. | ||
|
||
Плотное и мягкое тело напитка словно в беспамятстве расплескалось на дне бокала, в попытках скрыться от жаркой сладости солода — так усталые путники пытаются укрыться от полуденного зноя в жидкой тени. Для разнообразия мелькнёт в напитке игривая прохлада ягод или василька, вырастет на мгновение смолистая хвоя или раскинется яблоня. А потом опять польётся знойная степная горечь: сначала резковатая, но с каждым глотком более мягкая, ленивая, уходящая куда-то за горизонт в длительное послевкусие. | ||
|
||
Пиво пахнет молодой травкой, ягодами, цветущим садом и чем-то этаким особенным, весёлым, весенним. Вкус продолжает аромат: будто взял горсть красных и чёрных ягодок, растянулся под выбеленной вишней, да съел неторопливо, запив прохладной водой. | ||
|
||
Бывает такая горечь, которая даже не горечь, а сплошной надрыв, оголённый нерв. А бывает напротив: крепкое, чрезвычайно даже наполненное, но так по-особенному приготовленное, что оно не только не зажимает тебя в тиски, но даже в некотором роде освобождает тебя. Есть в нём и горечь, и сладость, и травяная терпкость, и домашнее, деревянное тепло шоколада и перца, и что-то еще; тёмное, как будто глядящее из самой глубины солодовой души |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
import gensim | ||
import pymorphy2 | ||
import os | ||
import re | ||
|
||
model = gensim.models.KeyedVectors.load_word2vec_format("corpus_gensim/ruwikiruscorpora_0_300_20.bin.gz", binary=True) | ||
model.init_sims(replace=True) | ||
|
||
morph = pymorphy2.MorphAnalyzer() | ||
|
||
punct = re.compile('^(.*?)([а-яА-ЯёЁ-]+)(.*?)$') | ||
capit = re.compile('^[А-Я]+$') | ||
|
||
pth_source = 'text_before/' | ||
lst = os.listdir(pth_source) | ||
print('LIST: ', lst) | ||
|
||
pth_result = 'text_after/' | ||
|
||
cotags = {'ADJF':'ADJ', # pymorphy2: word2vec | ||
'ADJS' : 'ADJ', | ||
'ADVB' : 'ADV', | ||
'COMP' : 'ADV', | ||
'GRND' : 'VERB', | ||
'INFN' : 'VERB', | ||
'NOUN' : 'NOUN', | ||
'PRED' : 'ADV', | ||
'PRTF' : 'ADJ', | ||
'PRTS' : 'VERB', | ||
'VERB' : 'VERB' | ||
} | ||
|
||
capit_letters = [chr(x) for x in range(1040,1072)] + ['Ё'] | ||
|
||
def search_neighbour(word, pos, gend='masc'): | ||
word = word.replace('ё', 'е') | ||
lex = word + '_' + cotags[pos] | ||
if lex in model: | ||
neighbs = model.most_similar([lex], topn=20) | ||
for nei in neighbs: | ||
lex_n, ps_n = nei[0].split('_') | ||
if cotags[pos] == ps_n: | ||
if pos == 'NOUN': | ||
parse_result = morph.parse(lex_n) | ||
for ana in parse_result: | ||
if ana.normal_form == lex_n: | ||
if ana.tag.gender == gend: | ||
return lex_n | ||
elif cotags[pos] == 'VERB' and word[-2:] == 'ся': | ||
if lex_n[-2:] == 'ся': | ||
return lex_n | ||
elif cotags[pos] == 'VERB' and word[-2:] != 'ся': | ||
if lex_n[-2:] != 'ся': | ||
return lex_n | ||
else: | ||
return lex_n | ||
return None | ||
|
||
def flection(lex_neighb, tags): | ||
tags = str(tags) | ||
tags = re.sub(',[AGQSPMa-z-]+? ', ',', tags) | ||
tags = tags.replace("impf,", "") | ||
tags = re.sub('([A-Z]) (plur|masc|femn|neut|inan)', '\\1,\\2', tags) | ||
tags = tags.replace("Impe neut", "") | ||
tags = tags.split(',') | ||
tags_clean = [] | ||
for t in tags: | ||
if t: | ||
if ' ' in t: | ||
t1, t2 = t.split(' ') | ||
t = t2 | ||
tags_clean.append(t) | ||
tags = frozenset(tags_clean) | ||
prep_for_gen = morph.parse(lex_neighb) | ||
ana_array = [] | ||
for ana in prep_for_gen: | ||
if ana.normal_form == lex_neighb: | ||
ana_array.append(ana) | ||
for ana in ana_array: | ||
try: | ||
flect = ana.inflect(tags) | ||
except: | ||
print(tags) | ||
return None | ||
if flect: | ||
word_to_replace = flect.word | ||
return word_to_replace | ||
return None | ||
|
||
print(model.most_similar(['холодный_ADJ'], topn=20)) | ||
|
||
cash_neighb = {} | ||
|
||
for fl in lst: | ||
# if not fl.endswith('_JOF.txt'): | ||
# continue | ||
print(fl) | ||
i = 0 | ||
f = open(pth_source + fl, 'r', encoding='utf-8') | ||
fw = open(pth_result + '3.0_' + fl, 'w', encoding='utf-8') | ||
fs = open(pth_result + '3.0_Sample ' + fl, 'w', encoding='utf-8') | ||
for line in f: | ||
new_line = [] | ||
i += 1 | ||
line = line.strip() | ||
words = line.split(' ') | ||
for word in words: | ||
struct = punct.findall(word) | ||
if struct: | ||
struct = struct[0] | ||
else: | ||
new_line.append(word) | ||
continue | ||
# print (struct) | ||
wordform = struct[1] | ||
if wordform: | ||
if capit.search(wordform): | ||
new_line.append(word) | ||
continue | ||
else: | ||
if wordform[0] in capit_letters: | ||
capit_flag = 1 | ||
else: | ||
capit_flag = 0 | ||
parse_result = morph.parse(wordform)[0] | ||
if 'Name' in parse_result.tag or 'Patr' in parse_result.tag: | ||
new_line.append(word) | ||
continue | ||
if parse_result.normal_form == 'глава': | ||
new_line.append(word) | ||
continue | ||
pos_flag = 0 | ||
for tg in cotags: | ||
if tg in parse_result.tag: | ||
pos_flag = 1 | ||
lex = parse_result.normal_form | ||
pos_tag = parse_result.tag.POS | ||
if (lex, pos_tag) in cash_neighb: | ||
lex_neighb = cash_neighb[(lex, pos_tag)] | ||
else: | ||
if pos_tag == 'NOUN': | ||
gen_tag = parse_result.tag.gender | ||
lex_neighb = search_neighbour(lex, pos_tag, gend=gen_tag) | ||
else: | ||
lex_neighb = search_neighbour(lex, pos_tag) | ||
cash_neighb[(lex, pos_tag)] = lex_neighb | ||
if not lex_neighb: | ||
new_line.append(word) | ||
break | ||
else: | ||
if pos_tag == 'NOUN': | ||
if parse_result.tag.case == 'nomn' and parse_result.tag.number == 'sing': | ||
if capit_flag == 1: | ||
lex_neighb = lex_neighb.capitalize() | ||
new_line.append(struct[0] + lex_neighb + struct[2]) | ||
else: | ||
word_to_replace = flection(lex_neighb, parse_result.tag) | ||
if word_to_replace: | ||
if capit_flag == 1: | ||
word_to_replace = word_to_replace.capitalize() | ||
new_line.append(struct[0] + word_to_replace + struct[2]) | ||
else: | ||
new_line.append(word) | ||
|
||
elif pos_tag == 'ADJF': | ||
if parse_result.tag.case == 'nomn' and parse_result.tag.number == 'sing': | ||
if capit_flag == 1: | ||
lex_neighb = lex_neighb.capitalize() | ||
new_line.append(struct[0] + lex_neighb + struct[2]) | ||
else: | ||
word_to_replace = flection(lex_neighb, parse_result.tag) | ||
if word_to_replace: | ||
if capit_flag == 1: | ||
word_to_replace = word_to_replace.capitalize() | ||
new_line.append(struct[0] + word_to_replace + struct[2]) | ||
else: | ||
new_line.append(word) | ||
|
||
elif pos_tag == 'INFN': | ||
if capit_flag == 1: | ||
lex_neighb = lex_neighb.capitalize() | ||
new_line.append(struct[0] + lex_neighb + struct[2]) | ||
|
||
elif pos_tag in ['ADVB', 'COMP', 'PRED']: | ||
if capit_flag == 1: | ||
lex_neighb = lex_neighb.capitalize() | ||
new_line.append(struct[0] + lex_neighb + struct[2]) | ||
|
||
else: | ||
word_to_replace = flection(lex_neighb, parse_result.tag) | ||
if word_to_replace: | ||
if capit_flag == 1: | ||
word_to_replace = word_to_replace.capitalize() | ||
new_line.append(struct[0] + word_to_replace + struct[2]) | ||
else: | ||
new_line.append(word) | ||
break | ||
if pos_flag == 0: | ||
new_line.append(word) | ||
else: | ||
new_line.append(''.join(struct)) | ||
line_replace = ' '.join(new_line) | ||
if i < 21: | ||
fs.write(line_replace + '\n') | ||
fw.write(line_replace + '\n') | ||
f.close() | ||
fw.close() | ||
fs.close() |