求救php中文分词问题

FG2006 2010-07-22 02:28:39
我现在系统中要用到中文分词,从网上找到了scws中文分词系统,用的PSCWS4版本,下载之后写了个测试程序如下:
// 加入头文件
require 'pscws/pscws4.class.php';
header("Content-Type:text/html;charset=utf-8");
// 建立分词类对像, 参数为字符集, 默认为 gbk, 可在后面调用 set_charset 改变
$pscws = new PSCWS4('utf-8');

$pscws->set_ignore('yes');
$pscws->set_dict('E:/scws/etc/dict.utf8.xdb');
$pscws->set_rule('E:/scws/etc/rules_cht.utf8.ini');

// 分词调用 send_text() 将待分词的字符串传入, 紧接着循环调用 get_result() 方法取回一系列分好的词
// 直到 get_result() 返回 false 为止
// 返回的词是一个关联数组, 包含: word 词本身, idf 逆词率(重), off 在text中的偏移, len 长度, attr 词性
//
$text = "中国航天官员应邀到美国与太空总署官员开会";
$pscws->send_text($text);
while ($some = $pscws->get_result())
{
foreach ($some as $word)
{
echo $word['word'].'=>'.$word['attr'].'<br>';

}
flush();
}
$pscws->close();

?>

网页上的显示结果却是:
航天=>nr
?员庽>nr
?员=>nr
...全文
313 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
美人心计1999 2010-07-29
  • 打赏
  • 举报
回复
学习了.......................
xuzuning 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fg2006 的回复:]
资料我看过了,我是想在程序中写一个页面,可以把一些专业的词随时加入到词典中,但是那个基于PHP的导入导出工具不能实现这个吧?
[/Quote]
粗粗看了下,修改它的代码完全可以做到!
不过,实用的代码不是一下就可写出的,况且还要测试呢
程序猿之殇 2010-07-28
  • 打赏
  • 举报
回复
源码:
if (!isset($_SERVER['argv'][1]) || !is_file($_SERVER['argv'][1]))
{
echo "Usage: {$_SERVER['argv'][0]} <xdb file> [output file]\n";
exit(0);
}

$output = isset($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : 'php://stdout';


'argv' 
Array of arguments passed to the script. When the script is run on the command line, this gives C-style access to the command line parameters. When called via the GET method, this will contain the query string.


程序猿之殇 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fg2006 的回复:]
引用 12 楼 jakey9826 的回复:
引用 11 楼 fg2006 的回复:
引用 10 楼 xuzuning 的回复:
由说明
1) 新增功能: 支持载入纯文本词典(TXT), 一次分词可使用多个词典, 以实现不改变核心词库的原则下快速增减词。
可知,应该是支持的

你说的中SCWS-1.1.0 及以上版本,是c版本的,而我用的是PSCWS4,纯php版本的,这个支持吗
……
[/Quote]
没试过怎么知道能不能行,呵呵.
Dleno 2010-07-28
  • 打赏
  • 举报
回复
导入导出工具包里有个make_xdb_file.php文件,你可以根据里面的xdb的数据格式,把你要增加的词汇,追加到你的xdb文件里去。
xujian2009 2010-07-28
  • 打赏
  • 举报
回复
我来学习了,帮顶!
xuzuning 2010-07-28
  • 打赏
  • 举报
回复
开来得装一个测试一番了
FG2006 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jakey9826 的回复:]
引用 11 楼 fg2006 的回复:
引用 10 楼 xuzuning 的回复:
由说明
1) 新增功能: 支持载入纯文本词典(TXT), 一次分词可使用多个词典, 以实现不改变核心词库的原则下快速增减词。
可知,应该是支持的

你说的中SCWS-1.1.0 及以上版本,是c版本的,而我用的是PSCWS4,纯php版本的,这个支持吗

人家不是提供一个基于PHP的导入导出工具吗?……
[/Quote]
资料我看过了,我是想在程序中写一个页面,可以把一些专业的词随时加入到词典中,但是那个基于PHP的导入导出工具不能实现这个吧?
程序猿之殇 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fg2006 的回复:]
引用 10 楼 xuzuning 的回复:
由说明
1) 新增功能: 支持载入纯文本词典(TXT), 一次分词可使用多个词典, 以实现不改变核心词库的原则下快速增减词。
可知,应该是支持的

你说的中SCWS-1.1.0 及以上版本,是c版本的,而我用的是PSCWS4,纯php版本的,这个支持吗
[/Quote]
人家不是提供一个基于PHP的导入导出工具吗?
中文的资料你都自己不查一下.
太懒了.
FG2006 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuzuning 的回复:]
由说明
1) 新增功能: 支持载入纯文本词典(TXT), 一次分词可使用多个词典, 以实现不改变核心词库的原则下快速增减词。
可知,应该是支持的
[/Quote]
你说的中SCWS-1.1.0 及以上版本,是c版本的,而我用的是PSCWS4,纯php版本的,这个支持吗
xuzuning 2010-07-28
  • 打赏
  • 举报
回复
由说明
1) 新增功能: 支持载入纯文本词典(TXT), 一次分词可使用多个词典, 以实现不改变核心词库的原则下快速增减词。
可知,应该是支持的
FG2006 2010-07-28
  • 打赏
  • 举报
回复
谢谢大家的回答,还想问一下:PSCWS4这个版本支持文本词典添加自定义词库吗?
amani11 2010-07-22
  • 打赏
  • 举报
回复
中文最有名的就这个了吧
fxs_2008 2010-07-22
  • 打赏
  • 举报
回复
up一下,开源的中文分词系统各位都用什么?
程序猿之殇 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jakey9826 的回复:]
$pscws = new PSCWS4('utf-8');
=>
$pscws = new PSCWS4();
$pscws->set_charset("utf-8");
[/Quote]
就是这个问题.
见源码

// 构造函数
function PSCWS4($charset = 'gbk')
{
$this->_xd = false;
$this->_rs = $this->_rd = array();
$this->set_charset($charset);
}

// FOR PHP5
function __construct() { $this->PSCWS4(); }

呵呵,明白了吧
kyzy_yy_pm 2010-07-22
  • 打赏
  • 举报
回复
很像截到汉字上的样子
kyzy_yy_pm 2010-07-22
  • 打赏
  • 举报
回复
估计是截取的时候长度没弄好(编码的关系),没考虑编码或者汉字(汉字的可能性小,本身是汉字处理,要不考虑汉字估计不可能了)
程序猿之殇 2010-07-22
  • 打赏
  • 举报
回复
$pscws = new PSCWS4('utf-8');
=>
$pscws = new PSCWS4();
$pscws->set_charset("utf-8");
kyzy_yy_pm 2010-07-22
  • 打赏
  • 举报
回复
你本页面时什么编码的啊?
xuzuning 2010-07-22
  • 打赏
  • 举报
回复
帖出
print_r($some)
的结果

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧