分词

开源中文分词工具探析(七):LTP

北城余情 提交于 2019-11-27 00:44:33
LTP 是哈工大开源的一套中文语言处理系统,涵盖了基本功能:分词、词性标注、命名实体识别、依存句法分析、语义角色标注、语义依存分析等。 【开源中文分词工具探析】系列: 开源中文分词工具探析(一):ICTCLAS (NLPIR) 开源中文分词工具探析(二):Jieba 开源中文分词工具探析(三):Ansj 开源中文分词工具探析(四):THULAC 开源中文分词工具探析(五):FNLP 开源中文分词工具探析(六):Stanford CoreNLP 开源中文分词工具探析(七):LTP 1. 前言 同THULAC一样,LTP也是基于结构化感知器(Structured Perceptron, SP),以最大熵准则建模标注序列 \(Y\) 在输入序列 \(X\) 的情况下的score函数: \[ S(Y,X) = \sum_s \alpha_s \Phi_s(Y,X) \] 其中, \(\Phi_s(Y,X)\) 为本地特征函数。中文分词问题等价于给定 \(X\) 序列,求解score函数最大值对应的 \(Y\) 序列: \[ \mathop{\arg \max}_Y S(Y,X) \] 2. 分解 以下源码分析基于版本3.4.0。 分词流程 分词流程与其他分词器别无二致,先提取字符特征,计算特征权重值,然后Viterbi解码。代码详见 __ltp_dll_segmentor_wrapper:

中文分词工具——jieba

删除回忆录丶 提交于 2019-11-26 23:40:27
汉字是智慧和想象力的宝库。 ——索尼公司创始人井深大 简介 在英语中,单词就是“词”的表达,一个句子是由空格来分隔的,而在汉语中,词以字为基本单位,但是一篇文章的表达是以词来划分的,汉语句子对词构成边界方面很难界定。例如:南京市长江大桥,可以分词为:“南京市/长江/大桥”和“南京市长/江大桥”,这个是人为判断的,机器很难界定。在此介绍中文分词工具jieba,其特点为: 社区活跃、目前github上有19670的star数目 功能丰富,支持关键词提取、词性标注等 多语言支持(Python、C++、Go、R等) 使用简单 Jieba分词结合了基于规则和基于统计这两类方法。首先基于前缀词典进行词图扫描,前缀词典是指词典中的词按照前缀包含的顺序排列,例如词典中出现了“买”,之后以“买”开头的词都会出现在这一部分,例如“买水”,进而“买水果”,从而形成一种层级包含结构。若将词看成节点,词与词之间的分词符看成边,则一种分词方案对应着从第一个字到最后一个字的一条分词路径,形成全部可能分词结果的有向无环图。 jieba安装 安装很简单,先创建一个python3.6的虚拟环境,再激活环境,最后安装命令如下: conda create -n nlp_py3 python=3.6 source activate nlp_py3 pip install jieba jieba的三种分词模式

中文分词研究入门

谁都会走 提交于 2019-11-26 22:29:53
导读 本文首先简单介绍了自然语言处理和科研过程中重要的四部曲——调研、思考、编程和写作,然后对中文分词问题进行了说明,介绍了中文分词存在的难点如消歧、颗粒度问题、分词标准等。接着,本文总结了调研文献中的分词方法,包括基于词典的最大匹配法以及其相应的改进方法、基于字标注的分词方法等,同时也介绍了当前中文分词的研究进展和方向,如统计与词典相结合、基于深度学习的分词方法等。而后,本文具体介绍了如何基于词典的双向最大匹配法以及基于字标注的平均感知机进行分词的实验,对实验结果进行了分析并给出了几种改进模型的思路。最后,本文给出了相应的参考文献以及其他资料。 本文作者: llhthinker 原文地址: http://www.cnblogs.com/llhthinker/p/6323604.html Github代码地址: https://github.com/llhthinker/MachineLearningLab/tree/master/Chinese-Word-Segmentation 转载请保留 1. 导论 1.1 自然语言处理简介 自然语言处理 (NLP, Natural Language Processing)是用机器处理人类语言(有别于人工语言,如程序设计语言)的理论和技术。自然语言处理是人工智能的一个重要分支,属于计算机应用技术(有别于计算机技术)

Solr4.10.4 加中文分词

若如初见. 提交于 2019-11-26 14:38:40
ik分词插件下载地址: https://download.csdn.net/download/u014453536/9587721 接上一教程,这个教程如何配置中文ik分词 检查schema的管理模式 配置成经典模式 <!-- 经典模式 --> <schemaFactory class="solr.ClassicIndexSchemaFactory"/> <!--修改节点 updateRequestProcessorChain--> <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}" processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date"> <processor class="solr.LogUpdateProcessorFactory"/> <processor class="solr.DistributedUpdateProcessorFactory"/> <processor class="solr.RunUpdateProcessorFactory"/> <

simhash的py实现

流过昼夜 提交于 2019-11-26 05:26:51
前言: 这篇博客主要从python(3)代码的角度来讲本人是如何实现simhash的,不足之处还望大家不吝赐教。simhash的算法原理大家可以参考 简单易懂讲解simhash算法 。值得一提的是文中提到simhash对长文本更加有效,个人从算法原理角度思考过后感觉也是如此。 初始化 首先我们要明确我们需要的是什么,给定了一个大语料,我们希望得到的是每个词的编码以及对应的权重,那么我们可以将目标拆分为以下几个: 1.对文本进行分词,并根据需要进行停词处理。 2.对每个词进行hash编码(一般用32位的就够了)。 3.对每个词赋予权重,这里正好就能用idf的值作为其权重值,idf具体介绍可见 tf-idf进行关键词提取 说了这么多,还是用代码来看看具体是怎么做到的吧~ 分词 一上来就是最让人头疼的问题,如何进行分词,分词的相关理论也是种类繁多,能够成一个专题,这里大家有兴趣的可以自行去查阅相关资料,我在这里使用的是jieba分词,jieba是一个功能强大的分词工具,大家可以参考博客 好玩的分词–jieba模块的的基本用法 ,分词完毕后我将其保存为新的txt(test_ws.txt),之后我们载入的文本文件便是分词过后的文件了。 hash编码和idf值计算 # -*- coding:utf-8 -*- import numpy as np import codecs import

简单的中文分词和词向量化

霸气de小男生 提交于 2019-11-26 03:36:06
**在做分词前需要做的准备: ** (1):已经预处理过的需要分词的语料(需要分词的语料要符合结巴分词的要求,每句一行,并且以句号做结尾) (2):需要一份相关方面的词典用于更加专业化的分词,单纯的使用结巴分词不能很好的分出你需要的词,会影响到你以后词向量化阶段。 (3):需要一份停用词表,因为结巴分词不能很好的把一些没有实际意义的词去掉,这样此会影响到后面词向量化阶段。停用词表的作用就是去掉一些没有意义的词语,单字,或者特殊符号。主要你需要去掉的东西,你把它写在停用词表中就可以。停用词表可以在网上下载,停用词表一般分为很多种,有专门的中文停用词表。在做分词的时候看需要下载,一般下载一个比较全的停用词表就行(停用词表一般包括特殊符号和中文一些无意义词)。 此处需要注意,在保存停用词表的时候注意保存为编码格式utf-8的格式储存为txt格式. 开始分词: 代码如下 import codecs import jieba infile = 'date_open_yuliao.txt' ##你需要分词的语料的文件名 outfile = 'data_open_yuliaochuli2.txt' ##分词完成后保存的文件名 jieba . load_userdict ( "data_open_dict.txt" ) ##用结巴加载你准备好的专用分词的词典 descsFile = codecs