Coder Social home page Coder Social logo

xiaomi / minlp Goto Github PK

View Code? Open in Web Editor NEW
777.0 26.0 90.0 108.45 MB

XiaoMi Natural Language Processing Toolkits

License: Apache License 2.0

Python 2.21% Java 1.79% Shell 0.10% Scala 60.93% CSS 0.49% HTML 0.46% JavaScript 34.01%
nlp tensorflow python3

minlp's Introduction

MiNLP

小米自然语言处理平台(MiNLP)具备词法、句法、语义分析等数十个功能模块,已经在公司业务中得到了广泛应用。

MiNLP-Tokenizer中文分词工具经过不断优化和实战打磨,已于2020年11月正式对外开源。

我们计划在2021年Q2完成所有词法工具(词性标注和命名实体识别)的开源,从2021年Q3开始,我们将逐步开源句法分析和部分语义分析工具,和开发者一起打造功能强大、效果领先的NLP平台。

duckling-fork-chinese中文结构化解析工具,是在facebook/duckling的基础上做的一个JVM fork,满足从文本到结构化对象的转换。目前工具在小爱生产环境大量使用,最重要的应用是在数字和时间上的解析。

模块

中文分词:MiNLP-Tokenizer(传送门

词性标注:施工中,敬请期待

命名实体识别:敬请期待

依存句法分析:敬请期待

结构化解析:duckling-fork-chinese

minlp's People

Contributors

du00cs avatar guoyuankai avatar nepshi avatar zhangsonglei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minlp's Issues

给一个安装环境的说明

是否只支持python3,tensorflow是哪个版本,等等。
目前发现在安装的时候,python2在open()报错,换到python3,在tensorflow版本报错,但看了提示信息,如下
ERROR: Could not find a version that satisfies the requirement tensorflow<2,>=1.15 (from minlp-tokenizer) (from versions: 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.2.1, 2.3.0rc0, 2.3.0rc1, 2.3.0rc2, 2.3.0, 2.3.1, 2.4.0rc0, 2.4.0rc1) ERROR: No matching distribution found for tensorflow<2,>=1.15 (from minlp-tokenizer)

import tensorflow as tf; print(tf.\_\_version\_\_);

tf 版本 2.3.0

请问这个是什么原因

好像不支持IP提取

print(tokenizer.cut('帮我扫描这个IP192.168.3.4'))
['帮', '我', '扫描', '这个', 'IP192.168.3.4']

性能对比

对贵司的开源,为中文NLP做出了一些贡献,表示非常感谢、点赞。但这套新开源组件有什么优点/特点还缺少文档让读者能快速和更好地理解及使用。同时目前市面上不少公司/学术机构都开源了各自的分词套件(分词、词性、实体、句法等),比如

等等

能否出一个「性能对比」呢:

  • 分词效果,Precision, Recall 等
  • 分词速度

等等

[DUCK] 地点词表

积累了一些问题有待解决:

  1. [最近一周]天秤座的运势如何,抽不出 最近一周
  2. 地点词表去掉 大方/合水

需要强化的各种组合

<style> </style>
文本 识别结果 正确结果 备注
一年半载 一年半 不识别,或者全部识别,变成时间段,1年到1年半  
午夜   时间段  
晌午   时间段  
需要【一个月半天】才能完成 一个月半 一个月半天  
昨(今/明)凌晨   昨(今/明)凌晨 部分不识别
昨(今/明)清晨   昨(今/明)清晨 部分不识别
昨(今/明)早晨   昨(今/明)早晨 部分不识别
昨(今/明)早上   昨(今/明)早上 部分不识别
昨(今/明)上午   昨(今/明)上午 部分不识别
昨(今/明)下午   昨(今/明)下午 部分不识别
昨(今/明)傍晚   昨(今/明)傍晚 部分不识别
昨(今/明)晚上   昨(今/明)晚上 部分不识别
昨(今/明)夜   昨(今/明)夜 部分不识别
昨(今/明)夜里   昨(今/明)夜里 部分不识别
昨(今/明)午夜   昨(今/明)午夜 部分不识别
至少需要【千万元】投资     千万富翁该不该识别?千万别说肯定不识别
一点都不喜欢你 一点   应该不识别
一五一十、一向、众多非一、一样、一大半、一同、一表人才、一共、一言为定、一边、一路平安、千人一面、一会儿、一事无成、一些、一团和气、一定、一直、一起、一心一意、万众一心、一知半解、一阵风、一年一度、一场、独树一帜、一动不动、一鸣惊人、九牛一毛、一筹莫展、首屈一指、一刹那     各种带数字的其实非数字
3到6小时(各种单位)     时间段
再【等3秒】   等3秒  
限你【3天之内】   3天之内 时间段
限你【3天里】     时间段
3公里以内     距离段
数字在【3和6中间】出现     数字段

技术没有新意

还是hmm。 可能你们训练的模型会更精准,但个人觉得没必要搞一个新的tokenizer。
在已有的开源的基础上,专门提供模型文件岂不更好

[DUCK] 最近几次修改引入的问题

date+晚:国庆晚会,十月一晚会,错误抽取:国庆晚/十月一晚
叫一下钟浩然,错误抽取:下钟
六点半:错误抽取为duration
单字:晚/早,抽取为interval

请问支不支持二元分词

比如我的词典是 "**、人民、银行、**银行、**人民、人民银行、**人民银行"

如果输入 ”**人民银行“,最理想的分词状态就是 "**、人民、银行、**人民、人民银行、**人民银行",但实际测试只能分出 "**", "人民", "银行"

关于在GPU分词下的多线程优化的建议

Hi,感谢你们的工作,目前还是很喜欢MI Tokenizer,对比其他分词。粗粒度分词在翻译和训练生成模型下很有帮助,考虑到后续的 subword 处理。
目前,在使用时,遇到几个问题, 我整理了一些解决方案, 希望和你们一起讨论。

  1. GPU下,batch 我看配置512,但是GPU显存没有设限制,以至于单进程跑很吃亏,所以我在我的实际使用中,做了优化,允许多线程共享显存来提高效率,使得GPU利用率能到10%-15%。
  2. 我进一步探求了为什么还是比较低,评估下来,有一些CPU的计算代码的消耗还是严重的,比如在cut batch的tag2words消耗的时间几乎和一样久。我觉得这个地方可能需要更好的数据拷贝机制,避免堵塞。

我会先提一个PR看看提供一个多进程的GPU切词方法,有时间的话,想一起讨论第二个问题,一个是一些CPU代码的优化,比如vterbi过程也可以迁移到cuda上。希望听一下你们的反馈。

我的初衷是希望有一个非常快速的基于预训练模型的分词算法,进一步支撑行业的大规模使用。

“三分钟后” 精度丢失(inheritGrainOfDuration=false)

关闭粒度继承,query=“3分钟后”,默认值秒位精度丢失(second总是0)
复现代码如下
List dims = Lists.newArrayList(EnumeratedDimension.Time, EnumeratedDimension.Duration);
Options base = new Options(dims, false);
options = new Options(false,
true,
false,
base.targets(),
false,
false,
base.rankOptions(),
new TimeOptions(false, true, true,false),
base.numeralOptions(),
base.timeout());
String raw="3分钟后";
Types.Context context = new Types.Context(ZonedDateTime.now(), Locale.CHINA);
List<Types.Answer> answers = Api.analyzeJ(raw, context, options);
Types.ResolvedValue value = answers.get(0).token().value();

[DUCK] 耗时较高问题

文本1=你知道明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的大后年大后年的大后天的大后天的大后天的明天是几月几日吗
文本2=你知道明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明年的明天的明天的明天的明天的明天的明天的明天的明天的明天

pip install 安装失败

 Building wheel for pyahocorasick (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\Administrator\Anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-qgbs78j6\\pyahocorasick\\setup.py'"'"'; __file__='"'"'C:\\U
sers\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-qgbs78j6\\pyahocorasick\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__,
'"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\ADMINI~1\AppData\Local\Temp\pip-wheel-jvlclkkv' --python-tag cp37
       cwd: C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-qgbs78j6\pyahocorasick\

请问是什么原因?

目前开放的只是分词tokenizer吗?后续的词性+NER现已开放吗

十一点半到明天早上八点,只抽取了【十一点半到明天】

参考时间:2023-03-08 T10:00:00
1、十一点半到明天早上八点,只抽取了【十一点半到明天】,预期抽取【十一点半到明天早上八点】
2、十一点到明天八点/十四点到明天八点,输出的开始时间错误。预期是2023-03-08的11点和14点

正常的case:
十一点到八点
今天十一点到八点

[DUCK] interval范围错误

当天上午10点请求query=11点15分到15点20分
开始时间不是当天上午的11点15分,是昨天晚上的23点15分

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.