paddlehub介紹
paddlepaddle是百度的開源深度學習框架(源於產業實踐的開源深度學習平臺, 飛槳致力於讓深度學習技術的創新與應用更簡單。)web
如今百度在paddlehub上公開了不少模型,例如算法
-
文本模型能夠作語義分析、文本黃色審查、文本生成、句法分析、情感分析; -
圖像模型能夠作圖像分類、關鍵點檢測、文字識別、目標檢測、圖像生成、人臉檢測、圖像分割; -
視頻模型能夠作食品分類;
模型列表網址 https://www.paddlepaddle.org.cn/hublist數據庫
咱們能夠直接藉助百度的模型對咱們的數據進行分析,在安裝使用相關模型前,須要先配置好paddle。微信
配置paddlehub
-
確保電腦使用的是Python3.5x、3.6x、3.7x版本 -
命令行執行下方命令(蘋果電腦pip改成pip3)
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
markdown
-
命令行執行下方命令(蘋果電腦pip改成pip3)
pip install paddlehub
app
安裝lda_news模型
paddlehub上公開了以百度新聞數據集訓練出的lda_news主題模型。框架
主題模型(Topic Model)是以無監督學習的方式對文檔的隱含語義結構進行聚類的統計模型,其中LDA(Latent Dirichlet Allocation)算法是主題模型的一種。LDA根據對詞的共現信息的分析,擬合出詞-文檔-主題的分佈,從而將詞、文本映射到一個語義空間中。編輯器
安裝模型,好比這裏安裝lad_news方法,命令行執行下方命令工具
hub install lda_news
學習
導入模型
import paddlehub as hub
lda_news = hub.Module(name="lda_news")
[2020-09-02 08:49:54,407] [ INFO] - Installing lda_news module
[2020-09-02 08:49:54,430] [ INFO] - Module lda_news already installed in /Users/thunderhit/.paddlehub/modules/lda_news
[2020-09-02 08:49:54,434] [ INFO] - Loading LDA config.
[2020-09-02 08:49:54,911] [ INFO] - Loading word topic.
100%|██████████| 294657/294657 [00:08<00:00, 34527.42it/s]
[2020-09-02 08:50:03,538] [ INFO] - Model Info: #num_topics=2000 #vocab_size=294657 alpha=0.100000 beta=0.010000
[2020-09-02 08:50:03,539] [ INFO] - Construct alias table for alias sampling method.
100%|██████████| 294657/294657 [00:18<00:00, 16228.32it/s]
[2020-09-02 08:50:22,427] [ INFO] - Installing lac module
Downloading lac
[==================================================] 100.00%
Uncompress /Users/thunderhit/.paddlehub/tmp/tmpultwfcax/lac
[==================================================] 100.00%
[2020-09-02 08:50:39,277] [ INFO] - Successfully installed lac-2.2.0
[2020-09-02 08:50:41,384] [ INFO] - Finish initialization.
0.003109487528061259 0.057317150510233034
調用模型
cal_doc_distance(doc_text1, doc_text2)
用於計算兩個輸入文檔之間的距離,包括Jensen-Shannon divergence(JS散度)、Hellinger Distance(海林格距離)。
參數:
-
doc_text1(str): 輸入的第一個文檔。 -
doc_text2(str): 輸入的第二個文檔。
返回
-
jsd(float): 兩個文檔之間的JS散度(Jensen-Shannon divergence)。 -
hd(float): 兩個文檔之間的海林格距離(Hellinger Distance)。
jsd, hd = lda_news.cal_doc_distance(doc_text1="今天的天氣如何,適合出去遊玩嗎",
doc_text2="感受今天的天氣不錯,能夠出去玩一玩了")
print(jsd, hd)
0.003109487528061259 0.057317150510233034
cal_query_doc_similarity(query, document)
用於計算短文檔與長文檔之間的類似度。
參數
-
query(str): 輸入的短文檔。 -
document(str): 輸入的長文檔。
返回
-
lda_sim(float): 返回短文檔與長文檔之間的類似度。
lda_sim = lda_news.cal_query_doc_similarity(query='百度搜索引擎',
document='百度是全球最大的中文搜索引擎、致力於讓網民更便捷地獲取信息,找到所求。百度超過千億的中文網頁數據庫,能夠瞬間找到相關的搜索結果。')
# LDA similarity = 0.06826
lda_sim
0.06826390908033284
infer_doc_topic_distribution(document)
用於推理出文檔的主題分佈。
參數
-
document(str): 輸入文檔。
返回
-
results(list): 包含主題分佈下各個主題ID和對應的機率分佈。其中,list的基本元素爲dict,dict的key爲主題ID,value爲各個主題ID對應的機率。
topic_distributions = lda_news.infer_doc_topic_distribution('百度是全球最大的中文搜索引擎、致力於讓網民更便捷地獲取信息,找到所求。百度超過千億的中文網頁數據庫,能夠瞬間找到相關的搜索結果。')
topic_distributions
[{'topic id': 1113, 'distribution': 0.2647058823529412},
{'topic id': 547, 'distribution': 0.11764705882352941},
{'topic id': 832, 'distribution': 0.11764705882352941},
{'topic id': 1299, 'distribution': 0.1},
{'topic id': 168, 'distribution': 0.050980392156862744},
{'topic id': 1707, 'distribution': 0.045098039215686274},
{'topic id': 1698, 'distribution': 0.043137254901960784},
{'topic id': 1738, 'distribution': 0.03333333333333333},
{'topic id': 1431, 'distribution': 0.027450980392156862},
{'topic id': 1468, 'distribution': 0.01764705882352941},
{'topic id': 494, 'distribution': 0.011764705882352941},
{'topic id': 603, 'distribution': 0.00980392156862745},
{'topic id': 1223, 'distribution': 0.00980392156862745},
{'topic id': 1680, 'distribution': 0.00980392156862745},
{'topic id': 10, 'distribution': 0.00784313725490196},
{'topic id': 950, 'distribution': 0.00784313725490196},
{'topic id': 68, 'distribution': 0.0058823529411764705},
{'topic id': 362, 'distribution': 0.0058823529411764705},
{'topic id': 712, 'distribution': 0.0058823529411764705},
{'topic id': 734, 'distribution': 0.0058823529411764705},
{'topic id': 748, 'distribution': 0.0058823529411764705},
{'topic id': 1690, 'distribution': 0.0058823529411764705},
{'topic id': 1986, 'distribution': 0.0058823529411764705},
{'topic id': 47, 'distribution': 0.00392156862745098},
{'topic id': 249, 'distribution': 0.00392156862745098},
{'topic id': 317, 'distribution': 0.00392156862745098},
{'topic id': 438, 'distribution': 0.00392156862745098},
{'topic id': 482, 'distribution': 0.00392156862745098},
{'topic id': 796, 'distribution': 0.00392156862745098},
{'topic id': 1186, 'distribution': 0.00392156862745098},
{'topic id': 1380, 'distribution': 0.00392156862745098},
{'topic id': 1791, 'distribution': 0.00392156862745098},
{'topic id': 1801, 'distribution': 0.00392156862745098},
{'topic id': 14, 'distribution': 0.00196078431372549},
{'topic id': 54, 'distribution': 0.00196078431372549},
{'topic id': 136, 'distribution': 0.00196078431372549},
{'topic id': 187, 'distribution': 0.00196078431372549},
{'topic id': 245, 'distribution': 0.00196078431372549},
{'topic id': 246, 'distribution': 0.00196078431372549},
{'topic id': 267, 'distribution': 0.00196078431372549},
{'topic id': 294, 'distribution': 0.00196078431372549},
{'topic id': 324, 'distribution': 0.00196078431372549},
{'topic id': 341, 'distribution': 0.00196078431372549},
{'topic id': 410, 'distribution': 0.00196078431372549},
{'topic id': 566, 'distribution': 0.00196078431372549},
{'topic id': 713, 'distribution': 0.00196078431372549},
{'topic id': 763, 'distribution': 0.00196078431372549},
{'topic id': 766, 'distribution': 0.00196078431372549},
{'topic id': 821, 'distribution': 0.00196078431372549},
{'topic id': 1088, 'distribution': 0.00196078431372549},
{'topic id': 1164, 'distribution': 0.00196078431372549},
{'topic id': 1339, 'distribution': 0.00196078431372549},
{'topic id': 1483, 'distribution': 0.00196078431372549},
{'topic id': 1637, 'distribution': 0.00196078431372549},
{'topic id': 1712, 'distribution': 0.00196078431372549},
{'topic id': 1923, 'distribution': 0.00196078431372549}]
show_topic_keywords(topic_id, k=10)
用於展現出每一個主題下對應的關鍵詞,可配合推理主題分佈的API使用。
參數
-
topic_id(int): 主題ID。 -
k(int): 須要知道對應主題的前k個關鍵詞。
返回
-
results(dict): 返回對應文檔的前k個關鍵詞,以及各個關鍵詞在文檔中的出現機率。
查看topic id=1113的話題關鍵詞
topic_keywords = lda_news.show_topic_keywords(topic_id=1113, k=10)
topic_keywords
{'百度': 0.48896563697823225,
'搜索': 0.16101479497676738,
'貼吧': 0.03782747698836268,
'搜索引擎': 0.02673388226175899,
'糯米': 0.02418859758507298,
'李彥宏': 0.021650027433631664,
'搜狗': 0.019842621120443188,
'魏則西': 0.011255702550368505,
'百科': 0.010792400308484449,
'工具': 0.01004109289449752}
近期文章
tidytext | 耳目一新的R-style文本分析庫
rpy2庫 | 在jupyter中調用R語言代碼 reticulate包 | 在Rmarkdown中調用Python代碼 plydata庫 | 數據操做管道操做符>> plotnine: Python版的ggplot2做圖庫
七夕禮物 | 全網最火的釘子繞線圖製做教程
讀完本文你就瞭解什麼是文本分析
文本分析在經管領域中的應用概述 綜述:文本分析在市場營銷研究中的應用
plotnine: Python版的ggplot2做圖庫 小案例: Pandas的apply方法 stylecloud:簡潔易用的詞雲庫 用Python繪製近20年地方財政收入變遷史視頻 Wow~70G上市公司按期報告數據集
漂亮~pandas能夠無縫銜接Bokeh YelpDaset: 酒店管理類數據集10+G 後臺回覆關鍵詞【20200902】獲取本文R代碼
本文分享自微信公衆號 - 大鄧和他的Python(DaDengAndHisPython)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。