回覆列表
  • 1 # 使用者8220000415012

    生成詞雲之線上工具

    搜尋詞雲線上生成工具,會得到很多結果,包括國內外的網站平臺都有。對比了搜尋較為靠前的幾款線上工具,但或多或少都存在一些使用上瑕疵,有的是網頁載入慢,有的是要註冊後方可使用,有的是字型支援較差,還有的是要付費使用。

    當然,畢竟是要使用方便快捷有效的,而且最好還是免費的就完美了。對比之後,感覺這兩個平臺還算相對好用:

    WordArt

    優點:無需註冊即可使用;對熱詞數量無限制;支援個性化配置,包括熱詞、字型、形狀等;線上詞雲支援互動檢視

    缺點:英文操作介面,部分使用者使用不便,載入較慢;字型支援差,中文僅有一種支援字型,且因許可權問題可能無法新增本地字型

    預設字型庫僅有一種字型支援中文

    微詞雲

    優點:支援自動文字分析;有大量形狀模板,也支援自定義模板;圖片色彩多樣,包括漸變色;支援大量字型;操作簡單

    缺點:需註冊後方可使用;免費使用下載圖片有水印;對熱詞數量有限制

    支援大量個性化配置

    2個線上平臺生成的詞雲結果:

    WordArt線上生成(個別中文仍有亂碼)

    微詞雲線上生成(中間實際有水印)

    02 生成詞雲之軟體工具

    網頁線上工具和桌面軟體在生成詞雲這項任務上,本無實質差別,甚至很多平臺是既支援線上生成也有桌面客戶端軟體。

    為了區別於網頁線上生成詞雲的方式,這裡選用了商業智慧分析工具Tableau作為桌面軟體的代表來製作詞雲。雖然,可能詞雲不算的上是Tableau的主業。

    "熱詞"是所有詞源,"次數"是頻度

    實際上,用Tableau製作詞雲的輸入資料不是文字,而是經處理後的兩列結果資料。從這個角度來說,Tableau生成詞雲的方式甚至有些低階,嚴格講只能稱的上是對篩選和統計完畢後的文字進行視覺化顯示而已。

    不過也容易想到其非常方便的應用場景,例如提供了若干個商品名稱及其銷售額的資料,則可透過詞雲中商品名的大小直觀顯現各自收益佔比。

    Tableau製作詞雲的優缺點:

    優點:操作極其簡單;詞雲介面可互動,便於二次篩選

    缺點:輸入源要求完成詞頻統計;個性化設定程度較低;熱詞大小對比度較差

    提供統計完畢後的熱詞資料,利用Tableau生成詞雲結果:

    Tableau生成的詞雲算不上出眾

    03 生成詞雲之程式設計工具

    很多程式設計工具均可生成詞雲,Python自然也不例外。

    wordcloud

    wordcloud是Python專門用於製作詞雲的第三方庫,使用前需安裝,而且這個安裝過程往往會隱藏一些坎坷。利用wordcloud生成詞雲非常簡單,可以透過大量的引數設定來個性化定製詞雲效果。

    雖然wordcloud自帶切分詞處理能力,但鑑於其切分效果一般,所以往往還是會配套使用jieba庫來進行切分,而後再用空格連線(wordcloud在處理切分時優先使用空格作為分隔符)。

    示例原始碼:

    import jieba

    import wordcloud

    import matplotlib.pyplot as plt

    word_list = jieba.lcut(words) # 結巴詞庫切分詞

    word_list = [word for word in word_list if len(word.strip())>1]#清洗一個字的詞

    word_clean=" ".join(word_list)

    import imageio

    mask=imageio.imread(r"kobe.jpg")

    wc = wordcloud.WordCloud(font_path = "simkai.ttf",#指定字型型別

    background_color = "white",#指定背景顏色

    max_words = 200, # 詞雲顯示的最大詞數

    max_font_size = 255,#指定最大字號

    mask = mask) #指定模板

    wc = wc.generate(word_clean)##生成詞雲

    plt.imshow(wc)

    plt.axis("off")

    plt.show()

    """Wordcloud詳細引數設定

    def __init__(self, font_path=None, width=400, height=200, margin=2,

    ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,

    color_func=None, max_words=200, min_font_size=4,

    stopwords=None, random_state=None, background_color="black",

    max_font_size=None, font_step=1, mode="RGB",

    relative_scaling="auto", regexp=None, collocations=True,

    colormap=None, normalize_plurals=True, contour_width=0,

    contour_color="black", repeat=False,

    include_numbers=False, min_word_length=0):

    """

    查閱wordcloud的官方文件可以發現,其自帶引數設定非常管飯,比如以下幾個有用功能:

    font_path:設定字型

    mask:設定詞雲模板

    stopwords:停用詞列表

    給出wordcloud3種不同方式生成詞雲結果:

    利用文字直接生成詞雲

    利用jieba分詞後生成詞雲

    設定詞雲模板mask後效果

    PyEcharts

    除了wordcloud專門用於生成詞雲的第三方庫外,python的另一個視覺化庫Pyecharts也支援生成詞雲,即pyecharts庫下的wordcloud子類。

    不過,與Tableau生成詞雲的方式類似,pyecharts也要求輸入的資料是經過篩選和統計好的資料,例如經過jieba分詞+counter統計後得到的結果,即可非常方便的應用pyecharts製作詞雲。而且,pyecharts的所有圖表均可互動,詞雲圖也不例外,這也算是它的一項優勢。

    示例原始碼:

    import jieba

    from collections import Counter

    from pyecharts.charts import WordCloud

    word_list = jieba.lcut(words) # 切分詞

    word_list = [word.strip() for word in word_list if len(word.strip())>1]

    wordCount = Counter(word_list)

    wc = WordCloud()

    wc.add("", wordCount.items(), word_size_range=[20, 100])

    wc.render(r"kobe.html")

    """

    def add(

    self,

    series_name: str,

    data_pair: types.Sequence,

    *,

    shape: str = "circle",

    word_gap: types.Numeric = 20,

    word_size_range: types.Optional[types.Sequence] = None,

    rotate_step: types.Numeric = 45,

    tooltip_opts: types.Tooltip = None,

    itemstyle_opts: types.ItemStyle = None,

    ):"""

    查閱其add方法,可以瞭解生成詞雲的一些設定引數,不過相比wordcloud庫來說,pyecharts的wordcloud設定引數實在是太有限了。

    提供統計後的陣列,利用pyecharts生成的詞雲結果:

    pyecharts生成的詞雲圖片看上去有些過於"規矩",字型旋轉角度單一(透過rotate_step引數設定),字號大小對比也不夠明顯。

    04 結論

    詞雲作為資料視覺化的一種常用手段,視覺衝擊力較強,製作方法也比較靈活多樣

    普通的詞雲製作需求依託線上工具即可有效滿足,國內外均有相關工具

    Tableau作為商業智慧分析軟體,在製作詞雲上表現較為,但極為快捷方便

    Python程式設計實現詞雲可進行大量的個性化定製,包括分詞、過濾、圖片模板和文字設定,都有大量引數可供調節

    除wordcloud用於專門生成詞雲外,pyecharts的wordcloud子庫也有著不錯的效果,且支援互動

  • 中秋節和大豐收的關聯?
  • 孩子都是滿月後才可以回孃家的嗎?