百科 教育 动画 游戏 博览 网址 金融 搜搜 资料 新闻
触屏版

close ◇ 读取数据,请稍候 Loading...

.: Welcome to flymote.com [flymot.com] :.

网页太慢?试试: 或 [ 刷新 ]




  »

◆ 其它资料:.
第九套广播体操 分享(1252)
佳木斯快乐舞步视频分享(1970)
缩略图处理函数模块(2068)
投票功能模块(2378)
五行健康操 分享(2378)
纯PHP编写的PHP 简易中文分词(SCWS) sqlite词典工具(2834)
Flash网上投票系统 PHP李茂祥修改版 含flash源文件(4385)
读写 ini 文件的类(5360)
RSSLite RSS处理类(5375)
Access XML导入Mysql数据库的程序(5377)

纯PHP编写的PHP 简易中文分词(SCWS) sqlite词典工具

2010-02-27        阅读: 2834   【本类别其它资料】 【资料库首页
上一篇 收藏 评论 打印 收藏夹 发布 下一篇

PHP 简易中文分词(SCWS) 的 SCWS23 使用,用于WEB 网站,PHP5环境下,SQLite词库生成及添加工具;本程序是在命令行下使用的,具体的,参看第二页使用说明。
〖PHP 简易中文分词(SCWS) SQLite词库〗
<?php
// make sqlite file from plain text dictionary (only support gbk) by limaoxiang 20100226
// $Id: $

if (!defined('_WORD_ALONE_')) define ('_WORD_ALONE_'0x4000000);
if (!
defined('_WORD_PART_')) define ('_WORD_PART_',    0x8000000);

ini_set('memory_limit''1024M');
set_time_limit(0);
if (!isset(
$_SERVER['argv'][1]))
{
    echo 
"Usage: {$_SERVER['argv'][0]} <sqlite_db file> [input file]\n";
    exit(
0);
}
if (!
extension_loaded('sqlite'))
        die(
'您的 PHP 环境缺少 `sqlite` 扩展, 请重新配置 PHP');

$input = isset($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : 'php://stdin';
if (!(
$fd = @fopen($input'r')))
{
    echo 
"ERROR: can not open the input file: {$input}\n";
    exit(
0);
}

//
$output $_SERVER['argv'][1];
if (
file_exists($output))
    echo 
"Notice: output db file exists: $output\n";


if (
$xdb sqlite_popen($output0666$sqliteerror)) { 
    @
sqlite_unbuffered_query($xdb'CREATE TABLE _wordlist (id INTEGER NOT NULL PRIMARY KEY, word CHAR(32), freq BIGINT)');
    @
sqlite_unbuffered_query($xdb" CREATE UNIQUE INDEX _wordidx ON _wordlist (word)");
} else {
    die(
$sqliteerror);
}

// load data
$total $aaa 0;
$rec = array();
echo 
"INFO: Loading text file data ... ";
    while (
$line fgets($fd256))
            {
                
$line trim($line);
                list(
$word$freq) = explode("\t"$line2);
                if (
strlen($word) < 4)
                    continue;
                    
                
$first substr($word02);
                if (!isset(
$dict[$first])) $dict[$first] = array();
                    
                
// 处理词
                
$val = @$dict[$first][$word];
                if (!
$val || !($val _WORD_ALONE_))
                {
                    if (!
$val$val 0;
                    else 
$val &= _WORD_PART_;
                        
                    
$val |= _WORD_ALONE_;
                    
$val += $freq;
                    
$dict[$first][$word] = $val;
                }
                    
                
// 处理词段
                
$len strlen($word);
                while (
$len 4)
                {
                    
$len -= 2;
                    
$word substr($word0, -2);
                    if (!isset(
$dict[$first][$word]))
                        
$dict[$first][$word] = 0;
                    
$dict[$first][$word] |= _WORD_PART_;
                }
            }                
            
fclose($fd);
$a count($dict); $b=0;
foreach (
$dict as $key =>$value){
    
$b++;$c count($value);
    echo 
"\n starting insert into DB: $b / $a [$c words in this]\n";
    foreach (
$value as $k =>$v){
        
$word sqlite_escape_string($k);
        
$v intval($v);
        echo 
"+";
        
sqlite_unbuffered_query($xdb"insert into _wordlist (word,freq) values ('$word',$v)");
    }
}
$a sqlite_single_query ($xdb,"select count(*) from _wordlist");
echo 
"\n OK, Total words=$a\n";
echo 
"DONE!\n";
?>
责任编辑: admin
下一页:使用说明 »

【最近的搜索】:

上一篇 收藏 评论 打印 收藏夹 发布 下一篇
平均得分 0, 共 0 人评分
1 2 3 4 5 6 7 8 9 10
CopyRight(c) 2007 - 2017 All Rights Reserved  【赣ICP备12001042号】
触屏版 | Archiver 20170925 10:34 | 简介 | 帮助 | 留言 | 关于 | 360网站安全检测平台