go语言调用API实线分词
go语言调用API实线分词
Java_Coder 发表于3年前
go语言调用API实线分词
  • 发表于 3年前
  • 阅读 70
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 利用go语言实线分词,入门水平。

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"]


标签: go语言
共有 人打赏支持
粉丝 57
博文 155
码字总数 102864
×
Java_Coder
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: