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 结巴分词 关键词抽取分析

1 简介 关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。因此,目前依然可以在论文中看...

卷积神经网络(CNN)概述及其在NLP中的应用(二)

原文链接: http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/ 原标题《Und...

卷积神经网络(CNN)概述及其在NLP中的应用(一)

原文链接: http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/ 原标题《Under...

python27使用jieba分词,去除停用词

# -*- coding: utf-8 -*- import jieba import jieba.analyse import sys import codecs reload(sys) sys.s...

python 去除停用词 结巴分词

#coding:gbk import jieba #stopwords = {}.fromkeys([ line.rstrip() for line in open('stopword.txt') ]...

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

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

python结巴分词、jieba加载停用词表

python结巴分词python结巴分词 jieba中文分词简介 中文分词的原理 1 基于规则 2 基于统计 3 jieba的原理 安装结巴jieba jieba三种分词模式以及其应用 jieba增强...

用Python开始机器学习(5:文本特征抽取与向量化)

文本特征抽取与向量化 TF-IDF 词频-反转文档频率
  • lsldd
  • lsldd
  • 2014-11-26 22:09
  • 39690

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

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

14款中文分词开源软件

链接:http://www.oschina.net/project/tag/264/segment   开源中国社区 ‍ 1、IKAnalyzer IKAnalyzer是一个开源的,基于ja...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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