jieba分词之后去停用词没有效果的问题

import jieba
import re

w = '我也遇到这种情况,所以搜到了这个问题,查了很多东西也没有个结果。超话'
stopwords = [line.strip() for line in open('stop.txt', 'r', encoding='utf-8').readlines()]

def clearTxt(line: str):
    if (line != ''):
        # 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
        line = line.strip()

        # 去除文本中的英文和数字
        line = re.sub("[a-zA-Z0-9]", "", line)

        # 去除文本中的中文符号和英文符号
        line = re.sub("[\s+\.\!\/_,$%^*(+\"\';:“”.]+|[+——!,。??、~@#¥%……&*()]+", "", line)
        return line
    return None

def sent2word(line):
    segList = jieba.cut(line, cut_all=False)
    segSentence = ''
    for word in segList:
        if word != '\t':
            if word.encode('utf-8') not in stopwords: ##问题所在
                # print(word)
                segSentence += word + " "
    return segSentence.strip()

if __name__ == '__main__':

    line = clearTxt(w)
    segn = sent2word(line)
    print(segn)

stop.txt:

我
问题
结果
超话

运行结果:

我 也 遇到 这种 情况 所以 搜到 了 这个 问题 查 了 很多 东西 也 没有 个 结果 超话

问题

本来期望的输出结果应该是
“也 遇到 这种 情况 所以 搜到 了 这个 查 了 很多 东西 也 没有 个”

解决

def sent2word(line):
    segList = jieba.cut(line, cut_all=False)
    segSentence = ''
    for word in segList:
        if word != '\t':
            if word not in stopwords:   ##正解
                # print(word)
                segSentence += word + " "
    return segSentence.strip()

正确运行结果

也 遇到 这种 情况 所以 搜到 了 这个 查 了 很多 东西 也 没有 个
  • 1
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值