<?php
Class ContentSim {
var $analysis;
var $word_limit = 20;
public function __construct(){
$this->analysis = scws_new();
$this->analysis->set_charset('utf8');
}
public function get_tfidf($txt){
$word_ret = array();
$this->analysis->send_text($txt);
$total = 0;
while($result = $this->analysis->get_result()){
$total++;
foreach($result as $v){
if(mb_strlen($v['word'],"UTF-8")<=1) continue;
if(preg_match("/[^\w\s]+/u",$v['word'])){
continue;
}
if( array_key_exists($v['word'] , $word_ret) ){
$v["cnt"]=intval($word_ret[$v["word"]]["cnt"])+1;
}
else{
$v["cnt"] = 1;
}
$word_ret[$v["word"]] = $v;
}
}
$sort = array();
foreach ($word_ret as $key => $row) {
$sort[$key] = round(($row['cnt']/$total) * $row['idf'],2);
}
unset($word_ret);
arsort($sort);
return $sort;
}
public function combine_word($arr1,$arr2){
$word_array = array();
foreach($arr1 as $k=>$v){
$word_array[$k] = array($v,0);
}
foreach($arr2 as $k=>$v){
if( !array_key_exists($k , $word_array) ){
$word_array[$k] = array(0,$v);
}else{
$word_array[$k][1] = $v;
}
}
return $word_array;
}
public function sim_value($arr1,$arr2) {
$words = $this->combine_word($arr1,$arr2);
unset($arr1);unset($arr2);
$c = 0;$s1 = $s2 = 0;
foreach($words as $row){
$c += floatval($row[0]) * floatval($row[1]);
$s1 += pow(floatval($row[0]),2);
$s2 += pow(floatval($row[1]),2);
}
$f = $c / (sqrt($s1) * sqrt($s2));
return $f;
}
public function close_analysis(){
$this->analysis->close();
}
}
$txt1 = '';
$txt2 = '';
$ContentSim = new ContentSim ( );
$txt_ret1 = $ContentSim->get_tfidf($text1);
$txt_ret2 = $ContentSim->get_tfidf($text2);
$result = $ContentSim->sim_value($txt_ret1,$txt_ret2);
?>
分享到:
相关推荐
这段代码首先创建了一个SCWS实例,设置字典和规则文件路径,然后将待分词的文本发送给分词器,最后通过循环获取分词结果并输出。SCWS提供了一套完整的API,包括设置分词模式、自定义词典、获取词性等,以满足不同...
"scws中文分词组件"是一个专为处理中文文本而设计的开源工具,它主要用于将连续的汉字序列切分成具有语义的独立词汇,这一过程称为中文分词。中文分词是自然语言处理(NLP)中的基础步骤,对于信息检索、文本分析、...
通过调用这些接口,开发者可以将待分词的文本传入,然后获取到分词后的结果。例如: ```php <?php require_once 'scws.php'; $scws = new Scws(); $scws->init(); $scws->setDict('/path/to/dict.xdb'); // 设置...
中文分词是中文文本相似度计算的基础和前提。SCWS是基于词频词典的机械中文分词引擎,可以将整段的汉字基本正确地切分成词。 2. 停用词: 在信息检索中,集合文献中的停用词是指高于80%的单词,这些词没有实际意义...
4. 编写分词逻辑:在ThinkPHP的控制器或模型中,实例化SCWS类并调用其分词方法。例如: ```php require_once 'path/to/scws/inc/scws.inc.php'; $scws = new \Xscws\Scws(); $scws->setDict('/path/to/dict.dat'...
SCWS除了基本的分词功能外,还提供了关键词提取、关键词权重计算等功能,这对于搜索引擎优化(SEO)、信息检索、文本分析等应用场景非常有用。此外,由于SCWS的轻量级特性,它在资源有限的服务器环境下也能保持良好...
SCWS简易分词PHP扩展模块,现测试在PHP5.3.8通过, 环境为IIS7+FastCGI nts PHP5.3.8 其他PHP5.3.X 理论上应该可用。 该模块为SCWS官方提供的SCWS-1.1.8源码进行编译。 因为官方没有提供 对应的非线程模块。
PHP中文分词扩展 SCWS,可以在windows7下vs2012中编译出来的,支持php5.6.x zts版
SCWS(Simple Chinese Word Segmentation)是一个开源的中文分词库,版本为1.1.7,由C++编写,其主要功能是实现对中文文本的分词处理。中文分词是自然语言处理中的基础步骤,它将连续的汉字序列分割成具有语义的词汇...
// 发送待分词文本 while ($word = scws_get_word($scws)) { echo $word['word'] . PHP_EOL; // 输出分词结果 } scws_close($scws); // 关闭分词对象 ?> ``` 通过以上介绍,我们可以看到SCWS为PHP开发者处理中文...
3. **调用API**:在PHP代码中,通过调用SCWS提供的函数(如`scws_new()`、`scws_send_text()`等)来进行分词操作。 4. **处理结果**:SCWS返回分词结果后,开发者可以进一步处理这些词汇,例如统计词频、分析情感或...
scws是 基于词频词典的中文分词系统,源码包中含有win下php的dll拓展.测试可用
SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词。 词是中文的最小语素单位,但在书写时...
PHP实现SCWS中文分词搜索的方法主要涉及几个重要步骤和技术点。SCWS(Simple Chinese Word Segmentation)是一个基于C语言编写的简单、高效的中文分词系统。它支持自定义字典,同时具备基础的词性标注功能。在中文...
4. **使用实例**:在控制器或模型中,我们可以通过依赖注入或全局助手函数来调用SCWS服务,对用户输入或数据库中的中文文本进行分词处理。例如,在搜索功能中,我们可以先对查询字符串进行分词,然后在数据库中查找...
3. 分词处理:将待分词的中文文本传递给分词器,调用相关函数进行分词操作。 4. 获取结果:分词完成后,可以从分词器中获取分词结果,通常是以数组形式返回。 五、php-scws的应用场景 1. 搜索引擎:在搭建PHP的...
在IT领域,分词系统是文本处理中的一个重要环节,它主要负责将连续的文本字符串分割成有意义的词汇单元,这在搜索引擎、信息检索、自然语言处理等应用中扮演着核心角色。本文将深入探讨"scws+phpanalysis.rar"这个...
通常,使用过程会包括加载分词库、初始化分词器、设置字典路径、输入待分词的文本,然后调用分词函数进行分词,最后输出分词结果。在`index.php`中,你应该能看到如何导入这些类库、实例化对象以及调用相关方法的...
### SCWS简体中文分词辞典txt格式详解 #### SCWS简介 SCWS(Simple Chinese Words Segmentation)是一款基于词频词典的机械中文分词引擎,由hightman开发。该工具能够将连续的汉字序列准确地分割成单独的词语。由于...