nevmenandr
commited on
Update README.md
Browse files
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
|