未登陆词/停用词建立和使用

refer:https://wenku.baidu.com/view/0029a79a376baf1ffd4fad8d.html
https://wenku.baidu.com/view/0029a79a376baf1ffd4fad8d.html
一. 未登陆词:
   未登录词即没有被收录在分词词表中但必须切分出来的词,包括各类专有名词(人名、地名、企业名等)、缩写词、新增词汇等等(参考百度百科定义)
    下面简单谈下补充思路:

  • 中文输入法对于新词的补充实效性比较强,国内比较知名的输入法,例如搜狗输入法/百度输入法/qq输入法在官网都有相应的词库;例如搜狗输入法(https://pinyin.sogou.com/dict/),在其官网有专门的细胞词库

    我们可以导出这些有领域性的词汇进行补充,但是很遗憾,导出的为scel格式,这里我们需要将scel格式转为txt,下面通过深蓝词库转换工具(https://github.com/studyzy/imewlconverter,很遗憾,目前只适用于windows系统,但是支持的输入法种类非常多),进行转化;
   

  • 具体情况具体分析,这块还是需要认为不断的补充,不然就不叫未登陆词了;这里补充的思路可以适当借鉴停用词库的建立;


二.停用词

       停用词是指在信息检索中,为节省存储空间和提高 搜索 效率,在处理 自然语言 数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的 (参考百度百科)

    我的理解:停用词对语义的理解帮助微乎其微,去除停用词,可以简化文本结构,降低存储,降维;
    但是,不少blog上列了一大堆停用词,例如有将“不可抗拒”列为停用词,这.....; 实际上,停用词对于自然语言处理起到非常关键的作用,例如文本分类,见下面一片文章的测试结果:
    
       遇到停用词,我们处理的思路大致如下:

    这里简单的模拟一个,计算tf-idf,对词的重要性进行评估(剩余的计算方式后续考虑在特征工程中进行说明)
#模拟对xx笔记本的评论场景

import os
from pyltp import  Segmentor
from math import log


def word_cut(sentences):
    abs_path = "/Users/hqh/nlp/3.4.0/ltp_data_v3.4.0"
    cws_path = os.path.join(abs_path, 'cws.model')
    seg = Segmentor()  # 生成实例对象
    seg.load(cws_path)
    words = seg.segment(sentences)
    return words


dict={
    "这台笔记本真漂亮":1,
    "我觉得这台笔记本在性能上很突出":1,
    "这台笔记本各方面都还可以":1,
    "笔记本的散热一般,笔记本的性价比不高":0
}  # 评论语作为key,value代表对笔记本的情感,褒义为1,贬义为0
#tf / idf 函数


''' tf-idf计算  '''
word_all={}
word_document={}
for key in dict.keys():
    words=list(word_cut(key))
    words_set=set(words)
    for tmp in words:
        if tmp not in word_all.keys(): #如果不在,咋们初始化
            word_all[tmp]=1
        else:
            word_all[tmp]+=1    #如果在了,那么计数器累加1
    for tmp in words_set:
        if tmp not in word_document.keys():
            word_document[tmp]=1
        else:
            word_document[tmp]+=1


total=sum(word_all.values())
length=len(dict.values())
for k,v in word_all.items():
   tf=word_all[k]/total
   idf=log(length/word_document[k])
   tf_idf=tf*idf
   print(k+'---->'+str(tf)+'----->'+str(idf)+'---->'+str(tf_idf))
结果:

这---->0.09090909090909091----->0.28768207245178085---->0.026152915677434625
台---->0.09090909090909091----->0.28768207245178085---->0.026152915677434625
笔记本---->0.15151515151515152----->0.0---->0.0
真---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
漂亮---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
我---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
觉得---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
在---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
性能---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
上---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
很---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
突出---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
各---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
方面---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
都---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
还---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
可以---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
的---->0.06060606060606061----->1.3862943611198906---->0.08401784006787216
散热---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
一般---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
,---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
性价比---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
不---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608
高---->0.030303030303030304----->1.3862943611198906---->0.04200892003393608




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python云库中的是指在生成云图时要排除的一些常见语,这些语通常是没有实际含义或者无关紧要的汇。在使用Python云库时,可以通过建立一个库来指定要排除的库可以以txt文档的形式建立,其中包含了你想要排除的。你可以在代码中使用这个库来过滤掉不需要显示在云图中的语。 在代码中,可以使用以下方法来加载库并进行分频统计: 1. 首先,读取待分析的文本文件,并进行文本预处理,只提取出中文字符。 2. 然后,使用jieba库进行分,将分结果保存在列表中。 3. 接下来,打开库文件,读取其中的,并加入一个的集合中。 4. 遍历分结果列表,将不在集合中且长度大于1的语加入到一个结果列表中。 5. 使用collections库的Counter函数进行频统计,获取前100个最高频的语。 如果你想获取绘制云图的全部代码(包含详细注释)以及库和测试文本,可以参考引用中提供的代码片段。这段代码包含了分频统计的功能,同时也包含了使用库进行过滤的部分。 需要注意的是,引用中提到的分割方法可能会导致无意义语过多,无法用于文本分析。因此,在进行文本分析时,除了将语按照用习惯进行分割外,还需要过滤掉没有实际含义的符号、副和助等无用的语,只提取最核心的信息。 希望以上回答能够解决你的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python--中文分云制作--入门笔记(附库及Mac字体资源)](https://blog.csdn.net/weixin_39982225/article/details/122225780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python制作炫酷的云图(包含频统计)!!!](https://blog.csdn.net/gjgfjgy/article/details/114679756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值