Scws.class.php
2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
class Util_Ws_Adapter_Scws extends Util_Ws_Adapter_Abstract
{
private $_scws = null;
public function __construct($options = array())
{
$this->_scws = scws_new();
if(isset($options['charset']))
{
$charset = $options['charset'];
}
else
{
$charset = 'utf8';
}
$this->_scws->set_charset($charset);
if(isset($options['rule_path']))
{
$this->_scws->set_rule($options['rule_path']);
}
if(isset($options['dict_path']))
{
$this->_scws->set_dict($options['dict_path']);
}
}
/**
* 获取分词
*
* @param string $inputs
* @return mixed
*/
public function getWords($inputs)
{
$res = array();
$this->_scws->send_text($inputs);
while($tmp = $this->get_result())
{
$res[] = $tmp;
}
return $res;
}
/**
* 获取最关键词汇列表
*
* @param string $inputs
* @param int $limit 返回的词的最大数量
* @param int $attr 是一系列词性组成的字符串,各词性之间以半角的逗号隔开
*/
public function getTopWords($inputs, $limit = 10, $attr = '')
{
$this->_scws->send_text($inputs);
return $this->_scws->get_tops($limit, $attr);
}
/**
* 添加字典
*
* @param string $dict_path
* @param int $mode(SCWS_XDICT_XDB: 读取 xdb 文件 , SCWS_XDICT_MEM: 将 xdb 文件全部加载到内存中,以 XTree 结构存放, SCWS_XDICT_TXT: 文本词典)
*/
public function addDict($dict_path, $mode = '')
{
$this->_scws->add_dict($dict_path, $mode);
return $this;
}
/**
* 设定分词返回结果时是否去除一些特殊的标点符号之类
*
* @param boolean $state
*/
public function setIgnore($state)
{
$this->_scws->set_ignore($state);
return $this;
}
/**
* 设定分词返回结果时是否复合分割,
* 如“中国人”返回“中国+人+中国人”三个词。
*
* @param int $mode( 按位异或的 1 | 2 | 4 | 8 分别表示: 短词 | 二元 | 主要单字 | 所有单字)
*/
public function setMulti($mode)
{
$this->_scws->set_multi($mode);
return $this;
}
/**
* 设定是否将闲散文字自动以二字分词法聚合
*
* @param boolean $state
*/
public function setDuality($state)
{
$this->_scws->set_duality($state);
return $this;
}
/**
* 是否包括符合词性要求的关键词
*
* @param string $inputs
* @param string $attr
* @return boolean
*/
public function hasWords($inputs, $attr = '')
{
$this->_scws->send_text($inputs);
return $this->_scws->has_words($attr);
}
public function __destruct()
{
$this->_scws->close();
}
}