最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何通過Python實現標簽云算法

 更新時間:2019年07月02日 09:15:24   作者:FOOFISH-PYTHON之禪  
這篇文章主要介紹了如何通過Python實現標簽云算法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

標簽云(Tag Cloud)常見于各種博客站點中,標簽有利于網站內容分類,還可以用于相關性內容推薦。近日筆者有空把個人的開源博客Django_blog添加了一個新功能--標簽云。

實現原理

標簽云最終展現出來的效果其實是由兩個HTML參數來控制的,分別是:font-size和color,如:

<a  rel="external nofollow" style="font-size:24px; color:#4f4f4f">django</a>

標簽關聯的文章越多,表示這個標簽被引用的次數越大,font-size的值也越大,color的顏色越深。考慮到體驗效果,font-size不能隨著的標簽的引用次數的增大而無限增大,否則頁面顯得非常丑陋。因此會把font-size控制在某個區(qū)間,同理color也是在一個區(qū)間中。

這里我把font-size設置在12到33之間數組FONT_SIZES,標簽的font-size屬性只能是里面的一個值,COLORS是與FONT_SIZES對應的一個數組,12對應#ccc,15對應#adadad,以此類推。

MIN_FONT_SIZE = 12 # 最小尺寸
MAX_FONT_SIZE = 33 # 最大尺寸
FONT_SIZES = [MIN_FONT_SIZE, 15, 18, 21, 24, 27, 30, MAX_FONT_SIZE] 
COLORS = ['#ccc', "#adadad", '#8e8e8e', '#6f6f6f', '#4f4f4f', '#303030', '#111', '#000']

現在關鍵問題就是如何根據標簽的引用次數(tag_ref_count)來確定它的font-size。一旦font-size了,color也隨之確定。要想標簽的font-size能夠均勻分布在數組FONT_SIZES中,那么要遵循的一個原則就是,隨著次數的增加其font-size的取值也增加,而且引用次數最少的標簽使用MIN_FONT_SIZE,引用次數最多的標簽使用MAX_FONT_SIZE。

因此有一個公式,MIN_FONT_SIZE + n*step = MAX_FONT_SIZE,step是步長,n是指引用次數最多的標簽減去引用次數最少的標簽,表示兩者之間總共有多少步step,根據此根式可以算出每一步的step值是多少,知道了步長后,就可以計算出任意一個標簽的font-size了,任何一個標簽到最小標簽的步數是兩者之差,因此每一個標簽的font-size為 MIN_FONT_SIZE + (tag_ref_count-min_ref_count)*step

源代碼:

# encoding: utf-8
__author__ = 'liuzhijun'
class TagCloud(object):
MIN_FONT_SIZE = 12
MAX_FONT_SIZE = 33
FONT_SIZES = [MIN_FONT_SIZE, 15, 18, 21, 24, 27, 30, MAX_FONT_SIZE]
COLORS = ['#ccc', "#adadad", '#8e8e8e', '#6f6f6f', '#4f4f4f', '#303030', '#111', '#000']
def __init__(self, min_ref_count, max_ref_count):
TagCloud.min_ref_count = min_ref_count
# 如果最大標簽和最小標簽相等,那么認為兩者的步長為0,所有標簽取同樣的font-size.
if max_ref_count == min_ref_count:
TagCloud.step = 0
else:
TagCloud.step = (TagCloud.MAX_FONT_SIZE - TagCloud.MIN_FONT_SIZE) / (max_ref_count - min_ref_count)
def get_tag_font_size(self, tag_ref_count):
font_size = TagCloud.MIN_FONT_SIZE + (tag_ref_count - TagCloud.min_ref_count) * TagCloud.step
# 上面計算出來的font_size并不一定剛好是FONT_SIZES中的某個元素, 可以能某兩個元素之間的某個值
# 因此要取最接近FONT_SIZES中某個元素
font_size = min(TagCloud.FONT_SIZES, key=lambda x: abs(font_size - x))
return font_size
def get_tag_color(self, tag_ref_count):
return TagCloud.COLORS[(TagCloud.FONT_SIZES.index(self.get_tag_font_size(tag_ref_count)))]

輸出結果:

12,12,12,18,24,18,21,27,33,

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python爬蟲實戰(zhàn)之用selenium爬取某旅游網站

    Python爬蟲實戰(zhàn)之用selenium爬取某旅游網站

    上一篇我們已經知道怎么簡單使用selenium了,那么我們就從這篇博客來動手爬取網站吧,文中有非常詳細的代碼示例,需要的朋友可以參考下
    2021-06-06
  • pycharm中import導入包呈現灰色的問題及解決

    pycharm中import導入包呈現灰色的問題及解決

    這篇文章主要介紹了pycharm中import導入包呈現灰色的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python?包(模塊?函數?類?定義?導入)使用詳解

    python?包(模塊?函數?類?定義?導入)使用詳解

    這篇文章主要為大家介紹了python?包(模塊?函數?類?定義?導入)的使用詳細講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • OpenCV中Canny邊緣檢測的實現

    OpenCV中Canny邊緣檢測的實現

    本文主要介紹了OpenCV中Canny邊緣檢測的實現,邊緣檢測一般是識別目標圖像中亮度變化明顯的像素點,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Python基于DFA算法實現內容敏感詞過濾

    Python基于DFA算法實現內容敏感詞過濾

    DFA?算法是通過提前構造出一個?樹狀查找結構,之后根據輸入在該樹狀結構中就可以進行非常高效的查找。本文將利用改算法實現敏感詞過濾,需要的可以參考一下
    2022-04-04
  • python開發(fā)之基于thread線程搜索本地文件的方法

    python開發(fā)之基于thread線程搜索本地文件的方法

    這篇文章主要介紹了python開發(fā)之基于thread線程搜索本地文件的方法,以完整實例形式分析了Python基于多線程處理搜索問題的相關實現技巧,需要的朋友可以參考下
    2015-11-11
  • Python 利用CSV模塊處理數據的實現實例

    Python 利用CSV模塊處理數據的實現實例

    CSV文件的一個主要優(yōu)點是有很多程序可以存儲,轉換和處理純文本文件,本文主要介紹了Python 利用CSV模塊處理數據的實現實例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • jmeter中用python實現請求參數的隨機方式

    jmeter中用python實現請求參數的隨機方式

    首先,需下載Jython插件于https://www.jython.org/download后,將其放入JMeter的lib目錄并重啟JMeter,其次,添加JSR223PreProcessor并選擇Python作為語言,編寫腳本,其中metrics_ids3和metrics_weidu3為列表變量
    2024-10-10
  • Python3實現發(fā)送QQ郵件功能(文本)

    Python3實現發(fā)送QQ郵件功能(文本)

    這篇文章主要為大家詳細介紹了Python3實現發(fā)送QQ郵件功能,文本方面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python中argparse模塊基礎及使用步驟

    python中argparse模塊基礎及使用步驟

    argsparse是python的命令行解析的標準模塊,內置于python,不需要安裝。這個庫可以讓我們直接在命令行中就可以向程序中傳入參數并讓程序運行,接下來通過本文給大家介紹python argparse模塊的相關知識,感興趣的朋友一起看看吧
    2022-06-06

最新評論

吕梁市| 灵武市| 区。| 岳池县| 安康市| 社旗县| 清水县| 上虞市| 大关县| 五家渠市| 开封市| 富顺县| 图木舒克市| 株洲县| 通海县| 伊吾县| 盐边县| 来凤县| 藁城市| 绿春县| 浪卡子县| 通渭县| 泽库县| 射洪县| 当阳市| 延庆县| 沙田区| 临澧县| 阳城县| 车致| 山阳县| 鄄城县| 温州市| 大洼县| 北京市| 鄢陵县| 祁门县| 集安市| 大埔县| 甘南县| 洛扎县|