打造自己的coreseek分词词库

下面给大家介绍一下如何打造自己的coreseek分词词库。 coreseek自身带的词库不是很大,直接使用它分词可能会返回大量没用结果。要想搜索结果准确打造一个专门的分词 词库必不可少。

  i. 首先到搜狗http://pinyin#sogou#com/dict/下载你要的词库

  ii. 因为下载回来的词库不是文本文件我们不能直接使用,所以要先转换成文本文件。网上找一个搜狗转 google的小工具,用它把你下载的全部词库转成文本文件。合并为一个文件命名为words.txt。文件要用utf8编码 保存,如果想直接使用我下面的工具进行转换的话文件名一定要是words.txt。如果你想自己转换请参考官网上的方 法http://www#coreseek#cn/opensource/mmseg/

  iii. 现在我们有了一个初步的词库,但这个词库还不能直接使用,要再整理并转换coreseek使用的格式才行。 这里我提供一个自己编写的小程序方便转换。 源程序如下:

/**
Last edit 2012-8-11
[email protected] www.4ji.cn
**/
ini_set(‘max_execution_time‘,‘6000‘);

$buffer=ini_get(‘output_buffering‘);
if($buffer)ob_end_flush();

echo ‘处理新词库...
‘;
flush();
$filename = "words.txt";
$handle = fopen ($filename, "r");
$content = fread ($handle, filesize ($filename));

fclose ($handle);

$content=trim($content);
$arr1 = explode( "\r\n" ,$content );
$arr1=array_flip(array_flip($arr1));
foreach($arr1 as $key=>$value){
$value=dealchinese($value);
if(!empty($value)){
$arr1[$key] = $value;
}
else{
unset($arr1[$key]);
}

}

echo ‘处理原来词库...
‘;flush();
$filename2 = "unigram.txt";
$handle2 = fopen ($filename2, "r");
$content2 = fread ($handle2, filesize ($filename2));
fclose ($handle2);
$content2=dealchinese($content2,"\r\n");
$arr2 = explode( "\r\n" ,$content2 );
echo ‘删除相同词条...
‘;flush();
$array_diff=array_diff($arr1,$arr2);

echo ‘格式化词库...
‘;flush();
$words=‘‘;
foreach($array_diff as $k=>$word){
$words.=$word."\t1\r\nx:1\r\n";
}
//echo $words;
file_put_contents(‘words_new.txt‘,$words,FILE_APPEND);
echo ‘done!‘;

function dealChinese($str,$join=‘‘){
preg_match_all(‘/[\x{4e00}-\x{9fff}]+/u‘, $str, $matches); //将中文字符全部匹配出来
$str = join($join, $matches[0]); //从匹配结果中重新组合
return $str;
}
?>

  使用方法如下:

  1. 把words.txt,转换工具words_format.php及c:\coreseek\etc\unigram.txt三个文件放到能运行php的 服务器同一个目录下.

  2. 然后访问words_format.php .

  3. 等待程序运行完,时间长短要看你词的多少,太多的话中间可能假死。运行完后会在相同目录下生产 words_new.txt把这个文件加到原unigram.txt的后面,保存备用.

  4. 把上面得到的文件unigram.txt复制到C:\coreseek\bin然后在命令行下进入目录C:\coreseek\bin 执行 mmseg -u unigram.txt 该命令执行后,将会在unigram.txt所在目录中产生一个名为unigram.txt.uni的文件 ,将该文件改名为uni.lib,完成词典的构造。

  5. 测试新词库能否正解分词。在C:\coreseek\bin下新建文本文件test.txt。输入要测试的关键词。 例如:四季服装网中大面料辅料,然后保存。当中一定要包含你新加进词库的某个关键词。例如四季服装网是我新加的 关键词。然后在刚才的命令行下执行mmseg -d C:\coreseek\bin test.txt>result.txt .执行完后打开新生产 的结果文件result.txt .如果看到分词结果类似四季服装网/x 中大/x 面料/x 辅料/x 的话证明词库已正确生成, 如果看到新关键词被分切开如: 四/x 季/x 服/x 装/x网/x 中大/x 面料/x 辅料/x的话就说明新的词库并不正确。 要检查一下哪里出错了,重新生产。

  6. 再把得到的uni.lib复制到C:\coreseek\etc覆盖原文件就大功告成了

时间: 2025-01-14 10:13:22

打造自己的coreseek分词词库的相关文章

mmseg自定义分词词库

下面给大家介绍一下如何打造自己的coreseek分词词库. coreseek自身带的词库不是很大,直接使用它分词可能会返回大量没用结果.要想搜索结果准确打造一个专门的分词 词库必不可少. i. 首先到搜狗http://pinyin#sogou#com/dict/下载你要的词库 ii. 因为下载回来的词库不是文本文件我们不能直接使用,所以要先转换成文本文件.网上找一个搜狗转 google的小工具,用它把你下载的全部词库转成文本文件.合并为一个文件命名为words.txt.文件要用utf8编码 保存

coreseek 自定义词库(三)排序 setsortmode

对于mysql获取数据,可以根据不同的条件来进行排序,同样使用coreseek也有同样的排序功能. PHP的API中只有 SetSortMode(模式,条件) 方法,他也支持多个字段一次排序. 根据上一篇的数据: require('sphinxapi.php'); $sc = new SphinxClient(); $sc->SetSortMode(SPH_SORT_ATTR_DESC, 'group_id'); $sc->SetSortMode(SPH_SORT_ATTR_ASC, 'sco

coreseek 自定义词库(四)数据过滤

条件过滤在列表中是常用的功能,使用mysql数据库和sphinx进行搜索需要安装sphinx引擎 mysql命令行中, show engine sphinx states; 可以查看是否有  sphinxex引擎,如果没有则需要安装,否则无法使用这样的语句: select * from documents where group_id = 2 and query='@title 测试;mode=extended'; 安装sphinx引擎大家可以参考: http://blog.zhuyin.org

solr学习文档之添加分词词库

在上一篇文章中我们学习了solr的快速入门和针对mysql数据库建立索引,今天我们介绍如何为solr添加中文分词 1.  在百度搜索ik-analyzer,找到后下载,我下载的是[IKAnalyzer 2012FF_hf1.zip],解压后会看到如下目录 2.  把IKAnalyzer2012FF_u1.jar拷贝到webapps下solr的lib文件夹下,把IKAnalyzer.cfg.xml和stopword.dic拷贝到solr的conf目录中 3.  修改schema.xml文件,增加如

Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库

文章转载自:http://www.cnblogs.com/dennisit/archive/2013/04/07/3005847.html 方案一: 基于配置的词典扩充 项目结构图如下: IK分词器还支持通过配置IKAnalyzer.cfg.xml文件来扩充您的专有词典.谷歌拼音词库下载: http://ishare.iask.sina.com.cn/f/14446921.html?from=like在web项目的src目录下创建IKAnalyzer.cfg.xml文件,内容如下 <?xml v

solr添加中文IK分词器,以及配置自定义词库

Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置,而且附带了一个基于HTTP 的管理界面.Solr已经在众多大型的网站中使用,较为成熟和稳定.Solr 包装并扩展了Lucene,所以Solr的基本上沿用了Lucene的相关术语.更重要的是,Solr 创建的索引与 Lucene搜索引擎库完全兼容.通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以

30.IK分词器配置文件讲解以及自定义词库

主要知识点: 知道IK默认的配置文件信息 自定义词库 一.ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用来配置自定义词库 main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起 quantifier.dic:放了一些单位相关的词 suffix.dic:放了一些后缀 surname.dic:中国的姓氏 stopword.dic:英文停用词 ik原生最重要的两个配置文件 main.dic:包含

coreseek/sphinx自定义词库

1.在一些专业领域中,全文搜索需要定义专业的名词,这里以化学为例来说明自定义词库 国内只有搜狗提供公开词库 网址是:http://pinyin.sogou.com/dict/ 有些可以直接下载TXT的,有些则需要自己处理成txt文件,如果能下载txt的则只需要更改一下就可以,如果不能下载,则用其他软件或者自己手写一个,我用的是深蓝提供的词库转换工具 假设以上步骤已经完成,txt文件已经生成,则只需要下面的步骤就可以生成词库 mmseg词库的格式是 中文词 \t 1 x:1 由于生成的txt文件的

IK分词器使用自定义词库

1.拷贝IKAnalyzer.cfg.xml到WEB-INF/classes下,IKAnalyzer.cfg.xml内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  <properties>      <comment>IK