中文分词

中文分词算法基础

不问归期 提交于 2020-02-09 19:42:46
中文分词算法现在一般分为三类:基于词典的字符串匹配,基于理解,基于统计的分词。 基于词典的字符串匹配分词:机械分词算法。将待分的字符串与一个充分大的机器词典中的词条进行匹配。分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。。。实际应用中,将机械分词作为初分手段,利用语言信息提高切分准确率。优先识别具有明显特征的词,以这些词为断点,将原字符串分为较小字符串再机械匹配,以减少匹配错误率;或将分词与词类标注结合。 基于理解分词:分词同时进行句法语义分析等模拟人对句子的理解,包括分词子系统,句法语义系统,总控部分。总控部分协调下,分词字系统可以获得有关词,句子等的句法和语义信息对分词歧义进行判断。需要大量的语言知识信息。 基于统计分词:相邻的字同时出现的次数越多,越有可能构成一个词语,对语料中的字组频度进行统计,不需要切词字典,但错误率很高。可以考虑:使用基本词典进行关键词分词,使用统计方法识别新词组,两者结合。 语义理解中文分词:解决一词多义问题,为用户建立个性化数据库。 中文分词存在问题:计算机与人对歧义的定义无法统一;字典中未收录的词识别率低。 分词系统判断标准(待解决问题):歧义识别,新词(未登录词)识别 分词算法设计中的几个基本原则: 1、颗粒度越大越好

linux安装elasticsearch的中文分词器

限于喜欢 提交于 2020-02-08 06:00:46
一、下载中文分词器elasticsearch-analysis-ik https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.3.2 二、用解压 解压elasticsearch-analysis-ik-6.3.2.zip unzip elasticsearch - analysis - ik - 6.3 .2 . zip 三、进入到elasticsearch-analysis-ik-6.3.2用maven编译 [ root@hadoop4 softwares ] # cd elasticsearch - analysis - ik - 6.3 .2 [ root@hadoop4 elasticsearch - analysis - ik - 6.3 .2 ] # mvn install - Dmaven . test . skip = true 四、拷贝/usr/local/softwares/elasticsearch-analysis-ik-6.3.2/target/releases下的压缩包到es的插件目录下 cd / usr / local / modules / elasticsearch - 6.3 .2 / plugins / mkdir ik cp elasticsearch -

NLP入门(1)

扶醉桌前 提交于 2020-02-03 15:16:04
自然语言处理,简称:NLP,是指对人们平时日常使用的交流语言进行处理的一项技术。NLP 经过多年的发展,现今可以划分为两部分内容,即:自然语言的理解和自然语言的生成。 本文将以文本分类为目标,介绍自然语言处理相关的基础操作和应用。 (来自 https://www.shiyanlou.com/courses/1208 ) 做一个中文文本分类任务,首先要做的是文本的预处理,对文本进行分词和去停用词操作,来把字符串分割成词与词组合而成的字符串集合并去掉其中的一些非关键词汇(像是:的、地、得等)。再就是对预处理过后的文本进行特征提取。最后将提取到的特征送进分类器进行训练。 术语解释: 分词:词是 NLP 中能够独立活动的有意义的语言成分。即使某个中文单字也有活动的意义,但其实这些单字也是词,属于单字成词。 词性标注:给每个词语的词性进行标注,比如 跑/动词、美丽的/形容词等等。 命名实体识别:从文本中识别出具有特定类别的实体。像是识别文本中的日期,地名等等。 词义消歧:多义词判断最合理的词义。 句法分析:解析句子中各个成分的依赖关系。 指代消解:消除和解释代词「这个,他,你」等的指代问题。 1.Python字符串操作 变量名.count("A"):返回子串A在字符串中出现的次数 .strip() 方法可以去除字符串首尾的指定符号。无指定时,默认去除空格符 ' ' 和换行符 '\n'

NLP之中文分词cppjieba

柔情痞子 提交于 2020-02-02 19:06:02
jieba简介 jieba库是一个简单实用的中文自然语言处理分词库。 jieba分词属于概率语言模型分词。概率语言模型分词的任务是:在全切分所得的所有结果中求某个切分方案S,使得P(S)最大。 jieba支持三种分词模式: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 精确模式,试图将句子最精确地切开,适合文本分析; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 jieba分词原理 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG) 1. 根据dict.txt生成trie树,字典在生成trie树的同时, 把每个词的出现次数转换为频率(jieba自带一个dict.txt的词典, 里面有2万多条词, 包含了词条出现的次数和词性(作者基于人民日报语料等资源训练得出来)。trie树结构的词图扫描, 说的就是把这2万多条词语, 放到一个trie树中, trie树是有名的前缀树, 也就是说一个词语的前面几个字一样, 就表示他们具有相同的前缀, 就可以使用trie树来存储, 具有查找速度快的优势)。 2.对待分词句子, 根据dict.txt生成的trie树, 生成DAG, 通俗的讲, 就是将句子根据给定的词典进行查词典操作, 生成所有可能的句子切分

lucene&solr全文检索_4改进

╄→гoц情女王★ 提交于 2020-02-01 22:27:32
在之前的程序中我们发现分词不太准确,因此我们可以使用支持中文分词。   分析器的执行过程:      从一个reader字符流开始,创建一个基于reader的tokenizer分词器,经过三个tokenfilter(第一个大写变小写,第二个用回车替换空格,去掉不需要的a,the,and,逗号等)生成tokens。要看分析器的分析效果只需要看tokenstream中的内容就可以了,每个分析器都有一个方法tokenstream,返回一个tokenstream对象。   lucene自带中文分析器: standardAnalyzer:单字分词即一个一个分 CJKAnalyzer:二分法,即两个一分,、 SmartChineseAnalyzer:对中文支持好,但扩展性差,对词库的操作不是很好处理。 由此可见上面三个分析器效果并不是很理想,因此要使用第三方分析器: paoding: 庖丁解牛最新版在 https://code.google.com/p/paoding/ 中最多支持 Lucene 3.0,且最新提交的代码在 2008-06-03,在svn中最新也是2010年提交,已经过时。 mmseg4j:最新版已从 https://code.google.com/p/mmseg4j/ 移至 https://github.com/chenlb/mmseg4j-solr ,支持 Lucene 4

python中文文本分类

怎甘沉沦 提交于 2020-01-29 05:37:22
,中文文本分类流程: 预处理 中文分词 结构化表示-构建词向量空间 权重策略—TF-IDF 分类器 评价. 二,具体实现 预处理 1.1 打标签: 对评论数据打好标签,这里将汽车评论数据分为正面和负面两类。假设负面标签为0,正面标签为1. 1.2 整理数据集: 一般可分为训练集,验证集和测试集。为什么要这么分,这篇博文给了浅显的解释:训练集、验证集和测试集的意义本试验将数据分为训练集和测试集两类。 1.3 得到训练集预料库: 例如,训练集文本的路径:train_data/train_positive.xlsx , train_data/train_negtive.xlsx… 1.4 得到测试集语料库: 例如,测试集文本的路径:test_data/test_negtive.xlsx , test_data/test_positive.xlsx… 2 中文分词 2.1 概述 第1节预处理中的语料库都是没有分词的原始语料(即连续的句子,而后面的工作需要把文本分为一个个单词),现在需要对这些文本进行分词,只有这样,才能在基于单词的基础上,对文档进行结构化表示。 中文分词有其特有的难点(相对于英文而言),最终完全解决中文分词的算法是基于概率图模型的条件随机场(CRF),CRF的原理我们不细说了,直接调用中文分词的工具,这里用的是python第三方分词库jieba(所采用的算法就是条件随机场)

jieba库

跟風遠走 提交于 2020-01-28 13:45:07
jieba库: 利用一个中文词库,确定中文字符之间的关联概率 中文字符间概率大的组成词组,形成分词结果 jieba库分词的三种模式:精确模式、全模式、搜索引擎模式 精确模式:把文本精确的切分开,不存在冗余单词 全模式:把文本中所有可能的词语都扫描出来,有冗余 搜索引擎模式:在精确模式的基础上,对长词再次切分 常用函数: jieba.lcut(s):精确模式,返回一个列表类型的分词结果 jieba.lcut(s,cut_all=True):全模式,返回一个列表类型的分词结果,存在冗余 jieba.lcut_for_search(s):搜索引擎模式,返回一个列表类型的分词结果,存在冗余 jieba.add_word(w):向分词词典增加新词w 来源: 51CTO 作者: 王果果ooo 链接: https://blog.51cto.com/14232274/2468502

elasticsearch教程--中文分词器作用和使用

北城余情 提交于 2020-01-28 08:52:12
概述 本文都是基于 elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例 环境准备 · 全新最小化安装的 centos 7.5 ·elasticsearch 6.4.0 认识中文分词器 在博文 elasticsearch分词器中提到elasticsearch能够快速的通过搜索词检索出对应的文章归功于倒排索引,下面通过中文举例看看倒排索引。 中文分词器作用以及效果 中文分词器是做什么的呢 ? what? 通过名字就知道了啊,为什么还要问。。。下面通过三个文档示例,看看它是如何分词的 文档 1: 我爱伟大的祖国 文档 2: 祝福祖国强大繁 文档 3: 我爱蓝天白云 经过中文分词器 ,以上文档均会根据分词规则,将文档进行分词后的结果如下: 注意 :不同的分词规则,分词结果不一样,选择根据分词器提供的分词规则找到适合的分词规则 文档 1分词结果: [我,爱,伟大,的,祖国] 文档 2分词结果: [祝福,祖国,强大,繁盛] 文档 3分词结果: [我,爱,蓝天白云,蓝天,白云] 通过上面的分词结果,发现拆分的每个词都是我们熟知的词语, 但是如果不使用中文分词,就会发现上面的文档把每个字拆分成了一个词,对我们中文检索很不友好。 再看倒排索引 看到上面中文分词器结果 ,就会有新的疑问

Coreseek-带中文分词的Sphinx

天涯浪子 提交于 2020-01-28 02:22:33
什么是Coreseek Sphinx默认不支持中文索引及检索,基于Sphinx开发了Coreseek全文检索服务器,Coreseek应该是现在用的最多的Sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg包含mmseg中文分词。 安装 --解压安装包 # tar -zxvf coreseek-3.2.14.tar.gz # ls csft-3.2.14 mmseg-3.2.14 README.txt testpack 安装中文分词mmseg # cd mmseg-3.2.14/ # ./configure --prefix=/usr/local/mmseg --编译报错 config.status: error: cannot find input file: src/Makefile.in --运行下面指令再次编译就能通过了 # automake # make && make install --运行mmseg,输出安装信息则mmseg中文分词已经安装好了 # /usr/local/mmseg/bin/mmseg Coreseek COS(tm) MM Segment 1.0 Copyright By Coreseek.com All Right Reserved. Usage: /usr/local/mmseg/bin/mmseg <option>

Lucene05-分词器

此生再无相见时 提交于 2020-01-27 04:07:21
Lucene05- 分词器 1、 概念 Analyzer (分词器)的作用是把一段文本中的词按规则取出所包含的所有词。对应的是 Analyzer 类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言(规则),要用不同的分词器。如下图 注意:在创建索引时会用到分词器,在使用字符串搜索时也会用到分词器,这两个地方要使用同一个分词器,否则可能会搜索不出结果。所以当改变分词器的时候,需要重新建立索引库 2、 常见的中文分词器 中文的分词比较复杂,因为不是一个字就是一个词,而且一个词在另外一个地方就可能不是一个词,如在 “ 帽子和服装 ” 中, “ 和服 ” 就不是一个词。对于中文分词,通常有三种方式:单字分词、二分法分词、词典分词 2.1 单字分词 就是按照中文一个字一个字地进行分词,效率比较低。如: “ 我们是中国人 ” ,效果: “ 我 ” 、 “ 们 ” 、 “ 是 ” 、 “ 中 ” 、 “ 国 ” 、 “ 人 ” 。( StandardAnalyzer 就是这样) Analyzer analyzer2 = new StandardAnalyzer(); 2.2 二分法分词 按两个字进行切分,把相邻的两个字组成词分解出来,效率也比较低。而且很多情况下分的词不对。如: “ 我们是中国人 ” ,效果: “ 我们 ” 、 “ 们是 ” 、 “ 是中 ” 、 “ 中国 ”