a chinese segment base on crf

Overview

Genius

Genius是一个开源的python中文分词组件,采用 CRF(Conditional Random Field)条件随机场算法。

Feature

  • 支持python2.x、python3.x以及pypy2.x。
  • 支持简单的pinyin分词
  • 支持用户自定义break
  • 支持用户自定义合并词典
  • 支持词性标注

Source Install

  • 安装git: 1) ubuntu or debian apt-get install git 2) fedora or redhat yum install git
  • 下载代码:git clone https://github.com/duanhongyi/genius.git
  • 安装代码:python setup.py install

Pypi Install

  • 执行命令:easy_install genius或者pip install genius

Algorithm

  • 采用trie树进行合并词典查找
  • 基于wapiti实现条件随机场分词
  • 可以通过genius.loader.ResourceLoader来重载默认的字典

功能 1):分词genius.seg_text方法

  • genius.seg_text函数接受5个参数,其中text是必填参数:
  • text第一个参数为需要分词的字符
  • use_break代表对分词结构进行打断处理,默认值True
  • use_combine代表是否使用字典进行词合并,默认值False
  • use_tagging代表是否进行词性标注,默认值True
  • use_pinyin_segment代表是否对拼音进行分词处理,默认值True

代码示例( 全功能分词 )

#encoding=utf-8
import genius
text = u"""昨天,我和施瓦布先生一起与部分企业家进行了交流,大家对中国经济当前、未来发展的态势、走势都十分关心。"""
seg_list = genius.seg_text(
    text,
    use_combine=True,
    use_pinyin_segment=True,
    use_tagging=True,
    use_break=True
)
print('\n'.join(['%s\t%s' % (word.text, word.tagging) for word in seg_list]))

功能 2):面向索引分词

  • genius.seg_keywords方法专门为搜索引擎索引准备,保留歧义分割,其中text是必填参数。
  • text第一个参数为需要分词的字符
  • use_break代表对分词结构进行打断处理,默认值True
  • use_tagging代表是否进行词性标注,默认值False
  • use_pinyin_segment代表是否对拼音进行分词处理,默认值False
  • 由于合并操作与此方法有意义上的冲突,此方法并不提供合并功能;并且如果采用此方法做索引时候,检索时不推荐genius.seg_text使用use_combine=True参数。

代码示例

#encoding=utf-8
import genius

seg_list = genius.seg_keywords(u'南京市长江大桥')
print('\n'.join([word.text for word in seg_list]))

功能 3):关键词提取

  • genius.extract_tag方法专门为提取tag关键字准备,其中text是必填参数。
  • text第一个参数为需要分词的字符
  • use_break代表对分词结构进行打断处理,默认值True
  • use_combine代表是否使用字典进行词合并,默认值False
  • use_pinyin_segment代表是否对拼音进行分词处理,默认值False

代码示例

#encoding=utf-8
import genius

tag_list = genius.extract_tag(u'南京市长江大桥')
print('\n'.join(tag_list))

其他说明 4):

  • 目前分词语料出自人民日报1998年1月份,所以对于新闻类文章分词较为准确。
  • CRF分词效果很大程度上依赖于训练语料的类别以及覆盖度,若解决语料问题分词和标注效果还有很大的提升空间。
You might also like...
Python library for processing Chinese text

SnowNLP: Simplified Chinese Text Processing SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob

Chinese segmentation library

What is loso? loso is a Chinese segmentation system written in Python. It was developed by Victor Lin ([email protected]) for Plurk Inc. Copyright &

Chinese NewsTitle Generation Project by GPT2.带有超级详细注释的中文GPT2新闻标题生成项目。
Chinese NewsTitle Generation Project by GPT2.带有超级详细注释的中文GPT2新闻标题生成项目。

GPT2-NewsTitle 带有超详细注释的GPT2新闻标题生成项目 UpDate 01.02.2021 从网上收集数据,将清华新闻数据、搜狗新闻数据等新闻数据集,以及开源的一些摘要数据进行整理清洗,构建一个较完善的中文摘要数据集。 数据集清洗时,仅进行了简单地规则清洗。

A fast Text-to-Speech (TTS) model. Work well for English, Mandarin/Chinese, Japanese, Korean, Russian and Tibetan (so far). 快速语音合成模型,适用于英语、普通话/中文、日语、韩语、俄语和藏语(当前已测试)。

简体中文 | English 并行语音合成 [TOC] 新进展 2021/04/20 合并 wavegan 分支到 main 主分支,删除 wavegan 分支! 2021/04/13 创建 encoder 分支用于开发语音风格迁移模块! 2021/04/13 softdtw 分支 支持使用 Sof

A framework for cleaning Chinese dialog data

A framework for cleaning Chinese dialog data

中文医疗信息处理基准CBLUE: A Chinese Biomedical LanguageUnderstanding Evaluation Benchmark
中文医疗信息处理基准CBLUE: A Chinese Biomedical LanguageUnderstanding Evaluation Benchmark

English | 中文说明 CBLUE AI (Artificial Intelligence) is playing an indispensabe role in the biomedical field, helping improve medical technology. For fur

Easy-to-use CPM for Chinese text generation

CPM 项目描述 CPM(Chinese Pretrained Models)模型是北京智源人工智能研究院和清华大学发布的中文大规模预训练模型。官方发布了三种规模的模型,参数量分别为109M、334M、2.6B,用户需申请与通过审核,方可下载。 由于原项目需要考虑大模型的训练和使用,需要安装较为复杂

A Multi-modal Model Chinese Spell Checker Released on ACL2021.
A Multi-modal Model Chinese Spell Checker Released on ACL2021.

ReaLiSe ReaLiSe is a multi-modal Chinese spell checking model. This the office code for the paper Read, Listen, and See: Leveraging Multimodal Informa

A demo for end-to-end English and Chinese text spotting using ABCNet.
A demo for end-to-end English and Chinese text spotting using ABCNet.

ABCNet_Chinese A demo for end-to-end English and Chinese text spotting using ABCNet. This is an old model that was trained a long ago, which serves as

Comments
  • encoding issue of readme.md file

    encoding issue of readme.md file

    when i install the package with pip and python 3.4 32bits on windows 7, the following error report. I assume it is encoding issue of readme.md. if you save the file with encoding gb2312 with utf8 without BOM, it should be OK. I did not dig in what actually happened.

    C:\Python34>python.exe -m pip install genius
    Downloading/unpacking genius
      Running setup.py (path:C:\Users\sduan\AppData\Local\Temp\pip_build_sduan\genius\setup.py) egg_info for package genius
        Traceback (most recent call last):
          File "<string>", line 17, in <module>
          File "C:\Users\sduan\AppData\Local\Temp\pip_build_sduan\genius\setup.py", line 7, in <module>
            README = open(os.path.join(here, 'README.md')).read()
        UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 24: illegal multibyte sequence
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
    
      File "<string>", line 17, in <module>
    
      File "C:\Users\sduan\AppData\Local\Temp\pip_build_sduan\genius\setup.py", line 7, in <module>
    
        README = open(os.path.join(here, 'README.md')).read()
    
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 24: illegal multibyte sequence
    
    opened by xuemind 4
  • Error coming on such type of text. Could you p;ossibly explain why ?

    Error coming on such type of text. Could you p;ossibly explain why ?

    太湖世界文化论坛第五届年会 共识 2018 年 10 月 18 日至 19 日,来自世界五大洲近 40 个国家和地区以及国际组织的著名政治家、哲学家、社会科学家、文化学者、企业家、媒体领军人和社会各界朋友共 1000 余人,共聚北京,参加太湖世界文化论坛第五届年会。围绕本届年会主题“文化对话:构建人类命运共同体”,与会者经过平等交流、深入探讨,达成如下共识。 一,构建人类命运共同体,建设一个持久和平、普遍安全、共同繁荣、开放包容、清洁美丽的世界,这是世界各国人民的根本利益和共同利益所系,是人类社会普遍的价值追求所在,是当今时代和平、合作、发展的历史潮流大势所趋。 二,构建人类命运共同体是一项宏大而紧迫的时代任务,对文化建设提出了历史性新要求。构建人类命运共同体又是一个漫长而曲折的历史过程,始终需要文化给予坚强有力的支撑。忠实反映人民的意愿,加强文化创新,为合力构建人类命运共同体发挥长期的、基础的促进作用,这是当今世界文化繁荣发展的根本大计。 三,相互尊重、和而不同,建设一个远离恐惧、普遍安全、持久和平的世界。和平安宁,始终是世界各国人民的根本利益和世代梦想。要秉持和而不同的精神,坚持不同国家平等相待、和平相处;尊重各国人民自主选择社会制度和发展道路;相互尊重国家主权、独立和领土完整,互不干涉内政;加强国际合作,共同破解气候变化、恐怖主义、核扩散、难民潮等全球难题。不搞霸权主义、双重标准,不搞冷战思维、文化偏见。出现矛盾冲突要对话不要对抗,要协商不要霸凌,反对唯我独尊、强加于人,摒弃弱肉强食的丛林法则。发挥文化的力量,坚持不懈地传播和平理念、密切和平交往、凝聚和平力量,共谋、共护、共享世界和平与安宁。 四,平等互利、合作共赢,建设一个远离贫困、共同繁荣的世界。当今世界,开放型的国际合作、以规则为基础的多边贸易体制,推动经济全球化和自由贸易蓬勃发展,各国经济联系空前紧密,形成你中有我、我中有你的利益共同体。世界经济越来越远离孤立封闭的旧时代,越来越颠覆我赢你输、零和博弈的旧逻辑。倒退没有出路。经济霸凌、单边主义和保护主义,以损人开始、注定以害己告终。要顺应历史大势,走开放融通、互利共赢之路,协商管控分歧,以改革和发展化解矛盾冲突,推动经济全球化健康发展。深入推进“一带一路”国际合作,增添共同发展新动力,做世界和平的建设者、全球发展的贡献者、国际秩序的维护者。 五,求同存异、互学互鉴,建设一个远离封闭、开放包容的世界。世界文明丰富多彩,无优劣之分,各有自己的特色与优长。要尊重文明多样性。无论哪个国家,开放包容总是带来进步,封闭自大必然导致落后。要倡导不同文明相互尊重、交流对话。能不能以文明交流超越文明隔阂、文明互鉴超越文明冲突、文明共存超越文明优越,这关系全世界的安危兴衰,关系全人类的前途命运。加强不同国家的文化交流,发挥文化沟通心灵的特殊桥梁作用,让各国人民不断增进相互了解和相互信任,克服傲慢与偏见、减少误会与误判,为构建人类命运共同体提供愈益广大的民意基础和连绵不断的文化支撑。 六,尊崇自然、同舟共济,建设一个山清水秀、清洁美丽的世界。气候变化的严峻挑战,对人类的生存延续构成越来越严重的威胁。无论哪个国家,都无法独善其身,更不能罔顾事实、放弃历史责任。面对全球性共同挑战,惟有同舟共济、合力应对,才是世界各国的正确选择。要深刻吸取历史教训,牢固树立尊重自然、顺应自然、保护自然的理念,以人与自然和谐相处、共生共存为目标,转变生产生活方式,共同呵护地球家园,共同医治生态环境的累累伤痕,构筑尊崇自然、绿色发展的全球生态体系,造福于全人类,造福于子孙后代。 2018 年 10 月 19 日于北京


    error: missing tokens, cannot apply pattern

    opened by pankitbhat 3
  • Error with comma

    Error with comma

    因为我的中文不好,所以我写英文。不好意思。

    I get this error:

    >>> genius.seg_text('Kate, 坐吧。', use_tagging=True)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/Ale/Desktop/hsk-vocab/python_env/lib/python3.6/site-packages/genius/__init__.py", line 29, in seg_text
        pre_words = processes['tagging'](**kwargs).process(pre_words)
      File "/Users/Ale/Desktop/hsk-vocab/python_env/lib/python3.6/site-packages/genius/process.py", line 311, in process
        word.tagging = taggings[index]
    IndexError: list index out of range
    

    But if I change , for in the sentence, it works no problem. Also with use_tagging=False it works...

    Thank you for this great NLP package. 谢谢!

    opened by agj 2
Owner
duanhongyi
a simple programmer.
duanhongyi
A collection of Classical Chinese natural language processing models, including Classical Chinese related models and resources on the Internet.

GuwenModels: 古文自然语言处理模型合集, 收录互联网上的古文相关模型及资源. A collection of Classical Chinese natural language processing models, including Classical Chinese related models and resources on the Internet.

Ethan 66 Dec 26, 2022
Chinese real time voice cloning (VC) and Chinese text to speech (TTS).

Chinese real time voice cloning (VC) and Chinese text to speech (TTS). 好用的中文语音克隆兼中文语音合成系统,包含语音编码器、语音合成器、声码器和可视化模块。

Kuang Dada 6 Nov 8, 2022
vits chinese, tts chinese, tts mandarin

vits chinese, tts chinese, tts mandarin 史上训练最简单,音质最好的语音合成系统

AmorTX 12 Dec 14, 2022
天池中药说明书实体识别挑战冠军方案;中文命名实体识别;NER; BERT-CRF & BERT-SPAN & BERT-MRC;Pytorch

天池中药说明书实体识别挑战冠军方案;中文命名实体识别;NER; BERT-CRF & BERT-SPAN & BERT-MRC;Pytorch

zxx飞翔的鱼 751 Dec 30, 2022
Bidirectional LSTM-CRF and ELMo for Named-Entity Recognition, Part-of-Speech Tagging and so on.

anaGo anaGo is a Python library for sequence labeling(NER, PoS Tagging,...), implemented in Keras. anaGo can solve sequence labeling tasks such as nam

Hiroki Nakayama 1.5k Dec 5, 2022
Bidirectional LSTM-CRF and ELMo for Named-Entity Recognition, Part-of-Speech Tagging and so on.

anaGo anaGo is a Python library for sequence labeling(NER, PoS Tagging,...), implemented in Keras. anaGo can solve sequence labeling tasks such as nam

Hiroki Nakayama 1.4k Feb 17, 2021
Implemented shortest-circuit disambiguation, maximum probability disambiguation, HMM-based lexical annotation and BiLSTM+CRF-based named entity recognition

Implemented shortest-circuit disambiguation, maximum probability disambiguation, HMM-based lexical annotation and BiLSTM+CRF-based named entity recognition

null 0 Feb 13, 2022
Create a semantic search engine with a neural network (i.e. BERT) whose knowledge base can be updated

Create a semantic search engine with a neural network (i.e. BERT) whose knowledge base can be updated. This engine can later be used for downstream tasks in NLP such as Q&A, summarization, generation, and natural language understanding (NLU).

Diego 1 Mar 20, 2022
pkuseg多领域中文分词工具; The pkuseg toolkit for multi-domain Chinese word segmentation

pkuseg:一个多领域中文分词工具包 (English Version) pkuseg 是基于论文[Luo et. al, 2019]的工具包。其简单易用,支持细分领域分词,有效提升了分词准确度。 目录 主要亮点 编译和安装 各类分词工具包的性能对比 使用方式 论文引用 作者 常见问题及解答 主要

LancoPKU 6k Dec 29, 2022