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. mysql基础优化-explain的使用-mysql死锁

    MySQL的优化 主要包括三个方面,首先是SQL语句的优化,其次是表结构的优化(这里主要指索引的优化),最后是服务器配置的优化. 一.SQL语句的优化 在 where 及 order by 涉及的列上 ...

  2. 03_Linux FTP

    linux搭建ftp server,在windows向上传 http://www.2cto.com/os/201204/126898.html yum install vsftp.rpm    安装v ...

  3. SpringBoot功能持续更新

    [定时任务] 1.启动总开关 @EnableScheduling加在@SpringBootApplication注解的start入口处,表示启动总开关 @SpringBootApplication @ ...

  4. unity零基础开始学习做游戏(二)让你的对象动起来

    -------小基原创,转载请给我一个面子 小基认为电子游戏与电影最重要的区别就是交互,如果电子游戏没有让你输入的交互功能的话,全程都"只可远观,而不可鼓捣"的话,你可能是在看视频 ...

  5. FFMpeg编译之路

    为了编译这个东西,快折腾了一个星期了.期间经历了很多痛苦的过程,今天我把整个过程,以及在这个过程的感悟写下来,以备日后查看,也希望能帮到一些像我一样的兄弟姐妹. 在这一个星期里前前后后加起来总共使用了 ...

  6. FFPLAY的原理(一)

    概要 电影文件有很多基本的组成部分.首先,文件本身被称为容器Container,容器的类型决定了信息被存放在文件中的位置.AVI和Quicktime就 是容器的例子.接着,你有一组流,例如,你经常有的 ...

  7. Django Channels 入门指南

    http://www.oschina.NET/translate/in_deep_with_django_channels_the_future_of_real_time_apps_in_django ...

  8. Ubuntu16.04下安装Hive

    上一篇博客我们已经说过了要如何安装Hadoop,别忘记了我们的目的是安装Hive.所以这篇博客,我就来介绍一下如何安装Hive. 一.环境准备 (1)Vmware (2)  Ubuntu 16.04 ...

  9. C#读取shp文件并获取图形保存到sde要素类中(不使用ESRI的类库,纯c#实现)

    说明:首先要将sde要素类发布成对应的要素服务,通过对要素服务的操作,实现数据在sde要素类中的增删 //向服务器发出请求 public string getPostData(string postS ...

  10. GenyMotion 配合 Android Studio 的安装

    众所周知,Android Studio 自带的模拟器对内存和CPU消耗都很大却并没有很好的效果,简直是谷歌为了卖手机设计的.而Geny Motion 对机能的要求大大降低,又不会像自带模拟器那么卡.G ...