nevmenandr commited on
Commit
cac4730
·
verified ·
1 Parent(s): a2c8a0f

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +235 -3
README.md CHANGED
@@ -1,3 +1,235 @@
1
- ---
2
- license: mit
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - ru
5
+ tags:
6
+ - nlp
7
+ - word2vec
8
+ - dh
9
+ ---
10
+
11
+ # Overview
12
+
13
+ The model is built on texts of 19th century Russian prose (realism) in order to explore characters. Inspired by [work](https://ceur-ws.org/Vol-1751/AICS_2016_paper_48.pdf) on English literature.
14
+
15
+ # Preparing data
16
+
17
+ The texts for the training corpus are taken from two datasets published in the [Open Data Repository on Russian Literature and Folklore](https://dataverse.pushdom.ru/):
18
+
19
+ Собчук, Олег; Лекаревич, Евгения, 2020, "[Корпус нарративной прозы XIX в.](https://dataverse.pushdom.ru/dataset.xhtml?persistentId=doi:10.31860/openlit-2020.10-C004)", https://doi.org/10.31860/openlit-2020.10-C004, Репозиторий открытых данных по русской литературе и фольклору, V2, UNF:6:b+jGaj4yVntc2WtSvZqumw== [fileUNF]
20
+
21
+ Казакова, Елена, 2023, "[Забытые романы русских писателей из фондов Пушкинского Дома (1857–1917)](https://dataverse.pushdom.ru/dataset.xhtml?persistentId=doi:10.31860/openlit-2023.12-C007)", https://doi.org/10.31860/openlit-2023.12-C007, Репозиторий открытых данных по русской литературе и фольклору, V2, UNF:6:DCGrSrMDXXtoRfHBDWfS4A== [fileUNF]
22
+
23
+ Only texts published after 1835 (the era of realism) remain in the corpus.
24
+
25
+ The texts are marked up using the Russian version of the [booknlp](https://github.com/booknlp/booknlp) library, which highlighted the characters of the fictional works.
26
+
27
+ Each character in the text was replaced by its id of kind:
28
+
29
+ `Character-textid-{textid}-charid-{entity_id}`
30
+
31
+ `textid` is an id of text made of hashsum of filename. Thus, textid is repeated as many times as there are characters in the corresponding text. The string is entirely unique.
32
+
33
+ The correspondences between character and id are fixed in a special file `allcharsmapped_corr.csv` included in the repository.
34
+
35
+ The texts were lemmatized by booknlp [stop words](https://github.com/nevmenandr/DigitalHumanitiesMinorFeatures/blob/master/stop_ru.txt) and punctuation were excluded from them.
36
+
37
+ ```python
38
+ import os
39
+ from string import punctuation
40
+
41
+ # stoplist load
42
+
43
+ stoplist = {}
44
+ with open (stopwords) as f:
45
+ for line in f:
46
+ stoplist[line.strip()] = 1 # Perl habit. Better use set() in Python
47
+
48
+ # punctuation collect
49
+
50
+ punct = punctuation + '«»—–…“”\t'
51
+
52
+ fw = open('booknlp/train_lemmas.txt', 'w')
53
+ for fl in os.listdir(lemmas_txt):
54
+ if not fl.endswith('.txt'):
55
+ continue
56
+ with open(os.path.join(lemmas_txt, fl)) as f:
57
+ for line in f:
58
+ words = []
59
+ for word in line.split():
60
+ word = word.strip(punct)
61
+ if word in stoplist:
62
+ continue
63
+ if word:
64
+ words.append(word)
65
+ fw.write(' '.join(words) + '\n')
66
+ fw.close()
67
+
68
+ ```
69
+
70
+ `train_lemmas.txt` included in the repository.
71
+
72
+ # Usage
73
+
74
+ ```python
75
+ import csv
76
+
77
+ # load names of the characters dict
78
+
79
+ cd = {}
80
+ with open('allcharsmapped_corr.csv', 'r') as csvfile:
81
+ reader = csv.reader(csvfile, delimiter=',')
82
+ for row in reader:
83
+ cd[row[0].strip(' "')] = {'name': row[1], 'filename': row[2], 'freq': row[3]}
84
+ ```
85
+
86
+ ## Searching for the exact id
87
+
88
+ The name of the character from *Home of the Gentry* by Ivan Turgenev
89
+
90
+ ```python
91
+ for nm in cd:
92
+ if 'Лаврецкий' in cd[nm]['name']:
93
+ print(nm, cd[nm]['name'])
94
+ ```
95
+
96
+ `Character-textid-1233692858423997945-charid-74 Лаврецкий | Лаврецкого | Лаврецкому | Лаврецким | Лаврецких | Молодой Лаврецкий | молодой Лаврецкий | бедный Лаврецкий | XXXI Лаврецкий | XXXIII Однажды Лаврецкий`
97
+
98
+ ```python
99
+ from gensim.models import Word2Vec
100
+ model = Word2Vec.load("w2vforms.model")
101
+ print(len(model.wv)) # vocabulary size 547986
102
+
103
+ words = ['Character-textid-1233692858423997945-charid-74'] # what to look up in model
104
+
105
+ for word in words:
106
+ # search for word in model
107
+ if word in modell.wv:
108
+ print(cd[word]['name'])
109
+ # 10 quasi-sinonyms:
110
+ for i in modell.wv.most_similar(positive=[word], topn=10):
111
+ # word, cosin distance
112
+ try:
113
+ print(cd[i[0]]['name'], cd[i[0]]['filename'], i[1])
114
+ except:
115
+ print(i[0], i[1])
116
+
117
+ print('\n')
118
+ else:
119
+ # :(
120
+ print(word + ' is not present in the model')
121
+
122
+ ```
123
+
124
+ ```
125
+ Лаврецкий | Лаврецкого | Лаврецкому | Лаврецким | Лаврецких | Молодой Лаврецкий | молодой Лаврецкий | бедный Лаврецкий | XXXI Лаврецкий | XXXIII Однажды Лаврецкий
126
+ Лиза | Лизы | Лизе | Лизу | Лизой | мою дочь Лизу | XXXIV Лиза | Лизе , которой только что пошел пятый год | Лиза , которая очень любила цветы | XLII Лиза turgenev_i_dvoryanskoe_gnezdo_1859 0.7776555418968201
127
+ Наталья | Наталья Алексеевна | Наталье | Натальи | Натальей | Наталье Алексеевне | Наталью | Наталью Алексеевну | Натальей Алексеевной | дочь Наталья turgenev_i_rudin_1856 0.7085265517234802
128
+ Юлия Николаевна | Юлии Николаевне | Сухаревой | Юлии Николаевны | Юлией Николаевной | старухи Сухаревой | Юлии Николаевны Сухаревой | его Юлии Николаевне Сухаревой | Юлии Николаевне Сухаревой | легкомысленной и пустой старухи Сухаревой sheller-mikhajlov_a_bespechalnoe_zhite_1878 0.6840318441390991
129
+ Зинаида | Зинаиды | Зинаиду | Зинаидой | Зинаиде | Зина | Зинаида Александровна | мою прежнюю Зинаиду turgenev.pervaya_lyubov 0.68117755651474
130
+ Вася | Бояринов | Бояринова | Васю | Васи | Васе | Бояринову | Бояриновым | Васи Бояринова | Спросил Вася iogel_m_mezhdu_vechnostyu_i_minutoj_1879 0.6781316995620728
131
+ Варвара Павловна | Варвару Павловну | Изумленная Варвара Павловна | Варю | Варя turgenev_i_dvoryanskoe_gnezdo_1859 0.6774640679359436
132
+ Ластов | Лев Ильич | Ластова | г-н Ластов | Ластову | г. Ластов | Лев Ильич Ластов | Ластовым | г-на Ластова | Льву Ильичу avenarius.povetriye 0.6750389337539673
133
+ Иван Иваныч | Чуфрин | Иван Иваныч Чуфрин | Чуфрина | Чуфриных | господин Чуфрин | Иван Иваныч , уязвлённый этим предложением | Ваня | VII Иван Иваныч | VIII Иван Иваныч yasinskiy.bunt_ivana_ivanycha 0.6723058819770813
134
+ Character-textid-3765969217135438403-charid-397 0.6678720116615295
135
+ Ольга | Ольги | Ольге | Ольга Сергеевна | Ольгу | Ольгу Сергеевну | Бедная Ольга | ненаглядную Ольгу | милая Ольга | кроткая Ольга goncharov_i_oblomov_1859 0.6646437644958496
136
+ ```
137
+
138
+ # Examples
139
+
140
+ ## Quasi-sinonyms of the main characters of Russian literature of 19th century:
141
+
142
+ ```python
143
+ from gensim.models import Word2Vec
144
+ model = Word2Vec.load("w2vforms.model")
145
+
146
+ words = ['Character-textid--3155236403543629788-charid-1138', 'Character-textid-4423538860970409858-charid-48', 'Character-textid-1233692858423997945-charid-74', 'Character-textid--2263910210560212786-charid-33', 'Character-textid--3155236403543629788-charid-1360'] # what to look up in model
147
+
148
+ for word in words:
149
+ # search for word in model
150
+ if word in modell.wv:
151
+ print(cd[word]['name'])
152
+ # 10 quasi-sinonyms:
153
+ for i in modell.wv.most_similar(positive=[word], topn=10):
154
+ # word, cosin distance
155
+ try:
156
+ print(cd[i[0]]['name'], cd[i[0]]['filename'], i[1])
157
+ except:
158
+ print(i[0], i[1])
159
+
160
+ print('\n')
161
+ else:
162
+ # :(
163
+ print(word + ' is not present in the model')
164
+
165
+ ```
166
+
167
+ ```
168
+ Пьер | Пьера | Пьером | Безухов | Безухова | граф Безухов | Пьер Безухов | графиня Безухова | XVIII Пьер | В самом серьезном расположении духа Пьер
169
+ князь Андрей | Князь Андрей | князя Андрея | князю Андрею | Андрей | князем Андреем | Князю Андрею | князе Андрее | Андрея | Князя Андрея tolstoj_l_vojna_i_mir_1868 0.8172960877418518
170
+ Ростов | Николай | Ростова | Ростову | Ростовых | Николая | Ростовым | Николаю | Николаем | Ростовы tolstoj_l_vojna_i_mir_1868 0.7474682927131653
171
+ Вронский | Анна | Вронского | Вронским | Вронскому | Анны | Анне | Анну | Вронском | Аннушка tolstoj_l_anna_karenina_1877 0.710778534412384
172
+ Пьер | Пьера | Анна Павловна | Анны Павловны | Пьером | Анне Павловне | мсье Пьер | Анну Павловну | Пьера Анна Павловна | сам Пьер tolstoj_l_vojna_i_mir_1868 0.70228111743927
173
+ Алексей Александрович | Алексея Александровича | Алексею Александровичу | Каренина | Алексеем Александровичем | Каренин | Каренину | Алексей | Каренины�� | Алексее Александровиче tolstoj_l_anna_karenina_1877 0.6871339678764343
174
+ Наташа | Соня | Наташи | Наташу | Наташе | Наташей | Соню | И Наташа | заплаканную Соню | Наташа , оживленная и тревожная tolstoj_l_vojna_i_mir_1868 0.6745515465736389
175
+ Левин | Левина | Левину | Константин Левин | Костя | Константин Дмитрич | Константин | Левиным | Константина | Константину Левину tolstoj_l_anna_karenina_1877 0.6673250198364258
176
+ Ева | Евы | Ева Аркадьевна | Еву | Еве | Евой | Еву Аркадьевну | Евы Аркадьевны | Еве Аркадьевне | Евы , прислонившуюся к стене shapir_o_odna_iz_mnogikh_1879 0.6619721055030823
177
+ Литвинов | Ирина | Литвинова | Литвинову | Ирины | Литвиновым | Ирине | Ирину | Ириной | Литвинове turgenev_i_dym_1867 0.6617117524147034
178
+ Пьеру | Пьеру духовною tolstoj_l_vojna_i_mir_1868 0.6605013012886047
179
+
180
+
181
+ Базаров | Аркадий | Базарова | Аркадия | Аркадию | Базарову | Базаровым | Аркадием | Аркадию Базаров | господин Базаров
182
+ Павел Петрович | Павла Петровича | Павлу Петровичу | Павлом Петровичем | Павел | Кирсанов | Кирсанова | господин Кирсанов | изумленный Павел Петрович | один Павел Петрович turgenev_i_otzy_i_deti_1862 0.6954634785652161
183
+ Анна Сергеевна | Одинцова | Анны Сергеевны | Анну Сергеевну | Анне Сергеевне | Одинцову | Анна Сергеевна Одинцова | Одинцов | покойный Одинцов | расстановкой Одинцова turgenev_i_otzy_i_deti_1862 0.6822544932365417
184
+ Миропа Дмитриевна | Аггей Никитич | Миропе Дмитриевне | Миропу Дмитриевну | Аггея Никитича | Аггея Никитича Миропа Дмитриевна | Жила Миропа Дмитриевна | Рыжовых громадного капитана Аггея Никитича pisemskij_a_masony_1880 0.6790938973426819
185
+ Николай Петрович | Николая Петровича | Николаю Петровичу | Николай | Николая | Николая - чудотворца | бедному Николаю Петровичу | Николаем Петровичем turgenev_i_otzy_i_deti_1862 0.6720525622367859
186
+ Борис Андреич | Бориса Андреича | Борису Андреичу | Борисе Андреиче | Борис Андреич , который , как видно , ожидал этого приглашения с некоторым нетерпением | неугомонный Борис Андреич turgenev.dva_priyatelya 0.6555477380752563
187
+ Дмитрий | Дмитрия | Дмитрию | Дмитрием | чудесным Митей | Один Дмитрий | мать Дмитрия | моего Дмитрия | Дмитрий , старавшийся понимать любовь | Дмитрием , который , расхаживая взад и вперед , поправлял шеей галстук tolstoy.yunost 0.6510268449783325
188
+ Нежданов | Сипягин | Сипягина | Нежданова | Нежданову | Неждановым | Сипягиным | Сипягиной | Сипягину | Сипягиных turgenev_i_nov_1877 0.648989200592041
189
+ Катя | Аркадий | Катю | Катей | Аркадия | Кате | Аркадию | Аркадием | Кати | Катей Аркадий turgenev_i_otzy_i_deti_1862 0.6461668610572815
190
+ Петр Васильич | Петра Васильича | Петру Васильичу | Петром Васильичем | бедного Петра Васильича | бедный Петр Васильич | изумленный Петр Васильич turgenev.dva_priyatelya 0.6374654173851013
191
+ Одинцовой | матерью Одинцовой turgenev_i_otzy_i_deti_1862 0.6304344534873962
192
+
193
+
194
+ Лаврецкий | Лаврецкого | Лаврецкому | Лаврецким | Лаврецких | Молодой Лаврецкий | молодой Лаврецкий | бедный Лаврецкий | XXXI Лаврецкий | XXXIII Однажды Лаврецкий
195
+ Лиза | Лизы | Лизе | Лизу | Лизой | мою дочь Лизу | XXXIV Лиза | Лизе , которой только что пошел пятый год | Лиза , которая очень любила цветы | XLII Лиза turgenev_i_dvoryanskoe_gnezdo_1859 0.7776555418968201
196
+ Наталья | Наталья Алексеевна | Наталье | Натальи | Натальей | Наталье Алексеевне | Наталью | Наталью Алексеевну | Натальей Алексеевной | дочь Наталья turgenev_i_rudin_1856 0.7085265517234802
197
+ Юлия Николаевна | Юлии Николаевне | Сухаревой | Юлии Николаевны | Юлией Николаевной | старухи Сухаревой | Юлии Николаевны Сухаревой | его Юлии Николаевне Сухаревой | Юлии Николаевне Сухаревой | легкомысленной и пустой старухи Сухаревой sheller-mikhajlov_a_bespechalnoe_zhite_1878 0.6840318441390991
198
+ Зинаида | Зинаиды | Зинаиду | Зинаидой | Зинаиде | Зина | Зинаида Александровна | мою прежнюю Зинаиду turgenev.pervaya_lyubov 0.68117755651474
199
+ Вася | Бояринов | Бояринова | Васю | Васи | Васе | Бояринову | Бояриновым | Васи Бояринова | Спросил Вася iogel_m_mezhdu_vechnostyu_i_minutoj_1879 0.6781316995620728
200
+ Варвара Павловна | Варвару Павловну | Изумленная Варвара Павловна | Варю | Варя turgenev_i_dvoryanskoe_gnezdo_1859 0.6774640679359436
201
+ Ластов | Лев Ильич | Ластова | г-н Ластов | Ластову | г. Ластов | Лев Ильич Ластов | Ластовым | г-на Ластова | Льву Ильичу avenarius.povetriye 0.6750389337539673
202
+ Иван Иваныч | Чуфрин | Иван Иваныч Чуфрин | Чуфрина | Чуфриных | господин Чуфрин | Иван Иваныч , уязвлённый этим предложением | Ваня | VII Иван Иваныч | VIII Иван Иваныч yasinskiy.bunt_ivana_ivanycha 0.6723058819770813
203
+ Character-textid-3765969217135438403-charid-397 0.6678720116615295
204
+ Ольга | Ольги | Ольге | Ольга Сергеевна | Ольгу | Ольгу Сергеевну | Бедная Ольга | ненаглядную Ольгу | милая Ольга | кроткая Ольга goncharov_i_oblomov_1859 0.6646437644958496
205
+
206
+
207
+ Макар Девушкин | Макаром Девушкиным | Девушкин | Ваш Макар Девушкин | верный друг Макар Девушкин | пиита Девушкин | сам Девушкин | Ваш искренний друг Макар Девушкин | Покорнейший слуга ваш Макар Девушкин | Ваш истинный друг Макар Девушкин
208
+ Character-textid--2263910210560212786-charid-1338 0.7874115705490112
209
+ Господин Быков | господин Быков | господином Быковым | Быков | Пришел Быков | господина Быкова dostoevskij_f_bednye_lyudi_1846 0.7110390663146973
210
+ Character-textid--2263910210560212786-charid-2418 0.7024538516998291
211
+ Character-textid--140710273989214700-charid-8462 0.6931672692298889
212
+ Character-textid-3551276547489550704-charid-3779 0.6896138191223145
213
+ Федора | Федоре | Федору | Федора одна | одна Федора dostoevskij_f_bednye_lyudi_1846 0.6834926009178162
214
+ Character-textid--2858303605558076810-charid-1144 0.6813129782676697
215
+ Character-textid--8912134939089356531-charid-208 0.6811396479606628
216
+ никто | Никто sukhonin_p_rod_knyazej_zazepinykh_ili_borba_nachal_1880 0.6787088513374329
217
+ Варенька | Вареньке | бедной вашей Вареньке | бедную Вареньку dostoevskij_f_bednye_lyudi_1846 0.6780672073364258
218
+
219
+
220
+ Каратаев | Платон | Каратаева | Платон Каратаев | Платона | Каратаевым | Каратаеву | И Платон Каратаев | И Платон | Платону Каратаеву
221
+ Character-textid-7533511401374206894-charid-2111 0.6344175338745117
222
+ Державин | Державина | Державиным | Державину | сварливый и завистливый старик Державин | старика Державина | Старик Державин | спящего Державина | старик Державин | какого-то Державина mordovezv_d_dvenadzatyj_god_1879 0.6337519884109497
223
+ Character-textid-3795814502554737590-charid-6350 0.6170870661735535
224
+ Вольтер | Вольтера | Вольтере | Вольтером | вашего Вольтера mordovezv_d_dvenadzatyj_god_1879 0.6156854033470154
225
+ d'affaire 0.6151682138442993
226
+ Character-textid--8552851688621086804-charid-243 0.5999993085861206
227
+ Игорь 0.5925806164741516
228
+ затвержить 0.5910983681678772
229
+ Character-textid-2956570717353379843-charid-4950 0.5907760858535767
230
+ Мерзляков | Мерзлякову | Мерзляковым | Мерзляковы | Алексей Федорович | Алек��ей Федорович Мерзляков | профессор Мерзляков | почтеннейший Алексей Федорович | Мерзлякова | Мерзлякову ни с того ни с сего mordovezv_d_dvenadzatyj_god_1879 0.5906319618225098
231
+ ```
232
+
233
+ # Related Publication
234
+
235
+ Coming soon