|
--- |
|
license: mit |
|
language: |
|
- ru |
|
tags: |
|
- nlp |
|
- word2vec |
|
- dh |
|
- fiction |
|
--- |
|
|
|
# Overview |
|
|
|
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. |
|
|
|
# Preparing data |
|
|
|
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/): |
|
|
|
Собчук, Олег; Лекаревич, Евгения, 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] |
|
|
|
Казакова, Елена, 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] |
|
|
|
Only texts published after 1845 (the era of realism) remain in the corpus. |
|
|
|
The texts are marked up using the Russian version of the booknlp library, which highlighted the characters of the fictional works. Texts presented in old orthography have been converted to modern orthography with the help of a [package](https://pypi.org/project/prereform2modern/). |
|
|
|
Each character in the text was replaced by its id of kind: |
|
|
|
`Character-textid-{textid}-charid-{entity_id}` |
|
|
|
`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. |
|
|
|
The correspondences between character and id are fixed in a special file `allcharsmapped_corr.csv` included in the repository. |
|
|
|
Unlike the usual practice of working with such models, the texts were not lemmatized and stop words were not excluded from them. Punctuation cut. |
|
|
|
Texts are included in this repository as a file `train_forms.txt`. |
|
|
|
# Usage |
|
|
|
```python |
|
import csv |
|
|
|
# load names of the characters dict |
|
|
|
cd = {} |
|
with open('allcharsmapped_corr.csv', 'r') as csvfile: |
|
reader = csv.reader(csvfile, delimiter=',') |
|
for row in reader: |
|
cd[row[0].strip(' "')] = {'name': row[1], 'filename': row[2], 'freq': row[3]} |
|
``` |
|
|
|
## Searching for the exact id |
|
|
|
The name of the character from *Home of the Gentry* by Ivan Turgenev |
|
|
|
```python |
|
for nm in cd: |
|
if 'Лаврецкий' in cd[nm]['name']: |
|
print(nm, cd[nm]['name']) |
|
``` |
|
|
|
`Character-textid-1233692858423997945-charid-74 Лаврецкий | Лаврецкого | Лаврецкому | Лаврецким | Лаврецких | Молодой Лаврецкий | молодой Лаврецкий | бедный Лаврецкий | XXXI Лаврецкий | XXXIII Однажды Лаврецкий` |
|
|
|
```python |
|
from gensim.models import Word2Vec |
|
model = Word2Vec.load("w2vforms.model") |
|
print(len(model.wv)) # vocabulary size 732318 |
|
|
|
words = ['Character-textid-1233692858423997945-charid-74'] # what to look up in model |
|
|
|
for word in words: |
|
word_l = word.lower() # all words in model are in lower case |
|
# search for word in model |
|
if word_l in model.wv: |
|
print(cd[word]['name']) |
|
# 10 : |
|
for i in model.wv.most_similar(positive=[word_l], topn=10): |
|
# word, cosin distance |
|
try: |
|
print(cd[i[0].capitalize()]['name'], cd[i[0].capitalize()]['filename'], i[1]) |
|
except: |
|
print(i[0], i[1]) |
|
print('\n') |
|
else: |
|
# :( |
|
print(word + ' is not present in the model') |
|
|
|
``` |
|
|
|
``` |
|
Лаврецкий | Лаврецкого | Лаврецкому | Лаврецким | Лаврецких | Молодой Лаврецкий | молодой Лаврецкий | бедный Лаврецкий | XXXI Лаврецкий | XXXIII Однажды Лаврецкий |
|
Сергей Михайлыч | Сергея Михайлыча | Сергеем Михайлычем | Сергей же Михайлыч tolstoj_l_semejnoe_schaste_1859 0.6750872731208801 |
|
Иван Степанович | Ваня | Ивана Степановича | Стени | Ивану Степановичу | Вани | Ване | императора Ивана | Иваном Степановичем | Стени Иван Степанович polezhaev_p_lopukhinskoe_delo_1883 0.6608477830886841 |
|
Лиза | Лизы | Лизе | Лизу | Лизой | мою дочь Лизу | XXXIV Лиза | Лизе , которой только что пошел пятый год | Лиза , которая очень любила цветы | XLII Лиза turgenev_i_dvoryanskoe_gnezdo_1859 0.6512988805770874 |
|
character-textid-534782102185514500-charid-2141 0.6511214375495911 |
|
Левин | Николай | Николай Левин | Левина | Левину | брат Николай | Николая Левина | Николая | От брата Левин | Николай Левин , раздраженный возражением tolstoj_l_anna_karenina_1877 0.650296151638031 |
|
Соковлин | Соковлина | Соковлине | Но Соковлин | Молодой Соковлин | monsieur Соковлин | удивленный Соковлин | месье Соковлин | серьезно Соковлин | несколько Соковлина avdeev_m_podvodnyj_kamen_1860 0.6466697454452515 |
|
Вретищев | Вретищева | Вретищеву | доктор Вретищев | Вретищевым avseenko_v_izza_blag_zemnykh_1872 0.6466327905654907 |
|
Багрянский | Багрянского | Багрянскому | Багрянском | нетерпеливо Багрянский | Багрянской | В ужасе , Багрянский | молодого Багрянского | спросил Багрянский | Багрянских khvoshinskaya_n_bolshaya_medvediza_1870 0.6458360552787781 |
|
Вася | Бояринов | Бояринова | Васю | Васи | Васе | Бояринову | Бояриновым | Васи Бояринова | Спросил Вася iogel_m_mezhdu_vechnostyu_i_minutoj_1879 0.6448401808738708 |
|
Венецкий | Венецкого | Венецкому | Венецким | Венецком | Мосье Венецкий | опасно раненных оказался штабс-капитан Венецкий | Счастливые личным счастьем Венецкие stanyukovich_k_v_mutnoj_vode_1878 0.6413235664367676 |
|
``` |
|
|
|
# Examples |
|
|
|
Quasi-sinonyms of the main characters of Russian literature of 19th century: |
|
|
|
```python |
|
from gensim.models import Word2Vec |
|
model = Word2Vec.load("w2vforms.model") |
|
|
|
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'] |
|
|
|
for word in words: |
|
word_l = word.lower() # all words in model are in lower case |
|
# search for word in model |
|
if word_l in model.wv: |
|
print(cd[word]['name']) |
|
# 10 : |
|
for i in model.wv.most_similar(positive=[word_l], topn=10): |
|
# word, cosin distance |
|
try: |
|
print(cd[i[0].capitalize()]['name'], cd[i[0].capitalize()]['filename'], i[1]) |
|
except: |
|
print(i[0], i[1]) |
|
print('\n') |
|
else: |
|
# :( |
|
print(word + ' is not present in the model') |
|
``` |
|
|
|
``` |
|
Пьер | Пьера | Пьером | Безухов | Безухова | граф Безухов | Пьер Безухов | графиня Безухова | XVIII Пьер | В самом серьезном расположении духа Пьер |
|
князь Андрей | Князь Андрей | князя Андрея | князю Андрею | Андрей | князем Андреем | Князю Андрею | князе Андрее | Андрея | Князя Андрея tolstoj_l_vojna_i_mir_1868 0.8655860424041748 |
|
Ростов | Николай | Ростова | Ростову | Ростовых | Николая | Ростовым | Николаю | Николаем | Ростовы tolstoj_l_vojna_i_mir_1868 0.8359265923500061 |
|
Пьер | Пьера | Анна Павловна | Анны Павловны | Пьером | Анне Павловне | мсье Пьер | Анну Павловну | Пьера Анна Павловна | сам Пьер tolstoj_l_vojna_i_mir_1868 0.768761157989502 |
|
Левин | Степан Аркадьич | Левина | Левину | Левиным | Левине | Левиных | Степан Аркадьич Левину | Степан Аркадьич , который любил физиологию | охотник Степан Аркадьич tolstoj_l_anna_karenina_1877 0.7645115256309509 |
|
Левин | Левина | Левину | Константин Левин | Костя | Константин Дмитрич | Константин | Левиным | Константина | Константину Левину tolstoj_l_anna_karenina_1877 0.7631195187568665 |
|
Алексей Александрович | Алексея Александровича | Алексею Александровичу | Каренина | Алексеем Александровичем | Каренин | Каренину | Алексей | Карениным | Алексее Александровиче tolstoj_l_anna_karenina_1877 0.6914079785346985 |
|
Вронский | Анна | Вронского | Вронским | Вронскому | Анны | Анне | Анну | Вронском | Аннушка tolstoj_l_anna_karenina_1877 0.6839613914489746 |
|
Пьеру | Пьеру духовною tolstoj_l_vojna_i_mir_1868 0.677771270275116 |
|
Глинский | Глинского | Глинскому | Глинским | г. Глинский | Глинском | Г. Глинский | бедный Глинский | самого Глинского | г. Глинскому bestuzhev_n_russkij_v_parizhe__goda_1860 0.6717219352722168 |
|
Вронский | Вронского | Вронскому | Алексей | Вронским | Алексей Вронский | Алексею | Алексея Вронского | Алексеем | Вронском tolstoj_l_anna_karenina_1877 0.6684336066246033 |
|
|
|
|
|
Базаров | Аркадий | Базарова | Аркадия | Аркадию | Базарову | Базаровым | Аркадием | Аркадию Базаров | господин Базаров |
|
князь | Князь merder_n_vsya_chuzhaya_1885 0.7821471095085144 |
|
Павел Петрович | Павла Петровича | Павлу Петровичу | Павлом Петровичем | Павел | Кирсанов | Кирсанова | господин Кирсанов | изумленный Павел Петрович | один Павел Петрович turgenev_i_otzy_i_deti_1862 0.7807522416114807 |
|
Николай Петрович | Николая Петровича | Николаю Петровичу | Николай | Николая | Николая - чудотворца | бедному Николаю Петровичу | Николаем Петровичем turgenev_i_otzy_i_deti_1862 0.7124422788619995 |
|
доктор | Доктор merder_n_vsya_chuzhaya_1885 0.7010178565979004 |
|
Лука Иванович | Лука Иваныч | Луки Ивановича | Луке Ивановичу | Луку Ивановича | Лукой Ивановичем | Лука | Луке Ивановиче | какой-то другой Лука Иванович | Луки Ивановича , сидевшего у письменного стола boborykin.dolgo_li 0.6949086785316467 |
|
Володя | Шрам | Володи | Володю | Шрама | Володей | Шраму | Володя Шрам | Шраме | барону Шраму kushevskij_i_nikolaj_negorev_ili_blagopoluchnyj_rossiyanin_1871 0.6844052076339722 |
|
Паклин | Паклина | господин Паклин | Господин Паклин | г-н Паклин | Паклиным | господина Паклина | Сила Паклин | Молодой Паклин | любезный господин Паклин turgenev_i_nov_1877 0.6791232228279114 |
|
Николай Иванович | Николая Ивановича | Астафьев | Николаю Ивановичу | Астафьева | Астафьевым | Николаем Ивановичем | Николая Ивановича Астафьева | ничтожного Астафьева | Николай Иванович , сбитый с толку этим неожиданным вопросом merder_n_vsya_chuzhaya_1885 0.6773545742034912 |
|
Нежданов | Сипягин | Сипягина | Нежданова | Нежданову | Неждановым | Сипягиным | Сипягиной | Сипягину | Сипягиных turgenev_i_nov_1877 0.6740620136260986 |
|
Николай Всеволодович | Николая Всеволодовича | Николаю Всеволодовичу | Николай же Всеволодович | Николая | самого Николая Всеволодовича dostoevskij_f_besy_1871 0.6717023253440857 |
|
|
|
|
|
Лаврецкий | Лаврецкого | Лаврецкому | Лаврецким | Лаврецких | Молодой Лаврецкий | молодой Лаврецкий | бедный Лаврецкий | XXXI Лаврецкий | XXXIII Однажды Лаврецкий |
|
Сергей Михайлыч | Сергея Михайлыча | Сергеем Михайлычем | Сергей же Михайлыч tolstoj_l_semejnoe_schaste_1859 0.6750872731208801 |
|
Иван Степанович | Ваня | Ивана Степановича | Стени | Ивану Степановичу | Вани | Ване | императора Ивана | Иваном Степановичем | Стени Иван Степанович polezhaev_p_lopukhinskoe_delo_1883 0.6608477830886841 |
|
Лиза | Лизы | Лизе | Лизу | Лизой | мою дочь Лизу | XXXIV Лиза | Лизе , которой только что пошел пятый год | Лиза , которая очень любила цветы | XLII Лиза turgenev_i_dvoryanskoe_gnezdo_1859 0.6512988805770874 |
|
character-textid-534782102185514500-charid-2141 0.6511214375495911 |
|
Левин | Николай | Николай Левин | Левина | Левину | брат Николай | Николая Левина | Николая | От брата Левин | Николай Левин , раздраженный возражением tolstoj_l_anna_karenina_1877 0.650296151638031 |
|
Соковлин | Соковлина | Соковлине | Но Соковлин | Молодой Соковлин | monsieur Соковлин | удивленный Соковлин | месье Соковлин | серьезно Соковлин | несколько Соковлина avdeev_m_podvodnyj_kamen_1860 0.6466697454452515 |
|
Вретищев | Вретищева | Вретищеву | доктор Вретищев | Вретищевым avseenko_v_izza_blag_zemnykh_1872 0.6466327905654907 |
|
Багрянский | Багрянского | Багрянскому | Багрянском | нетерпеливо Багрянский | Багрянской | В ужасе , Багрянский | молодого Багрянского | спросил Багрянский | Багрянских khvoshinskaya_n_bolshaya_medvediza_1870 0.6458360552787781 |
|
Вася | Бояринов | Бояринова | Васю | Васи | Васе | Бояринову | Бояриновым | Васи Бояринова | Спросил Вася iogel_m_mezhdu_vechnostyu_i_minutoj_1879 0.6448401808738708 |
|
Венецкий | Венецкого | Венецкому | Венецким | Венецком | Мосье Венецкий | опасно раненных оказался штабс-капитан Венецкий | Счастливые личным счастьем Венецкие stanyukovich_k_v_mutnoj_vode_1878 0.6413235664367676 |
|
|
|
|
|
Макар Девушкин | Макаром Девушкиным | Девушкин | Ваш Макар Девушкин | верный друг Макар Девушкин | пиита Девушкин | сам Девушкин | Ваш искренний друг Макар Девушкин | Покорнейший слуга ваш Макар Девушкин | Ваш истинный друг Макар Девушкин |
|
character-textid--2263910210560212786-charid-1338 0.7358484268188477 |
|
Господин Быков | господин Быков | господином Быковым | Быков | Пришел Быков | господина Быкова dostoevskij_f_bednye_lyudi_1846 0.7262941002845764 |
|
character-textid-1136845811644681716-charid-1206 0.6773316860198975 |
|
character-textid-1136845811644681716-charid-3844 0.6563677787780762 |
|
character-textid-1136845811644681716-charid-2053 0.652981698513031 |
|
character-textid--7985429081029307543-charid-1531 0.652394711971283 |
|
Хозаров | Сергей Петрович | Хозарова | Хозарову | Сергея Петровича | Серж | Сергей Петрович Хозаров | Хозарове | батюшка Сергей Петрович | monsieur Хозаров pisemskiy.sergey_petrovich_khozarov_i_mari_stupitsyna 0.6416277289390564 |
|
character-textid--4293449816511506795-charid-290 0.6381958723068237 |
|
княгиня | Княгиня leontev_k_v_svoem_krayu_1864 0.6374576091766357 |
|
character-textid--4271048439950032603-charid-2583 0.6364111304283142 |
|
|
|
|
|
Каратаев | Платон | Каратаева | Платон Каратаев | Платона | Каратаевым | Каратаеву | И Платон Каратаев | И Платон | Платону Каратаеву |
|
character-textid-4177657404362292091-charid-1523 0.6946800947189331 |
|
Ярошиньский | Ярошиньского | Ярошиньским | Ярошиньскому | пан Ярошиньский leskov_n_nekuda_1864 0.6883847713470459 |
|
преображенец | Преображенец kondratev_i_saltychikha_1888 0.6815229654312134 |
|
character-textid-817356164263296914-charid-544 0.6801170706748962 |
|
character-textid-3795814502554737590-charid-1649 0.6705427169799805 |
|
пришепетывал 0.6704264283180237 |
|
учитель | Учитель goncharov_i_obryv_1869 0.6669456958770752 |
|
character-textid--6401744739099736970-charid-2051 0.6653541326522827 |
|
Венявин | Венявина | Венявину | Венявин , выпивший две рюмки и совсем от этого захмелевший | Венявиным | Венявиных pisemskij_a_vzbalamuchennoe_more_1863 0.6645135283470154 |
|
Михалевич | Михалевича | Михалевичу | МихалевиЧ | Михалевичем | неугомонный Михалевич turgenev_i_dvoryanskoe_gnezdo_1859 0.6601350903511047 |
|
``` |
|
|
|
# Related Publication |
|
|
|
Coming soon |
|
|