Spaces:
Runtime error
Runtime error
Upload 17 files
Browse files- activities/instructions.json +130 -0
- activities/words.txt +231 -0
- diary.py +1 -0
- network_builder.py +23 -4
- test_1.txt +4 -0
activities/instructions.json
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"obl": [
|
3 |
+
[
|
4 |
+
[
|
5 |
+
"obl",
|
6 |
+
"amod",
|
7 |
+
0
|
8 |
+
],
|
9 |
+
[
|
10 |
+
"obl",
|
11 |
+
"case",
|
12 |
+
0
|
13 |
+
],
|
14 |
+
[
|
15 |
+
[
|
16 |
+
"root",
|
17 |
+
"conj",
|
18 |
+
"ccomp"
|
19 |
+
],
|
20 |
+
"obl",
|
21 |
+
1
|
22 |
+
],
|
23 |
+
[
|
24 |
+
[
|
25 |
+
"root",
|
26 |
+
"conj",
|
27 |
+
"ccomp"
|
28 |
+
],
|
29 |
+
"advmod",
|
30 |
+
0
|
31 |
+
],
|
32 |
+
[
|
33 |
+
[
|
34 |
+
"root",
|
35 |
+
"conj",
|
36 |
+
"ccomp"
|
37 |
+
],
|
38 |
+
"nsubj",
|
39 |
+
0
|
40 |
+
]
|
41 |
+
]
|
42 |
+
],
|
43 |
+
"root": [
|
44 |
+
[
|
45 |
+
[
|
46 |
+
"root",
|
47 |
+
"case",
|
48 |
+
0
|
49 |
+
],
|
50 |
+
[
|
51 |
+
"root",
|
52 |
+
"cop",
|
53 |
+
0
|
54 |
+
],
|
55 |
+
[
|
56 |
+
"root",
|
57 |
+
"advmod",
|
58 |
+
0
|
59 |
+
]
|
60 |
+
]
|
61 |
+
],
|
62 |
+
"nmod": [
|
63 |
+
[
|
64 |
+
[
|
65 |
+
"nmod",
|
66 |
+
"case",
|
67 |
+
0
|
68 |
+
],
|
69 |
+
[
|
70 |
+
[
|
71 |
+
"obj"
|
72 |
+
],
|
73 |
+
"nmod",
|
74 |
+
1
|
75 |
+
],
|
76 |
+
[
|
77 |
+
"obj",
|
78 |
+
"amod",
|
79 |
+
0
|
80 |
+
],
|
81 |
+
[
|
82 |
+
[
|
83 |
+
"root",
|
84 |
+
"conj",
|
85 |
+
"ccomp"
|
86 |
+
],
|
87 |
+
"obj",
|
88 |
+
1
|
89 |
+
]
|
90 |
+
],
|
91 |
+
[
|
92 |
+
[
|
93 |
+
[
|
94 |
+
"root",
|
95 |
+
"conj",
|
96 |
+
"ccomp"
|
97 |
+
],
|
98 |
+
"nmod",
|
99 |
+
1
|
100 |
+
],
|
101 |
+
[
|
102 |
+
[
|
103 |
+
"root",
|
104 |
+
"conj",
|
105 |
+
"ccomp"
|
106 |
+
],
|
107 |
+
"case",
|
108 |
+
0
|
109 |
+
],
|
110 |
+
[
|
111 |
+
[
|
112 |
+
"root",
|
113 |
+
"conj",
|
114 |
+
"ccomp"
|
115 |
+
],
|
116 |
+
"cop",
|
117 |
+
0
|
118 |
+
],
|
119 |
+
[
|
120 |
+
[
|
121 |
+
"root",
|
122 |
+
"conj",
|
123 |
+
"ccomp"
|
124 |
+
],
|
125 |
+
"advmod",
|
126 |
+
0
|
127 |
+
]
|
128 |
+
]
|
129 |
+
]
|
130 |
+
}
|
activities/words.txt
ADDED
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
мяч
|
2 |
+
промысел
|
3 |
+
рамс
|
4 |
+
фараон
|
5 |
+
гарпастон
|
6 |
+
матанализ
|
7 |
+
Зарница
|
8 |
+
пятнашки
|
9 |
+
утеха
|
10 |
+
попрошайничество
|
11 |
+
лабораторка
|
12 |
+
кегли
|
13 |
+
регби
|
14 |
+
марьяж
|
15 |
+
мацзян
|
16 |
+
козёл
|
17 |
+
индюшатина
|
18 |
+
расшибец
|
19 |
+
мигалка
|
20 |
+
пато
|
21 |
+
кикер
|
22 |
+
соккер
|
23 |
+
гандбол
|
24 |
+
представление
|
25 |
+
садоводство
|
26 |
+
маджонг
|
27 |
+
стрелялка
|
28 |
+
такен
|
29 |
+
пересечка
|
30 |
+
сифа
|
31 |
+
кулер
|
32 |
+
мастер-класс
|
33 |
+
волейбол
|
34 |
+
договорняк
|
35 |
+
футбол
|
36 |
+
безик
|
37 |
+
встреча
|
38 |
+
купкари
|
39 |
+
шарокат
|
40 |
+
теннис
|
41 |
+
ролевая игра
|
42 |
+
колечко
|
43 |
+
кастплей
|
44 |
+
бескрылка
|
45 |
+
картёж
|
46 |
+
гарпастум
|
47 |
+
расшибалка
|
48 |
+
упражнение
|
49 |
+
гали
|
50 |
+
эйрсофт
|
51 |
+
крокет
|
52 |
+
развлечение
|
53 |
+
скорняжничество
|
54 |
+
тренинг
|
55 |
+
суета
|
56 |
+
ужение
|
57 |
+
шалость
|
58 |
+
баскетбол
|
59 |
+
рапид
|
60 |
+
семинар
|
61 |
+
бадминтон
|
62 |
+
пряталки
|
63 |
+
пионербол
|
64 |
+
тренировка
|
65 |
+
меледа
|
66 |
+
сифак
|
67 |
+
юй-мао-цю
|
68 |
+
дартс
|
69 |
+
тетрис
|
70 |
+
расшибалочка
|
71 |
+
расшибай
|
72 |
+
штосс
|
73 |
+
мобильная игра
|
74 |
+
пинг-понг
|
75 |
+
бейсбол
|
76 |
+
стратегия
|
77 |
+
иняз
|
78 |
+
чеканка
|
79 |
+
настолка
|
80 |
+
прятки
|
81 |
+
развлекаловка
|
82 |
+
мастерство
|
83 |
+
фант
|
84 |
+
уженье
|
85 |
+
стирки
|
86 |
+
хобби
|
87 |
+
меккано
|
88 |
+
бочче
|
89 |
+
бонки
|
90 |
+
юй-мао-чю
|
91 |
+
нуда
|
92 |
+
экзерсис
|
93 |
+
шляпа
|
94 |
+
сиф
|
95 |
+
коллекционерство
|
96 |
+
шахматы
|
97 |
+
поддавки
|
98 |
+
игра
|
99 |
+
кок-бору
|
100 |
+
инди-игра
|
101 |
+
компьютерная игра
|
102 |
+
кроссворд
|
103 |
+
лицедейство
|
104 |
+
бильярд
|
105 |
+
замеряшки
|
106 |
+
биллиард
|
107 |
+
ремесло
|
108 |
+
рукомесло
|
109 |
+
ловля
|
110 |
+
индюшка
|
111 |
+
квачик
|
112 |
+
практикум
|
113 |
+
ляпки
|
114 |
+
пулька
|
115 |
+
выезд
|
116 |
+
пасьянс
|
117 |
+
кошки-мышки
|
118 |
+
начальствование
|
119 |
+
пиньята
|
120 |
+
шарада
|
121 |
+
экзерцис
|
122 |
+
вист
|
123 |
+
дротики
|
124 |
+
шашки
|
125 |
+
рутина
|
126 |
+
биллиард форма
|
127 |
+
домино
|
128 |
+
козлодрание
|
129 |
+
охота
|
130 |
+
штос
|
131 |
+
свайка
|
132 |
+
гулючки
|
133 |
+
бузкаши
|
134 |
+
шитьё
|
135 |
+
лакросс
|
136 |
+
ролевушка
|
137 |
+
суперигр
|
138 |
+
расшибаловка
|
139 |
+
арпеджирование
|
140 |
+
зарядка
|
141 |
+
пазл
|
142 |
+
соображалка
|
143 |
+
козны
|
144 |
+
управление
|
145 |
+
беспокойство
|
146 |
+
виселица
|
147 |
+
горелки
|
148 |
+
развлекуха
|
149 |
+
симулирование
|
150 |
+
фрисби
|
151 |
+
пошив
|
152 |
+
головоломка
|
153 |
+
орлянка
|
154 |
+
жмурки
|
155 |
+
перебор
|
156 |
+
чика
|
157 |
+
комикование
|
158 |
+
шарады
|
159 |
+
мозаика
|
160 |
+
лякросс
|
161 |
+
хоккей
|
162 |
+
видеоигра
|
163 |
+
логогриф
|
164 |
+
прятушки
|
165 |
+
коллоквиум
|
166 |
+
лапта
|
167 |
+
гусарик
|
168 |
+
рассеяние
|
169 |
+
карамболь
|
170 |
+
крестословица
|
171 |
+
косплей
|
172 |
+
катуха
|
173 |
+
канитель
|
174 |
+
матан
|
175 |
+
картёжничание
|
176 |
+
хлопоты
|
177 |
+
рэндзю
|
178 |
+
матч
|
179 |
+
стукалка
|
180 |
+
догоняшки
|
181 |
+
развлекалово
|
182 |
+
бильбоке
|
183 |
+
ролевуха
|
184 |
+
расшиши
|
185 |
+
классики
|
186 |
+
страйкбол
|
187 |
+
пара
|
188 |
+
городки
|
189 |
+
рыбалка
|
190 |
+
пристенок
|
191 |
+
триктрак
|
192 |
+
салки
|
193 |
+
потеха
|
194 |
+
суетня
|
195 |
+
кокпар
|
196 |
+
преферанс
|
197 |
+
салочки
|
198 |
+
куличик
|
199 |
+
бабки
|
200 |
+
догонялки
|
201 |
+
лаун-теннис
|
202 |
+
спектакль
|
203 |
+
лов
|
204 |
+
профессия
|
205 |
+
кости
|
206 |
+
морской бой
|
207 |
+
квач
|
208 |
+
нарды
|
209 |
+
бинго
|
210 |
+
пеструха
|
211 |
+
буриме
|
212 |
+
баловство
|
213 |
+
пушбол
|
214 |
+
прессинг
|
215 |
+
чехарда
|
216 |
+
забава
|
217 |
+
нищенство
|
218 |
+
бутылочка
|
219 |
+
шутер
|
220 |
+
очко
|
221 |
+
ералаш
|
222 |
+
серсо
|
223 |
+
гляделки
|
224 |
+
радиоигра
|
225 |
+
бег
|
226 |
+
ролёвка
|
227 |
+
фусбол
|
228 |
+
кёрлинг
|
229 |
+
мушкетеры
|
230 |
+
мушкетёры
|
231 |
+
квн
|
diary.py
CHANGED
@@ -21,6 +21,7 @@ def analyze(text):
|
|
21 |
|
22 |
# # Выделение фактов из текста
|
23 |
diary['locations'] = diary['tokens'].apply(lambda tokens: cp.get_facts(tokens, 'locations'))
|
|
|
24 |
|
25 |
# Определение сентимента по записям
|
26 |
diary['sent'] = diary['tokens'].apply(lambda tokens: sp.get_overall_sentiment(tokens))
|
|
|
21 |
|
22 |
# # Выделение фактов из текста
|
23 |
diary['locations'] = diary['tokens'].apply(lambda tokens: cp.get_facts(tokens, 'locations'))
|
24 |
+
diary['activities'] = diary['tokens'].apply(lambda tokens: cp.get_facts(tokens, 'activities'))
|
25 |
|
26 |
# Определение сентимента по записям
|
27 |
diary['sent'] = diary['tokens'].apply(lambda tokens: sp.get_overall_sentiment(tokens))
|
network_builder.py
CHANGED
@@ -17,11 +17,18 @@ def build_graph(df):
|
|
17 |
# Добавление связей дат и фактов, фактов и слов
|
18 |
for index, row in df[['date_start', 'locations']].iterrows():
|
19 |
for fact in row['locations']:
|
20 |
-
G.add_node(fact[0], group="
|
21 |
G.add_node(fact[1], group="Fact", color = "red")
|
22 |
G.add_edge(row['date_start'], fact[1])
|
23 |
G.add_edge(fact[0], fact[1])
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
# Добавление связей даты записи с сентиментом
|
26 |
for index, row in df[['date_start', 'sent_index']].iterrows():
|
27 |
G.add_node(sp.get_most_sentiment([row['sent_index']]), group="Sentiment", color = "pink")
|
@@ -44,10 +51,17 @@ def dates_of_Diary_writing(G):
|
|
44 |
def most_visited_places(G):
|
45 |
res = Counter()
|
46 |
for key, value in G.nodes.data():
|
47 |
-
if value.get('group') == '
|
48 |
res[key] = len(G[key])
|
49 |
return [i[0] for i in Counter(res).most_common(3)]
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
def facts_for_annotation(G, gender, most_places):
|
53 |
'''
|
@@ -55,7 +69,7 @@ def facts_for_annotation(G, gender, most_places):
|
|
55 |
'''
|
56 |
res = Counter()
|
57 |
for key, value in G.nodes.data():
|
58 |
-
if value.get('group') == '
|
59 |
res[key] = len(G[key])
|
60 |
facts = [s for i in Counter(res).keys() for s in G.successors(i)]
|
61 |
|
@@ -113,10 +127,15 @@ def annotation(G, gender, locations):
|
|
113 |
most_places = most_visited_places(G)
|
114 |
facts = facts_for_annotation(G, gender, most_places)
|
115 |
sentiment = sentiment_of_date(G)
|
|
|
116 |
|
117 |
# facts = ', '.join([f"{fact[1].lower()} ({fact[0]})" for fact in facts])
|
118 |
# facts = ''
|
|
|
|
|
|
|
|
|
119 |
|
120 |
-
annotation = f'{wt.get_noun(gender).title()} этого дневника {wt.gender_transformer("вести", gender)} его с {dates[0]} по {dates[1]}. Наиболее часто {wt.get_pronoun(gender)} {wt.gender_transformer("описывал", gender)} {wt.inflector(most_places[0], "accs")}, {wt.inflector(most_places[1], "accs")} и {wt.inflector(most_places[2], "accs")}
|
121 |
|
122 |
return annotation
|
|
|
17 |
# Добавление связей дат и фактов, фактов и слов
|
18 |
for index, row in df[['date_start', 'locations']].iterrows():
|
19 |
for fact in row['locations']:
|
20 |
+
G.add_node(fact[0], group="Location", color = "green")
|
21 |
G.add_node(fact[1], group="Fact", color = "red")
|
22 |
G.add_edge(row['date_start'], fact[1])
|
23 |
G.add_edge(fact[0], fact[1])
|
24 |
|
25 |
+
for index, row in df[['date_start', 'activities']].iterrows():
|
26 |
+
for fact in row['activities']:
|
27 |
+
G.add_node(fact[0], group="Activity", color = "purple")
|
28 |
+
# G.add_node(fact[1], group="Fact", color = "red")
|
29 |
+
G.add_edge(row['date_start'], fact[0])
|
30 |
+
# G.add_edge(fact[0], fact[1])
|
31 |
+
|
32 |
# Добавление связей даты записи с сентиментом
|
33 |
for index, row in df[['date_start', 'sent_index']].iterrows():
|
34 |
G.add_node(sp.get_most_sentiment([row['sent_index']]), group="Sentiment", color = "pink")
|
|
|
51 |
def most_visited_places(G):
|
52 |
res = Counter()
|
53 |
for key, value in G.nodes.data():
|
54 |
+
if value.get('group') == 'Location':
|
55 |
res[key] = len(G[key])
|
56 |
return [i[0] for i in Counter(res).most_common(3)]
|
57 |
|
58 |
+
def most_activity(G):
|
59 |
+
res = Counter()
|
60 |
+
for key, value in G.nodes.data():
|
61 |
+
if value.get('group') == 'Activity':
|
62 |
+
res[key] = len(G[key])
|
63 |
+
return [i[0] for i in Counter(res).most_common(1)]
|
64 |
+
|
65 |
|
66 |
def facts_for_annotation(G, gender, most_places):
|
67 |
'''
|
|
|
69 |
'''
|
70 |
res = Counter()
|
71 |
for key, value in G.nodes.data():
|
72 |
+
if value.get('group') == 'Location':
|
73 |
res[key] = len(G[key])
|
74 |
facts = [s for i in Counter(res).keys() for s in G.successors(i)]
|
75 |
|
|
|
127 |
most_places = most_visited_places(G)
|
128 |
facts = facts_for_annotation(G, gender, most_places)
|
129 |
sentiment = sentiment_of_date(G)
|
130 |
+
activities = most_activity(G)
|
131 |
|
132 |
# facts = ', '.join([f"{fact[1].lower()} ({fact[0]})" for fact in facts])
|
133 |
# facts = ''
|
134 |
+
if activities:
|
135 |
+
act = f'В дневнике также упоминаниется игра в {activities[0]}.'
|
136 |
+
else:
|
137 |
+
act = ''
|
138 |
|
139 |
+
annotation = f'{wt.get_noun(gender).title()} этого дневника {wt.gender_transformer("вести", gender)} его с {dates[0]} по {dates[1]}. Наиболее часто {wt.get_pronoun(gender)} {wt.gender_transformer("описывал", gender)} {wt.inflector(most_places[0], "accs")}, {wt.inflector(most_places[1], "accs")} и {wt.inflector(most_places[2], "accs")}. {act}\n\n{constuct_fact_for_annotation(facts, sentiment, gender, locations)}'
|
140 |
|
141 |
return annotation
|
test_1.txt
CHANGED
@@ -1,3 +1,7 @@
|
|
|
|
|
|
|
|
|
|
1 |
1943
|
2 |
|
3 |
24 марта. Челябинск
|
|
|
1 |
+
1940
|
2 |
+
|
3 |
+
26 июня. Очень долго не писал. Это правда. Каждый день почти одинаковый. Сегодня был в лесу. Играю в шахматы. У меня 3 ½ очка, а у моего противника 4 ½ оч[ка]. Сейчас я отдыхаю и встал чтобы написать.
|
4 |
+
|
5 |
1943
|
6 |
|
7 |
24 марта. Челябинск
|