文档章节

go语言调用API实线分词

Java_Coder
 Java_Coder
发布于 2015/06/09 21:26
字数 271
阅读 71
收藏 3

1、确保已经安装go语言

2、代码实现

A.这里我采用了开源的API,https://github.com/denghongcai/pullword,简单的实现了功能

B.代码:

package pullword

import (
	"bufio"
	"fmt"
	"net"
	"strings"
)

type request struct {
	source string
	param1 float32
	param2 uint
}

func NewRequest(source string, threshold float32, debug bool) request {
	var param2 uint
	if debug {
		param2 = 1
	} else {
		param2 = 0
	}

	return request{
		source: source,
		param1: threshold,
		param2: param2,
	}
}

func (req request) Do() ([]string, error) {
	conn, err := net.Dial("tcp", "api.pullword.com:2015")
	if err != nil {
		return nil, err
	}
	writer := bufio.NewWriter(conn)
	_, err = writer.WriteString(fmt.Sprintf("%s\t%1.2f\t%d]\r\n", req.source, req.param1, req.param2))
	if err != nil {
		return nil, err
	}
	writer.Flush()
	if err != nil {
		return nil, err
	}
	scanner := bufio.NewScanner(conn)
	list := make([]string, 0)
	for scanner.Scan() {
		if scanner.Text() != "\r\n" && scanner.Text() != "" {
			list = append(list, strings.Trim(scanner.Text(), "\r\n"))
		}
	}
	if err := scanner.Err(); err != nil {
		return nil, err
	}
	return list, nil
}

package main

import (
	"fmt"
	"os"
	"pullword"
	"io/ioutil"    
)

func main() {

	result_str := ""
	
	result_str = readFile("/home/tian/Desktop/test.txt")

	req := pullword.NewRequest(result_str, 1, true)
	result, err := req.Do()
	if err != nil {
		panic(err)
	}
	fmt.Printf("%q", result)

}

func readFile(path string) string {  
    fi,err := os.Open(path)  
    if err != nil{panic(err)}  
    defer fi.Close()  
    fd,err := ioutil.ReadAll(fi)  
    return string(fd) 
}

test.txt
你的姿势水平还远远不够

C.运行结果:

["姿势:1" "水平:1" "远远:1" "不够:1"]


© 著作权归作者所有

共有 人打赏支持
Java_Coder
粉丝 59
博文 159
码字总数 102864
作品 0
杭州
狮子的魂/jcseg

Jcseg是什么? Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直...

狮子的魂
2013/11/16
0
0
JAVA自然语言处理NLP工具包

Java自然语言处理 LingPipe LingPipe 是一个自然语言处理的Java开源工具包。LingPipe目前已有很丰富的功能,包括主题分类(Top Classification)、命名实体识别(Named Entity Recognition)...

javaex999
2014/05/05
0
0
Lucene小记(入门篇),索引创建、更新、删除、查找等操作。

虽然使用Lucene已经有一段时间了,但是仍不敢妄加评论Lucene的好与坏,毕竟目前接触的全文索引技术只有Lucene。而且Lucene并不是真正意义上的引擎,只算的上是Java开发的全文索引工具包。与传...

Jialy
2014/06/26
0
9
iOS自带超强中文分词器

说明 在处理文本的时候,第一步往往是将字符串进行分词,得到一个个关键词。苹果从很早就开始支持中文分词了,而且我们几乎人人每天都会用到,回想一下,在使用手机时,长按一段文字,往往会...

cloudox_
2017/06/05
0
0
Spring之AntPathMatcher

前言 AntPathMatcher是什么?主要用来解决什么问题? 背景:在做uri匹配规则发现这个类,根据spring源码对该类进行分析,它主要用来做类URLs字符串匹配; 效果 可以做URLs匹配,规则如下 ?匹...

凌渡冰
2016/09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jQuery学习笔记180923

jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些: addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一个或多个类 toggleClass() - 对被选...

颖伙虫
21分钟前
0
0
[python] colorama 模块 - 改变控制台输出文本的颜色

除了使用 PyQt 这样的图形化开发框架外,基本上 python 程序都是跑在控制台中的。很多时候,单纯使用黑白的文字不能很好地突出我们要显示的信息。有时候我们需要将错误的提示使用红色标注,而...

cometeme
25分钟前
0
0
Makefile 学习 2 - 基于若干 Blog 的汇总

基于若干 Blog 汇总的 makefile 教程 陈皓 https://blog.csdn.net/haoel/article/details/2886 Makefile 进阶 1. Makefile 中的内容 显式规则。显式规则说明了,如何生成一个或多的的目标文件...

公孙衍
41分钟前
0
0
NIO与BIO的区别、NIO的运行原理和并发使用场景

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的...

Java干货分享
59分钟前
1
0
72.告警系统邮件引擎 运行告警系统

20.23/20.24/20.25 告警系统邮件引擎 20.26 运行告警系统 20.23/20.24/20.25 告警系统邮件引擎 邮件首先要有一个mail.py,以下。 因为我们之前zabbix的时候做过,就可以直接拷贝过来 mail.s...

王鑫linux
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部