gpt4 book ai didi

python-2.7 - 如何在没有拥挤图像的情况下使用 pytagcloud 构建干净的词云 - Python

转载 作者:行者123 更新时间:2023-12-04 06:19:57 24 4
gpt4 key购买 nike

previous question,我问社区如何计算一个句子中每个连续两个单词的频率,我得到了很好的答案!
现在我正在尝试使用包 pytagcloud 从结果中构建一个词云。

我确实遇到的问题是,生成的图片很拥挤,而且文字都挤在一起。不知道是否有一个函数来分隔单词并使它们可读,或者是否有任何其他方法可以在 python 中做到这一点。
谢谢!

我的代码如下。这是link我用于测试的文本
我尝试使用较少数量的单词组合,但这并没有改变图片中文字的拥挤程度。
我还添加了一些功能,例如玩“布局”和“大小”和“字体名称 =“龙虾”和字体缩放 = 1”,但它们都没有给出最佳结果,即文字不拥挤的干净词云图片。

import operator
import urllib2

from roundup.backends.indexer_common import STOPWORDS
import requests, collections, bs4
Data = "TEXT FROM The link above- TEXT file"
two_words = [' '.join(ws) for ws in zip(Data, Data[1:])]
wordscount = {w:f for w, f in Counter(two_words).most_common() if f > 12}
sorted_wordscount = sorted(wordscount.iteritems(), key=operator.itemgetter(1))

print sorted_wordscount;

from pytagcloud import create_tag_image, create_html_data, make_tags, LAYOUT_HORIZONTAL, LAYOUTS, LAYOUT_MIX, LAYOUT_VERTICAL, LAYOUT_MOST_HORIZONTAL, LAYOUT_MOST_VERTICAL
from pytagcloud.colors import COLOR_SCHEMES
from pytagcloud.lang.counter import get_tag_counts

create_tag_image(make_tags(sorted_wordscount), 'filename.png', size=(1300,1150), background=(0, 0, 0, 255), layout=LAYOUT_MIX, fontname='Molengo', rectangular=True)

这是我得到的输出结果的一个例子: HERE
最佳结果将类似于图像之一 HERE

最佳答案

您正在按升序而不是降序对标签进行排序,这可能是 pytagcloud 所期望的。您应该将排序行更改为:

sorted_wordscount = sorted(wordscount.iteritems(), key=operator.itemgetter(1),reverse=True)

一旦确定,关键参数是 最大尺寸 在 make_tags 中:
create_tag_image(make_tags(sorted_wordscount[:],maxsize=200), 'filename.png', size=(1300,1150), background=(0, 0, 0, 255), layout=LAYOUT_MIX, fontname='Molengo', rectangular=True)

如果我理解正确,这会设置最大字体大小(频率最高的标签的字体大小),并计算与此相关的所有其他大小。影响字符串分布方式的另一个参数是窗口的大小。

您将不得不使用这些参数。

考虑到库函数 get_tag_counts 不仅仅是返回频率:它还过滤常用词,应用小写字母,并且通常应该为您提供比简单排序更好的标签分布,就像您正在做的那样。

通过这些更改,您应该会得到类似的结果(通过您在帖子中链接的文件的 get_tag_counts 获得,在 1000x1000 窗口中,maxsize=260 并限制到前 50 个标签):

enter image description here

编辑 - 根据要求,创建上面图像的代码:
import operator
import os
import urllib2

from roundup.backends.indexer_common import STOPWORDS
import requests, collections, bs4
with open("./const11.txt") as file:
Data1 = file.read().lower()
Data = Data1.split()
two_words = [' '.join(ws) for ws in zip(Data, Data[1:])]
wordscount = {w:f for w, f in collections.Counter(two_words).most_common() if f > 5}
sorted_wordscount = sorted(wordscount.iteritems(), key=operator.itemgetter(1),reverse=True)

from pytagcloud import create_tag_image, create_html_data, make_tags, LAYOUT_HORIZONTAL, LAYOUTS, LAYOUT_MIX, LAYOUT_VERTICAL, LAYOUT_MOST_HORIZONTAL, LAYOUT_MOST_VERTICAL
from pytagcloud.colors import COLOR_SCHEMES
from pytagcloud.lang.counter import get_tag_counts

tags = make_tags(get_tag_counts(Data1)[:50],maxsize=260)
create_tag_image(tags,'filename.png', size=(1000,1000), background=(0, 0, 0, 255), layout=LAYOUT_MIX, fontname='Lobster', rectangular=True)`

使用 python 2.7.5,在 Ubuntu 13.04 上使用 apt-get 安装 pygame,其余的包使用 pip。 “const11.txt”是问题中链接的文本文件。

关于python-2.7 - 如何在没有拥挤图像的情况下使用 pytagcloud 构建干净的词云 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18974437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com