精华内容
下载资源
问答
  • 中文分词工具
    2021-03-07 10:42:57

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.RandomAccessFile;

    import java.util.StringTokenizer;

    /*

    * 文本格式:已分词的中文文本,空格分割。有若干行,每行为一个段落。

    * 功能:遍历文档,逐个返回词语。

    * 两种模式:

    * 1 到文档末尾后,结束

    * 2 到文档末尾后,从头再读。

    /

    public class WordReader

    {

    static final int normalMode = 0;

    static final int againMode = 1;

    int currentMode = 0;

    //BufferedReader br=null;

    RandomAccessFile raf= null;

    StringTokenizer tokenizer = null;

    String nextWord=null;

    int currentLine = 0;

    int allCounts = 0;

    public WordReader(String fileName) throws IOException

    {

    File file=new File(fileName);

    //br=new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));

    raf = new RandomAccessFile(file,"r") ;

    }

    private boolean hasNextWord() throws IOException

    {

    if( tokenizer!=null && tokenizer.hasMoreTokens())

    {

    nextWord = tokenizer.nextToken();

    return true;

    }

    else

    {

    String line=raf.readLine();

    if(line == null)

    {

    if(currentMode == normalMode)

    return false;

    else //从头再来

    {

    raf.seek(0);

    return hasNextWord();//递归

    }

    }

    tokenizer = null;

    line = new String(line.getBytes("iso8859-1"),"utf-8");

    tokenizer= new StringTokenizer(line," ");

    return hasNextWord();//递归

    }

    }

    private String getNextWord() throws IOException

    {

    if(nextWord != null)

    {

    String word = nextWord;

    nextWord = null;

    allCounts ++;

    return word;

    }

    else if(hasNextWord())

    {

    return getNextWord();

    }

    else return null;

    }

    public static void main(String[] args) throws IOException

    {

    // TODO Auto-generated method stub

    WordReader wordReader = new WordReader("/home/linger/sources/ParaModel/electronic_seg.txt");

    wordReader.currentMode = WordReader.againMode;

    //while(wordReader.hasNextWord())//共10329309个词

    for(int i=0;i<10329319;i++)//文本从头读

    {

    System.out.println(wordReader.getNextWord());

    }

    System.out.println(wordReader.allCounts);

    }

    }

    用randomaccessfile类很容易操作文件指针。

    但是遇到中文乱码问题,参考了这里http://blog.chinaunix.net/uid-15490606-id-211958.html,解决了。

    line = new String(line.getBytes("iso8859-1"),"utf-8");

    对编码不是很精通,有时见看看这个http://blog.sina.com.cn/s/blog_673c81990100t1lc.html。

    更多相关内容
  • 中文分词工具

    2017-12-04 18:13:03
    最新中文分词工具jar包,使用方便,分词准确,中文分析的一个不错的包
  • 本文实例讲述了Python中文分词工具之结巴分词用法。分享给大家供大家参考,具体如下: 结巴分词工具的安装及基本用法,前面的文章《Python结巴中文分词工具使用过程中遇到的问题及解决方法》中已经有所描述。这里要...
  • 中文分词就是将一句话分解成一个词一个词,英文中可以用空格来做,而中文需要用一些技术来处理。三类分词算法:1. 基于字符串匹配:将汉字串与词典中的词进行匹配,如果在词典中找到某个字符串,则识别出一个词。...

    中文分词

    61769cb03f6a1dc82808751967f11c05.png

    就是将一句话分解成一个词一个词,英文中可以用空格来做,而中文需要用一些技术来处理。

    三类分词算法:

    1. 基于字符串匹配:

    将汉字串与词典中的词进行匹配,如果在词典中找到某个字符串,则识别出一个词。

    优点,速度快,都是O(n)时间复杂度,实现简单。

    缺点,对歧义和未登录词处理不好。

    此类型中常用的几种分词方法有:

    • 1. 正向最大匹配法:假设词典中最大词条所含的汉字个数为n个,取待处理字符串的前n个字作为匹配字段。若词典中含有该词,则匹配成功,分出该词,然后从被比较字符串的n+1处开始再取n个字组成的字段重新在词典中匹配;如果没有匹配成功,则将这n个字组成的字段的最后一位剔除,用剩下的n一1个字组成的字段在词典中进行匹配,如此进行下去,直到切分成功为止。(链接:http://www.jianshu.com/p/e978053b0b95)
    • 2. 逆向最大匹配法:与正向的区别在于如果匹配不成功则减去最前面的一个字。
    • 3. 最少切分使每一句中切出的词数最少。
    2. 基于理解:

    通常包括三个部分:分词(用来获得有关词)、句法语义(利用句法和语义信息来对分词歧义进行判断)、总控。

    3. 基于统计:

    对语料中相邻共现的各个字的组合的频度进行统计,将概率最大的分词结果作为最终结果。常见的模型有HMM和CRF。

    优点,能很好处理歧义和未登录词问题。

    缺点,需要大量的人工标注数据,以及较慢的分词速度。

    部分分词工具:

    中科院计算所NLPIR http://ictclas.nlpir.org/nlpir/

    ansj分词器 https://github.com/NLPchina/ansj_seg

    哈工大的LTP https://github.com/HIT-SCIR/ltp

    清华大学THULAC https://github.com/thunlp/THULAC

    斯坦福分词器,Java实现的CRF算法。 https://nlp.stanford.edu/software/segmenter.shtml

    Hanlp分词器,求解的是最短路径。 https://github.com/hankcs/HanLP

    结巴分词,基于前缀词典,生成句子中所有可能成词所构成的有向无环图 (DAG),采用动态规划查找最大概率路径, 找出基于词频的最大切分组合,对于未登录词,采用了 HMM 模型,使用 Viterbi 算法。 https://github.com/yanyiwu/cppjieba

    KCWS分词器(字嵌入+Bi-LSTM+CRF),本质上是序列标注。 https://github.com/koth/kcws

    ZPar https://github.com/frcchang/zpar/releases

    IKAnalyzer https://github.com/wks/ik-analyzer

    展开全文
  • 中文分词工具.docx

    2021-03-09 15:58:47
    七种中文分词工具的实验尝试与对比,具体使用时需结合场景选择。
  • lucene中文分词工具

    2018-05-10 10:02:37
    IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包,将一段文字进行IK分词处理一般经过:词典加载、预处理、分词器分词、歧义处理、善后结尾 五个部分
  • 中文分词工具

    2019-03-25 13:20:07
    (1)精确模式:试图将句子最精确地切开,适合文本分析; (2)全模式:把句子中所有的可以成词的词语都扫描出来, ...(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
  • 本文实例讲述了Python结巴中文分词工具使用过程中遇到的问题及解决方法。分享给大家供大家参考,具体如下: 结巴分词是Python语言中效果最好的分词工具,其功能包括:分词、词性标注、关键词抽取、支持用户词表等。...
  • ikanalyzersearch
  • 中文分词工具比较

    千次阅读 2020-02-09 14:02:17
    在本篇文章中,将介绍9个常用的分词工具及其对比。 jieba、SnowNLP、北京大学PKUseg、清华大学THULAC、HanLP、FoolNLTK、哈工大LTP、CoreNLP、BaiduLac。 * 部分分词中有可参考的论文。如北大、清华,可引用 文章...

    在本篇文章中,将介绍9个常用的分词工具及其对比。
    jiebaSnowNLP北京大学PKUseg清华大学THULACHanLPFoolNLTK哈工大LTPCoreNLPBaiduLac
    * 部分分词中有可参考的论文。如北大、清华和百度Lac,可引用

    简介

    中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块。不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性、句法树等模块的效果。当然分词只是一个工具,场景不同,要求也不同。

    在人机自然语言交互中,成熟的中文分词算法能够达到更好的自然语言处理效果,帮助计算机理解复杂的中文语言。下面就介绍一些成熟的分词工具。

    1 jieba

    " 结巴"中文分词:做最好的Python中文分词组件 “Jieba”
    更新时间:2020年
    官网地址:jieba

    特点:

    • 支持三种分词模式:
      • 精确模式,试图将句子最精确地切开,适合文本分析;
      • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义
      • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
    • 支持繁体分词
    • 支持自定义词典

    2 SnowNLP

    SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的
    更新时间:2017年
    官网地址:SnowNLP

    特点:

    • 中文分词(Character-Based Generative Model)
    • 词性标注(TnT 3-gram 隐马)
    • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
    • 文本分类(Naive Bayes)
    网友测试:特别慢
    

    3 北京大学PKUse

    官网有关于PKUse、THULAC、jieba的对比情况,可参考

    pkuseg:一个多领域中文分词工具包
    更新时间:2019年
    官网地址:北京大学PKUse

    特点:

    • 多领域分词。不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型
    • 更高的分词准确率。
    • 支持用户自训练模型。
    • 支持词性标注。

    4 清华大学THULAC

    官网有关于LTP、THULAC、jieba、ICTCLAS的对比情况,可参考

    THULAC清华大学:一个高效的中文词法分析工具包
    更新时间:2018年
    官网地址:清华大学THULAC

    THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:

    • 能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
    • 准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
    • 速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。

    5 HanLP

    HanLP面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.0,目标是普及落地最前沿的NLP技术
    更新时间:2020年
    官网地址:HanLP
    Github地址:HanLP

    特点:
    HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

    6 FoolNLTK

    FoolNLTK可能不是最快的开源中文分词,但很可能是最准的开源中文分词
    更新时间:2018年
    官网地址:FoolNLTK

    特点:

    • 可能不是最快的开源中文分词,但很可能是最准的开源中文分词
    • 基于BiLSTM模型训练而成
    • 包含分词,词性标注,实体识别, 都有比较高的准确率
    • 用户自定义词典
    • 可训练自己的模型
    • 批量处理

    7 哈工大LTP

    语言技术平台(Language Technology Platform,LTP)是哈工大社会计算与信息检索研究中心历时十年开发的一整套中文语言处理系统。

    LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口、可视化工具,并且能够以网络服务(Web Service)的形式进行使用。

    更新时间:2019年
    官方网站:LTP
    GIthub地址:LTP

    特点:
    主页上给过调用接口,每秒请求的次数有限制。

    8 斯坦福分词器CoreNLP

    Stanford CoreNLP提供了一组用Java编写的自然语言分析工具。
    更新时间:2020年
    Github地址:CoreNLP

    特点:
    斯坦福的各个工具都有相关文献可以深入学习原理,这点是一大优势。而且算法基本上都是最新或者最优的。java编写。

    9 BaiduLac

    Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,在单个模型中完成中文分词、词性标注、专名识别任务。
    更新时间:2019年
    Github地址:Lac

    特点:

    • 工程中使用
    • 依赖Paddle v0.14.0版本。
    • 定制化功能

    比较

    准确率、社区活跃度、适应范围、速度等。北京大学PKUse清华大学THULAC可供参考。

    可根据个人不同的需求去选择不同的分词工具。将自己的语料实际放进去看一下最后的结果。这样会给你一些参考价值。综合速度、社区活跃度、更新频率和语料结果,个人更倾向于jieba分词,专业的领域交给专业的团队去做。

    相关文章

    1,中文分词理论知识

    参考文献

    1,大量解释性文字参考自知乎用户:竹简智能
    2,SnowNLP测评文章
    3,SnowNLP例子文章
    4,中文分词工具比较,6大分词工具:有官网信息
    5,CoreNLP介绍

    展开全文
  • Python Jieba中文分词工具实现分词功能,Python Jieba中文分词工具实现分词功能
  • 中文分词工具包 smallseg
  • IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文...
  • 分词小工具是一款中文分词工具,能够将txt文件内的中文自动分词并重新排版生成一份新的txt文件。用户通过中文分词工具可将中文句子中的词汇分割开来,分词后方便用户学习和纠错等,需要的朋友赶紧下载吧。 使用方法...
  • 汉字的组合也是变化多端,麻将这个项目希望能从汉字组合中发现汉语的秘密,为自然语言处理提供好的中文分词工具。 麻将是基于Scala的语言实现的中文分词软件包。这个项目的核心是最大概率分词,整个项目专为搜索...
  • // 功能有:中文分词;词性标注;未登录词识别。 // 分词正确率高达97.58%(973专家评测结果), // 未登录词识别召回率均高于90%,其中中国人名的识别召回率接近98%; // 处理速度为31.5Kbytes/s。 //著作权: ...
  • 中文分词工具,大家耳熟能详的可能就是结巴分词,但是结巴分词最近也没有怎么更新,随着技术的不断迭代有一些更优秀的分词工具诞生,比如:LAC(百度)、THULAC(清华大学)、LTP(哈工大)、FoolNLTK等 这里主要介绍...

    背景

    在对文本进行处理分析时,大家第一印象就是对句子进行分词,统计词频,看哪些词语出现的词频较高,重点关注这些高频词即可,文章可能就是围绕着这些词展开的。中文的分词工具,大家耳熟能详的可能就是结巴分词,但是结巴分词最近也没有怎么更新,随着技术的不断迭代有一些更优秀的分词工具诞生,比如:LAC(百度)、THULAC(清华大学)、LTP(哈工大)、FoolNLTK等

    这里主要介绍一下百度的LAC,现在已更新到v2.1,GitHub地址:https://github.com/baidu/lac,使用起来速度与效果还可以,足以应对简单的分词任务

    LAC介绍

    LAC全称 Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。该工具具有以下特点与优势:

    • 效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,词语重要性,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。
    • 效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。
    • 可定制:实现简单可控的干预机制,精准匹配用户词典对模型进行干预。词典支持长片段形式,使得干预更为精准。
    • 调用便捷:支持一键安装,同时提供了Python、Java和C++调用接口与调用示例,实现快速调用和集成。
    • 支持移动端: 定制超轻量级模型,体积仅为2M,主流千元手机单线程性能达200QPS,满足大多数移动端应用的需求,同等体积量级效果业内领先。

    功能看着很强大,但是这里只用到中文分词功能,下面介绍一下使用的demo,
    通过 pip install lac 进行安装即可

    使用教程

    直接使用lac分词
    加载LAC后,通过其自带的模型进行分词,结果为一个列表

    from LAC import LAC
    
    # 装载分词模型
    lac = LAC(mode='seg')
    
    text='我是一名北漂的打工人、干饭人'
    lac.run(text)
    
    text_list=['我是一名北漂的打工人、干饭人','5月15日,航天科研人员在北京航天飞行控制中心指挥大厅庆祝我国首次火星探测任务着陆火星成功']
    lac.run(text_list)
    直接使用lac分词
    加载自定义字典
    从上面可以看出“打工人”可以正确分词,但是“干饭人”不能正确的切分,可以通过加载自定义字典来进行处理这种情况
    自定义字典
    from LAC import LAC
    
    #装载分词模型
    lac = LAC(mode='seg')
    
    #加载自定义字典
    lac.load_customization('自定义字典.txt', sep=None)
    
    text='我是一名北漂的打工人、干饭人'
    lac.run(text)
    
    text_list=['我是一名北漂的打工人、干饭人',
               '5月15日,航天科研人员在北京航天飞行控制中心指挥大厅庆祝我国首次火星探测任务着陆火星成功']
    lac.run(text_list)
    加载自定义字典

    从上面的输出结果可以看出,已经正确分词

    历史相关文章


    以上是自己实践中遇到的一些问题,分享出来供大家参考学习,欢迎关注微信公众号:DataShare ,不定期分享干货

    展开全文
  • 中文分词工具使用方法及比较

    千次阅读 2020-04-19 22:43:21
    中文分词工具分词背景介绍安装及介绍(jieba、pyhanlp、pkuseg、thulac、snownlp、nlpir)windowst系统分词工具安装Linux系统分词工具安装数据集介绍实验结果及比较参考文献 分词背景介绍     &...
  • jieba分词是Python 里面几个比较流行的中文分词工具之一。为了理解分词工具的工作原理,以及实现细节对jieba进行了详细的阅读。读代码之前,我有几个问题是这样的:分词工具的实现都有哪几个步骤?结巴分词的文档说是...
  • jieba —— 中文分词工具 01 简介 02 算法 03 分词
  • 中文分词工具

    2012-10-28 20:16:53
    这是一个中文分词工具 里面详细描述了 使用的方法
  • 中文分词工具包 smallseg.jar
  • 我们选择Windows作为测试环境,根据第二届国际汉语分词测评(The SecondInternational Chinese Word Segmentation Bakeoff)发布的国际中文分词测评标准,对不同软件进行了速度和准确率测试。...
  • 1、lucene-core-3.6.0.jar 2、IKAnalyzer2012.jar(主jar包) 3、IKAnalyzer.cfg.xml(分词器扩展配置文件) 4、stopword.dic(停止词典) 5、IkSegmentation.java(样例类)
  • 这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考。首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AINLP公众号后台在线...
  • 6大中文分词工具测试比较

    千次阅读 2020-04-08 12:24:55
    中文分词工具比较 6大中文分词器测试(jieba、FoolNLTK、HanLP、THULAC、nlpir、ltp) 哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba 个人接触的分词器 安装 调用 jieba“结巴”中文分词:做最好的 Python ...
  • word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。 同时提供了Lucene...
  • 中文分词工具包.zip

    2015-09-08 09:23:46
    中文分词工具包.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,282
精华内容 11,712
关键字:

中文分词工具

友情链接: buiyao_V5.1.zip