|
--- |
|
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 1835 (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. |
|
|
|
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. |
|
|
|
# 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 |
|
|
|
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 |
|
|