Home

Awesome

<a href="http://github.com/baidu/Familia"> <img style="vertical-align: top;" src="https://raw.githubusercontent.com/wiki/baidu/Familia/img/logo.png?raw=true" alt="logo" height="140px"> </a>

Build Status License

Familia 开源项目包含文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型:Latent Dirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。 支持用户以“拿来即用”的方式进行文本分类、文本聚类、个性化推荐等多种场景的调研和应用。考虑到主题模型训练成本较高以及开源主题模型资源有限的现状,我们会陆续开放基于工业级语料训练的多个垂直领域的主题模型,以及这些模型在工业界的典型应用方式,助力主题模型技术的科研和落地。(English)

News!!!

近期,我们在PaddleHub 1.8版本中上线了Familia中的LDA模型,根据数据集的不同,区分为lda_news、lda_novel和lda_webpage。

PaddleHub使用起来非常便捷,我们以lda_news的使用来进行例子介绍。

  1. 首先,在使用PaddleHub之前,需要先安装PaddlePaddle深度学习框架,更多安装说明请查阅飞桨快速安装

  2. 安装Paddlehub: pip install paddlehub

  3. lda_news模型安装:hub install lda_news

  4. 具体使用:

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目前包含的主题模型的对应论文介绍可以参考相关论文

主题模型在工业界的应用范式可以抽象为两大类: 语义表示和语义匹配。

更详细的内容及工业界应用案例可以参考Familia Wiki , 如果想要对上述应用范式进行基于Web的可视化展示,可以参考Familia-Visualization

代码编译

第三方依赖包括gflags-2.0glogs-0.3.4protobuf-2.5.0, 同时要求编译器支持C++11, g++ >= 4.8, 兼容Linux和Mac操作系统。 默认情况下执行以下脚本会自动获取依赖并安装。

$ sh build.sh # 包含获取并安装第三方依赖的过程

模型下载

$ cd model
$ sh download_model.sh

我们会陆续开放不同领域的多种主题模型,来满足更多不同的场景需求。

Demo

Familia自带的Demo包含以下功能:

具体的Demo使用说明可以参考使用文档

注意事项

问题咨询

欢迎提交任何问题和Bug Report至Github Issues。 或者发送咨询邮件至{ familia } at baidu.com

Docker

docker run -d \
    --name familia \
    -e MODEL_NAME=news \
    -p 5000:5000 \
    orctom/familia

MODEL_NAME can be one of news/novel/webpage/webo

API

http://localhost:5000/swagger/

Citation

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

Copyright and License

Familia is provided under the BSD-3-Clause License.