互动媒体的大作业之一。似乎一整个学期都在和这十二个一打交道,尝试了看待一个简单书法作品的多种维度,也发掘了诸如拟人化、拟物化等在内的多种其他视角。然而,不到期末我们就永远不知道这些数据最后将会去向哪里、会被用来做什么。

——————————————————

1.任务主题

对全体同学的文艺创作进行文本分析、统计和数据可视化

2.任务要求

整理大家的作业数据,运用NLP技术(自然语言处理)对其进行分析,完成一篇图文结合的分析报告,特别是要分别对十二个“一”有关的文本分别进行统计。
最好直接调用现成的NLP库来实现;报告中若能将文本分析结果与之前的关于十二个”一“的感受评分数据对比分析更佳;

——————————————————

3.我们的工作

在本次实验中,我们依旧将我们的关注重心放在12个”一“的本身上。我们想要通过观测、提取以及分析测试者对于12个“一”的感知以及对于它们的不同认知感受来抽象出这些内容与书法本身的关系,并给出一套可视化的方案,以展示我们的工作。
我们的工作主要包含以下的方面:
1.首先,我们将对所有数据进行手动的整理规划,并采取一种较好的方式来对所有的数据进行重新存放。
2.其次,我们利用每一个”一“获得的测试者的描述和设定的文本,利用snownlp以及jieba库来实现数据分析。
3.在整理文章的过程中,我们发现并不是所有的测试者都对所有的12个一进行了设定策划,一部分同学只是从中选取了4-6个一为部分书法构思人设。我们因此产生疑问:是否这些被单独选出来的”一“更加具有独特性或者最为富有代表性?我们也对它进行了分析研究。
4.整理在2中得到的数据,分析结果并且将它们做一个较为完整的分析以及可视化。

我们的第一步是手动提取受试者的创作文本。由于每个人写的文章主观性极大,且文本结构、排版、思路都不一样甚至有一些并不规范,我们原来想通过某种方法用代码自动筛选、归类文本,但是结果并不尽如人意,因此我们还是选择了手动提取。
我们由于时间问题,选取了1703/1704班的40名受试者,我们阅读他们的创作文本,把对于每一个“一”的设定文字剪裁下来,对应到每一个“一”上。每一个受试者拥有一个目录,目录下存放每一个“一”的txt文本。

让我们先把十二个“一”摆上来。

可以看出,就算没有对它们进行仔细细致的研究,我们也可以一眼就发现它们的书写方式是不同的,有一些比较相近,而有一些在粗细、倾斜度等各方面都有较大的的差异,有的粗狂,有的纤细。但是对于力度以及它们表现的情感, 每个人都是不太一样的。

——————————————————

4.词频分析

我们需要知道每一个“一”受试者都给它们赋予了什么样的角色,其中一个方法就是分门别类地进行词频方面的研究。如果一个词在文本中频繁出现,如果它是一个名词,那么就很有可能是用户描绘的或者是拟人、拟物化的角色,这将除了为我们提供用户的故事版之外别无意义,因此比较重要且有用的是形容词。
因此,我们把所有数据中有关第一号“一”的部分连接成一段文字,然后对这段文字进行分词。分词完成后,我们需要根据它们的词性进行筛选,选出我们需要的形容词来。然后再统计、分析。
首先遍历每一个测试者文件夹中的文本文件:

for rootdir, dirs, files in os.walk(rootdir):for dir in dirs:dir_path = os.path.join(rootdir, dir)   # 获取子目录路径namesdir.append(dir_path)
sampleNum = len(namesdir)
# 获取每个人分析的一
for name in namesdir:# print(name)texts = os.listdir(name)# 分类存放for text in texts:(filename, extension) = os.path.splitext(text)text = os.path.join(name, text)if filename == "1":oneIndex1.append(text)pass..................if filename == "12":oneIndex12.append(text)passelse:pass

提取所有的文本,集合到一个txt:

textdir = None
TXT = []
for textdir in oneIndex12:txt = Nonetry:txt = open(textdir, encoding="ansi").read()except UnicodeDecodeError:try:txt = open(textdir, encoding="utf-8").read()except UnicodeDecodeError:print("出错")TXT.append(txt)
print(TXT)

进行分词并加载停用词表用以过滤掉不需要出现的中文单词:

"""
分词
"""
txt = "".join(TXT)
# 加载停用词表
stopwords = [line.strip() for line in open("stop.txt", encoding="utf-8").readlines()]

筛选形容词,计算词频 :

"""
词性分析
"""
counts = {}  # 通过键值对的形式存储词语及其出现的次数for x in psg.cut(txt):# if word not in stopwords:if x.flag.startswith('a'):if len(x.word) == 1:  # 单个词语不计算在内continueelse:counts[x] = counts.get(x, 0) + 1  # 遍历所有词语,每出现一次其对应的值加 1items = list(counts.items())  # 将键值对转换成列表
items.sort(key=lambda x: x[1], reverse=True)  # 根据词语出现的次数进行从大到小排序for i in range(min(50, len(items))):x, count = items[i]print("{0:<5}{1:>5}".format(x.word, count))

结果是例如这样的输出:

这是我们对第12个“一”进行分析的结果。
这个“一”是这一号:

我们提取到词频较高的词“纤细”、“谨慎”、“细腻”等都可以对应上这个字形。
我们对所有的词频分析进行了一个词云图展现,这将有利于我们对这些所有的文本进行总体的把握和感知。

编号 词云图
1
2
3
4
5
6
7
8
9
10
11
1 2

——————————————————

5.关键词抽取

基于textRank算法生成关键词。这样做的意义是我们能够从所有测试者提供的文本中得到这个“一”比较具有代表性的词汇,但是我们个人认为由于关键词计入名词和动词,对分析“十二个一”的特征来说干扰因素还是有些太过于明显,所以我们觉得它的意义并不是很大。不过也把结果放上来:


——————————————————

6.情感分析

受试者在进行创作的时候,自身的心情以及对这个“一”的喜好程度都会使得他在对文艺创作的时候带入自己的主观情感,也因此影响到他对于这个“一”的演绎和设定。
snowNLP提供了一种封装好的方法来检测文本的情绪状况,用于分析受试文本的情感那倾向。一般而言,人对情感倾向分为正面和负面。snowNLP能够对文本进行分析,提取出关键的带有情绪的词汇来累加计算整个文章的情绪指向。在文本中发现一个消极的词汇,结果就会减小,发现正向积极的词汇则会增加。最后我们得出一个情绪的分值,这个数值越接近1,表示人的情感倾向越偏向正面的、积极的,越接近0表示越消极、越负面。
我们对十二个一进行分析,得到的最终结果是:

编号 情绪值
1 0.937641821147647
2 0.866497779143834
3 0.782580641617419
4 0.849064394112572
5 0.758883835001596
6 0.860064893889249
7 0.891415268611471
8 0.861417124824973
9 0.880712433042183
10 0.850743745166771
11 0.856084233096879
12 0.882050871980078

可以发现所有的“一”的文本,其情感倾向分值都稳定在0.85左右。这是一个好的现象,说明人们在创作的过程中积极的内容还是要大于负面的内容,于是赋予“一”的情绪情绪倾向也较为正面
我们对它们稍作分析,可以看出,笔迹较为柔和、没有很多棱角的“一”,其情绪倾向都基本能够突破0.85,而分值低于0.82的,一般笔迹较粗、线条硬而没有变化。
分值最高的1号“一”很显然具备了舒展平滑等优点而不失干脆果敢,大多数人在评判它的时候表现出来的情感倾向都是正面的。(好巧,我们也喜欢这个一。)
代码:

sum = 0
textdir = None
TXT = []
# 获取所有的1号“一”的词频
for textdir in oneIndex12:txt = Nonetry:txt = open(textdir, encoding="ansi").read()except UnicodeDecodeError:try:txt = open(textdir, encoding="utf-8").read()except UnicodeDecodeError:print("出错")# print(txt)s = SnowNLP(txt)sum += s.sentiments
print(sum / len(oneIndex12))

————————————————

7.文本分析中一个有意思的小点

上一节我们通过分析各个“一”的文本来对人们对于“一”的创作感知进行了一个体现。我们在分析的过程中还发现了一个问题。当时我们写作业的时候,部分人选择了第二个选题,即在所有的一中选择4个以上的“一”进行创作,而不是整体的、泛化的研究。在这样的情况下受试者究竟会优先选择哪些“一”来作为故事的主人公,也是一个值得关注的问题。这反映了多个“一”之间的相似程度差异程度以及特征程度
比如,当我们选择哪一些一来进行创作的时候,一般我们都不会挑选我们非常不喜欢的,其次,当我们发现有多个一给我们的感受比较相似的时候,我们就很有可能要花费一些时间来仔细斟酌我们的选择,而结果往往是,我们会选择这两者之间他更喜欢的。
此外,对于一些人而言,选取的角色需要体现角色的个性,所以他们可能会选择最富有个性的那些,而不是相似的那些。因此,当一个人选择了四个“一”来创作的时候,这四个“一”很有可能是最具有个性的四个,也有可能是最能代表这十二个“一”中几大维度的四个,总之,他们的相似度应该不会太高。
我们尝试一下提取它:

for rootdir, dirs, files in os.walk(rootdir):for dir in dirs:dir_path = os.path.join(rootdir, dir)   # 获取子目录路径namesdir.append(dir_path)
print(namesdir)
sampleNum = len(namesdir)
print("样本数:" + str(sampleNum))# 获取每个人分析的一
for name in namesdir:# print(name)texts = os.listdir(name)if len(texts) < 9:# 分类存放for text in texts:(filename, extension) = os.path.splitext(text)text = os.path.join(name, text)if filename == "1":oneIndex1.append(text)pass..................else:pass
print(oneIndex1)
....
print(oneIndex2)

由此,我们选取那些选择了9个以下“一”的人(因为不知道为什么大家用的数据有些是不一样的,有些并没有出现在我们分析统计的那些“一”的范畴),小于9就说明他们没有全都选,而是只选择了一部分。让我们来看一下结果。

我们来看看这些被选了10次以上的“一”都有哪些。
1:10次

5:12次

7:12次

9:15次

其他的都被选了5次或者6次,非常平均
这个结果符合我们的预期吗?
很显然,它符合
第一个1作为在情感分析中夺冠的一个,被多次选择是不奇怪的。
第五个1是粗笔迹中比较出色的一个。参考词频分析的结果,厚重、稳重、冷静是它比较出色的特征提取,这与其他三个灵动、活泼、温柔等的关键词不同,作为它的特色是很有说服力的。
第7个一也是所有12个一中比较有特色的一个。作为唯一一个墨迹不明显、更硬朗干脆、更加现代化的笔触成为了它在其余11个一中最有辨识度的一个。
第九个一刚好也是我们想选的,而且它不负众望地出现在了名单上。9号一是12个一中在起落笔锋上最有代表性的一个。它笔锋柔和、墨迹柔软潇洒,也可以说“最为花哨”,被选择是容易预见到的结果。

此外,我们在作业一中分析的到的数据:


.可以发现,这样的结果还是在我们预想范围内的,可以说是一个合理的分析结果了。

————————————————

7.总结心得

本来有过对这个测试的预想,但实际出来的结果,有在预料之中,也有在预料之外的。不过总体来说,我们认为我们采用各种方式限制分析结果的随机性、减少分析过程的干扰因素的做法还是比较成功的。
经过这样的分析,对这一整个学期做的“一”相关的研究已经不是那么仇恨了。甚至在进行数据分析的过程中还觉得数值分析挺有意思的。毕竟在统计学上,数据永远要比人的感觉来得更有说服力。

【互动媒体】”十二个一“的文艺创作的文本分析与可视化相关推荐

  1. 互动媒体技术十二个“一”的文艺创作——小说创作

    互动媒体技术十二个"一"的文艺创作--小说创作 <玻璃>节选 俞城(男一号):学生,21岁.性格极具特色,表面倔强,但是经历过不为人知的故事.祖籍北京,地球上只剩下了爷 ...

  2. 互动媒体技术——对十二个“一”的文艺创作作业进行文本分析、统计和可视化

    小组成员: 1.1191170412 陈颖 2.1191170413 黄洁 概要 一.文艺创作作业的相关介绍 二.文本分析方法介绍 三.snowNLP库介绍 四.gensim库介绍 五.处理代码展示 ...

  3. 简述sd卡2.0协议_【正点原子FPGA连载】第十二章SD卡读写TXT文本实验-领航者 ZYNQ 之嵌入式开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  4. 十二个“一”的大五人格分析

    十二个"一"的大五人格分析 一. 研究背景 上学期我们就十二个"一"进行了大量研究,其中有一项非常重要的数据,即对于十二个"一"的大五人格※ ...

  5. zynqsd的读写数据_【正点原子FPGA连载】 第十二章SD卡读写TXT文本实验-摘自【正点原子】领航者 ZYNQ 之嵌入式开发指南 (amobbs.com 阿莫电子论坛)...

    本帖最后由 正点原子 于 2020-10-24 10:25 编辑 QQ群头像.png (1.78 KB) 2020-10-24 10:25 上传5)关注正点原子公众号,获取最新资料 100846rel ...

  6. Excel数据分析从入门到精通(十二)28个图表之分布分析

    Excel数据分析从入门到精通(十二)28个图表之分布分析 1.分布分析-直方图 2.分布分析-气泡矩阵图 3.分布分析-箱线图 4.分布分析-散点图 5.分布分析-旋风图 1.分布分析-直方图 有表 ...

  7. 互动媒体技术-十二个“一”的文艺创作

    1.实验要求 将十二个"一"设想为人物角色/或事物,从下列任务中选择一个完成: 假想一个故事背景,从十二个"一"中挑选至少4人,为其设计角色形象,并配合文字描述 ...

  8. 十二个“一”的文艺创作拓展:关于星座

    互动媒体技术有关12个一的文艺创作 在西方占星学上,黄道12星座是宇宙方位的代名词,一个人出生时,各星体落入黄道上的位置,说明了一个人的先天性格及天赋.黄道12星座象征心理层面,反映出一个人行为的表现 ...

  9. 十二个“一”的文艺创作

    王者团"一"家代言人 介绍 大家好,我们是"一"家王者团,总共有十二个兄弟姐妹,经常出没在王者峡谷的各个角落,大家对我们应该不陌生,这是我们的个人照和全家福. ...

最新文章

  1. window 修改字符集为utf8
  2. 没有可用于当前位置的源代码
  3. 纯JS制作的窗户雨滴效果
  4. angular动态选择HTML模板,在angular2中动态加载HTML模板
  5. 技术实践 | 如何基于 Flink 实现通用的聚合指标计算框架
  6. python编程神器下载_Python编程神器 -程序员必备开发手册
  7. Java学习小程序(2)输出三个数中的最大值
  8. 1024灯控台初学_MA2的小弟MA1控台说明书
  9. java静态初始化块无法直接调用,关于JAVA静态初始化块,初始化块,构造器调用顺序的有关问题...
  10. c 语言万年历算法,【C语言】第一个C语言小程序 —— 日期算法和万年历
  11. 如何有效预防宕机?你需要掌握这4个方法
  12. ASN.1入门(超详细)
  13. 波形图控件html,[转载]LabVIEW中的波形图(Waveform Chart)详解
  14. Reinitialized existing Git repository in xxx
  15. 720p、1080i、1080p,三种格式(片源),谁更清晰?
  16. 6个不可多得的黑科技网站!
  17. uni-app中使用HTML5 Plus
  18. eel库实现JS调用python方法
  19. spark RDD 打印元素
  20. 人脸识别中的活体检测算法

热门文章

  1. 阿里VIP会员看腾讯视频?这不是一个意外的选择
  2. Windows11中无法找到Office 2019 application的解决方案
  3. Realsense相机在linux下的配置使用,RGB与depth图像对齐
  4. 当我们谈论Virtual DOM时,我们在说什么——etch源码解读
  5. 汽车各档爬坡度曲线matlab,基于MATLAB App Designer的汽车爬坡能力建模与仿真
  6. v-inline-date,类似携程,飞猪,带价格的时间选择
  7. element-plus 更换主题色
  8. 时刻牢记基础是关键,万丈高楼平地起靠的是什么?是坚实牢固的地基!
  9. 你不知道的水浒好汉,在这里!
  10. FFmpeg添加x265/hevc编码器支持