zoukankan      html  css  js  c++  java
  • util.go

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

  • 相关阅读:
    Variable() placeholder() constant() 的区别
    scrapy-redis+selenium+webdriver 部署到linux上
    scrapy-redis+selenium+webdriver解决动态代理ip和user-agent的问题(全网唯一完整代码解决方案)
    [学习记录]NLTK常见操作二(分句,分词,词干提取)
    [学习记录]NLTK常见操作一(去网页标记,统计词频,去停用词)
    [学习记录]python正则表达式
    [学习记录]MySQL之初级查询语句(select,where)
    [学习记录]pymysql的基本操作
    [学习记录]MySQL临时整理
    [学习记录]面对wxpython的长跑(100米:wxpython安装,相关文件,wx.App,wx.Frame)
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7461991.html
Copyright © 2011-2022 走看看