关闭

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

标签: pythonutf-8语音识别unicode编码
1349人阅读 评论(0) 收藏 举报
分类:

首先自己建立了一个停用词表,表中有各种符号,没有查询意义的中文词,以及英文词,在语音识别系统运行过程中,始终都维护着一个停用词表,但是在对结巴分词后的词进行过滤的时候出现了编码不一致的情况导致无意义词不能得到有效过滤。后来参考该链接: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]


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11986次
    • 积分:361
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:2篇
    • 译文:13篇
    • 评论:0条
    文章分类