function LbinToGbin($binarydata) {
$hex = bin2hex($binarydata);
$strlen = strlen($hex);
$hex_arr = array();
$j = 0;
for($i=0; $i<$strlen; $i++){
if($i%2 == 0){
$hex_array[$j] = $hex[$i];
}else{
$hex_array[$j] .= $hex[$i];
$j++;
}
}
$hex_array = array_reverse($hex_array);
foreach($hex_array as $v){
$newhex .= $v;
}
$bin = "";
$i = 0;
do {
$bin .= chr(hexdec($newhex{$i}.$newhex{($i + 1)}));
$i += 2;
} while ($i < strlen($newhex));
return $bin;
}
只试过SvmLight 与 LibSvm,好像也是主流,其它性能不知如何。
史称 |
作者 |
机构 |
语言 |
环境 |
多类 |
回归 |
说明 |
BSVM |
Chih-Wei Hsu and Chih-Jen Lin |
National Taiwan University |
C++ |
Win |
Yes |
Yes |
|
Equbits Foresight |
Equbits LLC |
Equbits LLC |
SDK |
Win |
??? |
Yes |
Commercial. Contact Equibits LLC for details |
Gini-SVM |
Shantanu Chakrabartty |
Johns Hopkins University |
C++ |
No |
Yes |
Yes |
Handles non positive definite kernels |
HeroSvm |
Jianxiong Dong |
Concordia University |
C++ |
Win |
Yes |
No |
Optimized for Pentium 4 |
LEARNSC |
Vojislav Kecman |
|
Matlab p-files |
N/A |
Yes |
Yes |
Must pay for source! |
LIBSVM |
Chih-Chung Chang, Chih-Jen Lin |
National Taiwan University |
C++, Java, Python, R, MATLAB, Perl, Ruby |
Win/*nix |
Yes |
Yes |
Graphic interface available |
LS-SVMlab |
Kristiaan Pelckmans, Johan Suykens |
Katholieke Universiteit Leuven |
Matlab |
Win/*nix |
Yes |
Yes |
Comes with platform-specific MEX files |
Matlab SVM Toolbox |
S. R. Gunn |
University of Southampton |
Matlab |
N/A |
No |
Yes |
Includes a simple GUI |
mySVM |
Stefan Ruping |
Universitat Dortmund |
C++ |
Win/*nix |
No |
Yes |
|
OSU |
Junshui Ma, Yi Zhao, and Stanley Ahalt |
Ohio State University |
Matlab |
N/A |
Yes |
Yes |
Matlab interface to LIBSVM |
Parallel GPDT |
T. Serafini, G. Zanghirati, L. Zanni |
Universita di Ferrara |
C++ |
No |
No |
No |
Designed for parallel systems |
pcSVM |
|
Procoders.net |
C |
– |
No |
No |
|
RVMs |
Mike Tipping |
MSR Cambridge |
Matlab |
– |
Yes |
Yes |
|
SpiderSVM |
Jason Weston, Andre Elisseeff , Gokhan BakIr , Fabian Sinz |
Max Planck Institute for Biological Cybernetics |
Matlab |
N/A |
Yes |
Yes |
Part of the Spider machine learning library |
Statistical Pattern Recognition Toolbox for MATLAB |
Vojtech Franc and Vaclav Hlavac |
Czech Technical University Prague |
Matlab/C |
No |
Yes |
No |
Good online documentation. Everything I′ve tried has worked 字串9well. Lots of stuff besides SVMs. |
SVMdark |
Martin Sewell |
University College London |
C |
Win |
No |
Yes |
|
SvmFu |
Ryan Rifkin |
MIT |
C++ |
No |
|
No |
Must be compiled with g++ |
SVMLight |
Thorsten Joachims |
Cornell University |
C |
Win/*nix |
No |
Yes |
|
SVMsequel |
Hal Daume III |
University of Southern California |
OCaml |
No |
Yes |
No |
“Very fast and handles enormous datasets nicely” |
SVMtorch |
Ronan Collobert and Samy Bengio |
IDIAP |
C++ |
No |
? |
Yes |
|
SVM Toolbox |
Gavin Cawley |
University of East Anglia Norwich |
Matlab/C++ |
No |
Yes |
No |
Beta version |
WinSVM |
Martin Sewell |
University College London |
C++ |
Win |
No |
Yes |
|
哈工大社会计算与信息检索研究中心的研究方向包括文本检索、文本挖掘、语言分析、跨语言检索五个方面,研究中心以认知心理学和机器学习为理论,以语言分析为基础研究,以信息抽取、文本检索、跨语言/媒体检索为应用研究,以精准搜索与挖掘系统为应用系统平台。下面是一些它们非常不错的产品。
系统演示
语言技术平台(LTP, Language Technology Platform)
文本挖掘系统(TMS, Text Mining System)
一种改进的基于同义词替换的中文文本信息隐藏方法
作者:甘灿,孙星明,刘玉玲,向凌云
(湖南大学 计算机与通信学院,湖南 长沙410082)
1 基于同义词替换的隐藏算法
基于同义词替换的方法是目前中文自然语言信息隐藏方法中使用最为广泛的方法。在同义词替换中,通过选择载体文本中在某一同义词库中出现的词,并根据一定的编码方式对这些词进行同义词替换,以此来嵌入隐藏信息。这里所谓的同义词,一般定义为“同一种语言中,在一些或全部的义项中具有相同或基本相同的意思的两个或多个词”。若设载体文本为C,隐秘信息为M,隐藏信息后的文本为S,同义词库为D,则有嵌入函数e()和提取函数d(),使得:
e(C,M,D)=S, d(S,D)=M,并且C和S在语义上保持不变。
阅读全文…
分词的原理
1、 英文分词的原理
基本的处理流程是:输入文本、词汇分割、词汇过滤(去除停留词)、词干提取(形态还原)、大写转为小写、结果输出。
2、 中文分词原理
中文分词比较复杂,并没有英文分词那么简单。这主要是因为中文的词与词之间并不像英文中那样用空格来隔开。
主要的方法有三种:基于词典匹配的分词方法、基于语义理解的分词、基于词频统计的分词。
阅读全文…
Levenshtein Distance算法(中文翻译:编辑距离算法) 由俄国科学家Levenshtein在1965年提出。
编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如将kitten一字转成sitting:
sitten (k→s)
sittin (e→i)
sitting (→g)
阅读全文…
思路:在html代码符合规范前提下,分别设置要提取的起始标签和结束标签两个游标,从起始标签s位置顺序查找,直到起始游标大于结束游标,此时闭合标签范围在s到结束游标内。
实现:
$s_tag = “<{$tag}”;
$e_tag = “</{$tag}>”;
$s_next_pos = $e_next_pos = $s_pos = $e_pos = 0;
$loop = 50;
while(1){
$s_pos = strpos($str, $s_tag, $s_next_pos);
$e_pos = strpos($str, $e_tag, $e_next_pos);
$s_next_pos = $s_pos + 1;
$e_next_pos = $e_pos + 1;
if($s_pos > $e_pos)
break;
if($loop– == 0) break;
}
$result = substr($str, 0, $e_pos);