All Projects → yongzhuo → Macropodus

yongzhuo / Macropodus

Licence: mit
自然语言处理工具Macropodus,基于Albert+BiLSTM+CRF深度学习网络架构,中文分词,词性标注,命名实体识别,新词发现,关键词,文本摘要,文本相似度,科学计算器,中文数字阿拉伯数字(罗马数字)转换,中文繁简转换,拼音转换。tookit(tool) of NLP,CWS(chinese word segnment),POS(Part-Of-Speech Tagging),NER(name entity recognition),Find(new words discovery),Keyword(keyword extraction),Summarize(text summarization),Sim(text similarity),Calculate(scientific calculator),Chi2num(chinese number to arabic number)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Macropodus

Nlp Journey
Documents, papers and codes related to Natural Language Processing, including Topic Model, Word Embedding, Named Entity Recognition, Text Classificatin, Text Generation, Text Similarity, Machine Translation),etc. All codes are implemented intensorflow 2.0.
Stars: ✭ 1,290 (+317.48%)
Mutual labels:  similarity, ner, crf
Pytorch Bert Crf Ner
KoBERT와 CRF로 만든 한국어 개체명인식기 (BERT+CRF based Named Entity Recognition model for Korean)
Stars: ✭ 236 (-23.62%)
Mutual labels:  ner, crf
keras-bert-ner
Keras solution of Chinese NER task using BiLSTM-CRF/BiGRU-CRF/IDCNN-CRF model with Pretrained Language Model: supporting BERT/RoBERTa/ALBERT
Stars: ✭ 7 (-97.73%)
Mutual labels:  crf, ner
ChineseNER
中文NER的那些事儿
Stars: ✭ 241 (-22.01%)
Mutual labels:  crf, ner
Ner Slot filling
中文自然语言的实体抽取和意图识别(Natural Language Understanding),可选Bi-LSTM + CRF 或者 IDCNN + CRF
Stars: ✭ 151 (-51.13%)
Mutual labels:  ner, crf
Clinical Ner
面向中文电子病历的命名实体识别
Stars: ✭ 151 (-51.13%)
Mutual labels:  ner, crf
Pytorch ner bilstm cnn crf
End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF implement in pyotrch
Stars: ✭ 249 (-19.42%)
Mutual labels:  ner, crf
Ner
命名体识别(NER)综述-论文-模型-代码(BiLSTM-CRF/BERT-CRF)-竞赛资源总结-随时更新
Stars: ✭ 118 (-61.81%)
Mutual labels:  ner, crf
BiLSTM-CRF-NER-PyTorch
This repo contains a PyTorch implementation of a BiLSTM-CRF model for named entity recognition task.
Stars: ✭ 109 (-64.72%)
Mutual labels:  crf, ner
korean ner tagging challenge
KU_NERDY 이동엽, 임희석 (2017 국어 정보 처리 시스템경진대회 금상) - 한글 및 한국어 정보처리 학술대회
Stars: ✭ 30 (-90.29%)
Mutual labels:  crf, ner
Legal-Entity-Recognition
A Dataset of German Legal Documents for Named Entity Recognition
Stars: ✭ 98 (-68.28%)
Mutual labels:  crf, ner
Ncrfpp
NCRF++, a Neural Sequence Labeling Toolkit. Easy use to any sequence labeling tasks (e.g. NER, POS, Segmentation). It includes character LSTM/CNN, word LSTM/CNN and softmax/CRF components.
Stars: ✭ 1,767 (+471.84%)
Mutual labels:  ner, crf
Cluedatasetsearch
搜索所有中文NLP数据集,附常用英文NLP数据集
Stars: ✭ 2,112 (+583.5%)
Mutual labels:  ner, text-summarization
Sequence tagging
Named Entity Recognition (LSTM + CRF) - Tensorflow
Stars: ✭ 1,889 (+511.33%)
Mutual labels:  ner, crf
Multilstm
keras attentional bi-LSTM-CRF for Joint NLU (slot-filling and intent detection) with ATIS
Stars: ✭ 122 (-60.52%)
Mutual labels:  ner, crf
Bert seq2seq
pytorch实现bert做seq2seq任务,使用unilm方案,现在也可以做自动摘要,文本分类,情感分析,NER,词性标注等任务,支持GPT2进行文章续写。
Stars: ✭ 298 (-3.56%)
Mutual labels:  ner, crf
Min nlp practice
Chinese & English Cws Pos Ner Entity Recognition implement using CNN bi-directional lstm and crf model with char embedding.基于字向量的CNN池化双向BiLSTM与CRF模型的网络,可能一体化的完成中文和英文分词,词性标注,实体识别。主要包括原始文本数据,数据转换,训练脚本,预训练模型,可用于序列标注研究.注意:唯一需要实现的逻辑是将用户数据转化为序列模型。分词准确率约为93%,词性标注准确率约为90%,实体标注(在本样本上)约为85%。
Stars: ✭ 107 (-65.37%)
Mutual labels:  ner, crf
Daguan 2019 rank9
datagrand 2019 information extraction competition rank9
Stars: ✭ 121 (-60.84%)
Mutual labels:  ner, crf
keras-crf-ner
keras+bi-lstm+crf,中文命名实体识别
Stars: ✭ 16 (-94.82%)
Mutual labels:  crf, ner
lstm-crf-tagging
No description or website provided.
Stars: ✭ 13 (-95.79%)
Mutual labels:  crf, ner

Macropodus

PyPI - Python Version PyPI GitHub PyPI_downloads Stars Forks Join the chat at https://gitter.im/yongzhuo/Macropodus

Macropodus是一个以Albert+BiLSTM+CRF网络架构为基础,用大规模中文语料训练的自然语言处理工具包。将提供中文分词、词性标注、命名实体识别、关键词抽取、文本摘要、新词发现、文本相似度、计算器、数字转换、拼音转换、繁简转换等常见NLP功能。

目录

安装

  1. 注意事项
    默认不安装nlg-yongzhuo, 如果需要该功能自行安装;
    默认不指定numpy, pandas, scikit-learn版本, 过高或者过低的版本可能不支持
    标准版本的依赖包详见 requirements-all.txt
    
  2. 通过PyPI安装(模型文件另需下载, 详见命名实体提取, 词性标注):
    pip install macropodus
    
  3. 使用镜像源,例如:
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple macropodus
    

使用方式

快速使用

import macropodus

sen_calculate = "23 + 13 * (25+(-9-2-5-2*3-6/3-40*4/(2-3)/5+6*3))加根号144你算得几多"
sen_chi2num = "三千零七十八亿三千零十五万零三百一十二点一九九四"
sen_num2chi = 1994.1994
sen_roman2int = "IX"
sen_int2roman = 132
sent1 = "PageRank算法简介"
sent2 = "百度百科如是介绍他的思想:PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。"
summary = "PageRank算法简介。" \
           "是上世纪90年代末提出的一种计算网页权重的算法! " \
           "当时,互联网技术突飞猛进,各种网页网站爆炸式增长。 " \
           "业界急需一种相对比较准确的网页重要性计算方法。 " \
           "是人们能够从海量互联网世界中找出自己需要的信息。 " \
           "百度百科如是介绍他的思想:PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。 " \
           "Google把从A页面到B页面的链接解释为A页面给B页面投票。 " \
           "Google根据投票来源甚至来源的来源,即链接到A页面的页面。 " \
           "和投票目标的等级来决定新的等级。简单的说, " \
           "一个高等级的页面可以使其他低等级页面的等级提升。 " \
           "具体说来就是,PageRank有两个基本思想,也可以说是假设。 " \
           "即数量假设:一个网页被越多的其他页面链接,就越重)。 " \
           "质量假设:一个网页越是被高质量的网页链接,就越重要。 " \
           "总的来说就是一句话,从全局角度考虑,获取重要的信。 "

# 分词(词典最大概率分词DAG)
words = macropodus.cut(summary)
print(words)
# 新词发现
new_words = macropodus.find(summary)
print(new_words)
# 文本摘要
sum = macropodus.summarize(summary)
print(sum)
# 关键词抽取
keyword = macropodus.keyword(summary)
print(keyword)
# 文本相似度
sim = macropodus.sim(sent1, sent2)
print(sim)
# tookit
# 计算器
score_calcul = macropodus.calculate(sen_calculate)
print(score_calcul)
# 中文数字与阿拉伯数字相互转化
res_chi2num = macropodus.chi2num(sen_chi2num)
print(res_chi2num)
res_num2chi = macropodus.num2chi(sen_num2chi)
print(res_num2chi)
# 阿拉伯数字与罗马数字相互转化
res_roman2int = macropodus.roman2int(sen_roman2int)
print(res_roman2int)
res_int2roman = macropodus.int2roman(sen_int2roman)
print(res_int2roman)
# 中文汉字转拼音
res_pinyin = macropodus.pinyin(summary)
print(res_pinyin)
# 中文繁简转化
res_zh2han = macropodus.zh2han(summary)
print(res_zh2han)
res_han2zh = macropodus.han2zh(res_zh2han)
print(res_han2zh)

中文分词

各种分词方法

import macropodus

# 用户词典
macropodus.add_word(word="斗鱼科")
macropodus.add_word(word="鲈形目") # 不持久化, 当前有效
macropodus.save_add_words(word_freqs={"喜斗":32, "护卵":64, "护幼":132}) # 持久化保存到用户字典
sent = "斗鱼属,Macropodus (1801),鲈形目斗鱼科的一属鱼类。本属鱼类通称斗鱼。因喜斗而得名。分布于亚洲东南部。中国有2种,即叉尾斗鱼,分布于长江及以南各省;叉尾斗鱼,分布于辽河到珠江流域。其喜栖居于小溪、河沟、池塘、稻田等缓流或静水中。雄鱼好斗,产卵期集草成巢,雄鱼口吐粘液泡沫,雌鱼产卵其中,卵浮性,受精卵在泡沫内孵化。雄鱼尚有护卵和护幼现象。"

# 分词
sents = macropodus.cut_bidirectional(sent)
print("cut_bidirectional: " + " ".join(sents))
sents = macropodus.cut_forward(sent)
print("cut_forward: " + " ".join(sents))
sents = macropodus.cut_reverse(sent)
print("cut_reverse: " + " ".join(sents))
sents = macropodus.cut_search(sent)
print("cut_search: " + " ".join(sents))
# DAG
sents = macropodus.cut_dag(sent)
print("cut_dag: " + " ".join(sents))

文本相似度

文本相似度主要使用词向量, 余弦相似度 或 jaccard相似度

import macropodus

sent1="叉尾斗鱼是一种观赏性动物"
sent2="中国斗鱼生性好斗,适应性强,能在恶劣的环境中生存"
           
# 文本相似度(similarity)
sents = macropodus.sim(sent1, sent2, type_sim="total", type_encode="avg")
print(sents)
sents = macropodus.sim(sent1, sent2, type_sim="cosine", type_encode="single")
print(sents)

文本摘要

文本摘要方法有text_pronouns, text_teaser, word_sign, textrank, lead3, mmr, lda, lsi, nmf

import macropodus

summary = "PageRank算法简介。" \
           "是上世纪90年代末提出的一种计算网页权重的算法! " \
           "当时,互联网技术突飞猛进,各种网页网站爆炸式增长。 " \
           "业界急需一种相对比较准确的网页重要性计算方法。 " \
           "是人们能够从海量互联网世界中找出自己需要的信息。 " \
           "百度百科如是介绍他的思想:PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。 " \
           "Google把从A页面到B页面的链接解释为A页面给B页面投票。 " \
           "Google根据投票来源甚至来源的来源,即链接到A页面的页面。 " \
           "和投票目标的等级来决定新的等级。简单的说, " \
           "一个高等级的页面可以使其他低等级页面的等级提升。 " \
           "具体说来就是,PageRank有两个基本思想,也可以说是假设。 " \
           "即数量假设:一个网页被越多的其他页面链接,就越重)。 " \
           "质量假设:一个网页越是被高质量的网页链接,就越重要。 " \
           "总的来说就是一句话,从全局角度考虑,获取重要的信。 "
           
# 文本摘要(summarize, 默认接口)
sents = macropodus.summarize(summary)
print(sents)

# 文本摘要(summarization, 可定义方法, 提供9种文本摘要方法, 'lda', 'mmr', 'textrank', 'text_teaser')
sents = macropodus.summarization(text=summary, type_summarize="lda")
print(sents)

新词发现

新词发现主要使用凝固度, 左熵, 右熵, 词频等方案, 综合考虑

import macropodus

summary = "PageRank算法简介。" \
           "是上世纪90年代末提出的一种计算网页权重的算法! " \
           "当时,互联网技术突飞猛进,各种网页网站爆炸式增长。 " \
           "业界急需一种相对比较准确的网页重要性计算方法。 " \
           "是人们能够从海量互联网世界中找出自己需要的信息。 " \
           "百度百科如是介绍他的思想:PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。 " \
           "Google把从A页面到B页面的链接解释为A页面给B页面投票。 " \
           "Google根据投票来源甚至来源的来源,即链接到A页面的页面。 " \
           "和投票目标的等级来决定新的等级。简单的说, " \
           "一个高等级的页面可以使其他低等级页面的等级提升。 " \
           "具体说来就是,PageRank有两个基本思想,也可以说是假设。 " \
           "即数量假设:一个网页被越多的其他页面链接,就越重)。 " \
           "质量假设:一个网页越是被高质量的网页链接,就越重要。 " \
           "总的来说就是一句话,从全局角度考虑,获取重要的信。 "
           
# 新词发现(findword, 默认接口)
sents = macropodus.find(text=summary, use_type="text", use_avg=False, use_filter=False, use_output=True, freq_min=2, len_max=5, entropy_min=2.0, aggregation_min=3.2)
print(sents)

关键词

关键词抽取使用的是textrank, 边关系构建: 1. 字向量构建句向量; 2. 余弦相似度计算边得分

import macropodus

sent = "斗鱼属,Macropodus (1801),鲈形目斗鱼科的一属鱼类。本属鱼类通称斗鱼。因喜斗而得名。分布于亚洲东南部。中国有2种,即叉尾斗鱼,分布于长江及以南各省;叉尾斗鱼,分布于辽河到珠江流域。其喜栖居于小溪、河沟、池塘、稻田等缓流或静水中。雄鱼好斗,产卵期集草成巢,雄鱼口吐粘液泡沫,雌鱼产卵其中,卵浮性,受精卵在泡沫内孵化。雄鱼尚有护卵和护幼现象。"
# 关键词(keyword)
sents = macropodus.keyword(sent)
print(sents)

命名实体提取

  • ner, albert+bilstm+crf网络架构, 最大支持126个字符;
  • 需要安装tensorflow==1.15.0, keras-bert==0.80.0, keras-adaptive-softmax==0.6.0(pip安装不默认下载, 1.15.0以下未实验, 1.13以上应该可以);
  • 需要下载模型(pip安装不默认下载, 将ner_albert_people_1998覆盖到安装目录macropodus/data/model);
  • 模型地址在https://pan.baidu.com/s/1I3vydhmFEQ9nuPG2fDou8Q, 提取码:rket;
import macropodus

summary = "美丽的广西是我国华南地区的一颗璀璨的明珠,山清水秀生态美,风生水起万象新。"
res_ner = macropodus.ner(summary)
print(res_ner)
res_ners = macropodus.ners([summary])
print(res_ners)

词性标注

  • pos tag, albert+bilstm+crf网络架构, 最大支持126个字符;
  • 需要安装tensorflow==1.15.0, keras-bert==0.80.0, keras-adaptive-softmax==0.6.0(pip安装不默认下载, 1.15.0以下未实验, 1.13以上应该可以);
  • 需要下载模型(pip安装不默认下载, 将tag_albert_people_1998覆盖到安装目录macropodus/data/model);
  • 模型地址在https://pan.baidu.com/s/1I3vydhmFEQ9nuPG2fDou8Q, 提取码:rket;
import macropodus

summary = "美丽的广西是我国华南地区的一颗璀璨的明珠,山清水秀生态美,风生水起万象新。"
res_postag = macropodus.postag(summary)
print(res_postag)
res_postags = macropodus.postags([summary])
print(res_postags)

常用小工具(tookit)

工具包括科学计算器, 中文繁体-简体转换, 阿拉伯-中文数字转换, 罗马数字-阿拉伯数字转换, 中文拼音

import macropodus

sen_calculate = "23 + 13 * (25+(-9-2-5-2*3-6/3-40*4/(2-3)/5+6*3))加根号144你算得几多"
sen_chi2num = "三千零七十八亿三千零十五万零三百一十二点一九九四"
sen_num2chi = 1994.1994
sen_roman2num = "IX"
sen_num2roman = 132
# tookit, 科学计算器
score_calcul = macropodus.calculate(sen_calculate)
print(score_calcul)
# tookit, 中文数字转阿拉伯
res_chi2num = macropodus.chi2num(sen_chi2num)
print(res_chi2num)
# tookit, 阿拉伯数字转中文
res_num2chi = macropodus.num2chi(sen_num2chi)
print(res_num2chi)
# tookit, 阿拉伯数字转罗马数字
res_roman2num = macropodus.roman2num(sen_roman2num)
print(res_roman2num)
# tookit, 罗马数字转阿拉伯数字
res_num2roman = macropodus.num2roman(sen_num2roman)
print(res_num2roman)
# 中文汉字转拼音
res_pinyin = macropodus.pinyin(summary)
print(res_pinyin)
# 中文繁体转简体
res_zh2han = macropodus.zh2han(summary)
print(res_zh2han)
# 中文简体转繁体
res_han2zh = macropodus.han2zh(res_zh2han)
print(res_han2zh)

参考/引用

Reference

For citing this work, you can refer to the present GitHub project. For example, with BibTeX:

@misc{Macropodus,
    howpublished = {\url{https://github.com/yongzhuo/Macropodus}},
    title = {Macropodus},
    author = {Yongzhuo Mo},
    publisher = {GitHub},
    year = {2020}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].