一款语义分词工具,是c++写的想把它封装编译到php的扩展里,求高手指导

砂锅居士 发布于 2015/05/18 10:48
阅读 181
收藏 0
PHP

https://github.com/milkcat/MilkCat 分词工具地址。

C++扩展php只会一些简单的,下边是官方给的一个C++接口demo.

#include <milkcat.h>
#include <stdio.h>

using milkcat::Parser;

int main() {
  Parser parser;
  Parser::Iterator it;

  if (parser.ok()) {
    parser.Predict(&it, "我的猫喜欢喝牛奶。");
    while (it.Next()) {
      printf("%s/%s  ", it.word(), it.part_of_speech_tag());
    }
    putchar('\n');
  } else {
    printf("error: %s\n", milkcat::LastError());
  }
  return 0;
}
通过ext_skel生成了扩展骨架代码如何把这上边段C++代码集成进去,实现php一个函数接收参数,执行分词结果,下边是我写的肯定错误的,求高手指导(C++基本忘干净了,T_T)。

/* }}} */
/* {{{ proto string a
 
*/
PHP_FUNCTION(a)  
{  
	Parser parser;
	Parser::Iterator it;
    int argc = ZEND_NUM_ARGS();  
	char *word;
	int word_len;
	int result_length;
	int result;
    if (zend_parse_parameters(argc TSRMLS_CC, "sl",&word, &word_len, $n) == FAILURE)   
        return;   
	if (parser.ok()) {
		parser.Predict(&it, &word);
		while (it.Next()) {
		  result=	it.word();
		  result_length = sizeof(result) - 1;
		  RETURN_STRINGL(result, result_length, 0); 
		  php_printf("!\n");
		}
	  } else {
		php_printf("error");
	  }  
}
/* }}} */



加载中
0
eechen
eechen
这是Swoole作者写的PECL开发入门视频教程:
http://wiki.swoole.com/wiki/page/238.html
如果你需要中文分词,XunSearch作者已经为PHP开发了一个scws中文分词PECL扩展并提供词库.
http://www.xunsearch.com/scws/docs.php#instscws
http://www.xunsearch.com/scws/demo/v48.php
砂锅居士
砂锅居士
回复 @eechen : scws对英文不是很友好,找的这个对自然语义分析还算可以,不过这个真不知道咋写api
eechen
eechen
回复 @Tuesday : 包里面没有提供5.5,5.6的Windows二进制库不代表不支持.我在Ubuntu上编译安装没有任何问题.
Tuesday
Tuesday
不支持php5.5, 5.6.....
0
铂金胖子
铂金胖子
分词可以试试结巴:https://github.com/fukuball/jieba-php
砂锅居士
砂锅居士
侧重的是语义分析,就没有好心人给这东西写个PHP扩展T_T
返回顶部
顶部