# coding: utf-8
import jieba
import wordcloud
import random
import time
import pandas as pd
from wordcloud import WordCloud
import matplotlib.pyplot as plt
2、对文本的处理
text_data = '''
白色情人节,(英语:White Day;日语:ホワイトデー),订于3月14日,一般认为是对于西方情人节的延续,最早起源于公元三世纪时的罗马。相传罗马皇帝设立情人节是为了纪念自己在2月14日救了一对因违反恋爱结婚禁令而要被处死的恋人。一个月后,也就是3月14日,这对情侣宣誓至死不渝,后来便成为白色情人节开始流传到其他国家。普遍认为日本最早接受并推广这个节日,由于日本强大的文化软实力使得亚洲国家纷纷效仿,于是这个没有准确史料记载的情人节也成为年轻情侣看重的另一个“情人节”。
白色情人节流行于日本、中国台湾等地区,在送礼方面也不同:具体为2月14日男方送女方一份礼物,主要是玫瑰花或者巧克力(只是中国大陆和英美法),3月14日白色情人节,就该轮到女方送男方礼物了,(日本,中国台湾是刚好相反的,2月14日是女生送巧克力,3月14日是男生回礼) 在日本,通常欲告白的女方会在情人节(2月14日)的时候送礼给心仪的对象,而收到礼物的一方,则会在3月14日回礼并告诉女方自己的心意。亚洲部分地区的年轻人亦会庆祝这个节日。
又叫返情人节,指的是在情人节收到礼物,则在一个月后的3月14日回馈礼物,当然仅仅是回馈你想回的那个人。
起源
最早诞生于1977年,由日本福冈市博德区的甜点(菓子)制造商「石村万盛堂」所发起,以鼓吹收到心意的一方应该要回礼给对方,作为促销糖果的手段,节日最早称为「糖果赠送日」(キャンデーを赠る日)。自1980年起,因为糖果所使用的砂糖是白色,所以改称为「白色情人节」。
不久后,巧克力制造商发现他们也可以在这个节日中获利,因此也开始促销白色的巧克力。现在,在这一天要回礼时,除了糖果与白巧克力之外,还包括其它各种礼品。 目前关于情人节与白色情人节,到底是男先送礼还是女方先送礼,已不再有定论,重点是这样的节日让有情有缘的男女双方都有一个可以发挥与表达自我心意的时机,相关的商人们,当然也就乐得大发利市了。
根据日本全国饴菓子工业协同组合的解说,「白色情人节」定在3月14日的原因是由于公元三世纪时,罗马帝国皇帝克劳狄二世在首都罗马宣布废弃所有婚姻的承诺,下令全国男子都要从军。一名叫华伦泰(Sanctus Valentinus)的神父没有遵照这个旨意而继续为相恋的男女举行婚礼。事情被告发后,华伦泰神父被罗马政府捸捕,最后在公元270年2月14日这天被送上了绞架被绞死。而在一个月后的3月14日,这对获救的恋人宣誓恋情将至死不渝,为纪念这天于是另定为白色情人节。但是这个解说是完全没有历史根据的。一开始,3月14日是没有名字的,与2月14日一样都叫做“情人节”。 后来,人们为了把两个节日区分开来,便将3月14日定为“白色情人节”。
白色在欧洲国家看来是纯洁、清纯、有灵性的,就好像年轻的少女一般,就像西方人结婚要穿白色婚纱。这便成为了“白色情人节”名称的重要来源之一。因为逐渐的流传与发展,“白色”所代表的更是期盼与幸福,是对恋人的祝福。
“白色情人节”最早起源于三世纪时的罗马。罗马皇帝在2月14日救了一对因为原本因违反恋爱结婚禁令而要被处死的恋人,罗马皇帝为了纪念这一天而设立了情人节。而在一个月后的3月14日,这对获救的恋人宣誓恋情将至死不渝,为纪念这天于是另订为白色情人节。而此节日就从欧洲开始流传到世界其它地方。
传说 日本的民间传说二月十四号原本是女孩子对男孩子诉表情意的日子,由女孩子送情人礼物给男孩子但是渐渐发展到最后,已不分彼此,现在由谁主动送礼物已经不重要了。在日本如果一方在二月十四日当天收到异性送的情人礼物表达情意,而且对对方也同样有好感或情意时,就会在三月十四日回送对方一份情人礼物,那表示彼此已经心心相印,所以他们就把三月十四日这一天,定为“白色情人节”。
寓意
期盼和幸福。 White白色:保护感、充满灵性、神圣、和平、纯洁、真实、诚挚和力量、清洁、清纯、浪漫、爽朗、潇洒、高贵、明白、纯粹、澄明、清爽、尊敬、纯净、简洁、谦卑、精密、清白、青春、出生相传,2月14日,男孩送女孩给礼物(一般为玫瑰花)。经过一个月的考虑和考察,到了3月14日,如果女孩回赠男孩礼物(一般送巧克力),就表示女孩认可男孩,可以谈恋爱了。 因此3月14日又称为白色情人节。
相比2月14日的热烈,3月14日的故事表明了它更当是一个甜蜜的、相会的日子。
习俗
由于“白色情人节”起源于欧洲,所以欧洲人对过“白色情人节”已有一定的历史,并已形成了相当成熟的习俗。相传,2月14日,男孩送女孩给礼物(一般为玫瑰花和巧克力)。经过一个月的考虑和考察,到了3月14日,如果女孩回赠男孩礼物(一般送纯手工曲奇),就表示女孩认可男孩,可以谈恋爱了。
'''
# 分词
tokenize_result = jieba.lcut(text_data)
stopwords = [line.strip() for line in open('stoplist.txt', 'r', encoding='utf-8').readlines()] # stoplist.txt为停用词文件
words = [word.strip() for word in tokenize_result if (word not in stopwords) and (word.strip())]
df = pd.Series(words)
frequences = df.value_counts() # 表示词频{"词":频次}
3、制作词云
# (1)自定义颜色函数
def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
# h = randint(0, 255) # 从0-255取值,分别是从红→橙→黄→绿→青→蓝→紫
# 51-70间为较亮的难以看清的黄色,0-15的红色也过于注目,改成随机在 16-50和 71-255间取值
h = random.choice((random.randint(16, 50), random.randint(71, 255)))
s = int(100.0 * 255.0 / 255.0)
l = int(100.0 * float(random.randint(60, 120)) / 255.0)
string = "hsl({}, {}%, {}%)".format(h, s, l)
print(string)
return string
# (2)导入背景图
back_pic = plt.imread("wordcloud_backgroud.jpg") # 背景图
# (3)生成词云对象
wc = WordCloud(scale=4, # scale越大,分辨率越高,越清晰
font_path='C:\\Windows\\Fonts\\simhei.ttf', # 设置字体,Windows系统自带了Fonts文件夹
background_color="white", # 背景颜色
max_words=200, # 词云显示的最大词数
mask=back_pic, # 设置背景图片
max_font_size=250, # 字体最大值
random_state=42,
color_func=random_color_func)
4、画图
gar_wordcloud = wc.fit_words(frequences) # frequencies是由频数构成的Series的形式,且单词作为索引
plt.figure(figsize=(16, 8))
plt.imshow(gar_wordcloud)
plt.axis('off')
plt.show()
plt.show()