Science Score: 10.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (2.8%) to scientific vocabulary
Keywords
Repository
百度NLP:分词,词性标注,命名实体识别,词重要性
Basic Info
Statistics
- Stars: 3,967
- Watchers: 105
- Forks: 594
- Open Issues: 158
- Releases: 0
Topics
Metadata Files
README.md
工具介绍
LAC全称Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。该工具具有以下特点与优势: - 效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,词语重要性,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。 - 效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。 - 可定制:实现简单可控的干预机制,精准匹配用户词典对模型进行干预。词典支持长片段形式,使得干预更为精准。 - 调用便捷:支持一键安装,同时提供了Python、Java和C++调用接口与调用示例,实现快速调用和集成。 - 支持移动端: 定制超轻量级模型,体积仅为2M,主流千元手机单线程性能达200QPS,满足大多数移动端应用的需求,同等体积量级效果业内领先。
安装与使用
在此我们主要介绍Python安装与使用,其他语言使用: - C++ - JAVA - Android
安装说明
代码兼容Python2/3
- 全自动安装: pip install lac
- 半自动下载:先下载http://pypi.python.org/pypi/lac/,解压后运行 python setup.py install
- 安装完成后可在命令行输入lac或lac --segonly,lac --rank启动服务,进行快速体验。
国内网络可使用百度源安装,安装速率更快:
pip install lac -i https://mirror.baidu.com/pypi/simple
功能与使用
分词
- 代码示例: ```python from LAC import LAC
装载分词模型
lac = LAC(mode='seg')
单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具" seg_result = lac.run(text)
批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"] seg_result = lac.run(texts) ``` - 输出:
text
【单样本】:seg_result = [LAC, 是, 个, 优秀, 的, 分词, 工具]
【批量样本】:seg_result = [[LAC, 是, 个, 优秀, 的, 分词, 工具], [百度, 是, 一家, 高科技, 公司]]
词性标注与实体识别
- 代码示例: ```python from LAC import LAC
装载LAC模型
lac = LAC(mode='lac')
单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具" lac_result = lac.run(text)
批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"] lac_result = lac.run(texts) ``` - 输出:
每个句子的输出其切词结果wordlist以及对每个单词的标注tagslist,其格式为(wordlist, tagslist)
text 【单样本】: lac_result = ([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n]) 【批量样本】:lac_result = [ ([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n]), ([LAC, 是, 个, 优秀, 的, 分词, 工具], [nz, v, q, a, u, n, n]) ]
词性和专名类别标签集合如下表,其中我们将最常用的4个专名类别标记为大写的形式:
| 标签 | 含义 | 标签 | 含义 | 标签 | 含义 | 标签 | 含义 | | ---- | -------- | ---- | -------- | ---- | -------- | ---- | -------- | | n | 普通名词 | f | 方位名词 | s | 处所名词 | nw | 作品名 | | nz | 其他专名 | v | 普通动词 | vd | 动副词 | vn | 名动词 | | a | 形容词 | ad | 副形词 | an | 名形词 | d | 副词 | | m | 数量词 | q | 量词 | r | 代词 | p | 介词 | | c | 连词 | u | 助词 | xc | 其他虚词 | w | 标点符号 | | PER | 人名 | LOC | 地名 | ORG | 机构名 | TIME | 时间 |
词语重要性
- 代码示例: ```python from LAC import LAC
装载词语重要性模型
lac = LAC(mode='rank')
单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具" rank_result = lac.run(text)
批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"] rank_result = lac.run(texts) ``` - 输出:
text
【单样本】:rank_result = [['LAC', '是', '个', '优秀', '的', '分词', '工具'],
[nz, v, q, a, u, n, n],[3, 0, 0, 2, 0, 3, 1]]
【批量样本】:rank_result = [
(['LAC', '是', '个', '优秀', '的', '分词', '工具'],
[nz, v, q, a, u, n, n], [3, 0, 0, 2, 0, 3, 1]),
(['百度', '是', '一家', '高科技', '公司'],
[ORG, v, m, n, n], [3, 0, 2, 3, 1])
]
词语重要性各类别标签集合如下表,我们使用4-Level梯度进行分类:
| 标签 | 含义 | 常见于词性| | ---- | -------- | ---- | | 0 | query中表述的冗余词 | p, w, xc ... | | 1 | query中限定较弱的词 | r, c, u ... | | 2 | query中强限定的词 | n, s, v ... | | 3 | query中的核心词 | nz, nw, LOC ... |
定制化功能
在模型输出的基础上,LAC还支持用户配置定制化的切分结果和专名类型输出。当模型预测匹配到词典的中的item时,会用定制化的结果替代原有结果。为了实现更加精确的匹配,我们支持以由多个单词组成的长片段作为一个item。
我们通过装载词典文件的形式实现该功能,词典文件每行表示一个定制化的item,由一个单词或多个连续的单词组成,每个单词后使用'/'表示标签,如果没有'/'标签则会使用模型默认的标签。每个item单词数越多,干预效果会越精准。
- 词典文件示例
这里仅作为示例,展现各种需求情况下的结果。后续还将开放以通配符配置词典的模式,敬请期待。
text 春天/SEASON 花/n 开/v 秋天的风 落 阳- 代码示例 ```python from LAC import LAC lac = LAC()
装载干预词典, sep参数表示词典文件采用的分隔符,为None时默认使用空格或制表符'\t'
lac.load_customization('custom.txt', sep=None)
干预后结果
custom_result = lac.run(u"春天的花开秋天的风以及冬天的落阳") ```
- 以输入“春天的花开秋天的风以及冬天的落阳”为例,原本输出结果为:
text 春天/TIME 的/u 花开/v 秋天/TIME 的/u 风/n 以及/c 冬天/TIME 的/u 落阳/n - 添加示例中的词典文件后的结果为:
text
春天/SEASON 的/u 花/n 开/v 秋天的风/n 以及/c 冬天/TIME 的/u 落/n 阳/n
增量训练
我们也提供了增量训练的接口,用户可以使用自己的数据,进行增量训练,首先需要将数据转换为模型输入的格式,并且所有数据文件均为"UTF-8"编码:
1. 分词训练
- 数据样例
与大多数开源分词数据集格式一致,使用空格作为单词切分标记,如下所示:
text
LAC 是 个 优秀 的 分词 工具 。
百度 是 一家 高科技 公司 。
春天 的 花开 秋天 的 风 以及 冬天 的 落阳 。
- 代码示例
```Python from LAC import LAC
选择使用分词模型
lac = LAC(mode = 'seg')
训练和测试数据集,格式一致
trainfile = "./data/segtrain.tsv" testfile = "./data/segtest.tsv" lac.train(modelsavedir='./mysegmodel/',traindata=trainfile, testdata=testfile)
使用自己训练好的模型
mylac = LAC(modelpath='mysegmodel') ```
2. 词法分析训练
- 样例数据
在分词数据的基础上,每个单词以“/type”的形式标记其词性或实体类别。值得注意的是,词法分析的训练目前仅支持标签体系与我们一致的数据。后续也会开放支持新的标签体系,敬请期待。
text
LAC/nz 是/v 个/q 优秀/a 的/u 分词/n 工具/n 。/w
百度/ORG 是/v 一家/m 高科技/n 公司/n 。/w
春天/TIME 的/u 花开/v 秋天/TIME 的/u 风/n 以及/c 冬天/TIME 的/u 落阳/n 。/w
- 代码示例 ```Python from LAC import LAC
选择使用默认的词法分析模型
lac = LAC()
训练和测试数据集,格式一致
trainfile = "./data/lactrain.tsv" testfile = "./data/lactest.tsv" lac.train(modelsavedir='./mylacmodel/',traindata=trainfile, testdata=testfile)
使用自己训练好的模型
mylac = LAC(modelpath='mylacmodel') ```
文件结构
text
.
├── python # Python调用的脚本
├── c++ # C++调用的代码
├── java # Java调用的代码
├── Android # Android调用的示例
├── README.md # 本文件
└── CMakeList.txt # 编译C++和Java调用的脚本
在论文中引用LAC
如果您的学术工作成果中使用了LAC,请您增加下述引用。我们非常欣慰LAC能够对您的学术工作带来帮助。
text
@article{jiao2018LAC,
title={Chinese Lexical Analysis with Deep Bi-GRU-CRF Network},
author={Jiao, Zhenyu and Sun, Shuqi and Sun, Ke},
journal={arXiv preprint arXiv:1807.01882},
year={2018},
url={https://arxiv.org/abs/1807.01882}
}
贡献代码
我们欢迎开发者向LAC贡献代码。如果您开发了新功能,发现了bug……欢迎提交Pull request与issue到Github。
Owner
- Name: Baidu
- Login: baidu
- Kind: organization
- Email: opensource@baidu.com
- Location: Beijing, China
- Website: http://www.baidu.com
- Repositories: 110
- Profile: https://github.com/baidu
Baidu Open Source Projects
GitHub Events
Total
- Watch event: 123
- Member event: 2
- Issue comment event: 5
- Fork event: 4
Last Year
- Watch event: 123
- Member event: 2
- Issue comment event: 5
- Fork event: 4
Committers
Last synced: 12 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| zhouchengjie | z****e@b****m | 53 |
| huangdingbang | h****g@b****m | 28 |
| jiaozhenyu | j****r@1****m | 20 |
| sunshuqi01 | s****1@b****m | 17 |
| Nickname1230 | 4****0 | 2 |
| Wojciech Uss | w****s@i****m | 2 |
| moberq | m****q@o****m | 1 |
| Siuuuu7 | 4****7 | 1 |
| Bruce | z****u@g****m | 1 |
| tangqichao02 | t****2@b****m | 1 |
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 111
- Total pull requests: 0
- Average time to close issues: 3 months
- Average time to close pull requests: N/A
- Total issue authors: 94
- Total pull request authors: 0
- Average comments per issue: 1.3
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 1
- Pull request authors: 0
- Average comments per issue: 5.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- songsh (5)
- GuohyCoding (3)
- changingshow (3)
- sportzhang (3)
- Odimmsun (2)
- yayaQAQ (2)
- ideaRunner (2)
- QUAFFquaff (2)
- feng-1985 (2)
- lubupang (2)
- vesper1012 (2)
- icefoxhz (1)
- siming-sun (1)
- FFFro (1)
- glfu (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 3
-
Total downloads:
- pypi 746 last-month
-
Total dependent packages: 3
(may contain duplicates) -
Total dependent repositories: 21
(may contain duplicates) - Total versions: 23
- Total maintainers: 1
pypi.org: lac
A chinese lexical analysis tool by Baidu NLP.
- Homepage: https://github.com/baidu/lac
- Documentation: https://lac.readthedocs.io/
- License: Apache 2.0
-
Latest release: 2.1.2
published over 4 years ago
Rankings
Maintainers (1)
proxy.golang.org: github.com/baidu/lac
- Documentation: https://pkg.go.dev/github.com/baidu/lac#section-documentation
- License: apache-2.0
-
Latest release: v2.1.0+incompatible
published about 5 years ago
Rankings
proxy.golang.org: github.com/baidu/LAC
- Documentation: https://pkg.go.dev/github.com/baidu/LAC#section-documentation
- License: apache-2.0
-
Latest release: v2.1.0+incompatible
published about 5 years ago