问题:做词云时怎么找mac字体的路径,找到了又选择哪种字体呢?
在做酒店评论的词云,卡在了字体路径上,找到了路径,又不知道该选哪种字体
路径:/System/Library/Fonts/
image.png
image.png
TTF(TrueType Font)是TrueType字体文件,由 Apple 和 Microsoft 共同推出的一种字体文件格式。
TTC(TrueType Collection)是TrueType字体集成文件,亦称为字体集。 由 Microsoft 开发的一种新的字体格式标准,在同一文件结构中包含多个字体,以便更有效地共享轮廓数据,缩减字体文件大小。
字体路径可用:'/System/Library/Fonts/STHeiti Light.ttc',也可用'/System/Library/Fonts/PingFang.ttc',代码和图像如下:
# 使用jieba中的词性标注功能
import jieba.posseg as pseg
def get_a_list(text):
'''
获取形容词列表
使用jieba的词性标注方法切分文本,获得具有词性属性flag和词汇属性word的对象,从而判断flag是否为形容词来返回对应的形容词
'''
r = []
for g in pseg.lcut(text):
if g.flag == 'a':
r.append(g.word)
return r
# 导入绘制词云的工具包
from wordcloud import WordCloud
def get_word_cloud(keywords_list):
'''
实例化绘制词云的类,其中参数font_path是字体路径,为了能够显示中文,max_words指词云图像最多
显示多少个词,background_color为背景颜色
'''
wordcloud = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc', max_words=100, background_color='white')
# 将传入的列表转化成词云生成器所需要的字符串形式
keywords_string = ' '.join(keywords_list)
# 生成词云
wordcloud.generate(keywords_string)
# 绘制图像并显示
plt.figure()
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
# 获得训练集上正样本
p_train_data = train_data[train_data['label']==1]['review']
# 对正样本的每个句子获取形容词
train_p_a_vocab = chain(*map(lambda x: get_a_list(x), p_train_data))
# 获得训练集上负样本
n_train_data = train_data[train_data['label']==0]['review']
# 对正样本的每个句子获取形容词
train_n_a_vocab = chain(*map(lambda x: get_a_list(x), n_train_data))
get_word_cloud(train_p_a_vocab)
get_word_cloud(train_n_a_vocab)
image.png
但如果用'/System/Library/Fonts/Symbol.ttf'时,则图形如下:
image.png
如果再修改字体路径不运行词列表生成语句,则会报错。因为chain是个迭代器。
ValueError: We need at least 1 word to plot a word cloud, got 0.










网友评论