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