python中文语音识别后-结巴分词以及停用词过滤时遇到的转码问题

原创 2016年06月01日 16:39:30

首先自己建立了一个停用词表,表中有各种符号,没有查询意义的中文词,以及英文词,在语音识别系统运行过程中,始终都维护着一个停用词表,但是在对结巴分词后的词进行过滤的时候出现了编码不一致的情况导致无意义词不能得到有效过滤。后来参考该链接:http://san-yun.iteye.com/blog/1544123,以及使用python的chardet库的detect方法检测字符的字符集属性,然后使用对应的codecs模块的相关方法1、将停用词文本中的字符转化为utf-8类型,2、将结巴分词的结果(本是unicode类型)也转化为utf-8类型,最终的目的即是将两者的字符集保持一致,这样才会达到过滤的效果。

代码如下:可通过修改注释部分结合相关链接,从而了解代码逻辑。最后如期过滤掉了“逗号,于”等字符

# -*- coding: utf-8 -*-
import jieba
import sys,time
import urllib2
import nltk
import os
import codecs
import chardet
recognitionResult = "小明硕士毕业于中国科学院计算所,后在日本京都大学深造"
look = codecs.lookup("gbk")
look2 = codecs.lookup("utf-8")
# print "jsu",chardet.detect(recognitionResult)
def getStopWords(): # 返回停用词list
    global look
    buff = []
    with codecs.open('stop.txt') as fp:
        for ln in fp:
            el = ln[:-2]
            # print "el1",type(el),el,[el],chardet.detect(el)
            buff.append(el)
            # break

            # el = look.decode(el)
            # el = look.encode(el[0])
            # print "el2",type(el),el[0],el,chardet.detect(el[0])
            # buff.append(ln[:-2])
    print 'buff',buff

    return buff


stopWords = getStopWords()


def getKeyWords(recognitionResult):
    global look2
    if len(recognitionResult)<3: # 识别结果无效
        return
    segList = jieba.cut_for_search(recognitionResult)  # 搜索引擎模式进行切割
    # print "原来", ",".join(segList)# generator类型,只能用一次

    keyWords = []
    for el in segList: # 过滤掉无意义的词
        # el = look.decode(el)
        # print 'el11', type(el), el, chardet.detect(el) # el11 <type 'unicode'> 小明
        el = look2.encode(el)[0]
        # print 'el22',type(el),el,[el],chardet.detect(el)
        # keyWords.append(el)
        if el not in stopWords and len(el)>1: #关键词的长度默认大于1
            # print 'el33', type(el), el, [el], chardet.detect(el)
            keyWords.append(el)
    print 'keyWords',keyWords
    return keyWords

# getKeyWords(recognitionResult)

for ell in getKeyWords(recognitionResult):
    print look2.decode(ell)[0]


用python进行数据预处理,过滤特殊符号,英文和数字。(适用于中文分词)

要进行中文分词,必须要求数据格式全部都是中文,需求过滤掉特殊符号、标点、英文、数字等。当然了用户可以根据自己的要求过滤自定义字符。 实验环境:python、mysql实验目的:从数据库读取数据,过滤...

主题模型TopicModel:通过gensim实现LDA

http://blog.csdn.net/pipisorry/article/details/46447561使用python gensim轻松实现lda模型。gensim简介Gensim是一个相当专...

python自然语言处理中文停用词

  • 2017年12月04日 14:48
  • 15KB
  • 下载

使用jieba分词对中文文档进行分词|停用词去重

# -*- encoding:utf-8 -*- import os import jieba #加载停用词词典 stopwordsfile = open('E:/Workspace/Python/E...

分词器,使用中文分词器,扩展词库,停用词

1. 常见的中文分词器有:极易分词的(MMAnalyzer) 、"庖丁分词"分词器(PaodingAnalzyer)、IKAnalyzer 等等。其中 MMAnalyzer 和 PaodingAnal...

Python进行文本预处理(文本分词,过滤停用词,词频统计,特征选择,文本表示)

系统:win7 32位 分词软件:PyNLPIR 集成开发环境(IDE):Pycharm 功能:实现多级文本预处理全过程,包括文本分词,过滤停用词,词频统计,特征选择,文本表示,并将结果导出为WE...

使用IKAnalyzer实现中文分词&去除中文停用词

1、简介:IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。这里使用的是IKAnalyzer2012。 2、IK Analyzer 2012特性: (...
  • yeruby
  • yeruby
  • 2014年12月29日 19:12
  • 10007

IK分词源码分析连载(四)--停用词+未切分词处理

转载请注明出处: http://blog.chinaunix.net/uid-20761674-id-3425302.html   前面三篇文章介绍了IK分词的两个核心模块:子分词器和歧义处理,...

1208个中文停用词

, ? 、 。 “ ” 《 》 ! , : ; ? 人民 末##末 啊 阿 哎 哎呀 哎哟 唉 俺 俺们 按 按照 吧 吧哒 把 罢了 被 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中文语音识别后-结巴分词以及停用词过滤时遇到的转码问题
举报原因:
原因补充:

(最多只允许输入30个字)