Familia開源項目包含文檔主題推斷工具、語義匹配計算工具以及基於工業級語料訓練的三種主題模型:Latent Dirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。 支持用戶以“拿來即用”的方式進行文本分類、文本聚類、個性化推薦等多種場景的調研和應用。考慮到主題模型訓練成本較高以及開源主題模型資源有限的現狀,我們會陸續開放基於工業級語料訓練的多個垂直領域的主題模型,以及這些模型在工業界的典型應用方式,助力主題模型技術的科研和落地。 ( English )
近期,我們在PaddleHub 1.8版本中上線了Familia中的LDA模型,根據數據集的不同,區分為lda_news、lda_novel和lda_webpage。
PaddleHub使用起來非常便捷,我們以lda_news的使用來進行例子介紹。
首先,在使用PaddleHub之前,需要先安裝PaddlePaddle深度學習框架,更多安裝說明請查閱飛槳快速安裝。
安裝Paddlehub: pip install paddlehub
lda_news模型安裝: hub install lda_news
具體使用:
import paddlehub as hub
lda_news = hub . Module ( name = "lda_news" )
jsd , hd = lda_news . cal_doc_distance ( doc_text1 = "今天的天气如何,适合出去游玩吗" , doc_text2 = "感觉今天的天气不错,可以出去玩一玩了" )
# jsd = 0.003109, hd = 0.0573171
lda_sim = lda_news . cal_query_doc_similarity ( query = '百度搜索引擎' , document = '百度是全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中文网页数据库,可以瞬间找到相关的搜索结果。' )
# LDA similarity = 0.06826
results = lda_news . cal_doc_keywords_similarity ( '百度是全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中文网页数据库,可以瞬间找到相关的搜索结果。' )
# [{'word': '百度', 'similarity': 0.12943492762349573},
# {'word': '信息', 'similarity': 0.06139783578769882},
# {'word': '找到', 'similarity': 0.055296603463188265},
# {'word': '搜索', 'similarity': 0.04270794098349327},
# {'word': '全球', 'similarity': 0.03773627056367886},
# {'word': '超过', 'similarity': 0.03478658388202199},
# {'word': '相关', 'similarity': 0.026295857219683725},
# {'word': '获取', 'similarity': 0.021313585287833996},
# {'word': '中文', 'similarity': 0.020187103312009513},
# {'word': '搜索引擎', 'similarity': 0.007092890537169911}]更加具體的介紹和使用方法可以看這裡:https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=SemanticModel
Familia目前包含的主題模型的對應論文介紹可以參考相關論文。
主題模型在工業界的應用範式可以抽象為兩大類: 語義表示和語義匹配。
語義表示(Semantic Representation)對文檔進行主題降維,獲得文檔的語義表示,這些語義表示可以應用於文本分類、文本內容分析、CTR預估等下游應用。
語義匹配(Semantic Matching)
計算文本間的語義匹配度,我們提供兩種文本類型的相似度計算方式:
更詳細的內容及工業界應用案例可以參考Familia Wiki , 如果想要對上述應用範式進行基於Web的可視化展示,可以參考Familia-Visualization 。
第三方依賴包括gflags-2.0 , glogs-0.3.4 , protobuf-2.5.0 , 同時要求編譯器支持C++11, g++ >= 4.8 , 兼容Linux和Mac操作系統。 默認情況下執行以下腳本會自動獲取依賴並安裝。
$ sh build.sh # 包含获取并安装第三方依赖的过程
$ cd model
$ sh download_model.sh
我們會陸續開放不同領域的多種主題模型,來滿足更多不同的場景需求。
Familia自帶的Demo包含以下功能:
語義表示計算 利用主題模型對輸入文檔進行主題推斷,以得到文檔的主題降維表示。
語義匹配計算計算文本之間的相似度,包括短文本-長文本、長文本-長文本間的相似度計算。
模型內容展現對模型的主題詞,近鄰詞進行展現,方便用戶對模型的主題有直觀的理解。
具體的Demo使用說明可以參考使用文檔
若出現找不到libglog.so, libgflags.so等動態庫錯誤,請添加third_party至環境變量的LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH=./third_party/lib:$LD_LIBRARY_PATH
代碼中內置簡易的FMM分詞工具,只針對主題模型中出現的詞表進行正向匹配。若對分詞和語義準確度有更高要求,建議使用商用分詞工具,並使用自定義詞表的功能導入主題模型中的詞表。
歡迎提交任何問題和Bug Report至Github Issues。 或者發送諮詢郵件至{ familia } at baidu.com
docker run -d
--name familia
-e MODEL_NAME=news
-p 5000:5000
orctom/familia
MODEL_NAME can be one of news / novel / webpage / webo
http://localhost:5000/swagger/
The following article describes the Familia project and industrial cases powered by topic modeling. It bundles and translates the Chinese documentation of the website. We recommend citing this article as default.
Di Jiang, Yuanfeng Song, Rongzhong Lian, Siqi Bao, Jinhua Peng, Huang He, Hua Wu. 2018. Familia: A Configurable Topic Modeling Framework for Industrial Text Engineering. arXiv preprint arXiv:1808.03733.
@article{jiang2018familia,
author = {Di Jiang and Yuanfeng Song and Rongzhong Lian and Siqi Bao and Jinhua Peng and Huang He and Hua Wu},
title = {{Familia: A Configurable Topic Modeling Framework for Industrial Text Engineering}},
journal = {arXiv preprint arXiv:1808.03733},
year = {2018}
}
Further Reading: Federated Topic Modeling
Familia is provided under the BSD-3-Clause License.