回顾安装时的漏下的知识点
中文分词
- 全文索引:是指计算机索引程序通过扫描文档中的每个词,对每个词建立索引,记录词在文档中的位置及次数,当用户查询时,直接搜索索引,并返回结果的检索方式。
- 中文分词:对于英文,可以自然的把文档按空格分隔成词,但是对于中文来说,sphinx并不认识中文的字,或词。
英文:I am a teacher
自然分隔成I/am/a/teacher
中文:我是一个老师。不能分割成 我/是/一个/老师 sphinx不认识”我“是什么、’老师’,是一个词吗?
中文分词系统
中文分词与英文分词有很大的不同,英文一个单词就是一个词,而汉语是以字为基本的
书写单位,词语之间没有明显的区分标记,需要人为切分。中文分词系统,是利用计算机对中文文本进行词语自动识别的系统,词语自动识别的方法我们通常称为分词算法。
分词算法的分类
主要有3大类:
1、基于字符串匹配的分词方法。
2、基于理解的分词方法。
3、基于统计的分词方法
1、基于字符串匹配的分词方法
这种方法又叫做机械分词方法,它是基于词典的,在足够大的词典中进行词条匹配,若找到了这个字符串,就算匹配成功(识别出一个词)。
三个要素:分词词典
,文本扫描顺序
,匹配原则
。
文本扫描顺序分为:正向
,逆向
,双向
匹配原则分为:最大
,最小
,逐词
,最佳
。
由于汉语单字成词的特点,正向最小匹配和逆向最小匹配般很少使用。**
常用的分词方法:
三亚酒店预订
I)正向最大匹配法(由左到右的方向)
三亚/酒店/预订/
2)逆向最大匹配法(山右到左的方向)
预订/酒店预订/酒店/三亚
3)最少切分(使每一句中切出的词数最小)
三亚/酒店预订
4)双向最大匹配法(进行由左到右、山右到左两次扫描)
三亚/三亚酒店/酒店/酒店预订/预订/三亚酒店预订
2、基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果.
它通常包括三个部分:分词子系统
、句法语义子系统
、总控部分
。
目前这种方法还在测试阶段。
3、基于统计的分词方法
在上下文中,相邻的字同时出现的次数、频率或概率反映成词的可信度。也叫无词典分词技术.
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新
的词,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
对于成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法.
例如,海量科技的分词算法就采用’复方分词法’
中文分词的难题
有了成熟的算法,不一定很容易的解决中文分词的问题。
1、歧义识别
指一句话可能有两种甚 至多种的切分方法,
交集型歧义:
化妆和服装 化妆/和/服装 化妆/和服/装
组合型歧义:
这个门把手坏了。 请把手拿开。
把手是个词 把手不是个词
2、新词识别
命名实体(人名、地名)、新词,专业术语称为未登录词。
如:王晓虎去北京了。王晓虎是个人名。让计算机去识别人名,是很困难了,再如把王晓虎收录到词典中。
还会出现问题:王晓虎头虎脑的。
虎头虎脑是个词,王晓是人名。
除了人名以外,还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,因此对于搜索引擎来说,分
词系统中的新词识别十分重要。目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。
sphinx和coreseek配置项
配置项不一样的地方
#index定义
index mysql
{
#stopwords =G:\data\stopwords.txt 停词 是shpinx原生独有
#wordforms =G:\data\wordforms.txt
#exceptions =/data/exceptions.txt 以上都要关掉
#charset_type =sbcs
下面两行是coreseek必须的
charset_dictpath = /usr/local/mmseg/etc/ #BSD、Linux环境下设置,/符号结尾 词典所在地
charset_type = zh_cn.utf-8 #这是中文编码的UTF-8 出现这个配置都要改成charset_type
}
#全局index定义
名为main的主数据源:
source main{}
继承名为main的增量数据源:
source delta:main{}
名为main的主索引:
index main{}
继承名为main的增量索引:
index delta:main{}
分布式索引:
index dist1{}
索引器:
indexer{}
服务进程:
searchd{}