的均值向量。
该算法的主体思想是使用迭代算法:首先,随机初始化簇中心,将每个数据点分配给最近的簇中心;然后,将每个簇中心设置为所有分配的数据点的平均值;如此往复迭代,当簇中心保持不变时,该算法终止。
K-means特征聚类算法应用广泛、速度快,虽对于离群点和孤立点敏感,但通过去除离群点后再聚类,减少离群点和孤立点对于聚类效果的影响。K-means特征聚类算法的缺点在于
值的选择有困难。
值的选择问题,在安徽大学李芳的硕士论文中提到了K-means算法的
值自适应优化算法 [13],并进行了改进:
1) 必须首先给出
(要生成的簇的数目),
值很难选择。事先并不知道给定的数据应该被分成什么类别才是最优的;
2) 初始聚类中心的选择是K-means的一个问题。
李芳 [13] 设计的算法思路是这样的:可以通过在一开始给定一个适合的数值给
,通过一次K-means聚类算法得到一次聚类中心。对于得到的聚类中心,根据得到的
个聚类的距离情况,合并距离最近的类,因此聚类中心数减小,当将其用于下次聚类时,相应的聚类数目也减小了,最终得到合适数目的聚类数。可以通过一个评判值
来确定聚类数,得到一个合适的位置停下来,而不继续合并聚类中心。重复上述循环,直至评判函数收敛为止,最终得到较优聚类数的聚类结果。本文对这种K-means算法加以改进,并加入了jieba分词,能准确地判断出是前八十回与后四十回之间存在差异。
即使处理大量数据,K-means特征聚类算法的稳定性、效率和准确性(与实际标签识别相比)也非常好。该算法的时间复杂度的上限为
是样本大小,
是划分的聚类数,
是迭代次数。假定聚类数和迭代数保持相同,则K-means特征聚类算法所需的时间仅与样本大小有关,因此显示线性增长趋势。
为了避免仅以《红楼梦》一部作品作为样本进行聚类分析,不能够判别《红楼梦》作者的所属问题,本文对该算法进行了改进,并利用改进后的基于词频分析的K-means特征聚类算法对研究《红楼梦》作者的所属问题进行了分析研究。新算法的具体步骤如下:
1) 对《红楼梦》语料库出现的词汇进行频率降序排列;
2) 选择已排序的词汇(除去语气助词),根据词频由高到低依次选择五个字;
3) 利用基于词频分析的K-means特征聚类算法进行计算,用K-means特征聚类来检验每个文本之间高频词的相关性,并用jieba分词对前八十回与后四十回进行进一步分析。
3.2. 模型假设
1) 假定标题给出的数据是真实可靠的;
2) 假定TXT格式的《红楼梦》完整文本中没有出现错误;
3) 假定每个样本都是独立的(不受影响或不受其余样本影响);
4) 假定样本选择是随机且通用的;
5) 假定所选词汇使用频率的异同能够绝大部分地区分作者的写作格调;
6) 假定实验过程中的出现误差可忽略不计。
3.3. 实验与分析
《红楼梦》的正文共有874,592字,使用手动统计算法不仅工作量大,而且容易出现错误。但计算机具有快速和准确的计算这两个特征,并且使用计算机进行统计是很自然的结果。
李瑞芳等 [14] 使用Java编程对《红楼梦》中的字进行计数,得出《红楼梦》共有189个字出现频率超过700次,这189个字共被使用498,630次,这些字涵盖了全56.0887%的内容,在4401个单字中,这189个字是最常见的。本文最终敲定研究“宝、贾、姐、老、红”这五个字在书中前八十回和后四十回中出现的频率,这五个字的选出是在删去了语气助词之后,又依据词频从高到低排序,筛选出的前五个字。
3.3.1. 利用K-means特征聚类算法检验
1) 实验过程
首先,根据每回的分词得到TF-IDF矩阵(各个词在每回的所有分词中出现的频率,也就是各个词在每回中出现的频率);然后,以TF-IDF矩阵作为数据,通过余弦相似的K-means特征聚类算法进行分类。
K-means特征聚类算法的演算算法:对指定的样本,根据样本间距离的大小,将样本划分为2个簇(2个类别),某样本离哪个簇的簇中心最近,这个样本就属于这个簇(属于这个分类)。余弦相似是通过测量两个向量的夹角余弦值来度量他们的相似性,为1则完全重复,0则完全不相关。
2) 实验结果与分析
通过计算机检验可以得到的每个种类下的分类数量,得到两个结果(如
图1
所示),对实验得出的结果取平均值,可以得出有八十回的样本被归为第一簇,有四十回的样本被归为第二簇。我们探讨的是《红楼梦》前八十回和后四十回的作者问题,结合实验结果可以推断出来前八十回和后四十回确实存在差异,但为了更验证这一想法,我们利用jieba工具对文本进行进一步处理。
Figure 1
. K-means algorithm test results of text data
图1
. K-means算法对文本数据检验结果
3.3.2. 利用Jieba分词进行数据检验
以《红楼梦》作为实验文本,使用jieba工具对文本作分词处理。将《红楼梦》的120回分为12个语料库,每个语料库包含10回,因此第一个语料库包括第1~10回,第二个语料库包括第11~20回,……,第十二个语料库包括第111~120回。以每10回为一个样本,分别计算特征词的出现频率,并选择替换词进行统计。首先,数据附件每十回返回一个样本,导入python;然后,应用python的jieba模块,按照词性(代词)进行切分,统计选定五个词汇出现的词频,结果示例如
表1
所示。
Table 1
. Jieba word segmentation processing results of text data
表1
. Jieba分词对文本数据进行处理结果
3.3.3. 结论分析
K-means不足之处在于:只能分出红楼梦中有四十回和另外八十回不同,并不能分辨出是前八十回与后四十回不同,所以增加了jieba分词这一检验过程,更加明确的看出《红楼梦》的前八十回与后四十回存在差异。通过实验,剔除异常数据后,可以看出:“红”字的占比在前八十回中平均数为0.0846425%,且众数为0.07%;但在后四十回中“红”字的占比平均数为0.056275%,众数为0.04%。“宝”字的占比在前八十回中平均数为0.648405%,且众数为0.5%;但在后四十回中“宝”字的占比平均数为0.7436725%,众数为0.8%,依次对“贾”“老”“姐”三个字进行类推可以得出,就平均利用率来讲,这五个词汇的使用情况在一到八的模块中差异不大,九到十二的差异也不大,但前八个模块与后四个模块却存在较大的差异,并且在众数的对比上更能明显地看出来《红楼梦》的前八十回与后四十回的不同。
4. 总结
为了剖析前八十回与后四十回产生差异的原因,本文在这里仅作一些初步的推断:一个是表达需求上的差异,另一个是创作风格上的差异,即文字的书写方式上的差异。平均用法的差异可以通过作者的措辞习惯来解释;导致语法动能和语言功能不同的原因相对复杂,不容易得出结论,初步猜测需要不同的表达方式和不同的作者创作风格来解释;除此之外,写作时间顺序也有一定影响。
基于词频分析算法的作者分析结果是数值统计的结果,是可能性的结果,可以作为文献和文献学中文本进一步分析和验证的参考 [15]。本文中改进后的K-means特征聚类算法分析的结果支持前八十回和后四十回是由不同作者所创作的结论。
基金项目
福建省自然科学基金项目(2020J01844),福建省大学生创新创业项目(S202010395034)。
文章引用
郑佳莉,柯小玲,江晓莹,陈淑悦. 基于词频分析的K-Means特征聚类算法的《红楼梦》作者分析
Analysis of the Author of A Dream of Red Mansions Based on K-Means Feature Clustering Algorithm with Word Frequency[J]. 数据挖掘, 2022, 12(01): 73-79.
https://doi.org/10.12677/HJDM.2022.121008
参考文献
-
1. 苗怀明. 红楼梦研究史论集[M]. 沈阳: 辽宁人民出版社, 2019.
-
2. 李鹏飞. 人莫不饮食也, 鲜能知味也——谈《红楼梦》与饮食文化[J]. 红楼梦学刊, 2020(4): 84-120.
-
3. 王世海. 论数理统计方法研究《红楼梦》作者问题的得与失[J]. 宜春学院学报, 2019, 41(4): 105-109.
-
4. 施政. 《红楼梦》研究中的统计方法综述[J]. 吉林省教育学院学报, 2019, 35(1): 151-156.
-
5. 马创新, 陈小荷. 从高频词等级相关角度探析《红楼梦》作者[J]. 中文信息学报, 2018, 32(11): 97-102.
-
6. 胡适. 《红楼梦考证》(改定稿)[M]. 北京: 北京出版社, 2015.
-
7. Koppel, M., Schler, J. and Argamon, S. (2009) Computational Methods in Authorship Attribution. Journal of the American Society for Information Science and Technology, 60, 9-26.
-
8. 程东波, 柯小玲, 林施鑫. 基于等价性检验和特征聚类的《红楼梦》作者分析[J]. 理论数学, 2020, 10(5): 549-555.
-
9. 陆尚辉. 基于R软件和KNN算法的《红楼梦》作者分析[J]. 魅力中国, 2017(7): 81+63.
-
10. 施建军. 关于以《红楼梦》120 回为样本进行其作者聚类分析的可信度问题研究[J]. 红楼梦学刊, 2010(5): 318-335.
-
11. 施建军. 基于支持向量机技术的《红楼梦》作者研究[J]. 红楼梦学刊, 2011(5): 35-52.
-
12. 叶雷. 基于计量文体特征聚类的《红楼梦》作者分析[J]. 红楼梦学刊, 2016(5): 312-324.
-
13. 李芳. K-Means算法的k值自适应优化算法研究[D]: [硕士学位论文]. 合肥: 安徽大学, 2015.
-
14. 李瑞芳, 孙军波, 常诗珧. 基于计算机的《红楼梦》字词浅探[J]. 电脑知识与技术, 2009(5): 753-755.
-
15. 叶雷. 基于计量文体特征聚类的《红楼梦》作者分析[J]. 红楼梦学刊, 2016(5): 312-324.
NOTES
*
通讯作者。
●投稿须知
●最新文章