Банички в дистрибутивната семантика
от грешни заключения можем да добавим истината приблизително като умножаване на две отрицателни числа
„Поетичността“ на търсенето трябваше да бъде приложена поради вродената способност на дистрибутивните вектори да показват степента на семантично сходство на лексемите с най-реалния брой (колкото по-малък е ъгълът между векторите на думите, толкова по-вероятно е тези думи да са близки по значение - косинусова мярка, класика на жанра като цяло). Например „принцеса“ и „овчар“ са много по-малко близки от „овчар“ и „овца“: 0,139 срещу 0,603, което вероятно е логично - векторите на националния корпус трябва да отразяват суровата реалност, а не приказния свят на Г.Х. Андерсен. Методът за изчисляване на дълбочината на корелация (дифузия) на заявката и пая се появи почти сам (евтино и весело) като нормализирана сума от приликите на всяка дума от списъка X с всяка дума от списъка Y (стоп думите бяха изхвърлени, всички останали бяха намалени до нормална форма, но повече за това по-късно).
Резултатите от поетичното търсене едновременно доволни и развеселени. Например, заявката "музика" върна следния списък със стихотворения:
Тук трябва да се отбележи, че думата "музика" не е в нито една от баничките, изброени в базата данни. Въпреки това, всички пайови асоциации са много музикални и степента на тяхната семантична дифузия със заявката е доста висока.
Сега, по ред за свършената работа (източник в GitHub).
Библиотеки и ресурси
Формиране на модела на данните
Олег представи под формата на текст всичко, което казва Оксана разделено на глави и параграфи и на отделни думи
Първо, от текстов файл (poems.txt), който съдържа стихотворения (около осемстотин), се изрязва списък, който всъщност съдържа тези пайове под формата на низове. Освен това торба с думи се изстисква от всеки редов пай (торбаот думи), в който всяка дума е дадена в нормална граматична форма и от които шумните думи са изхвърлени. След това за всяка торба се изчислява семантичната „плътност“ (интро-дифузия) на пая и се формира специфичен списък на асоциациите (помага да се разбере кой семантичен слой преобладава от гледна точка на модела на дистрибутивния вектор). Цялото това удоволствие се поставя в речник под съответните ключове и се записва във файл във формат json.
Общ анализ на модела
убий обидата, гнева и похотта гордостта, завистта и копнежа и това, което е останало от теб от милост, убий
"Най-меката" баница:
на този кораб ние ще бъдем спасени не бъди предшественик постави кораба не се заблуждавай болен
Тук отрицателната плътност, струва ми се, се дължи до голяма степен на факта, че болничното значение на думата „съд“ не беше включено в списъка на асоциациите. Това като цяло е едно от слабите места на дистрибутивно-семантичните модели - при тях по правило едно значение на една лексема потиска по популярност всички останали.
Заявки за търсене по модел
За това как работи търсенето, всъщност беше написано по-горе - пайовете са непретенциозно сортирани по нивото на тяхната дифузия (обобщено семантично сходство) с думите на заявката.