Проанализируйте «Сон о красных особняках» с помощью Python

задняя часть Python алгоритм Открытый исходный код

1. Введение

За последние два месяца я научился некоторым навыкам обработки текста через Интернет и использовал алгоритмы обработки естественного языка и машинного обучения для анализа «Мечты о красных особняках». В ходе этого процесса я обнаружил несколько интересных находок, поэтому хочу написать статью, не только для того, чтобы поделиться с вами экспериментальными результатами и обсудить их, но и, кстати, систематизировать и обобщить. (На самом деле хоть и два месяца, но посередине есть пауза, реальное время около двух недель)

Я начал это делать, потому что раньше видел очень интересную статью, вероятно, содержание заключалось в том, что автор использовал программное обеспечение с открытым исходным кодом «Сегментация заикающихся слов» для подсчета вхождений каждого слова в «Сне о красных особняках» (то есть,частота слов), а затем используйте слово частоту как функцию каждой главы, и, наконец, используйте алгоритм «Анализ основного компонента», чтобы сопоставить каждую главу в трехмерное пространство, чтобы сравнить, как аналогичны слова в каждой главе. (Артикул Адрес:Использование машинного обучения для определения того, были ли написаны Цао Сюэцинь эпизоды «Сна о красных особняках» после 40 лет.) Вывод автора состоит в том, что существует явный разрыв между словами, использованными в последних 40 главах и первых 80 главах.

Прочитав статью, я думаю, есть две небольшие проблемы: Во-первых, словарь в причастии заикания, используемый автором, получен из корпуса современных текстов (см. предыдущий ответ разработчика причастия заикания пользователям сети:Как генерируются данные для модели? · Выпуск №7 · fxsjy/jieba), а стиль написания «Сна о красных хоромах» полубуквенный и полубелый, и точность такого метода членения слов сомнительна; во-вторых, хотя автор провел сравнение с «Романтикой о трех королевствах». ", до сих пор нет веских доказательств того, что на различия в словоупотреблении не влияют изменения сюжета. Воздействие. Поэтому я решил провести эксперимент самостоятельно, используя метод сегментации слов без использования словаря, и попытаться устранить влияние сюжета на анализ, чтобы увидеть, будут ли результаты другими.

Когда я начал писать, я думал, что 5 000 слов будет достаточно, но когда я наконец написал его, он достиг 13 000 слов. Тем не менее, я могу объяснить только общий процесс работы алгоритма, а что касается подробного принципа, то, если вам интересно, вы можете найти другие материалы для изучения, а также я прикреплю некоторые информационные ссылки. В противном случае, если я напишу все, то чувствую, что смогу издать книгу... А что в результате? Сначала продай. (Эй, не скользи прямо до конца!)

Программа находится на GitHub с открытым исходным кодом, для использования обратитесь к файлу README:LouYu2015/analysis_on_the_story_of_a_stone. Учитывая проблему с авторскими правами, я решил не приводить исходный текст «Сна о красных хоромах». Если вы хотите воспроизвести результаты эксперимента, вы можете перейти на веб-сайт романа для загрузки. (Обновление: согласно напоминаниям пользователей сети, «Мечта о красных особняках» — это нечто большее, чем просто смерть автора. 100 лет в общественном достоянии без ограничений авторского права. Поэтому я добавил исходный текст, а теперь запускаю программу по инструкции, чтобы воспроизвести результаты. Полный текст «Сна о красных особняках» также доступен здесь:Сон о красных особняках — Викитека, бесплатная онлайн-библиотека. )

2 Предварительная обработка текста

Этот шаг очень простой, поэтому я не буду вдаваться в подробности. Проще говоря, это сокращение каждого предложения в соответствии с пунктуацией, а затем использование единого символа (здесь я использую знак фунта), чтобы отметить точку разрыва. Это облегчает работу с более поздними программами.

Хотя цель проста, есть некоторые детали, которые требуют дополнительной работы. Например, в тексте, который я нашел, все слова, такие как "секс" и "лу", были обрамлены "" (возможно, чтобы отфильтровать содержание, не подходящее для детей? Почему я чувствую, что это еще более странно после рамка... ), поэтому этот вид пунктуации необходимо удалить, и его нельзя использовать в качестве разделителя. Кроме того, номер главы в начале каждой главы также нужно убрать, потому что это не является содержанием романа. Наконец, в тексте есть некоторые редкие слова, которых нет в компьютере, но, к счастью, эти редкие слова в тексте отмечены в скобках раздельным шрифтом (типа "(левый король и правый бемоль)"), так что теоретически I Вы можете заменить это содержимое некоторыми символами, которых нет в исходном тексте (например, специальными символами), а затем заменить их обратно. Хотя мне лень делать такую ​​замену. Теоретически анализ редких слов будет не очень большим, потому что слова, которые задействованы в обороте, — это слова с относительно высокой частотностью.

Эффект лечения такой:

#zhenshiyin знание сна экстрасенс#jia yucunfengchenhuaixiu#Эта книга открывается впервые и #автор ziyun#потому что после того, как она пережила сон#поэтому истина скрыта#и заимствована из #психологического#поговорки# Этот камень записан в книга тоже# 古名#陈世燕#yunyun#но что записано в книге и кто это#ziyouyun#Сегодняшний ветер и пыль нечего делать #вдруг подумай обо всех женщинах того дня# одну за другой, осмотри и сравни их внимательно# почувствуй их действия и знания Это все выше меня# Он я достойный мужчина и мои брови не так хороши как его юбка шпилька# Мне очень стыдно, есть нечто большее # Сожаление и бесполезность, день слишком большой...

3 Создайте полнотекстовый индекс

После получения обработанного текста мне нужно построить полнотекстовый индекс. Это нужно для быстрого поиска исходного контента и ускорения последующих вычислений. я использовалсуффиксное деревоЭта структура действует как индекс. Эта структура данных более сложная, поэтому мы можем сначала поговорить о более простойсловарное дерево.

3.1 Дерево словарей

Во-первых, давайте посмотрим, как выглядит дерево словаря:

Free Image on Pixabay - Landscape, Tree, Flowers, Book

Ах, неправильно, это дерево словарей...

Trie - Wikipedia

На изображении выше каждый круг представляет собойУзел, который представляет собой строку (то есть содержимое внутри круга); связь между узламисторона, который представляет букву. Верхний узел, который является пустым узлом,корневой узел. Если мы продолжаем спускаться от корневого узла к определенному узлу, то буквы на каждом ребре, через которое мы проходим, пишутся вместе, что является строкой, представленной этим узлом. Это характеристика словарных деревьев.

Итак, для чего используется дерево словарей? Например, если мы хотим найти слово «to» в этом словарном дереве, мы можем сначала найти первую букву от ребра ниже корневого узла, то есть ребра «t», чтобы найти «t» в этом дереве. узел. Затем мы находим вторую букву от ребра ниже узла «t», которое является ребром «o», и находим узел «to». Если китайская интерпретация «to» хранится в узле «to», то мы можем найти китайское значение to всего за две операции. Это намного быстрее, чем поиск по словам. Это очень похоже на то, когда мы просматриваем словарь, мы сначала смотрим на положение первой буквы в словаре, затем смотрим на вторую букву... и, наконец, находим слово, поэтому это называется словарным деревом.

3.2 Дерево суффиксов

После разговора о словарном дереве, давайте поговорим о предшественнике суффиксного дерева:Дерево словарей суффиксов. Дерево суффиксного словаря на самом деле является деревом словаря, но в нем содержится не слово, а все содержимое строки.суффикс: Содержание от первой до последней буквы, содержание от второй до последней буквы... и так далее. Например, все суффиксы для слова «банан» — это банан, анана, нана, ана, на и а. Добавление этого содержимого к дереву словаря составляет дерево словаря суффиксов. Левое изображение ниже — дерево словаря суффиксов банана:

https://www.slideshare.net/farseerfc/ukks-algorithm-of-suffix-tree

а такжесуффиксное деревоОтличие от дерева словаря суффиксов в том, что в дереве суффиксов нам нужно удалить узел только с одним ребром внизу, а затем сжать два ребра, соединенных этим узлом, в одно. Например, b-a-n-a-n-a в дереве суффиксов слева сжимается в край банана в дереве суффиксов справа. Кроме того, дерево суффиксов также использует трюк, то есть не сохраняет содержимое ребра, а сохраняет положение содержимого в исходном тексте. Поскольку большая часть содержимого дерева суффиксов повторяется, этот небольшой трюк может значительно уменьшить размер индекса (на профессиональном языке его пространственная сложность равна O(n)).

Какая польза от суффиксных деревьев? Его самое большое использование — извлечение содержимого в середине строки. Например, если я хочу найти, где в банане появляется буква, мне просто нужно найти узел, представляющий букву, и найти все узлы, начинающиеся с буквы: анана и ана. Поскольку каждое вхождение an должно генерировать суффикс, начинающийся с an, а все суффиксы находятся в дереве суффиксов, то должна быть возможность найти все вхождения an. Сила суффиксных деревьев заключается в том, что даже если мы заменим банан очень длинным артиклем, мы сможем сделать такой поиск очень быстро.

Наконец, я использовал алгоритм Укконена, чтобы быстро создать суффиксное дерево всего «Сна о красных особняках» (используйте профессиональный язык для описания скорости алгоритма Укконена: его временная сложность O(n)). Алгоритм Укконена более сложен, поэтому я не буду здесь объяснять алгоритм Укконена, заинтересованные студенты могут посмотреть эти материалы:

Ukkonen's suffix tree algorithm in plain English

Метод построения дерева суффиксов - подробное объяснение Укконена - Журнал Ленивого Сяохэ - Блог Netease

Ukkonen's Suffix Tree Construction - Part 6 - GeeksforGeeks

При полнотекстовом индексировании легко выполнить следующие процедуры.

4 Сделать словарь

Подождите, разве мы не хотим сегментации слов без словаря, зачем делать словарь? На самом деле бессловарная сегментация слов означает не то, что словарь вообще не используется, а то, что словарь генерируется на основе исходного текста, а не сделанного заранее. Чтобы выполнить сегментацию слов, нам все еще нужно выяснить, какое содержание в статье похоже на слово, прежде чем мы сможем определить, как сегментировать.

Так как же определить, какое содержание похоже на слово? Самый простой способ думать об этом — рассматривать все часто встречающиеся фрагменты как слова. Звучит разумно, так что давайте попробуем, воспользуемся деревом суффиксов, чтобы запросить все повторяющиеся фрагменты в «Сне о красных особняках», а затем отсортируем их по количеству вхождений:

Баоюй (3983), Сяодао (2458), Миссис (1982), Что (1836), Сестра Фэн (1741), Один (1697), Мать Цзя (1675), Один (1520), Нет (1448), Миссис. (1437), Дайюй (1370), мы (1233), там (1182), Сижэнь (1144), девушка (1142), ушла (1090), Баочай (1079), не знаю (1074), госпожа Ван (1061), вставай (1059)

20 самых частых фрагментов указаны выше, а количество вхождений указано в скобках. Видно, что эффект неплохой, многие фрагменты - это слова. Однако шестая «единица» явно не является словом, но встречается чаще, чем Цзя Му. Можно видеть, что этот метод скрининга все еще имеет определенные проблемы. Более того, до сих пор существует множество фрагментов, ошибочно принимаемых за слова, например, «ля», «а» и тому подобное. Причина в том, что, поскольку слова с ТОП-5 вхождениями расположены от высокого к низкому, это «ла, да, нет, один, пришел», поэтому их комбинации также будут часто встречаться. Чтобы исключить такие комбинации, мы можем использовать «степень затвердевания» для дальнейшего скрининга.

4.1 Степень затвердевания

Определение затвердевания:частота появления сегментаСравниватьПроизведение частот левой и правой частей соответственново сколько раз выше (обратите внимание,частотапредставляет долю вхождений, иЧастотапредставляет количество вхождений). Однако это предложение слишком красноречиво, и его лучше описать формулой. Если P(AB) — частота встречаемости фрагмента, P(A) — частота слова слева от фрагмента, а P(B) — частота слова справа, то степень коагуляции ко это:

co = \frac{P(AB)}{P(A) \cdot P(B)}

формула,P(A) \times P(B)Это вероятность того, что левая и правая части объединятся вместе в случае полной случайной комбинации. Идея коагуляции состоит в том, что если вероятность фактического появления намного выше вероятности случайного комбинирования, то комбинация не должна быть неожиданной, а какие-то ассоциации есть. Эта ассоциация, скорее всего, потому, что этот клип представляет собой неделимое целое, то есть слова.

Для фрагментов с более чем двумя символами вы можете попробовать каждый метод разделения (например, «Цзя Баоюй» имеет два метода разделения: «Цзя/баоюй» и «Цзябао/ю»), а затем принять степень затвердевания каждого метода. минимальное значение .

Теперь я выбираю клипы, которые появляются более 5 раз в «Сне о красных хоромах», и ранжирую их степени затвердевания:

Нефрит (171415,92), Жасмин (171415,92), Кремовый (171415,92), 逶迤 (142846,60), 徘 (142846,60), 缱绻 (142846,60), 乜 (142846,60), 戥子 (142846,60), бабочка 122439.94), родничок (122439.94), орех бетеля (122439.94), пипа (122439.94), проституция (119038.83), плот (119038.83), домашний скот (119038.83), набережная (119038.83), набережная (10714.935) (10714.935) (10714.935)

Это комбинация 20 верхних степеней затвердевания со степенями затвердевания в скобках. Видно, что эффект все же хороший.

Затем посмотрите вниз, и в топ-20–100 практически нет записей, не являющихся словами:

Застенчивый, набережная, дорога, спотыкаться, комар, лев, драгоценный камень, исцеление, ягненок, хромой, Яошун, Чанъэ, ​​бицзянь, совок, банцзы, рис, стараться, каштан, приземистый, Квай Гуань, подорожник, изысканный, Ю Лу , невестка, болтовня, унижение, насмешка, взаимная, например, на запястье, молится, держит ключ, смотрит, произвольно, Джишан, пареный хлеб, Яма, Цзяофанг, Пориа, Цигуань, Пион, Хэн Ван , вогнутый кристалл, Ханлинь, ненормальный угол, капающие глаза, корзина, вкус, время, фейерверк, роза, пион, оценка, пытка, головастик, горло, уклончивость, невезение, единорог, роза, тыква, лук, искренность, детеныш, дремать , неаккуратный, слухи, туби, вэйвэй, хе-хе, шорох, иньтан, насмехаясь, нытье, тычась носом, крича, бобовый офицер, tuckahoe cream, трудный

Однако существует определенная степень затвердевания ограничений. Затем дальше, чтобы посмотреть на него, вы найдете много фрагментов полуполома, а их степень затвердевания также дорого. Например: «Hong Yuan» (полное слово должно быть «суд Рика»), «жена жены» (полное слово должна быть «женой старой леди»). Думаю также разумно, хотя эти фрагменты половины слова, но они делают то же самое со всем словом - «замораживание» вместе. Таким образом, посмотрите на степень затвердевания недостаточно, но и определить контекст слова завершен.

4.2 Степени свободы

Чтобы исключить неполные слова, мы можем использоватьстепени свободыЭта концепция для продолжения фильтрации. Идея степеней свободы такова: если сочетание является неполным словом, оно всегда будет фигурировать в составе полного слова, поэтому соседние слова будут относительно фиксированными. Например, «Сянъюань» встречается в исходном тексте 23 раза, а «Лисянъюань» — 22 раза, что означает, что частота «груши», появляющейся вместе с левой стороны «Сянъюань», достигает 95,7%, поэтому мы могу быть уверен, что я не думаю, что "Xiangyuan" - это полное слово. Степень свободы описывает, насколько разнообразны и нефиксированы соседние слова сегмента. Если степень свободы фрагмента относительно высока, значит, слово должно быть полным.

Поскольку соседние слова делятся на левую и правую части, степени свободы также делятся на левую и правую части. Взяв в качестве примера левую степень свободы, формула расчета представляет собой сумму частот каждого слова соседних слов слева.Энтропия. То есть, еслиH_{left}левая степень свободы,p_1прибытьp_i- частота каждого левого соседнего слова, тогда:

H_{left} = -\sum_{i=1}^n{p_i \cdot \log_2{p_i}}

(Для студентов, не изучивших информационную энтропию, эта формула может быть очень непонятной. В любом случае, помните, что левая степень свободы отражает разнообразие соседних слов слева.)

Мы убираем слева 20 комбинаций с наименьшими степенями свободы и видим, что действительно отфильтровано много контента, кроме слов:

Слезы (0,111), на словах (0,112), медленно (0,116), головы (0,117), сегодня я (0,121), Юньсяо (0,122), со мной (0,141), Ван 2 (0,146), знаю (0,146), это тоже (0,151), встреча тоже (0,154), тоже (0,156), с (0,159), 嘻 (0,165), сегодня и (0,169), вещи (0,187), горькие (0,187)

(Левая степень свободы в скобках)

То же самое верно и для правой части, с некоторыми фрагментами, которые явно являются полусловами:

Есть даже (0,034), семья Чжоу Жуй (0,053), старушка (0,065), тетя Сюэ (0,072), стоит упомянуть (0,085), предки (0,093), плач (0,100), разговоры (0,112) , слушание (0,113), Ши Дун (0,118), Линь Чжи (0,121), Ге Бо (0,126), И Гао (0,129), Лао Ма (0,139), Эр Фу (0,144), Син Ван Эр (0,149), Just Stop (0,154), to from (0,169), эта встреча (0,175), невестка (0,179)

(Степени свободы справа указаны в скобках)

4.3 Окончательный список слов

С помощью этих четких критериев оценки мы можем отфильтровать слова. Критерии оценки, которые я в конце концов выбрал, следующие: количество случаев больше или равно 5, а степень затвердевания, левая степень свободы и правая степень свободы больше 1. Однако этот стандарт все еще является слишком свободным. Итак, я разработал другую формулу для объединения этих данных:

score = co \cdot (H_{left} + H_{right})

То есть я просто и грубо умножаю степени затвердевания и степени свободы в качестве оценки для каждого сегмента. Таким образом, если один из критериев имеет более низкое значение, общий балл будет ниже. Поэтому я добавил к своему суждению еще один критерий: общий балл должен быть больше или равен 100.

После слоев выбора первоначально был сформирован список слов. Я случайным образом выбрал 100 записей из окончательного результата, 47 из которых были словами:

Пэйфэн, обыкновенный, отдыхающий, принц, не говоря уже о том, еще идущий, близость, позднее, совершающий несчастный случай, маленький актер, сейчас, два или три дня, шитье, наклонившись, полет души, классика, общество бегоний, посольство, лихорадка, благодарный, подавленный, один, прибыл, иностранный лак, Бао Юн, осмотр, дядя, гранат, выкуп, Сюньцзы, одна лошадь, похититель, семья, Линь Дайю, метод, пустая дверь, ценный, поджатый рот, неженатый, Осень Шуанчжай, клянусь, завтра, сопровождать, удобно, Сяо Яоэр, Ли Ван, Сяньчан

Это означает, что список слов верен только наполовину. Однако в неправильной записи сегментация многих записей на самом деле правильная, но есть несколько слипшихся слов:

Не догнать, ни слова, жди его, ты поторопись, девица, старушка, все, поджала губы и смеется, спит на улице, возьми меня немного, скажи, что делать, приходи с едой, скажи доброе словом, занятый человек, раздраженный Да, согласился, Тина, попрощался, женский монастырь, и вторая бабушка, поблагодарила его, женщина, повела, поспешно вошла, в бассейн, бьется, держа в руке одну или пятьсот таэлей, как человек, а Девочки, не знаю, что делать, ругайте одну, идите оттуда, дама домашняя, лет десяти, с глазами, теперь я, несколько маленьких, девичья фамилия, провинциальная, вульгарная, один за другим, услышал это, выгнал, посвежел, свет, не дождусь, жаль, большое событие, поэт, с тобой старый, разбросанный, ведь

Хотя показатель точности невелик, нет необходимости выполнять более строгую фильтрацию, повышая стандарт скрининга. Тогда алгоритм сегментации слов решит проблему, что слово не разрезается. Дальнейшее повышение планки может привести к удалению многих записей, которые на самом деле являются словами.

Использованная литература:

Алгоритм сегментации слов без использования словаря на основе информационной энтропии - Chengdu Benben - Blog Park

5 причастий

Раньше при проверке слов идея заключалась в том, чтобы использовать для оценки различные числовые критерии. Для, казалось бы, более сложной задачи «сегментации слов» идея аналогична: сформулируйте стандарт оценки для оценки схем сегментации, а затем найдите схему сегментации с наивысшим баллом. Каков стандарт оценивания? Простейшим стандартом является умножение вероятности того, что каждый сегмент представляет собой слово после сегментации, как правильную вероятность этой схемы сегментации, то есть стандарт подсчета очков. Будем считать, что вероятность того, что отрезок является словом, равна частоте появления этого отрезка в исходном тексте.

После стандарта оценки остается вопрос: как найти схему сегментации с наивысшим баллом? Определенно невозможно попробовать каждое решение по одному, иначе скорость будет слишком низкой. Мы можем упростить расчет математическим методом:Алгоритм Витерби.

5.1 Алгоритм Витерби

Алгоритм Витерби по существу представляет собой соотношениединамическое программированиеалгоритм. Его идея заключается в следующем: для определенной части предложения оптимальная схема сегментации для этой части фиксирована и не меняется в зависимости от контекста, сохранение этой оптимальной схемы сегментации позволяет сократить массу повторных вычислений. Мы можем начать с первого слова, рассчитать лучшую схему сегментации для первых двух слов, первых трех слов, первых четырех слов... и сохранить эти схемы. Поскольку мы вычисляем последовательно, каждый раз, когда мы добавляем слово, мы просто пытаемся разделить позицию последнего слова. Содержимое перед этой позицией должно быть рассчитано, поэтому оценку можно рассчитать, запросив предыдущую схему сегментации. Так работает алгоритм Витерби.

Например, это процесс расчета оценки каждого метода сегментации «Baoyu Daiyu»:

Po: p = 0,0079487991 (лучший вариант)

Баоюй: p = 0,0079427436 (лучший вариант)
Сокровище/нефрит: p = 0,00795 * 0,00827 = 0,0000657630

Баоюдай: р = 0,0000077623
Бао/Джейд: p = 0,00795 * 0,00001 = 0,0000000511
Баоюй/Дай: p = 0,00794 * 0,00189 = 0,0000149872 (лучший вариант)

Баою Дайю: р = 0,0000096861
Бао/Джейд Джейд: p = 0,00795 * 0,00001 = 0,0000000617
Баоюй/Дайюй: p = 0,00794 * 0,00273 = 0,0000216996 (лучший вариант)
Баоюдай/Джейд: p = 0,00001 * 0,00827 = 0,0000001240 (обратите внимание, что здесь используется оценка лучшей сегментации «Баоюдай», а не оценка самого сегмента «Баоюдай»)

Получив таким образом оценку каждого метода сегментации, программа сначала делит «Дайюй» в соответствии с результатом последнего шага, оставляя «Баоюй». Затем программа просматривает различные результаты сегментации «Баоюй» и обнаруживает, что оценка, которая не сегментирована, является самой высокой, поэтому «Баоюй» также сегментируется. Наконец, программа обнаруживает, что ничего не осталось, значит, сегментация завершена.

5.2 Некоторые корректировки

При составлении списка слов я подсчитал, насколько каждый сегмент похож на слово, т. е. оценку. Однако последний алгоритм сегментации слов учитывает только частоту появления фрагмента и не использует оценку фрагмента. Итак, я просто и грубо добавил в алгоритм оценку фрагмента: умножить частоту фрагмента на оценку фрагмента как взвешенную частоту. Таким образом, те фрагменты, которые больше похожи на слова, имеют больший вес и их легче сегментировать.

Также есть вопрос: как посчитать частоту сегмента, если его нет в словаре? Это более сложная проблема в алгоритмах сегментации слов, которые требуют внешних словарей. Однако в алгоритме без словаря (точнее, словарь строится автоматически) решить эту задачу проще: любой фрагмент, который нужно разбить, должен появиться в суффиксном дереве, потому что этот фрагмент является частью исходного текста! Следовательно, нам нужно только запросить частоту этого сегмента через суффиксное дерево, чтобы вычислить его частоту в исходном тексте.

Напоследок небольшая оптимизация. Мы знаем, что длина общекитайского слова не превышает четырех слов, поэтому, когда программа перечисляет метод сегментации, необходимо попробовать только последние четыре позиции сегментации. Это ограничивает самый длинный сегмент четырьмя словами и уменьшает количество ненужных попыток для длинных предложений.

5.3 Проверка алгоритма сегментации слов

Я выбрал два абзаца исходного текста, чтобы проверить точность алгоритма.

Это результат сегментации машинного слова для повествовательного сегмента в начале второго эпизода:

Я видел / Фэн Су / Фан / вернулся, счастливый, все / занят расспросами / конец, он / сказал, оригинальный / этот дом / новый / продвигаемый / Тай Е, фамилия Цзя Минхуа, это / люди Хучжоу, однажды и / Зять/в прежние времена/перекресток, только сейчас/в/мы/до/в прошлом, из-за/видел/jiaoxin/ту/девушку/очередь на покупку, так что/он/только/сын- зять/переехать/живу/здесь, я/ Один/объясню причину/вернемся к выяснению, потом/дед упал/загрустил/вздохнул/ раз, и спросил/внучка, я сказал/посмотрел на лампу/потерял , дедушка сказал, все в порядке, я буду/сделаю/поклоняюсь/должен/посетить/посетить/вернуться, сказал/один раз/слова, прежде чем уйти/отклонил/отправил/мне/два таэля серебра, семья Чжэнь/дева/выслушала , я не мог помочь / сердце / грустно, без слов на ночь, До / на следующий день / рано там / Деревня Юй / отправил / отправил / два письма / серебро, четыре штуки / парча, ответ / поблагодарить жену Чжэня / сына , и / отправить / одно письмо / секрет / книгу и / Фэн Су, доверить ему / Сян / семья Чжэнь / леди / хочу / что / Цзяо Син / как второй номер, Фэн Су / счастлив / дерьмо, я желаю / идти / льстить, затем / дочь / предыдущая / заставить / толкнуть / стать, взять / ночь / только / использовать / ездить на паланкине, а затем отправить / jiaoxin / в / в /, Yucun / счастливый / само собой разумеется, это / вложенный / сто золотых / одаренный / Фэн Су, снаружи / ты благодарен / Чжэньцзя / Нянцзы / много / вещи / вещи, сделай ей / хорошая жизнь / поддержка, ожидание / поиск / дочь / местонахождение, Фэн Су / возвращение домой /нечего сказать, но говорю/цзяо син/эта/горничная, это/тот год/обзор/Деревня Ю/кто, из-за/случайности/один/ Гу, затем/сделал/этот инцидент, также/я/преднамеренно/неожиданно / пришла / странная судьба, кто бы мог подумать / он / судьба / два / хозяйственных, Нет / Чэн Ван / из / в / Деревня Ю / рядом, только / через год / потом / родила сына, и / половина в год, Ю. Деревня / первая жена / внезапно заболела / умерла, Ю. Деревня / потом / ему помогала / Сторона / работа / главная комната / госпожа / да, бывает, изредка из-за / одного / написано / неправильно, то / для людей / на / люди

Вот результат искусственной токенизации:

Я видел / Фэн Су / Фан / вернулся, счастливый, все / заняты расспросами / конец, он / был / сказал, оригинал / этот дом / Синьшэн / / Тай Е, фамилия / Цзя / имя / Хуа, Бен / Хучжоу / человек Ши, когда-то / с / зятем / старый / пересекался, только что / в / мы / раньше / в прошлом, потому что / видел / Цзяо Син / ту / девушку / купить линию, поэтому / он / только как / зять / переехал / в / Итак, я / по одному / буду / причина / вернуться в Мин, то / мой дед / вниз / грустно / вздох / раз / снова, и / спросить / внучку, Я / сказал / посмотрел на лампу / потерял, мой дед / сказал, может также, я / сам / посланник / фансервис / должен / посетить / вернуться, сказать / получить / вернуть, прежде чем уйти / вернуть / отправить / меня /два таэля/серебро, семья Чжэнь/хозяйка/слушай, не могу помочь/сердце/Грустно, одна ночь/нет слов, до/на следующий день/рано там/Умура/отправить кого-нибудь/отправить/два письма/серебро, четыре куски/парча, спасибо/Семья Чжэнь/Нянцзы и/отправить/одно письмо/секретная книга/и/Фэн Су, доверить/ему/Сян/семье Чжэнь/Нянцзы/хочу/это/Цзяо Син/Цзо/вторая комната, Фэн Су / счастливый / дерьмо, я желаю / идти / льстить, затем / в / перед / дочерью / / Йи Ли / толкнуть / сделать это, взять ночь / только использовать / прокатиться / маленькое кресло-седан, затем / отправить / Цзяо Син / отправить / в /, Амамун / радость / себя / не нужно / сказать, есть / печать / сто золотых / подарок / фэнсу, вай / ты / се / чжэнь семья / хозяйка / много / вещи, порядок / это /хорошая жизнь/поддержка, чтобы/ждать/посетить/дочь/местонахождение, Фэнсу/иди домой/нет слов, но скажи / Цзяо Син / это / горничная, это / в том году / обзор / Амамура / кто, из-за / случайно / взгляд, / сделал / это / событие / пришел, также / я / неожиданно / неожиданно / / Романтика, кто думает / он / судьба / две выгоды, а не / Cheng Wang / из / в / Yu Village / рядом, только / один год / потом / родила / одного / сына и / пол года, деревня Ю / первая жена /внезапно/болезнь/смерть, Амамура/будет/будет/он/поддержит сторону/работу/главную комнату/госпожу/, это , даже/потому что/разово/неправильно, то/для/высшего лица

После статистики степень точности программы составляет 85,71% (что означает, сколько позиций, которые программа должна вырезать, должна быть вырезана), а скорость отзыва составляет 75,00% (что означает, сколько позиций, которые должны быть вырезаны, вырезаются программой). Этот результат не кажется очень высоким, потому что большинство программ сегментации слов с открытым исходным кодом могут достигать точности более 90% или даже более 97%. Но ведь я использую сегментацию слов без словаря, и алгоритм относительно прост, так что меня это вполне устраивает.

Давайте посмотрим на эффект сегментации слов фрагментами стихотворения. Это результат сегментации машинного слова «Песни о погребальных цветах»:

Цветы увядают/цветы летят/цветы полны/небо, красные/исчезают/ароматные/сломанные/кого жалко, паутинка/мягкая/одежда весенний павильон, осень/гладкое трепетание/вышитая занавеска, будуар/дочка/лелеять весну/сумерки, тоска/ полный / нет / освобождение / место, рука / мотыга / выход / вышитая занавеска, терпение / шаг / падающий цветок / приход / возвращение, стручок ивового вяза / я / Фанфэй, неважно / персик / плавающий / и Ли / Фэй, персик и слива / в следующем году / можно отправить снова, в следующем году / будуар / знаю / кто, март / ароматный / гнездо построено, Лян Цзянь / ласточка / тоже / безжалостный, в следующем году / цветок / волосы / хотя может / клевать , но не / Дао / люди идут / Гнездо Лян Конг / также / Цин, один год / триста шестьдесят / день, ветер / меч мороз меч строгий / фаза / сила, яркий / обаятельный / свежая красота / энергия / время, один Навстречу / блуждаю / трудно / ищу, цветы цветут / легко увидеть / падают / трудно найти, до шагов / скучно / убиваем / закапывая цветы / люди, один / рыхление цветов / слезы / темные брызги, кроплю / сверху / пусто / ветки / Видеть/кровь/шрамы, Ду/Кукушка/Тихо/Правда/Сумерки, Мотыга Возвращается/Идет в укрытие/Тяжелая Дверь, Синий Свет/Жиби/Рен Чу/Сон, Холод/Дождь Стук в Окно, Тихо/Тепло, Странно/Рабыня/дно/вещи/раз больно/боже, половина/за/жаль весну/половину/раздраженную/весну, жалость чун/вдруг к/сердитый/вдруг/идти, к/опять/молчание/идти/не слышу, прошлой ночью / Внесудебный элегический / отправить, знаю, да / душа цветка / и / душа птицы, душа цветка / душа птицы / общая сложность / пребывание, птица / я / молчаливый / цветок сам / застенчивый, желание / раб / под угроза/шэн/двойные крылья, следуй/цветок/лети в/конец неба, край неба, где/там/ладан/холм, а не/если парча/капсула коллекция красивых костей, куча/ чистый / земной покров / романтичный, качество чистое / приходи / возвращайся / чистый / уходи, сильный / в / грязный / погружайся в канаву, ты сегодня / умри / нонг похороненный, неизвестный / нонг / тело / когда / траур, нонг сегодня похоронен / Хуарен безумно смеется, он будет похоронен в Нонге / Если ты знаешь, кто это, попробуй увидеть / весна / затянувшиеся цветы / постепенно / падающие, то есть / старое лицо / когда он умрет, весна закончится / старое лицо, цветы падают и люди умирают / двое / я не знаю

Это результат сегментации искусственного слова:

Цветы увяли/цветы летят/цветы по всему небу, красное исчезает/ароматные разрывы/да/кто/сочувствие, пружина для волос/мягкие галстуки/плавающие/чуньси, падающие хлопья/легкие провалы/порхают/вышитые шторы, будуар/дочь/лелеять / Весенние сумерки, меланхолия/полное сердце/нет/освобождение, рука/ручка/цветок/мотыга/вне/вышитая занавеска, терпение/шаг/падающий цветок/приход/возвращение/уход, ивовый шелк/стручок вяза/я/фанфэй, неважно/персиковый цвет/и/ Ли Фэй, Тао Ли/ в следующем году/ может/ пережирнуть, в следующем году/ будуар/ знаю/ есть/ кто, март/ Сянчао/ уже/ Лэй Чэн, Лян Цзянь/ проглотить/ тоже/ безжалостный, в следующем году/цветочные волосы/Хотя/можно клевать, но/неправильно/люди идут/Лян Кун/гнездо/тоже/тощий, один год/триста/шестьдесят/дней, нож ветра/ледяной меч/строгий/ противостояние, яркий / свежий / может / когда, когда-то / блуждающий / трудно / найти, цветы цветут / легко увидеть / падают / трудно найти, перед шагами / душит / хоронит цветочных людей, один / ручка / цветы / мотыги / слезы / темные брызги, брызги / Пустая ветка/видеть/кровавое пятно, кукушка/молчание/позитив/сумерки, лотосовая мотыга/возвращение/укрытие/тяжелая дверь, синяя лампа/экранирующая стена/человек/первый сон, холодный дождь/стук в окно/одеяло /не теплая, странная/рабская/Подземное/времена/печаль, наполовину за / жалость к весне/ наполовину/досадно за весну, питачун/вдруг/досадно/вдруг ушел, к/снова/молча/уходя/неслышно, прошлой ночью/за окном суд/элегия/ посылать, знать есть/душа цветка/и/душа птицы, душа цветка/душа птицы/всего/трудно остаться, птица/самостоятельность/молчание/цветок/собственность/застенчивость, желание/рабыня/под угрозой/рождения/ крылья, с цветами /Лети в/конец неба, край неба, край неба, где же/сянцю, нет/если/мешок/коллекция/светлые кости, куча/чистая земля /крышка/ветер, качество/бен/чистый/приходи/возврат /чистый/уходи, сильный/в/грязный/раковина/канава, э/сегодня/мертвый/долгий/захоронение, неизвестный/долгое тело/когда/траур, длинный/ сегодня/похоронные цветы/люди/улыбки, В его год/похороны/нонг/зная/кто есть/кто, попробуй увидеть/остаток весны/цветы/увядание/падение, то есть/красивое/старое/мертвое/время, одно день/конец весны/красивый/старый, цветы падают/люди умирают/два/не знаю

Точность этой программы упала до 74,07%, а скорость отзыва также упала до 67,04%, что составляет падение почти на 10% соответственно.Можно видеть, что сегментация слов в поэзии более сложна. В этом есть смысл, потому что в поэзии много неупотребительных слов, а некоторые слова даже встречаются только один раз, поэтому компьютерам сложно извлекать информацию из статистических данных.

6 Статистика частоты слов

После завершения сегментации слов статистика частоты слов становится очень простой. Нам нужно только разделить фрагменты по результатам сегментации слов, удалить фрагменты длины один (то есть отдельные слова), а затем подсчитать количество каждого фрагмента.

Вот топ-20 слов по употреблению:

Баоюй (3940), Сяодао (2314), Сестра Фэн (1521), Что (1432), Цзя Му (1308), Сижэнь (1144), И (1111), Дайюй (1102), Мы (1068), Ван Мадам ( 1059), сейчас (1016), Баочай (1014), слышал (938), выходи (934), старушка (908), ты (890), ушел (879), почему (867), жена (856), девушка (856)

(в скобках частота)

Его можно сравнить с предыдущим рейтингом, который подсчитывает только количество вхождений без учета проблемы сегментации:

Баоюй (3983), Сяодао (2458), Миссис (1982), Что (1836), Сестра Фэн (1741), Один (1697), Мать Цзя (1675), Один (1520), Нет (1448), Миссис. (1437), Дайюй (1370), мы (1233), там (1182), Сижэнь (1144), девушка (1142), ушла (1090), Баочай (1079), не знаю (1074), госпожа Ван (1061), вставай (1059)

(частоты в скобках)

Через частотность слов после сегментации слов мы обнаружили, что персонажи «Сна о красных особняках» — это Баоюй, Фэнцзе, Цзяму, Сижэнь, Дайюй, мадам Ван и Баочай в порядке убывания. Однако этот рейтинг проблематичен, потому что есть еще 267 вхождений слова «Лин Дайю», которое необходимо добавить к роли Дайю, поэтому на самом деле роль Дайю больше, чем роль Сирена. Точно так же «старушка» обычно относится к матери Джии, поэтому роль Джии должна быть больше, чем роль Фэна. Правильный рейтинг должен быть Баоюй, Цзяму, Фэнцзе, Дайюй, Сижэнь, мадам Ван и Баочай.

Кроме того, мы также обнаружили, что персонажи «Сна о красных хоромах» любят смеяться, потому что слово, которое встречается чаще всего, кроме имени человека, — «смех» :)

Я сделал полную таблицу частоты слов на веб-странице, если вам интересно, вы можете взглянуть:Словарь Красной палаты, второе издание

В конце концов, я случайным образом выбрал 200 записей в таблице частоты слов, чтобы оценить, сколько из них были настоящими словами. 82 из них являются словами:

Тайно, Лаоцзюнь, человек, Сюнну, умирающий от болезни, не столь известный, обратиться за помощью, ошеломленный, головокружительный, Чжаочжао, охранять, файл, отправить, спуститься с горы, Нефритовый император, осужденный Фэйцай, доверить ему, Себя, на этот раз , море, десять лет, рекорд, следуй указу, Юн Гир, купи сейчас, специализируйся на своих обязанностях, небо и земля, суди, толкай, шагай, знай, прочее, восходящее солнце, страх перед грехом, Вход в школу , предыдущее поколение, местный, Шэньин, слава и богатство, шум, предложения, косы, конец, супруга, рациональный, открытое золото, ниже, честный, милый, обезьяна назад, избегать людей, открывать глаза, не знаю, придерживаться посоха, Жертвоприношение подвешивание, рецепт лекарства, красный цвет, железный замок, видение, дразнение пчелы, непобедимость, подъем по лестнице, официальная лума, средняя школа, вступление в общество, смена шагов, изменение души и т. д. Я вижу только день и ночь, чужой страны, солнце и луна, удушье, похвала, этикет, самопровозглашение, принцесса, Цяньцю, покупка гробов и захоронения

И 118 не слова:

На дежурстве послушай меня, принеси в музей то, что я принес, а остальное, разбей, час-два, кто первый придет, дай знать, а мне нравится, день-два, 50 клеевых клеевых рис, приказал сесть, Убил, в тебе, боль и т.д. сказал, ешьте сейчас, обалдел, это золото, все есть, я, занят, не может ошибаться, Зибен, клевета на монахов, покрытие, руки, слезы Прям , еда уже есть, она у меня есть, мне все равно, мне холодно, я не могу, я еще вернусь, слуги, слуги, дед, ты только жалуйся, иди с тобой, иди в, подобрать матерные слова, отстать, вздрогнуть и, Команда, известный, обратить на него внимание, покой, деньги, не слушая, сухостой, две четверти, тихий, бодрствующий, назревающий, подробно говорящий, пьяный, старость, свободный Приходите, скажите дважды, Цзя Чжэнье, пусть рано или поздно, Ба Луань шип, есть желание, свободный, Цю Гуйци, Чжан Хуали, Ронг Нин два, лечить вас, нет больше слов, отпугнуть, настроиться, Если , а если нет, так и иди к книге, вот тут, зажги лампу, иди в заботу, широкая, и соедини Дао, ты особенный, это трудно, дедушка Цян Юня, его правда, человеческие чувства и т. д., перед едой Принять лекарство, снова выбрать, родить, обнять обеими руками, благословиться, быть ограбленным, размер семьи, болеть, заботиться друг о друге, расставить ушанки, выпить несколько чашек, поговорить о это, лицом ко всему, погода теплая, половина времени, завтра Возврат, следи, слушай, узкий, нехороший, отдай детям, скажи да, получи вечером, а мудрый волнуйся, не обращай внимания , слушай странно, не надейся на меня, а исходи, нефрит

То есть слово верно только в 41% случаев. Это ниже точности словаря и не повышает точность из-за использования алгоритма сегментации слов. Впрочем, это понятно, потому что при создании словаря я рассматривал только фрагменты с количеством вхождений больше 5, а некоторые слова встречались только один раз при сегментации слов, так что сложность действительно должна быть выше.

В таблице частоты слова частоты частоты в общей сложности находятся 39 900 записей. Исходя из предполагаемой доли правильных слов в таблице частоты слова, я оцениваю, что словарь «мечта красных особняков» составляет около 16 000 человек. Кто-то использовал другие программы, чтобы оценить, что словарь «мечты о красных особняках» составляет 4500 (http://bbs.creaders.net/politics/bbsviewer.php?trd_id=344894), но автор не описал подробных статистических методов, поэтому я очень скептически отношусь к его результатам, потому что слова в "Сне о красных хоромах" имеют 3500 видов.

7 Отфильтровать характерные слова

Наконец-то закончил сегментацию слов и сделал большой шаг к цели. Теперь я могу проанализировать различия между главами, используя алгоритм PCA, упомянутый в статье, которую я видел ранее. Но перед этим я хочу сначала подумать, какие слова следует использовать для анализа?

Во многих сообщениях в блогах, которые используют PCA для анализа «Мечты о красных особняках», все используют слова с наибольшей частотой для анализа. Но вот вопрос, а что если самые частые слова связаны с изменением сюжета? Чтобы исключить влияние смены сюжета, в качестве признаков каждой главы я решил выбрать слова с наименьшими частотными изменениями сюжета. И мой метод измерения изменения частоты слов состоит в том, чтобы подсчитывать частоту слов в каждом раунде, а затем вычислять стандартное отклонение. Чтобы исключить влияние общей степени слова на стандартное отклонение, я разделил стандартное отклонение на среднюю частоту слова в каждом раунде, чтобы получить скорректированную дисперсию, а затем использовал этот критерий для фильтрации характерных слов.

Согласно этому стандарту, 20 слов, которые наименее важны для сюжета:

В следующий раз сломаюсь (0,27), ни (0,50), не знаю (0,51), один (0,52), встану (0,55), сейчас (0,55), сам (0,55), прослушал (0,55), там (0,56), что (0,57), выходи (0,58), говори (0,58), говори (0,59), здесь (0,61), приходи (0,63), только есть (0,63), мы (0,64), просто (0,64) , как (0,65) , есть (0,66)

(Дисперсия в скобках после коррекции)

Интересно, что слова в нижней части рейтинга, то есть слова с наибольшим изменением частотности слов, в основном являются именами:

Горничная, пожалуйста, Ань, Пин Эр, Дом, Тетя Сюэ, Семья, Цзин Цзин, Вторая бабушка, Цзя Лянь, Цзя Чжэн, Ли Ван, Мисс Линь, Отец, Тан Чунь, Миссис Син, Слуга, Брат, Мать, Дочь, Мать, Шэ Юэ, Сичунь, Цинвэнь, Фэн Цзиэр, Цзя Чжэнь, Линь Дайюй, Юаньян, Сянъюнь, Ю Ши, Инчунь, Линь Чжисяо, Цзыцзюань, Сюэ Пань, Баоцинь, Чжао Иньян, Сянлин, Чжоу Жуй, Юцунь, Сюэ Янь, Мяоюй, Ин'эр, бабушка Лю, Фан Гуань, Цинь Чжун, Цзинь Гуй, Бао Чан

Можно видеть, что этот метод фильтрации действительно может удалить ненужные слова-характеристики.

В конце концов, я выбрал 50 слов с наименьшей вариацией частоты слов в качестве характеристик, и скорректированное стандартное отклонение каждого слова было меньше 0,85. Эти 50 слов выглядят следующим образом:

В следующий раз разобьется, нет, не знаю, один, вставай, сейчас, сам, слушай, там, что, выходи, говори, говори, сюда, давай, только, мы, просто, как, просто , иди, заходи, знай, только смотри, вот так, выходи, временно, еще, не, все, ты, Баоюй, видишь его, нельзя, слышишь, нет, два, скажем, с одной стороны, мы, это , не смеют, те, кто не, Нет, нет, нет, нет, смеясь, так, но, позвоните ему

8 Главный компонентный анализ (PCA)

Теоретически, когда у нас есть функции, мы можем сравнить сходство каждой главы. Проблема, однако, в том, что теперь у нас есть 50 признаков, а это означает, что текущее пространство данных является 50-мерным, что трудно визуализировать для людей, которым трудно представить себе четырехмерное пространство. PCA — полезный математический инструмент для визуализации многомерных данных.

9.1 Что такое анализ главных компонентов?

Поскольку трудно представить многомерные пространства данных, мы можем сначала представить ситуацию с низкой размерностью. Например, предположим, что каждая точка на рисунке ниже — это часть данных, а абсцисса и ордината представляют значения двух признаков:

https://zh.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90#/media/File:GaussianScatterPCA.png

Теперь, если мы позволим программе PCA сжать эти две функции в одну, алгоритм будет искать линию, в которой точки данных проецируются на эту линию с наименьшим количеством потерянной информации (если проекцию не так легко понять, возможно, что данные Extrude указывают на линию с двумя досками, параллельными линии). В этом примере линия с наименьшими потерями информации является более длинной стрелкой на рисунке. Таким образом, если мы знаем спроецированное положение точки данных на линии, мы можем приблизительно узнать положение точки данных в двумерном пространстве до сжатия (например, в верхнем левом углу или в нижнем правом углу). ).

Вышеописанное относится к сжатию двумерного пространства данных в одно измерение. Случай сжатия 3D в 2D аналогичен: найдите 2D-плоскость, которая сводит к минимуму потерю информации, проецируя точки данных на плоскость, а затем спроецируйте все точки данных на эту плоскость. Сжатие из трех измерений в одно измерение заключается в изменении плоскости поиска для поиска прямой линии. То же самое относится и к высшим измерениям, которые, хотя и трудно представить, математически одинаковы.

Что касается того, как алгоритм находит двумерную плоскость (или прямую, трехмерную плоскость и т. д.) с наименьшими потерями информации, то для этого потребуются некоторые математические знания.Заинтересованные студенты могут найти соответствующие математические формулы и доказательства. Здесь достаточно относиться к этому алгоритму как к черному ящику.

9.2 Важное открытие?

Теперь мы можем использовать PCA для сжимания пятидесяти размеров, образованных словом частот пятидесяти слов в двумерную плоскость. Я понижен сжатые точки данных и обнаружил, что это выглядело так:

(Каждый кружок на картинке представляет собой петлю. Внутри круга указан номер петли, считая от 1. Красный кружок — 1-40 раз, зеленый кружок — 41-80 раз, синий кружок — 81-120 раз. )

Большая часть контента (синяя) после 80 главы сосредоточена в длинной и узкой области в левом нижнем углу, которая хорошо отличима от других глав! Могло ли быть так, что последние 40 серий «Сна о красных хоромах» написаны другим автором? !

Не волнуйтесь, анализ еще не закончен. Очень важным преимуществом PCA является то, что результаты его анализа легко интерпретируются, потому что мы можем знать вес каждой исходной функции в сжатой функции (или компоненте). Как видно из рисунка выше, основное различие между последними 40 раундами заключается в значении компонента 2. Таким образом, мы можем взглянуть на весовой рейтинг частотности каждого слова в компоненте 2:

Смеемся (0,883), мы (0,141), один (0,133), вы (0,128), двое (0,113), говорим (0,079), мы (0,076), это (0,063), слушаем (0,052), а также да (0,046) , в одну сторону (0,045), сюда (0,037), все (0,032), но (0,028), ушел (0,027), нет (0,025), вышел (0,021), сюда (0,018), теперь (0,016), сюда ( 0,016), еще нет (0,011), увидеть его (0,011), выйти (0,010), только что (0,010), один раз (0,008), встать (0,005), только увидеть (0,002), не (0,002) ), далее разложение по времени (0,000), нельзя (-0,001), нельзя (-0,001), сказал (-0,002), кто-то (-0,005), неизвестен (-0,007), там (-0,009), позвони ему (-0,011), не смею (-0,011), сам (-0,011), не могу (-0,017), что (-0,019), так (-0,020), просто (-0,023), знаю (-0,026), заходи (-0,036 ), сказал (-0,046), как (-0,050), только имел (-0,056), нет (-0,077), слышал (-0,092), сокровище нефрита (-0,312)

(вес в скобках)

Я обнаружил, что слово «улыбается» является не только самым частотным словом, кроме имен, но и имеет необычно высокий вес в результатах PCA (0,88), даже превышающий абсолютное значение веса «Баоюй» (0,31)! Чтобы понять, почему это слово имеет такой большой вес, я нарисовал изменение частоты слова «сяодао»:

(По оси абсцисс на рисунке — номер главы, по оси ординат — частота слова «сяодао»)

Можно обнаружить, что частота слова «Сяо Дао» сначала увеличивается, а затем уменьшается, что напоминает мне о взлете и падении резиденции Цзя. Может быть, частота слов «Smile Road» как-то связана с развитием Jia Mansion? Интересно, что пик словоупотребления «Дороги смеха» пришелся на 50-ю серию, а некоторые анализировали с точки зрения сюжета, что расцвет резиденции Цзя начался в 48-й и 49-й сериях, которые как раз совпали:

«Мечта о красных особняках» «Сочетание шпильки и маргаритки» поднимает Grand View Garden на вершину

[Перепечатано] Бай Куньфэн рассказывает о мечте о красных особняках (172) Резиденция Цзя находится на пике своего развития: все, кто должен был приехать, пришли_Ши Дин рассказывает о красных особняках_Блог Сина

Возможно, обычное на первый взгляд слово «дорога смеха» действительно отражает историю взлета и падения резиденции Цзя. Хотя причинно-следственная связь требует проверки, есть смысл задуматься, ведь люди смеются только тогда, когда им хорошо живется.

9.3 Повторный анализ

В предыдущем анализе мы обнаружили, что слово «дорога смеха» больше связано с сюжетом и серьезно повлияло на наш анализ. Кроме того, как личное имя, абсолютная величина его веса также относительно велика, что также может быть связано с сюжетом. Поэтому я решил «зачеркнуть» эти два слова, использовать частотность оставшихся 48 слов в качестве признаков и снова выполнить анализ PCA. На этот раз результат следующий:

На этот раз мне нужно сжать функции в 3D-пространство вместо 2D-пространства. Это связано с тем, что коэффициенты вклада дисперсии двух компонентов (которые можно понимать как количество информации, предоставляемой компонентами), которые мы получили ранее, составляют 44,6% и 19,0% соответственно, а общий коэффициент вклада составляет 63,6%, что относительно высоко. Теперь даже с тремя компонентами ставка дисперсионного вклада составляет всего 23,9%, 10,6% и 6,9%, а общая ставка вклада составляет всего 41,4%. Видно, что после удаления «Сяодао» и «Баоюй» найти информацию по частоте слов стало намного сложнее.

Как видно из рисунка, последние 40 раундов не так сгруппированы, как раньше, но небольшая тенденция к кластеризации все же прослеживается. В частности, более очевидна разница между первыми 80 эпизодами и последними 40 эпизодами во втором и третьем компонентах. Как и прежде, мы можем найти слова с относительно большими абсолютными весами в этих двух компонентах и ​​увидеть изменения их частотности.

В третьем компоненте пять слов с наименьшим весом: нет (-0,41), слышал (-0,25), сейчас (-0,21), поэтому (-0,18), мы (-0,14). (вес в скобках)

Пять слов с наибольшим весом: слушали (0,22), два (0,26), говорили (0,30), видели только (0,37), одна сторона (0,39).

Во втором компоненте три слова с наименьшим весом: что (-0,30), как (-0,26), слышу (-0,22)

Три слова с наибольшим весом: one (0,28), you (0,37), us (0,43).

(«Слушание» появляется дважды в рейтинге. Не уверен, насколько полезен этот находки.)

Можно обнаружить, что некоторые слова не имеют изменений при аномальных изменениях. Однако повлияли ли эти изменения на сюжет? Трудно сказать. Кроме того, в результатах PCA кажется, что лучшие 40 и средние 40 раз также разделены, но после 40 раз нет. Значит, это указывает на то, что на результаты PCA также влияет сюжет?

Короче говоря, я в некоторой степени уверен, что есть некоторые различия в словах, использованных в первых 80 и последних 40 сериях «Сна о красных хоромах», но поскольку трудно исключить влияние сюжета, я не уверен, что автор один и тот же человек. Хотя эта проблема не была полностью решена, открытия, сделанные по ошибке в этом процессе, весьма интересны, например, интересное совпадение изменения частоты слова «дорога смеха» и история взлета и падения места жительства Цзя. Более того, кажущиеся скучными математические формулы могут сделать эти забавные анализы, Математика - это весело!

=======================================================

Если вы считаете, что моя статья хорошо написана, я вознагражу вас долларом, чтобы поощрить ее~

Алипай:

WeChat:

(На телефоне вы можете сначала сохранить его в альбом, а затем выбрать идентификацию QR-кода из альбома при сканировании кода)

Несанкционированное воспроизведение запрещено!

(Официальный список: общедоступный аккаунт WeChat «Китайское сообщество Python», «Zhihu Daily», «Helloworld Children's Programming»)