packagesego

import(
    "bytes"
    "fmt"
)

//输出分词结果为字符串
//
//有两种输出模式,以"中华人民共和国"为例
//
//普通模式(searchMode=false)输出一个分词"中华人民共和国/ns"
//搜索模式(searchMode=true)输出普通模式的再细致切分:
//"中华/nz人民/n共和/nz共和国/ns人民共和国/nt中华人民共和国/ns"
//
//搜索模式主要用于给搜索引擎提供尽可能多的关键字,详情请见Token结构体的注释。
funcSegmentsToString(segs[]Segment,searchModebool)(outputstring){
    ifsearchMode{
        for_,seg:=rangesegs{
            output+=tokenToString(seg.token)
        }
    }else{
        for_,seg:=rangesegs{
            output+=fmt.Sprintf(
                "%s/%s",textSliceToString(seg.token.text),seg.token.pos)
        }
    }
    return
}

functokenToString(token*Token)(outputstring){
    for_,s:=rangetoken.segments{
        output+=tokenToString(s.token)
    }
    output+=fmt.Sprintf("%s/%s",textSliceToString(token.text),token.pos)
    return
}

//输出分词结果到一个字符串slice
//
//有两种输出模式,以"中华人民共和国"为例
//
//普通模式(searchMode=false)输出一个分词"[中华人民共和国]"
//搜索模式(searchMode=true)输出普通模式的再细致切分:
//"[中华人民共和共和国人民共和国中华人民共和国]"
//
//搜索模式主要用于给搜索引擎提供尽可能多的关键字,详情请见Token结构体的注释。

funcSegmentsToSlice(segs[]Segment,searchModebool)(output[]string){
    ifsearchMode{
        for_,seg:=rangesegs{
            output=append(output,tokenToSlice(seg.token)...)
        }
    }else{
        for_,seg:=rangesegs{
            output=append(output,seg.token.Text())
        }
    }
    return
}

functokenToSlice(token*Token)(output[]string){
    for_,s:=rangetoken.segments{
        output=append(output,tokenToSlice(s.token)...)
    }
    output=append(output,textSliceToString(token.text))
    returnoutput
}

//将多个字元拼接一个字符串输出
functextSliceToString(text[]Text)string{
    varoutputstring
    for_,word:=rangetext{
        output+=string(word)
    }
    returnoutput
}

//返回多个字元的字节总长度
functextSliceByteLength(text[]Text)(lengthint){
    for_,word:=rangetext{
        length+=len(word)
    }
    return
}

functextSliceToBytes(text[]Text)[]byte{
    varbufbytes.Buffer
    for_,word:=rangetext{
        buf.Write(word)
    }
    returnbuf.Bytes()
}

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

util.go的更多相关文章

  1. java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager

    问题: 使用Springboot打包为war部署于Tomcat7中报错 java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringMa ...

  2. 【转】java.util.Arrays.asList 的用法

    DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.A ...

  3. Java程序日志:java.util.logging.Logger类

    一.Logger 的级别 比log4j的级别详细,全部定义在java.util.logging.Level里面.各级别按降序排列如下:SEVERE(最高值)WARNINGINFOCONFIGFINEF ...

  4. Android中使用java.util.Properties犯的错

    今天尝试使用java.util.Properties来保存应用配置,然而遇到了好几个问题,对于熟悉此内容的来说可能都是猪一样的错误,但难免有像我一样的新手再次遇到,希望此文能有所帮助. 错误1 jav ...

  5. java.util.ConcurrentModificationException 解决办法(转载)

    今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码:   public cla ...

  6. java util 下的concurrent包

    ------------------------------------------java util 下的concurrent包--------并发包--------------------.jav ...

  7. 原子类java.util.concurrent.atomic.*原理分析

    原子类java.util.concurrent.atomic.*原理分析 在并发编程下,原子操作类的应用可以说是无处不在的.为解决线程安全的读写提供了很大的便利. 原子类保证原子的两个关键的点就是:可 ...

  8. 错误:java.util.Map is an interface, and JAXB can't handle interfaces.

    问题: 在整合spring+cxf时报错java.util.Map is an interface, and JAXB can't handle interfaces. 解决方法: 将服务端的serv ...

  9. 解决springmvc报No converter found for return value of type: class java.util.ArrayList问题

    一.背景 最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回Lis ...

  10. Java源码之 java.util.concurrent 学习笔记01

    准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~ 参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习! 包下的代码结构分类: 1.ja ...

随机推荐

  1. 解读Raft(四 成员变更)

    将成员变更纳入到算法中是Raft易于应用到实践中的关键,相对于Paxos,它给出了明确的变更过程(实践的基础,任何现实的系统中都会遇到因为硬件故障等原因引起的节点变更的操作). 显然,我们可以通过sh ...

  2. Salesforce Lightning开发学习(二)Component组件开发实践

    lightning的组件区分标准组件.自定义组件和AppExchange组件.标准组件由SF提供,自定义组件由developer自行开发,AppExchange组件由合作伙伴建立.下面我们写一个简单的 ...

  3. spring的优缺点

    它是一个开源的项目,而且目前非常活跃:它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫 你必须在每一层 中必须使用Spring,因为它 ...

  4. 电商网站开发记录(三) Spring的引入,以及配置详解

    1.web.xml配置注解<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=& ...

  5. 利用Python进行数据分析

    最近在阅读<利用Python进行数据分析>,本篇博文作为读书笔记 ,记录一下阅读书签和实践心得. 准备工作 python环境配置好了,可以参见我之前的博文<基于Python的数据分析 ...

  6. npoi生成excel流并在客户端下载(html+后台 )

    //前端页面 <body> <input type="button" value="导出Excel" class="button&q ...

  7. C#备份及还原数据库的实现

    使用前要导入SQLDMO.dll 下载地址:http://down.51cto.com/data/853937 1.在用户的配置时,我们需要列出当前局域网内所有的数据库服务器,并且要列出指定服务器的所 ...

  8. Java父类对象调用子类实体:方法重写与动态调用

    众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例 ...

  9. 时间复杂度O(n),空间复杂度O(1)解斐波那契数列

    #include <stdio.h> #include <iostream> using namespace std; long long fibs1(int in_iN) { ...

  10. JS入门熟知

    JS是面向对象的语言 封装 继承 多态 聚集(对象中具有引用其他对象的能力) JS使用中绝大多数情况不需要进行面向对象的设计,很多情况是使用已经设计好,准备好的对象,基于对象的语言. JS的使用(引入 ...