在本例中,词语收集方法如下:研究者要求 17名被试写出对日本的看法,并说明以下要求:1、不用思考,只需用最快的速度写下直观感觉;2、应按照想到词语的顺序将词语写下来;3、尽可能写词语,也可以写词组,但不能写句子;4、名词、形容词、动词均可,中英文词语均可;5、词语内部不能有标点符号或空格,词语之间用空格、顿号、中英文逗号或分号相隔;6、每人写 10个词语。
接下来计算词频:
以下将使用chinese.misc包中的corp_or_dtm和sort_tf函数进行计算。
corp_or_dtm(..., from="dir", type="corpus", mycutter=DEFAULT_cutter,stop_word=NULL, control="auto", myfun1=NULL, myfun2=NULL)
●…:允许两种输入,(1)以字符向量形式出现的文件名、文件夹名,或这两者的混合;(2)以字符向量形式出现的待处理文本
● from:默认为"dir",此时将把输入当成文件(夹)名;如果输入是待处理文本,必须改为"v"
● type:输出结果的类型,当为以“c”或“C”开头的字符时,输出结果为tm包中的SimpleCorpus对象;当为以“d”或“D”开头的字符时,为DocumentTermMatrix对象;当为以“t”或“T”开头的字符时,为TermDocumentMatrix对象
● mycutter:由jiebaR包生成的分词器;默认使用一个简单的分词器DEFAULT_cutter;如果无需分词(也就是说,词与词之间已经有空格存在),将其设为NULL
● stop_word:停用词向量,默认为NULL;当改为"jiebar"或"auto"时,将使用jiebaR包默认的停用词;用户也可输入自己的停用词
● control:当结果为DocumentTermMatrix或TermDocumentMatrix时,对纳入的词语进行限制;需输入一个list对象,它包含以下可选项目(默认值"auto"仅限定词语长度为c(1, 25),如改为"auto2",则限定词语长度为c(2,25))
■ wordLengths:长度为 2的向量,指明最小值和最大值,用于限定词语字数;不能用 0和Inf
■ dictionary:字符向量,用于列出用户感兴趣的词语;如果用户用此参数列出了若干词语,则输出结果将只包含这些被列出的词语
■ bounds:长度为 2的向量,指明最小值和最大值,用于限定词语在所有文本中出现的总次数;不能用 0和Inf
■ have:长度为 2的向量,指明最小值和最大值,用于限定词语在多少个文本中出现;不能用 0和Inf
■ weighting:权重计算方法,默认为计算词频,还可改为weightBin、weightTfIdf或其它
● myfun1、myfun2:用于在分词前和分词后对文本进行加工的函数
sort_tf(x, top=10, type="dtm", todf=FALSE, must_exact=FALSE)
● x:一个DocumentTermMatrix或TermDocumentMatrix对象,或矩阵
● top:查看词频数位于前多少位的词语
● type:当x为矩阵时,用于指明它可被看成是DocumentTermMatrix还是TermDocumentMatrix
● todf:是否将输出结果转化成数据框;默认为FALSE,即不输出,只在屏幕上显示
● must_exact:是否要求输出结果中词语的数量必须与top一样。例如,用户要求输出词频数排在前 3位的词语,排在第 3位的那个词语的词频数为100,但是,除了这个词,其他几个词语的词频也为 100;当must_exact为FALSE(默认)时,将同时输出其他这些有着相同词频的词语
词频可用来制作词云。图 1左图是用wordcloud包绘制的词云,效果不好,且有一些词语未出现在图中;所以推荐使用线上工具Tagxedo(http://www.tagxedo.com/app.html)绘制(图 1右),或使用其他工具。
图 1
接下来,我们要绘制这样一张图:图的x轴是词频,y轴是词语出现位置的均值;在x轴的中间点画一条垂直线,在y轴的中间点画一条水平线,这样便产生了四个象限,每个象限代表不同类别的词语。关键问题在于,这个中间点如何选择。我们可以根据需要采用三种方法中的一种确定中间点:均值(mean函数)、中位数(median函数)、聚类。为进行示范,我们在此使用Kmeans聚类。
接下来,我们用ggplot2包重新绘制这个图。我们要把文字标在图表中,但是,标签在图中可能会重叠;为解决这个问题,我们可以用ggrepel包来使标签自动分散开。
图 2
用本例数据生成的图片的呈现效果并不是特别好,这主要是因为词语过于聚集,而标签也都被挤到了周围,不能出现在词语旁边。读者在实际使用词语联想法时,可要求被试写下更多词语(而在本例中每个人仅写下了 10个词语),这样词语在各象限的分布更可能较为均匀。
这个图中各象限的意义如下:第 1象限中的词语(在本例中只有“和服”、“樱花”、“动漫”)是能够代表人们的普遍感受(词频高)的词语,而这些感受也是比较深刻、强烈的(位置靠前);第 2象限中的词语所代表的感受只存在于少数人心中(词频低),但对这些人来说,这些感受非常深刻(位置靠前);落在第 3象限中的词语所代表的感受既不普遍(词频低),也不深刻(位置靠后);第 4象限中的词语所代表的感受是大众化的感受(词频高),但并不强烈(位置靠后)。